diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/BrokerEventProcessor.java b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/BrokerEventProcessor.java
similarity index 96%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/BrokerEventProcessor.java
rename to streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/BrokerEventProcessor.java
index 14c0ce975a..01c89aeb09 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/BrokerEventProcessor.java
+++ b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/adapter/BrokerEventProcessor.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream;
+package org.apache.streampipes.extensions.management.connect.adapter;
import org.apache.streampipes.commons.exceptions.connect.ParseException;
import org.apache.streampipes.extensions.api.connect.IEventCollector;
diff --git a/streampipes-extensions/pom.xml b/streampipes-extensions/pom.xml
index 58cdbe7287..82b347abb9 100644
--- a/streampipes-extensions/pom.xml
+++ b/streampipes-extensions/pom.xml
@@ -35,7 +35,10 @@
streampipes-connect-adapters-iiot
streampipes-connectors-influx
+ streampipes-connectors-kafka
streampipes-connectors-opcua
+ streampipes-connectors-pulsar
+ streampipes-connectors-rocketmq
streampipes-extensions-all-iiot
streampipes-extensions-all-jvm
@@ -60,6 +63,9 @@
streampipes-sources-watertank-simulator
streampipes-sources-vehicle-simulator
+ streampipes-connectors-tubemq
+ streampipes-connectors-nats
+ streampipes-connectors-mqtt
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml b/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml
index 25e9f9c001..6820021229 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml
+++ b/streampipes-extensions/streampipes-connect-adapters-iiot/pom.xml
@@ -34,11 +34,41 @@
+
+ org.apache.streampipes
+ streampipes-connectors-kafka
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-connectors-mqtt
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-connectors-nats
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-connectors-pulsar
+ 0.93.0-SNAPSHOT
+
org.apache.streampipes
streampipes-connectors-opcua
0.93.0-SNAPSHOT
+
+ org.apache.streampipes
+ streampipes-connectors-rocketmq
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-connectors-tubemq
+ 0.93.0-SNAPSHOT
+
org.apache.streampipes
streampipes-pipeline-elements-shared
@@ -136,18 +166,6 @@
plc4j-driver-modbus
runtime
-
- org.apache.pulsar
- pulsar-client
-
-
- org.apache.rocketmq
- rocketmq-client-java
-
-
- org.apache.inlong
- tubemq-client
-
org.bouncycastle
bcprov-jdk15on
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/ConnectAdapterIiotInit.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/ConnectAdapterIiotInit.java
index 05e154f498..72270d31fd 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/ConnectAdapterIiotInit.java
+++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/ConnectAdapterIiotInit.java
@@ -26,13 +26,13 @@
import org.apache.streampipes.connect.iiot.protocol.stream.FileReplayAdapter;
import org.apache.streampipes.connect.iiot.protocol.stream.HttpServerProtocol;
import org.apache.streampipes.connect.iiot.protocol.stream.HttpStreamProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.KafkaProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.MqttProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.NatsProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.TubeMQProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol;
-import org.apache.streampipes.connect.iiot.protocol.stream.rocketmq.RocketMQProtocol;
+import org.apache.streampipes.extensions.connectors.kafka.adapter.KafkaProtocol;
+import org.apache.streampipes.extensions.connectors.mqtt.adapter.MqttProtocol;
+import org.apache.streampipes.extensions.connectors.nats.adapter.NatsProtocol;
import org.apache.streampipes.extensions.connectors.opcua.adapter.OpcUaAdapter;
+import org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol;
+import org.apache.streampipes.extensions.connectors.rocketmq.adapter.RocketMQProtocol;
+import org.apache.streampipes.extensions.connectors.tubemq.adapter.TubeMQProtocol;
import org.apache.streampipes.extensions.management.model.SpServiceDefinition;
import org.apache.streampipes.extensions.management.model.SpServiceDefinitionBuilder;
import org.apache.streampipes.service.extensions.ExtensionsModelSubmitter;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/iolink/IfmAlMqttAdapter.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/iolink/IfmAlMqttAdapter.java
index 79b3dfe677..5a0648112d 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/iolink/IfmAlMqttAdapter.java
+++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/adapters/iolink/IfmAlMqttAdapter.java
@@ -29,13 +29,13 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConfig;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConsumer;
import org.apache.streampipes.extensions.management.connect.adapter.parser.JsonParsers;
import org.apache.streampipes.extensions.management.connect.adapter.parser.json.JsonObjectParser;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConsumer;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Labels;
import org.apache.streampipes.sdk.helpers.Locales;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/HttpServerProtocol.java b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/HttpServerProtocol.java
index be296d7b01..5fc242cc1f 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/HttpServerProtocol.java
+++ b/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/HttpServerProtocol.java
@@ -28,6 +28,7 @@
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
import org.apache.streampipes.extensions.management.connect.HttpServerAdapterManagement;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
diff --git a/streampipes-extensions/streampipes-connect-adapters/pom.xml b/streampipes-extensions/streampipes-connect-adapters/pom.xml
index b3decd2431..2e07ec3028 100644
--- a/streampipes-extensions/streampipes-connect-adapters/pom.xml
+++ b/streampipes-extensions/streampipes-connect-adapters/pom.xml
@@ -34,6 +34,11 @@
+
+ org.apache.streampipes
+ streampipes-connectors-mqtt
+ 0.93.0-SNAPSHOT
+
org.apache.streampipes
streampipes-pipeline-elements-shared
diff --git a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/flic/FlicMQTTAdapter.java b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/flic/FlicMQTTAdapter.java
index 363642eb81..5f613ec869 100644
--- a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/flic/FlicMQTTAdapter.java
+++ b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/flic/FlicMQTTAdapter.java
@@ -25,12 +25,12 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterGuessSchemaContext;
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConfig;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConsumer;
import org.apache.streampipes.messaging.InternalEventProcessor;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConsumer;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
diff --git a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/netio/NetioMQTTAdapter.java b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/netio/NetioMQTTAdapter.java
index aecad79046..a9edfc5cf5 100644
--- a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/netio/NetioMQTTAdapter.java
+++ b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/netio/NetioMQTTAdapter.java
@@ -26,12 +26,12 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterGuessSchemaContext;
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConfig;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConsumer;
import org.apache.streampipes.messaging.InternalEventProcessor;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConsumer;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
diff --git a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/ti/TISensorTag.java b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/ti/TISensorTag.java
index 5dac9770c0..9f944c262b 100644
--- a/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/ti/TISensorTag.java
+++ b/streampipes-extensions/streampipes-connect-adapters/src/main/java/org/apache/streampipes/connect/adapters/ti/TISensorTag.java
@@ -24,12 +24,12 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterGuessSchemaContext;
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConfig;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConsumer;
import org.apache.streampipes.messaging.InternalEventProcessor;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConsumer;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.builder.adapter.GuessSchemaBuilder;
import org.apache.streampipes.sdk.helpers.Labels;
diff --git a/streampipes-extensions/streampipes-connectors-kafka/pom.xml b/streampipes-extensions/streampipes-connectors-kafka/pom.xml
new file mode 100644
index 0000000000..df89e4fb63
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-kafka/pom.xml
@@ -0,0 +1,66 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-kafka
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-messaging
+ 0.93.0-SNAPSHOT
+ compile
+
+
+ org.apache.streampipes
+ streampipes-messaging-kafka
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-wrapper-standalone
+ 0.93.0-SNAPSHOT
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/KafkaProtocol.java b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/adapter/KafkaProtocol.java
similarity index 96%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/KafkaProtocol.java
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/adapter/KafkaProtocol.java
index e65806cb1b..f8b0340d51 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/KafkaProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/adapter/KafkaProtocol.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream;
+package org.apache.streampipes.extensions.connectors.kafka.adapter;
import org.apache.streampipes.commons.constants.GlobalStreamPipesConstants;
@@ -31,6 +31,9 @@
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
import org.apache.streampipes.extensions.api.runtime.SupportsRuntimeConfig;
+import org.apache.streampipes.extensions.connectors.kafka.shared.kafka.KafkaConfig;
+import org.apache.streampipes.extensions.connectors.kafka.shared.kafka.KafkaConnectUtils;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.messaging.kafka.SpKafkaConsumer;
import org.apache.streampipes.messaging.kafka.config.KafkaConfigAppender;
@@ -42,8 +45,6 @@
import org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty;
import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternative;
-import org.apache.streampipes.pe.shared.config.kafka.kafka.KafkaConfig;
-import org.apache.streampipes.pe.shared.config.kafka.kafka.KafkaConnectUtils;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConfig.java b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConfig.java
similarity index 97%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConfig.java
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConfig.java
index 7e1cfecaf4..770cfc0561 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConfig.java
+++ b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConfig.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.pe.shared.config.kafka;
+package org.apache.streampipes.extensions.connectors.kafka.shared.kafka;
import org.apache.streampipes.messaging.kafka.config.AutoOffsetResetConfig;
import org.apache.streampipes.messaging.kafka.security.KafkaSecurityConfig;
@@ -74,12 +74,11 @@ public void setSecurityConfig(KafkaSecurityConfig securityConfig) {
this.securityConfig = securityConfig;
}
- public void setAutoOffsetResetConfig(AutoOffsetResetConfig autoOffsetResetConfig) {
- this.autoOffsetResetConfig = autoOffsetResetConfig;
- }
-
public AutoOffsetResetConfig getAutoOffsetResetConfig() {
return autoOffsetResetConfig;
}
+ public void setAutoOffsetResetConfig(AutoOffsetResetConfig autoOffsetResetConfig) {
+ this.autoOffsetResetConfig = autoOffsetResetConfig;
+ }
}
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConnectUtils.java b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConnectUtils.java
similarity index 99%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConnectUtils.java
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConnectUtils.java
index 8112b8fe14..f56a230cbb 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConnectUtils.java
+++ b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/shared/kafka/KafkaConnectUtils.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.pe.shared.config.kafka.kafka;
+package org.apache.streampipes.extensions.connectors.kafka.shared.kafka;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
import org.apache.streampipes.messaging.kafka.config.AutoOffsetResetConfig;
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaParameters.java b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaParameters.java
similarity index 89%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaParameters.java
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaParameters.java
index 8e534a4179..b1e439547f 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaParameters.java
+++ b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaParameters.java
@@ -16,10 +16,10 @@
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.kafka;
+package org.apache.streampipes.extensions.connectors.kafka.sink;
-import org.apache.streampipes.pe.shared.config.kafka.KafkaConnectUtils;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.kafka.shared.kafka.KafkaConnectUtils;
public class KafkaParameters {
@@ -37,7 +37,7 @@ public class KafkaParameters {
private final boolean useSSL;
- public KafkaParameters(SinkParams params) {
+ public KafkaParameters(IDataSinkParameters params) {
var extractor = params.extractor();
this.topic = extractor.singleValueParameter(KafkaConnectUtils.TOPIC_KEY, String.class);
this.kafkaHost = extractor.singleValueParameter(KafkaConnectUtils.HOST_KEY, String.class);
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaPublishSink.java b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaPublishSink.java
similarity index 64%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaPublishSink.java
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaPublishSink.java
index 09ad02c5e9..aaefccbc98 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/kafka/KafkaPublishSink.java
+++ b/streampipes-extensions/streampipes-connectors-kafka/src/main/java/org/apache/streampipes/extensions/connectors/kafka/sink/KafkaPublishSink.java
@@ -1,118 +1,123 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.sinks.brokers.jvm.kafka;
-
-import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
-import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
-import org.apache.streampipes.messaging.kafka.SpKafkaProducer;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslPlainConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslSSLConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedPlainConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedSSLConfig;
-import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
-import org.apache.streampipes.model.runtime.Event;
-import org.apache.streampipes.pe.shared.config.kafka.KafkaConnectUtils;
-import org.apache.streampipes.sdk.builder.DataSinkBuilder;
-import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.apache.streampipes.sdk.helpers.EpRequirements;
-import org.apache.streampipes.sdk.helpers.Labels;
-import org.apache.streampipes.sdk.helpers.Locales;
-import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
-
-import java.util.List;
-import java.util.Map;
-
-public class KafkaPublishSink extends StreamPipesDataSink {
-
- private SpKafkaProducer producer;
-
- private JsonDataFormatDefinition dataFormatDefinition;
-
- private KafkaParameters params;
-
- public KafkaPublishSink() {
- }
-
- @Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.kafka")
- .category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN)
- .withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder
- .create()
- .requiredProperty(EpRequirements.anyProperty())
- .build())
-
- .requiredTextParameter(Labels.withId(KafkaConnectUtils.TOPIC_KEY), false, false)
- .requiredTextParameter(Labels.withId(KafkaConnectUtils.HOST_KEY), false, false)
- .requiredIntegerParameter(Labels.withId(KafkaConnectUtils.PORT_KEY), 9092)
-
- .requiredAlternatives(Labels.withId(KafkaConnectUtils.ACCESS_MODE),
- KafkaConnectUtils.getAlternativeUnauthenticatedPlain(),
- KafkaConnectUtils.getAlternativeUnauthenticatedSSL(),
- KafkaConnectUtils.getAlternativesSaslPlain(),
- KafkaConnectUtils.getAlternativesSaslSSL())
- .build();
- }
-
- @Override
- public void onInvocation(SinkParams parameters, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
- this.params = new KafkaParameters(parameters);
- this.dataFormatDefinition = new JsonDataFormatDefinition();
-
- KafkaSecurityConfig securityConfig;
- // check if a user for the authentication is defined
- if (params.useAuthentication()) {
- securityConfig = params.isUseSSL()
- ? new KafkaSecuritySaslSSLConfig(params.getUsername(), params.getPassword()) :
- new KafkaSecuritySaslPlainConfig(params.getUsername(), params.getPassword());
- } else {
- // set security config for none authenticated access
- securityConfig = params.isUseSSL()
- ? new KafkaSecurityUnauthenticatedSSLConfig() :
- new KafkaSecurityUnauthenticatedPlainConfig();
- }
-
- this.producer = new SpKafkaProducer(
- params.getKafkaHost() + ":" + params.getKafkaPort(),
- params.getTopic(),
- List.of(securityConfig));
- }
-
- @Override
- public void onEvent(Event event) throws SpRuntimeException {
- try {
- Map rawEvent = event.getRaw();
- this.producer.publish(dataFormatDefinition.fromMap(rawEvent));
- } catch (SpRuntimeException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- public void onDetach() throws SpRuntimeException {
- this.producer.disconnect();
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.streampipes.extensions.connectors.kafka.sink;
+
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
+import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.kafka.shared.kafka.KafkaConnectUtils;
+import org.apache.streampipes.messaging.kafka.SpKafkaProducer;
+import org.apache.streampipes.messaging.kafka.security.KafkaSecurityConfig;
+import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslPlainConfig;
+import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslSSLConfig;
+import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedPlainConfig;
+import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedSSLConfig;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
+import org.apache.streampipes.sdk.helpers.EpRequirements;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.utils.Assets;
+
+import java.util.List;
+import java.util.Map;
+
+public class KafkaPublishSink implements IStreamPipesDataSink {
+
+ private SpKafkaProducer producer;
+
+ private JsonDataFormatDefinition dataFormatDefinition;
+
+ private KafkaParameters params;
+
+ public KafkaPublishSink() {
+ }
+
+ @Override
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ KafkaPublishSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.kafka")
+ .category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN)
+ .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder
+ .create()
+ .requiredProperty(EpRequirements.anyProperty())
+ .build())
+
+ .requiredTextParameter(Labels.withId(KafkaConnectUtils.TOPIC_KEY), false, false)
+ .requiredTextParameter(Labels.withId(KafkaConnectUtils.HOST_KEY), false, false)
+ .requiredIntegerParameter(Labels.withId(KafkaConnectUtils.PORT_KEY), 9092)
+
+ .requiredAlternatives(Labels.withId(KafkaConnectUtils.ACCESS_MODE),
+ KafkaConnectUtils.getAlternativeUnauthenticatedPlain(),
+ KafkaConnectUtils.getAlternativeUnauthenticatedSSL(),
+ KafkaConnectUtils.getAlternativesSaslPlain(),
+ KafkaConnectUtils.getAlternativesSaslSSL())
+ .build()
+ );
+ }
+
+ @Override
+ public void onPipelineStarted(IDataSinkParameters parameters,
+ EventSinkRuntimeContext runtimeContext) {
+ this.params = new KafkaParameters(parameters);
+ this.dataFormatDefinition = new JsonDataFormatDefinition();
+
+ KafkaSecurityConfig securityConfig;
+ // check if a user for the authentication is defined
+ if (params.useAuthentication()) {
+ securityConfig = params.isUseSSL()
+ ? new KafkaSecuritySaslSSLConfig(params.getUsername(), params.getPassword()) :
+ new KafkaSecuritySaslPlainConfig(params.getUsername(), params.getPassword());
+ } else {
+ // set security config for none authenticated access
+ securityConfig = params.isUseSSL()
+ ? new KafkaSecurityUnauthenticatedSSLConfig() :
+ new KafkaSecurityUnauthenticatedPlainConfig();
+ }
+
+ this.producer = new SpKafkaProducer(
+ params.getKafkaHost() + ":" + params.getKafkaPort(),
+ params.getTopic(),
+ List.of(securityConfig));
+ }
+
+ @Override
+ public void onEvent(Event event) throws SpRuntimeException {
+ try {
+ Map rawEvent = event.getRaw();
+ this.producer.publish(dataFormatDefinition.fromMap(rawEvent));
+ } catch (SpRuntimeException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onPipelineStopped() {
+ this.producer.disconnect();
+ }
+}
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/documentation.md b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/documentation.md
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/icon.png b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/icon.png
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/strings.en b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/strings.en
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.kafka/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/documentation.md b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/documentation.md
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/icon.png b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/icon.png
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/strings.en b/streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/strings.en
rename to streampipes-extensions/streampipes-connectors-kafka/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.kafka/strings.en
diff --git a/streampipes-extensions/streampipes-connectors-mqtt/pom.xml b/streampipes-extensions/streampipes-connectors-mqtt/pom.xml
new file mode 100644
index 0000000000..012df08cd7
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-mqtt/pom.xml
@@ -0,0 +1,55 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-mqtt
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+
+ org.fusesource.mqtt-client
+ mqtt-client
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/MqttProtocol.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/adapter/MqttProtocol.java
similarity index 92%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/MqttProtocol.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/adapter/MqttProtocol.java
index cb247d2e81..b27f2205f0 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/MqttProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/adapter/MqttProtocol.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream;
+package org.apache.streampipes.extensions.connectors.mqtt.adapter;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
@@ -25,13 +25,14 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConfig;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConsumer;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.messaging.InternalEventProcessor;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConsumer;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConfig.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConfig.java
similarity index 95%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConfig.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConfig.java
index 71c049e7f2..4a3b30a224 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConfig.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConfig.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.pe.shared.config.mqtt;
+package org.apache.streampipes.extensions.connectors.mqtt.shared;
public class MqttConfig {
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConnectUtils.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConnectUtils.java
similarity index 98%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConnectUtils.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConnectUtils.java
index 102384d2d4..aedbf922a0 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConnectUtils.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConnectUtils.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.pe.shared.config.mqtt;
+package org.apache.streampipes.extensions.connectors.mqtt.shared;
import org.apache.streampipes.extensions.api.extractor.IParameterExtractor;
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternative;
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConsumer.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConsumer.java
similarity index 97%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConsumer.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConsumer.java
index 855d0a28de..48c45798c6 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/mqtt/MqttConsumer.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/shared/MqttConsumer.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.pe.shared.config.mqtt;
+package org.apache.streampipes.extensions.connectors.mqtt.shared;
import org.apache.streampipes.messaging.InternalEventProcessor;
diff --git a/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/MqttPublisherSink.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/MqttPublisherSink.java
new file mode 100644
index 0000000000..c173684603
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/MqttPublisherSink.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package org.apache.streampipes.extensions.connectors.mqtt.sink;
+
+import org.apache.streampipes.commons.exceptions.SpRuntimeException;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
+import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.mqtt.sink.common.MqttClient;
+import org.apache.streampipes.model.DataSinkType;
+import org.apache.streampipes.model.runtime.Event;
+import org.apache.streampipes.model.staticproperty.Option;
+import org.apache.streampipes.sdk.StaticProperties;
+import org.apache.streampipes.sdk.builder.DataSinkBuilder;
+import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
+import org.apache.streampipes.sdk.helpers.Alternatives;
+import org.apache.streampipes.sdk.helpers.Labels;
+import org.apache.streampipes.sdk.helpers.Locales;
+import org.apache.streampipes.sdk.utils.Assets;
+
+import java.util.Arrays;
+
+public class MqttPublisherSink implements IStreamPipesDataSink {
+
+ private static final int DEFAULT_MQTT_PORT = 1883;
+ private static final int DEFAULT_RECONNECT_PERIOD = 30;
+ private static final int DEFAULT_KEEP_ALIVE = 30;
+
+ public static final String TOPIC = "topic";
+ public static final String HOST = "host";
+ public static final String PORT = "port";
+ public static final String AUTH_MODE = "auth-mode";
+ public static final String NO_AUTH_ALTERNATIVE = "no-auth-alternative";
+ public static final String AUTH_ALTERNATIVE = "basic-auth-alternative";
+ public static final String USERNAME_GROUP = "username-group";
+ public static final String USERNAME = "username";
+ public static final String PASSWORD = "password";
+ public static final String QOS_LEVEL_KEY = "qos-level";
+ public static final String CLEAN_SESSION_KEY = "clean-session";
+ public static final String WILL_RETAIN = "will-retain";
+ public static final String ENCRYPTION_MODE = "encryption-mode";
+ public static final String RECONNECT_PERIOD_IN_SEC = "reconnect-period";
+ public static final String WILL_MODE = "lwt-mode";
+ public static final String NO_WILL_ALTERNATIVE = "no-lwt-alternative";
+ public static final String WILL_ALTERNATIVE = "lwt-alternative";
+ public static final String WILL_GROUP = "lwt-group";
+ public static final String WILL_TOPIC = "lwt-topic";
+ public static final String WILL_MESSAGE = "lwt-message";
+ public static final String WILL_QOS = "lwt-qos-level";
+ public static final String RETAIN = "retain";
+ public static final String KEEP_ALIVE_IN_SEC = "keep-alive";
+ public static final String MQTT_COMPLIANT = "mqtt-version-compliant";
+
+ private MqttClient mqttClient;
+
+ @Override
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ MqttPublisherSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.mqtt")
+ .category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN)
+ .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder.any())
+ .requiredTextParameter(Labels.withId(TOPIC))
+ .requiredTextParameter(Labels.withId(HOST))
+ .requiredIntegerParameter(Labels.withId(PORT), DEFAULT_MQTT_PORT)
+ .requiredAlternatives(
+ Labels.withId(AUTH_MODE),
+ Alternatives.from(Labels.withId(NO_AUTH_ALTERNATIVE), true),
+ Alternatives.from(Labels.withId(AUTH_ALTERNATIVE),
+ StaticProperties.group(Labels.withId(USERNAME_GROUP),
+ StaticProperties.stringFreeTextProperty(Labels.withId(USERNAME)),
+ StaticProperties.secretValue(Labels.withId(PASSWORD)))))
+ .requiredSingleValueSelection(
+ Labels.withId(ENCRYPTION_MODE),
+ Arrays.asList(
+ new Option("TCP", true),
+ // SSL not yet supported
+ new Option("SSL/TLS", false)))
+ .requiredSingleValueSelection(
+ Labels.withId(QOS_LEVEL_KEY),
+ Arrays.asList(
+ new Option("0 - at-most-once", false),
+ new Option("1 - at-least-once", true),
+ new Option("2 - exactly-once", false)))
+ .requiredSingleValueSelection(
+ Labels.withId(RETAIN),
+ Arrays.asList(
+ new Option("Yes", false),
+ new Option("No", true)))
+ .requiredSingleValueSelection(
+ Labels.withId(CLEAN_SESSION_KEY),
+ Arrays.asList(
+ new Option("Yes", true),
+ new Option("No", false)))
+ .requiredIntegerParameter(Labels.withId(RECONNECT_PERIOD_IN_SEC), DEFAULT_RECONNECT_PERIOD)
+ .requiredIntegerParameter(Labels.withId(KEEP_ALIVE_IN_SEC), DEFAULT_KEEP_ALIVE)
+ .requiredSingleValueSelection(
+ Labels.withId(MQTT_COMPLIANT),
+ Arrays.asList(
+ new Option("Yes", true),
+ new Option("No", false)))
+ .requiredAlternatives(
+ Labels.withId(WILL_MODE),
+ Alternatives.from(Labels.withId(NO_WILL_ALTERNATIVE), true),
+ Alternatives.from(Labels.withId(WILL_ALTERNATIVE),
+ StaticProperties.group(Labels.withId(WILL_GROUP),
+ StaticProperties.stringFreeTextProperty(Labels.withId(WILL_TOPIC)),
+ StaticProperties.stringFreeTextProperty(Labels.withId(WILL_MESSAGE)),
+ StaticProperties.singleValueSelection(Labels.withId(WILL_RETAIN),
+ Arrays.asList(
+ new Option("Yes", false),
+ new Option("No", true))),
+ StaticProperties.singleValueSelection(
+ Labels.withId(WILL_QOS),
+ Arrays.asList(
+ new Option("0 - at-most-once", true),
+ new Option("1 - at-least-once", false),
+ new Option("2 - exactly-once", false))))))
+ .build()
+ );
+ }
+
+ @Override
+ public void onPipelineStarted(IDataSinkParameters params, EventSinkRuntimeContext runtimeContext) {
+ this.mqttClient = new MqttClient(params);
+ this.mqttClient.connect();
+ }
+
+ @Override
+ public void onEvent(Event event) throws SpRuntimeException {
+ this.mqttClient.publish(event);
+ }
+
+ @Override
+ public void onPipelineStopped() {
+ this.mqttClient.disconnect();
+ }
+}
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttClient.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttClient.java
similarity index 94%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttClient.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttClient.java
index 6c94691f53..a780653c27 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttClient.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttClient.java
@@ -15,14 +15,12 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.mqtt;
+package org.apache.streampipes.extensions.connectors.mqtt.sink.common;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.apache.streampipes.model.runtime.Event;
-import org.apache.streampipes.sinks.brokers.jvm.mqtt.common.MqttOptions;
-import org.apache.streampipes.sinks.brokers.jvm.mqtt.common.MqttUtils;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
import org.fusesource.mqtt.client.BlockingConnection;
import org.fusesource.mqtt.client.MQTT;
@@ -36,7 +34,7 @@ public class MqttClient {
private MQTT mqtt;
private BlockingConnection conn;
- public MqttClient(SinkParams params) {
+ public MqttClient(IDataSinkParameters params) {
this.options = new MqttOptions(params);
this.createMqttClient();
}
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttOptions.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttOptions.java
similarity index 67%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttOptions.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttOptions.java
index b5b6c3a53d..d6823c843c 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttOptions.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttOptions.java
@@ -15,32 +15,32 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.mqtt.common;
+package org.apache.streampipes.extensions.connectors.mqtt.sink.common;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.fusesource.mqtt.client.QoS;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.AUTH_ALTERNATIVE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.AUTH_MODE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.CLEAN_SESSION_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.ENCRYPTION_MODE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.HOST;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.KEEP_ALIVE_IN_SEC;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.MQTT_COMPLIANT;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.PASSWORD;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.PORT;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.QOS_LEVEL_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.RECONNECT_PERIOD_IN_SEC;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.RETAIN;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.TOPIC;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.USERNAME;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_ALTERNATIVE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_MESSAGE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_MODE;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_QOS;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_RETAIN;
-import static org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink.WILL_TOPIC;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.AUTH_ALTERNATIVE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.AUTH_MODE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.CLEAN_SESSION_KEY;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.ENCRYPTION_MODE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.HOST;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.KEEP_ALIVE_IN_SEC;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.MQTT_COMPLIANT;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.PASSWORD;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.PORT;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.QOS_LEVEL_KEY;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.RECONNECT_PERIOD_IN_SEC;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.RETAIN;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.TOPIC;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.USERNAME;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_ALTERNATIVE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_MESSAGE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_MODE;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_QOS;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_RETAIN;
+import static org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink.WILL_TOPIC;
public class MqttOptions {
@@ -65,7 +65,7 @@ public class MqttOptions {
private String willMessage = "";
private String mqttProtocolVersion = "3.1";
- public MqttOptions(SinkParams params) {
+ public MqttOptions(IDataSinkParameters params) {
var extract = params.extractor();
this.clientId = MqttUtils.runningInstanceId(params.getModel().getElementId());
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttUtils.java b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttUtils.java
similarity index 97%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttUtils.java
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttUtils.java
index 5cc74317fb..9c3233df0c 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/common/MqttUtils.java
+++ b/streampipes-extensions/streampipes-connectors-mqtt/src/main/java/org/apache/streampipes/extensions/connectors/mqtt/sink/common/MqttUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.mqtt.common;
+package org.apache.streampipes.extensions.connectors.mqtt.sink.common;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/documentation.md b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/documentation.md
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/icon.png b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/icon.png
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/strings.en b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/strings.en
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.mqtt/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/documentation.md b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/documentation.md
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/icon.png b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/icon.png
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/strings.en b/streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/strings.en
rename to streampipes-extensions/streampipes-connectors-mqtt/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.mqtt/strings.en
diff --git a/streampipes-extensions/streampipes-connectors-nats/pom.xml b/streampipes-extensions/streampipes-connectors-nats/pom.xml
new file mode 100644
index 0000000000..02a6c948da
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-nats/pom.xml
@@ -0,0 +1,56 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-nats
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+
+ org.apache.streampipes
+ streampipes-messaging-nats
+ 0.93.0-SNAPSHOT
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/NatsProtocol.java b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/adapter/NatsProtocol.java
similarity index 81%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/NatsProtocol.java
rename to streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/adapter/NatsProtocol.java
index ce3a2a778c..5be2374586 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/NatsProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/adapter/NatsProtocol.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream;
+package org.apache.streampipes.extensions.connectors.nats.adapter;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
@@ -28,6 +28,8 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
+import org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.messaging.InternalEventProcessor;
import org.apache.streampipes.messaging.nats.NatsConsumer;
@@ -35,7 +37,6 @@
import org.apache.streampipes.model.connect.guess.GuessSchema;
import org.apache.streampipes.model.nats.NatsConfig;
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternative;
-import org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils;
import org.apache.streampipes.sdk.StaticProperties;
import org.apache.streampipes.sdk.builder.adapter.AdapterConfigurationBuilder;
import org.apache.streampipes.sdk.helpers.Alternatives;
@@ -48,19 +49,19 @@
import java.util.List;
import java.util.concurrent.TimeUnit;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.ACCESS_MODE;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.ANONYMOUS_ACCESS;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.CONNECTION_PROPERTIES;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.CONNECTION_PROPERTIES_GROUP;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.CUSTOM_PROPERTIES;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.NONE_PROPERTIES;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.PASSWORD_KEY;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.PROPERTIES_KEY;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.SUBJECT_KEY;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.URLS_KEY;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.USERNAME_ACCESS;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.USERNAME_GROUP;
-import static org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils.USERNAME_KEY;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.ACCESS_MODE;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.ANONYMOUS_ACCESS;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.CONNECTION_PROPERTIES;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.CONNECTION_PROPERTIES_GROUP;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.CUSTOM_PROPERTIES;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.NONE_PROPERTIES;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.PASSWORD_KEY;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.PROPERTIES_KEY;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.SUBJECT_KEY;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.URLS_KEY;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.USERNAME_ACCESS;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.USERNAME_GROUP;
+import static org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils.USERNAME_KEY;
public class NatsProtocol implements StreamPipesAdapter {
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/nats/NatsConfigUtils.java b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/shared/NatsConfigUtils.java
similarity index 97%
rename from streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/nats/NatsConfigUtils.java
rename to streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/shared/NatsConfigUtils.java
index 32560de1e8..59194dd6f2 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/nats/NatsConfigUtils.java
+++ b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/shared/NatsConfigUtils.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.pe.shared.config.nats;
+package org.apache.streampipes.extensions.connectors.nats.shared;
import org.apache.streampipes.extensions.api.extractor.IParameterExtractor;
import org.apache.streampipes.model.nats.NatsConfig;
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/nats/NatsController.java b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/sink/NatsSink.java
similarity index 74%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/nats/NatsController.java
rename to streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/sink/NatsSink.java
index 6959b4e7dc..4c55c68265 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/nats/NatsController.java
+++ b/streampipes-extensions/streampipes-connectors-nats/src/main/java/org/apache/streampipes/extensions/connectors/nats/sink/NatsSink.java
@@ -16,29 +16,30 @@
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.nats;
+package org.apache.streampipes.extensions.connectors.nats.sink;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.apache.streampipes.messaging.nats.NatsUtils;
import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.nats.NatsConfig;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternative;
-import org.apache.streampipes.pe.shared.config.nats.NatsConfigUtils;
+import org.apache.streampipes.extensions.connectors.nats.shared.NatsConfigUtils;
import org.apache.streampipes.sdk.StaticProperties;
import org.apache.streampipes.sdk.builder.DataSinkBuilder;
import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
import org.apache.streampipes.sdk.extractor.StaticPropertyExtractor;
import org.apache.streampipes.sdk.helpers.Alternatives;
import org.apache.streampipes.sdk.helpers.EpRequirements;
import org.apache.streampipes.sdk.helpers.Labels;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
import io.nats.client.Connection;
import io.nats.client.Nats;
@@ -50,9 +51,9 @@
import java.util.Map;
import java.util.concurrent.TimeoutException;
-public class NatsController extends StreamPipesDataSink {
+public class NatsSink implements IStreamPipesDataSink {
- private static final Logger LOG = LoggerFactory.getLogger(NatsController.class);
+ private static final Logger LOG = LoggerFactory.getLogger(NatsSink.class);
private static final String SUBJECT_KEY = "subject";
private static final String URLS_KEY = "natsUrls";
@@ -75,22 +76,25 @@ public class NatsController extends StreamPipesDataSink {
private JsonDataFormatDefinition dataFormatDefinition;
@Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.nats")
- .category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN)
- .withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder
- .create()
- .requiredProperty(EpRequirements.anyProperty())
- .build())
- .requiredTextParameter(Labels.withId(SUBJECT_KEY), false, false)
- .requiredTextParameter(Labels.withId(URLS_KEY), false, false)
- .requiredAlternatives(Labels.withId(ACCESS_MODE), getAccessModeAlternativesOne(),
- getAccessModeAlternativesTwo())
- .requiredAlternatives(Labels.withId(CONNECTION_PROPERTIES), getConnectionPropertiesAlternativesOne(),
- getConnectionPropertiesAlternativesTwo())
- .build();
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ NatsSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.nats")
+ .category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN)
+ .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder
+ .create()
+ .requiredProperty(EpRequirements.anyProperty())
+ .build())
+ .requiredTextParameter(Labels.withId(SUBJECT_KEY), false, false)
+ .requiredTextParameter(Labels.withId(URLS_KEY), false, false)
+ .requiredAlternatives(Labels.withId(ACCESS_MODE), getAccessModeAlternativesOne(),
+ getAccessModeAlternativesTwo())
+ .requiredAlternatives(Labels.withId(CONNECTION_PROPERTIES), getConnectionPropertiesAlternativesOne(),
+ getConnectionPropertiesAlternativesTwo())
+ .build()
+ );
}
public static StaticPropertyAlternative getAccessModeAlternativesOne() {
@@ -103,7 +107,6 @@ public static StaticPropertyAlternative getAccessModeAlternativesTwo() {
StaticProperties.group(Labels.withId(USERNAME_GROUP),
StaticProperties.stringFreeTextProperty(Labels.withId(USERNAME_KEY)),
StaticProperties.secretValue(Labels.withId(PASSWORD_KEY))));
-
}
public static StaticPropertyAlternative getConnectionPropertiesAlternativesOne() {
@@ -119,11 +122,10 @@ public static StaticPropertyAlternative getConnectionPropertiesAlternativesTwo()
}
@Override
- public void onInvocation(SinkParams parameters,
- EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
+ public void onPipelineStarted(IDataSinkParameters params, EventSinkRuntimeContext runtimeContext) {
this.dataFormatDefinition = new JsonDataFormatDefinition();
NatsConfig natsConfig = NatsConfigUtils.from(
- StaticPropertyExtractor.from(parameters.getModel().getStaticProperties()));
+ StaticPropertyExtractor.from(params.getModel().getStaticProperties()));
this.subject = natsConfig.getSubject();
Options options = NatsUtils.makeNatsOptions(natsConfig);
@@ -145,7 +147,7 @@ public void onEvent(Event inputEvent) throws SpRuntimeException {
}
@Override
- public void onDetach() throws SpRuntimeException {
+ public void onPipelineStopped() {
try {
natsConnection.flush(Duration.ofMillis(50));
natsConnection.close();
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/documentation.md b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/documentation.md
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/icon.png b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/icon.png
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/strings.en b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/strings.en
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.nats/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/documentation.md b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/documentation.md
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/icon.png b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/icon.png
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/strings.en b/streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/strings.en
rename to streampipes-extensions/streampipes-connectors-nats/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.nats/strings.en
diff --git a/streampipes-extensions/streampipes-connectors-pulsar/pom.xml b/streampipes-extensions/streampipes-connectors-pulsar/pom.xml
new file mode 100644
index 0000000000..d294810454
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-pulsar/pom.xml
@@ -0,0 +1,66 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-pulsar
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.pulsar
+ pulsar-client
+
+
+
+ junit
+ junit
+ test
+
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarConfig.java b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarConfig.java
similarity index 79%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarConfig.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarConfig.java
index 6387e7a987..725f74f89d 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarConfig.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarConfig.java
@@ -16,14 +16,14 @@
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar.adapter;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
-import static org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol.PULSAR_BROKER_HOST;
-import static org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol.PULSAR_BROKER_PORT;
-import static org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol.PULSAR_SUBSCRIPTION_NAME;
-import static org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol.PULSAR_TOPIC;
+import static org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol.PULSAR_BROKER_HOST;
+import static org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol.PULSAR_BROKER_PORT;
+import static org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol.PULSAR_SUBSCRIPTION_NAME;
+import static org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol.PULSAR_TOPIC;
public class PulsarConfig {
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarProtocol.java b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarProtocol.java
similarity index 97%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarProtocol.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarProtocol.java
index 677be44cbd..04ea26dead 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarProtocol.java
@@ -15,12 +15,11 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar.adapter;
import org.apache.streampipes.commons.exceptions.SpConfigurationException;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
import org.apache.streampipes.commons.exceptions.connect.ParseException;
-import org.apache.streampipes.connect.iiot.protocol.stream.BrokerEventProcessor;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
import org.apache.streampipes.extensions.api.connect.IEventCollector;
import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter;
@@ -29,6 +28,7 @@
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
import org.apache.streampipes.extensions.api.runtime.SupportsRuntimeConfig;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarUtils.java b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarUtils.java
similarity index 94%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarUtils.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarUtils.java
index 9df4e494e9..5d6e1cc89c 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/pulsar/PulsarUtils.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/adapter/PulsarUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar.adapter;
import org.apache.pulsar.client.api.PulsarClient;
import org.apache.pulsar.client.api.PulsarClientException;
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarParameters.java b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarParameters.java
similarity index 67%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarParameters.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarParameters.java
index e7a9b3c171..6616e21592 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarParameters.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarParameters.java
@@ -15,20 +15,20 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar.sink;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_HOST_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_PORT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.TOPIC_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_HOST_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_PORT_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.TOPIC_KEY;
public class PulsarParameters {
- private String pulsarHost;
- private Integer pulsarPort;
- private String topic;
+ private final String pulsarHost;
+ private final Integer pulsarPort;
+ private final String topic;
- public PulsarParameters(SinkParams parameters) {
+ public PulsarParameters(IDataSinkParameters parameters) {
var extractor = parameters.extractor();
this.pulsarHost = extractor.singleValueParameter(PULSAR_HOST_KEY, String.class);
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarPublisherSink.java b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarPublisherSink.java
similarity index 73%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarPublisherSink.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarPublisherSink.java
index e555f77981..99eeffb4ad 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/PulsarPublisherSink.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/main/java/org/apache/streampipes/extensions/connectors/pulsar/sink/PulsarPublisherSink.java
@@ -15,23 +15,24 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar.sink;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.dataformat.SpDataFormatDefinition;
import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.sdk.builder.DataSinkBuilder;
import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
import org.apache.streampipes.sdk.helpers.EpRequirements;
import org.apache.streampipes.sdk.helpers.Labels;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
import com.google.common.annotations.VisibleForTesting;
import org.apache.pulsar.client.api.ClientBuilder;
@@ -41,7 +42,7 @@
import java.util.Map;
-public class PulsarPublisherSink extends StreamPipesDataSink {
+public class PulsarPublisherSink implements IStreamPipesDataSink {
public static final String TOPIC_KEY = "topic";
public static final String PULSAR_HOST_KEY = "pulsar-host";
@@ -63,24 +64,28 @@ public PulsarPublisherSink(ClientBuilder pulsarClientBuilder) {
this.clientBuilder = pulsarClientBuilder;
}
+
@Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.pulsar")
- .category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN)
- .withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder
- .create()
- .requiredProperty(EpRequirements.anyProperty())
- .build())
- .requiredTextParameter(Labels.withId(PULSAR_HOST_KEY))
- .requiredIntegerParameter(Labels.withId(PULSAR_PORT_KEY), 6650)
- .requiredTextParameter(Labels.withId(TOPIC_KEY))
- .build();
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ PulsarPublisherSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.pulsar")
+ .category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN)
+ .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder
+ .create()
+ .requiredProperty(EpRequirements.anyProperty())
+ .build())
+ .requiredTextParameter(Labels.withId(PULSAR_HOST_KEY))
+ .requiredIntegerParameter(Labels.withId(PULSAR_PORT_KEY), 6650)
+ .requiredTextParameter(Labels.withId(TOPIC_KEY))
+ .build()
+ );
}
@Override
- public void onInvocation(SinkParams parameters, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
+ public void onPipelineStarted(IDataSinkParameters parameters, EventSinkRuntimeContext runtimeContext) {
params = new PulsarParameters(parameters);
this.spDataFormatDefinition = new JsonDataFormatDefinition();
@@ -109,7 +114,7 @@ public void onEvent(Event event) throws SpRuntimeException {
}
@Override
- public void onDetach() throws SpRuntimeException {
+ public void onPipelineStopped() {
try {
this.pulsarClient.close();
} catch (PulsarClientException e) {
@@ -120,4 +125,5 @@ public void onDetach() throws SpRuntimeException {
private String makePulsarUrl(String hostname, Integer port) {
return PulsarScheme + hostname + Colon + port;
}
+
}
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/documentation.md b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/documentation.md
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/icon.png b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/icon.png
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/strings.en b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/strings.en
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.pulsar/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/documentation.md b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/documentation.md
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/icon.png b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/icon.png
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/strings.en b/streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/strings.en
rename to streampipes-extensions/streampipes-connectors-pulsar/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.pulsar/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarParameters.java b/streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarParameters.java
similarity index 72%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarParameters.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarParameters.java
index 0ce79dbb43..b70e7bc0ad 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarParameters.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarParameters.java
@@ -15,19 +15,20 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarParameters;
import org.apache.streampipes.sdk.extractor.DataSinkParameterExtractor;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_HOST_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_PORT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.TOPIC_KEY;
-import static org.mockito.Mockito.mock;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_HOST_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_PORT_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.TOPIC_KEY;
+
public class TestPulsarParameters {
@Test
@@ -36,8 +37,8 @@ public void testInitPulsarParameters() {
Integer pulsarPort = 6650;
String topic = "test";
- SinkParams params = mock(SinkParams.class);
- DataSinkParameterExtractor extractor = mock(DataSinkParameterExtractor.class);
+ var params = Mockito.mock(IDataSinkParameters.class);
+ DataSinkParameterExtractor extractor = Mockito.mock(DataSinkParameterExtractor.class);
Mockito.when(params.extractor()).thenReturn(extractor);
Mockito.when(extractor.singleValueParameter(PULSAR_HOST_KEY, String.class)).thenReturn(pulsarHost);
Mockito.when(extractor.singleValueParameter(PULSAR_PORT_KEY, Integer.class)).thenReturn(pulsarPort);
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarPublisherSink.java b/streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarPublisherSink.java
similarity index 50%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarPublisherSink.java
rename to streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarPublisherSink.java
index 33be52170d..35cfea6c6e 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/pulsar/TestPulsarPublisherSink.java
+++ b/streampipes-extensions/streampipes-connectors-pulsar/src/test/java/org/apache/streampipes/extensions/connectors/pulsar/TestPulsarPublisherSink.java
@@ -15,11 +15,12 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.pulsar;
+package org.apache.streampipes.extensions.connectors.pulsar;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.sdk.extractor.DataSinkParameterExtractor;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -30,19 +31,15 @@
import org.apache.pulsar.client.api.PulsarClientException;
import org.junit.Assert;
import org.junit.Test;
+import org.mockito.ArgumentMatchers;
import org.mockito.Mockito;
import java.util.HashMap;
import java.util.Map;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_HOST_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.PULSAR_PORT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink.TOPIC_KEY;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_HOST_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.PULSAR_PORT_KEY;
+import static org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink.TOPIC_KEY;
public class TestPulsarPublisherSink {
@Test
@@ -56,23 +53,23 @@ public void testSimpleEventSink() throws PulsarClientException {
rawMap.put("key1", "value1");
rawMap.put("key2", "value2");
- SinkParams params = mock(SinkParams.class);
- DataSinkParameterExtractor extractor = mock(DataSinkParameterExtractor.class);
- when(params.extractor()).thenReturn(extractor);
- when(extractor.singleValueParameter(PULSAR_HOST_KEY, String.class)).thenReturn(pulsarHost);
- when(extractor.singleValueParameter(PULSAR_PORT_KEY, Integer.class)).thenReturn(pulsarPort);
- when(extractor.singleValueParameter(TOPIC_KEY, String.class)).thenReturn(topic);
+ var params = Mockito.mock(IDataSinkParameters.class);
+ DataSinkParameterExtractor extractor = Mockito.mock(DataSinkParameterExtractor.class);
+ Mockito.when(params.extractor()).thenReturn(extractor);
+ Mockito.when(extractor.singleValueParameter(PULSAR_HOST_KEY, String.class)).thenReturn(pulsarHost);
+ Mockito.when(extractor.singleValueParameter(PULSAR_PORT_KEY, Integer.class)).thenReturn(pulsarPort);
+ Mockito.when(extractor.singleValueParameter(TOPIC_KEY, String.class)).thenReturn(topic);
- ClientBuilder clientBuilder = mock(ClientBuilder.class);
- PulsarClient pulsarClient = mock(PulsarClient.class);
- ProducerBuilder producerBuilder = mock(ProducerBuilder.class);
- Producer producer = mock(Producer.class);
- when(clientBuilder.serviceUrl(anyString())).thenReturn(clientBuilder);
- when(clientBuilder.build()).thenReturn(pulsarClient);
- when(pulsarClient.newProducer()).thenReturn(producerBuilder);
- when(producerBuilder.topic(topic)).thenReturn(producerBuilder);
- when(producerBuilder.create()).thenReturn(producer);
- when(producer.send(Mockito.any(byte[].class))).thenAnswer(data -> {
+ ClientBuilder clientBuilder = Mockito.mock(ClientBuilder.class);
+ PulsarClient pulsarClient = Mockito.mock(PulsarClient.class);
+ ProducerBuilder producerBuilder = Mockito.mock(ProducerBuilder.class);
+ Producer producer = Mockito.mock(Producer.class);
+ Mockito.when(clientBuilder.serviceUrl(ArgumentMatchers.anyString())).thenReturn(clientBuilder);
+ Mockito.when(clientBuilder.build()).thenReturn(pulsarClient);
+ Mockito.when(pulsarClient.newProducer()).thenReturn(producerBuilder);
+ Mockito.when(producerBuilder.topic(topic)).thenReturn(producerBuilder);
+ Mockito.when(producerBuilder.create()).thenReturn(producer);
+ Mockito.when(producer.send(Mockito.any(byte[].class))).thenAnswer(data -> {
HashMap map;
ObjectMapper mapper = new ObjectMapper();
String json = new String((byte[]) data.getArgument(0));
@@ -85,16 +82,16 @@ public void testSimpleEventSink() throws PulsarClientException {
PulsarPublisherSink pulsarPublisherSink = new PulsarPublisherSink(clientBuilder);
// Test invocation
- pulsarPublisherSink.onInvocation(params, null);
+ pulsarPublisherSink.onPipelineStarted(params, null);
- verify(clientBuilder).serviceUrl(String.format("pulsar://%s:%d", pulsarHost, pulsarPort));
+ Mockito.verify(clientBuilder).serviceUrl(String.format("pulsar://%s:%d", pulsarHost, pulsarPort));
// Test publish event
- Event event = mock(Event.class);
- when(event.getRaw()).thenReturn(rawMap);
+ Event event = Mockito.mock(Event.class);
+ Mockito.when(event.getRaw()).thenReturn(rawMap);
pulsarPublisherSink.onEvent(event);
- verify(producer, times(1)).send(Mockito.any(byte[].class));
+ Mockito.verify(producer, Mockito.times(1)).send(Mockito.any(byte[].class));
}
}
diff --git a/streampipes-extensions/streampipes-connectors-rocketmq/pom.xml b/streampipes-extensions/streampipes-connectors-rocketmq/pom.xml
new file mode 100644
index 0000000000..06d83db9ad
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/pom.xml
@@ -0,0 +1,65 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-rocketmq
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.rocketmq
+ rocketmq-client-java
+
+
+
+ junit
+ junit
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQConsumer.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQConsumer.java
similarity index 96%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQConsumer.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQConsumer.java
index 43115ffcc2..d062340782 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQConsumer.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQConsumer.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq.adapter;
import org.apache.streampipes.messaging.InternalEventProcessor;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQProtocol.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQProtocol.java
similarity index 97%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQProtocol.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQProtocol.java
index 6af2fa89fc..02970e3630 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQProtocol.java
@@ -15,12 +15,11 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq.adapter;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
import org.apache.streampipes.commons.exceptions.connect.ParseException;
-import org.apache.streampipes.connect.iiot.protocol.stream.BrokerEventProcessor;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
import org.apache.streampipes.extensions.api.connect.IEventCollector;
import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter;
@@ -28,6 +27,7 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQUtils.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQUtils.java
similarity index 96%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQUtils.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQUtils.java
index 38426ae695..a03afeee80 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/rocketmq/RocketMQUtils.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/adapter/RocketMQUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq.adapter;
import org.apache.rocketmq.client.apis.ClientConfiguration;
import org.apache.rocketmq.client.apis.ClientException;
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQParameters.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQParameters.java
similarity index 70%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQParameters.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQParameters.java
index 404119377b..7bfe3e50b5 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQParameters.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQParameters.java
@@ -15,18 +15,18 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq.sink;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
-import static org.apache.streampipes.sinks.brokers.jvm.rocketmq.RocketMQPublisherSink.ENDPOINT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.rocketmq.RocketMQPublisherSink.TOPIC_KEY;
+import static org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink.ENDPOINT_KEY;
+import static org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink.TOPIC_KEY;
public class RocketMQParameters {
- private String endpoint;
- private String topic;
+ private final String endpoint;
+ private final String topic;
- public RocketMQParameters(SinkParams parameters) {
+ public RocketMQParameters(IDataSinkParameters parameters) {
var extractor = parameters.extractor();
this.endpoint = extractor.singleValueParameter(ENDPOINT_KEY, String.class);
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQPublisherSink.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQPublisherSink.java
similarity index 74%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQPublisherSink.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQPublisherSink.java
index ad6532d3bf..f27ad0380a 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/RocketMQPublisherSink.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/java/org/apache/streampipes/extensions/connectors/rocketmq/sink/RocketMQPublisherSink.java
@@ -15,24 +15,25 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq.sink;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.dataformat.SpDataFormatDefinition;
import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.sdk.builder.DataSinkBuilder;
import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
import org.apache.streampipes.sdk.helpers.EpRequirements;
import org.apache.streampipes.sdk.helpers.Labels;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
import com.google.common.annotations.VisibleForTesting;
import org.apache.rocketmq.client.apis.ClientConfiguration;
@@ -45,7 +46,7 @@
import java.io.IOException;
import java.util.Map;
-public class RocketMQPublisherSink extends StreamPipesDataSink {
+public class RocketMQPublisherSink implements IStreamPipesDataSink {
public static final String TOPIC_KEY = "rocketmq-topic";
public static final String ENDPOINT_KEY = "rocketmq-endpoint";
@@ -66,23 +67,26 @@ public RocketMQPublisherSink(ClientServiceProvider provider) {
}
@Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.rocketmq")
- .category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN)
- .withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder
- .create()
- .requiredProperty(EpRequirements.anyProperty())
- .build())
- .requiredTextParameter(Labels.withId(ENDPOINT_KEY))
- .requiredTextParameter(Labels.withId(TOPIC_KEY))
- .build();
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ RocketMQPublisherSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.rocketmq")
+ .category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN)
+ .withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder
+ .create()
+ .requiredProperty(EpRequirements.anyProperty())
+ .build())
+ .requiredTextParameter(Labels.withId(ENDPOINT_KEY))
+ .requiredTextParameter(Labels.withId(TOPIC_KEY))
+ .build()
+ );
}
+
@Override
- public void onInvocation(SinkParams parameters, EventSinkRuntimeContext runtimeContext)
- throws SpRuntimeException {
+ public void onPipelineStarted(IDataSinkParameters parameters, EventSinkRuntimeContext runtimeContext) {
this.params = new RocketMQParameters(parameters);
this.spDataFormatDefinition = new JsonDataFormatDefinition();
@@ -115,7 +119,7 @@ public void onEvent(Event event) throws SpRuntimeException {
}
@Override
- public void onDetach() throws SpRuntimeException {
+ public void onPipelineStopped() {
try {
producer.close();
} catch (IOException e) {
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/documentation.md b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/documentation.md
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/icon.png b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/icon.png
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/strings.en b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/strings.en
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.rocketmq/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/documentation.md b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/documentation.md
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/icon.png b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/icon.png
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/strings.en b/streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/strings.en
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.rocketmq/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/TestRocketMQPublisherSink.java b/streampipes-extensions/streampipes-connectors-rocketmq/src/test/java/org/apache/streampipes/extensions/connectors/rocketmq/TestRocketMQPublisherSink.java
similarity index 76%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/TestRocketMQPublisherSink.java
rename to streampipes-extensions/streampipes-connectors-rocketmq/src/test/java/org/apache/streampipes/extensions/connectors/rocketmq/TestRocketMQPublisherSink.java
index 80053ed796..402a4d539c 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/test/java/org/apache/streampipes/sinks/brokers/jvm/rocketmq/TestRocketMQPublisherSink.java
+++ b/streampipes-extensions/streampipes-connectors-rocketmq/src/test/java/org/apache/streampipes/extensions/connectors/rocketmq/TestRocketMQPublisherSink.java
@@ -15,11 +15,12 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.rocketmq;
+package org.apache.streampipes.extensions.connectors.rocketmq;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
+import org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.sdk.extractor.DataSinkParameterExtractor;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
import org.apache.rocketmq.client.apis.ClientException;
import org.apache.rocketmq.client.apis.ClientServiceProvider;
@@ -28,11 +29,12 @@
import org.apache.rocketmq.client.apis.producer.Producer;
import org.apache.rocketmq.client.apis.producer.ProducerBuilder;
import org.junit.Test;
+import org.mockito.Mockito;
import java.io.IOException;
-import static org.apache.streampipes.sinks.brokers.jvm.rocketmq.RocketMQPublisherSink.ENDPOINT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.rocketmq.RocketMQPublisherSink.TOPIC_KEY;
+import static org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink.ENDPOINT_KEY;
+import static org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink.TOPIC_KEY;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.mock;
@@ -47,17 +49,17 @@ public void testSimpleEventSink() throws IOException, ClientException {
String endpoint = "localhost:8081";
String topic = "TopicTest";
- SinkParams params = mock(SinkParams.class);
+ var params = mock(IDataSinkParameters.class);
DataSinkParameterExtractor extractor = mock(DataSinkParameterExtractor.class);
when(params.extractor()).thenReturn(extractor);
when(extractor.singleValueParameter(ENDPOINT_KEY, String.class)).thenReturn(endpoint);
when(extractor.singleValueParameter(TOPIC_KEY, String.class)).thenReturn(topic);
- ClientServiceProvider provider = mock(ClientServiceProvider.class);
+ ClientServiceProvider provider = Mockito.mock(ClientServiceProvider.class);
- ProducerBuilder producerBuilder = mock(ProducerBuilder.class);
- Producer producer = mock(Producer.class);
+ ProducerBuilder producerBuilder = Mockito.mock(ProducerBuilder.class);
+ Producer producer = Mockito.mock(Producer.class);
when(provider.newProducerBuilder()).thenReturn(producerBuilder);
when(producerBuilder.build()).thenReturn(producer);
@@ -66,13 +68,13 @@ public void testSimpleEventSink() throws IOException, ClientException {
// test onInvocation
RocketMQPublisherSink publisherSink = new RocketMQPublisherSink(provider);
- publisherSink.onInvocation(params, null);
+ publisherSink.onPipelineStarted(params, null);
// test onEvent
Event event = mock(Event.class);
- MessageBuilder messageBuilder = mock(MessageBuilder.class);
- Message message = mock(Message.class);
+ MessageBuilder messageBuilder = Mockito.mock(MessageBuilder.class);
+ Message message = Mockito.mock(Message.class);
when(provider.newMessageBuilder()).thenReturn(messageBuilder);
when(messageBuilder.build()).thenReturn(message);
@@ -83,7 +85,7 @@ public void testSimpleEventSink() throws IOException, ClientException {
verify(producer, times(1)).send(any(Message.class));
// test onDetach
- publisherSink.onDetach();
+ publisherSink.onPipelineStopped();
verify(producer, times(1)).close();
}
}
diff --git a/streampipes-extensions/streampipes-connectors-tubemq/pom.xml b/streampipes-extensions/streampipes-connectors-tubemq/pom.xml
new file mode 100644
index 0000000000..7c417dec9a
--- /dev/null
+++ b/streampipes-extensions/streampipes-connectors-tubemq/pom.xml
@@ -0,0 +1,61 @@
+
+
+
+
+ 4.0.0
+
+ org.apache.streampipes
+ streampipes-extensions
+ 0.93.0-SNAPSHOT
+
+
+ streampipes-connectors-tubemq
+
+
+
+ org.apache.streampipes
+ streampipes-extensions-api
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-extensions-management
+ 0.93.0-SNAPSHOT
+
+
+ org.apache.streampipes
+ streampipes-sdk
+ 0.93.0-SNAPSHOT
+
+
+
+ org.apache.inlong
+ tubemq-client
+
+
+
+ org.apache.streampipes
+ streampipes-wrapper-standalone
+ 0.93.0-SNAPSHOT
+
+
+
+
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/TubeMQProtocol.java b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/adapter/TubeMQProtocol.java
similarity index 98%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/TubeMQProtocol.java
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/adapter/TubeMQProtocol.java
index 2cd54ea35c..84ed9b8289 100644
--- a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/java/org/apache/streampipes/connect/iiot/protocol/stream/TubeMQProtocol.java
+++ b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/adapter/TubeMQProtocol.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.connect.iiot.protocol.stream;
+package org.apache.streampipes.extensions.connectors.tubemq.adapter;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
import org.apache.streampipes.commons.exceptions.connect.ParseException;
@@ -27,6 +27,7 @@
import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext;
import org.apache.streampipes.extensions.api.extractor.IAdapterParameterExtractor;
import org.apache.streampipes.extensions.api.extractor.IStaticPropertyExtractor;
+import org.apache.streampipes.extensions.management.connect.adapter.BrokerEventProcessor;
import org.apache.streampipes.extensions.management.connect.adapter.parser.Parsers;
import org.apache.streampipes.model.AdapterType;
import org.apache.streampipes.model.connect.guess.GuessSchema;
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQParameters.java b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQParameters.java
similarity index 75%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQParameters.java
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQParameters.java
index 5a6c75a84d..b23bfd1046 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQParameters.java
+++ b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQParameters.java
@@ -16,19 +16,19 @@
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.tubemq;
+package org.apache.streampipes.extensions.connectors.tubemq.sink;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
-import static org.apache.streampipes.sinks.brokers.jvm.tubemq.TubeMQPublisherSink.MASTER_HOST_AND_PORT_KEY;
-import static org.apache.streampipes.sinks.brokers.jvm.tubemq.TubeMQPublisherSink.TOPIC_KEY;
+import static org.apache.streampipes.extensions.connectors.tubemq.sink.TubeMQPublisherSink.MASTER_HOST_AND_PORT_KEY;
+import static org.apache.streampipes.extensions.connectors.tubemq.sink.TubeMQPublisherSink.TOPIC_KEY;
public class TubeMQParameters {
private final String masterHostAndPort;
private final String topic;
- public TubeMQParameters(SinkParams parameters) {
+ public TubeMQParameters(IDataSinkParameters parameters) {
var extractor = parameters.extractor();
this.masterHostAndPort = extractor.singleValueParameter(MASTER_HOST_AND_PORT_KEY, String.class);
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQPublisherSink.java b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQPublisherSink.java
similarity index 75%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQPublisherSink.java
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQPublisherSink.java
index 3238cfabfa..5c71ffa6ac 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/tubemq/TubeMQPublisherSink.java
+++ b/streampipes-extensions/streampipes-connectors-tubemq/src/main/java/org/apache/streampipes/extensions/connectors/tubemq/sink/TubeMQPublisherSink.java
@@ -16,23 +16,24 @@
*
*/
-package org.apache.streampipes.sinks.brokers.jvm.tubemq;
+package org.apache.streampipes.extensions.connectors.tubemq.sink;
import org.apache.streampipes.commons.exceptions.SpRuntimeException;
import org.apache.streampipes.dataformat.SpDataFormatDefinition;
import org.apache.streampipes.dataformat.json.JsonDataFormatDefinition;
+import org.apache.streampipes.extensions.api.pe.IStreamPipesDataSink;
+import org.apache.streampipes.extensions.api.pe.config.IDataSinkConfiguration;
import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
+import org.apache.streampipes.extensions.api.pe.param.IDataSinkParameters;
import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.runtime.Event;
import org.apache.streampipes.sdk.builder.DataSinkBuilder;
import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
+import org.apache.streampipes.sdk.builder.sink.DataSinkConfiguration;
import org.apache.streampipes.sdk.helpers.EpRequirements;
import org.apache.streampipes.sdk.helpers.Labels;
import org.apache.streampipes.sdk.helpers.Locales;
import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
import org.apache.inlong.tubemq.client.config.TubeClientConfig;
import org.apache.inlong.tubemq.client.exception.TubeClientException;
@@ -43,7 +44,7 @@
import java.util.Map;
-public class TubeMQPublisherSink extends StreamPipesDataSink {
+public class TubeMQPublisherSink implements IStreamPipesDataSink {
public static final String MASTER_HOST_AND_PORT_KEY = "tubemq-master-host-and-port";
public static final String TOPIC_KEY = "tubemq-topic";
@@ -53,17 +54,22 @@ public class TubeMQPublisherSink extends StreamPipesDataSink {
private MessageProducer messageProducer;
+
@Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.tubemq").category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN).withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder.create().requiredProperty(EpRequirements.anyProperty()).build())
- .requiredTextParameter(Labels.withId(MASTER_HOST_AND_PORT_KEY)).requiredTextParameter(Labels.withId(TOPIC_KEY))
- .build();
+ public IDataSinkConfiguration declareConfig() {
+ return DataSinkConfiguration.create(
+ TubeMQPublisherSink::new,
+ DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.tubemq").category(DataSinkType.MESSAGING)
+ .withLocales(Locales.EN).withAssets(Assets.DOCUMENTATION, Assets.ICON)
+ .requiredStream(StreamRequirementsBuilder.create().requiredProperty(EpRequirements.anyProperty()).build())
+ .requiredTextParameter(Labels.withId(MASTER_HOST_AND_PORT_KEY)).requiredTextParameter(Labels.withId(TOPIC_KEY))
+ .build()
+ );
}
@Override
- public void onInvocation(SinkParams sinkParams, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
+ public void onPipelineStarted(IDataSinkParameters sinkParams,
+ EventSinkRuntimeContext runtimeContext) {
final TubeMQParameters tubeMQParameters = new TubeMQParameters(sinkParams);
spDataFormatDefinition = new JsonDataFormatDefinition();
@@ -96,7 +102,7 @@ public void onEvent(Event event) throws SpRuntimeException {
}
@Override
- public void onDetach() throws SpRuntimeException {
+ public void onPipelineStopped() {
try {
messageProducer.shutdown();
} catch (Throwable e) {
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/documentation.md b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/documentation.md
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/documentation.md
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/icon.png b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/icon.png
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/icon.png
diff --git a/streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/strings.en b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-connect-adapters-iiot/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/strings.en
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.connect.iiot.protocol.stream.tubemq/strings.en
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/documentation.md b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/documentation.md
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/documentation.md
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/documentation.md
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/icon.png b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/icon.png
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/icon.png
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/icon.png
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/strings.en b/streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/strings.en
similarity index 100%
rename from streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/strings.en
rename to streampipes-extensions/streampipes-connectors-tubemq/src/main/resources/org.apache.streampipes.sinks.brokers.jvm.tubemq/strings.en
diff --git a/streampipes-extensions/streampipes-extensions-all-iiot/src/main/java/org/apache/streampipes/extensions/all/iiot/AllExtensionsIIoTInit.java b/streampipes-extensions/streampipes-extensions-all-iiot/src/main/java/org/apache/streampipes/extensions/all/iiot/AllExtensionsIIoTInit.java
index 20298006c0..38d6203f25 100644
--- a/streampipes-extensions/streampipes-extensions-all-iiot/src/main/java/org/apache/streampipes/extensions/all/iiot/AllExtensionsIIoTInit.java
+++ b/streampipes-extensions/streampipes-extensions-all-iiot/src/main/java/org/apache/streampipes/extensions/all/iiot/AllExtensionsIIoTInit.java
@@ -24,6 +24,12 @@
import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
import org.apache.streampipes.extensions.connectors.influx.InfluxConnectorsInit;
+import org.apache.streampipes.extensions.connectors.kafka.sink.KafkaPublishSink;
+import org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink;
+import org.apache.streampipes.extensions.connectors.nats.sink.NatsSink;
+import org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink;
+import org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink;
+import org.apache.streampipes.extensions.connectors.tubemq.sink.TubeMQPublisherSink;
import org.apache.streampipes.extensions.management.model.SpServiceDefinition;
import org.apache.streampipes.extensions.management.model.SpServiceDefinitionBuilder;
import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
@@ -65,6 +71,13 @@ public SpServiceDefinition provideServiceDefinition() {
.merge(new DatabasesJvmInit().provideServiceDefinition())
.merge(new SinksNotificationsJvmInit().provideServiceDefinition())
.merge(new InfluxConnectorsInit().provideServiceDefinition())
+ .registerPipelineElements(
+ new KafkaPublishSink(),
+ new MqttPublisherSink(),
+ new NatsSink(),
+ new PulsarPublisherSink(),
+ new RocketMQPublisherSink(),
+ new TubeMQPublisherSink())
.registerRuntimeProvider(new StandaloneStreamPipesRuntimeProvider())
.registerMessagingFormats(
new JsonDataFormatFactory(),
diff --git a/streampipes-extensions/streampipes-extensions-all-jvm/src/main/java/org/apache/streampipes/extensions/all/jvm/AllExtensionsInit.java b/streampipes-extensions/streampipes-extensions-all-jvm/src/main/java/org/apache/streampipes/extensions/all/jvm/AllExtensionsInit.java
index d40eb314c7..acf19d229c 100644
--- a/streampipes-extensions/streampipes-extensions-all-jvm/src/main/java/org/apache/streampipes/extensions/all/jvm/AllExtensionsInit.java
+++ b/streampipes-extensions/streampipes-extensions-all-jvm/src/main/java/org/apache/streampipes/extensions/all/jvm/AllExtensionsInit.java
@@ -22,6 +22,12 @@
import org.apache.streampipes.dataformat.fst.FstDataFormatFactory;
import org.apache.streampipes.dataformat.json.JsonDataFormatFactory;
import org.apache.streampipes.dataformat.smile.SmileDataFormatFactory;
+import org.apache.streampipes.extensions.connectors.kafka.sink.KafkaPublishSink;
+import org.apache.streampipes.extensions.connectors.mqtt.sink.MqttPublisherSink;
+import org.apache.streampipes.extensions.connectors.nats.sink.NatsSink;
+import org.apache.streampipes.extensions.connectors.pulsar.sink.PulsarPublisherSink;
+import org.apache.streampipes.extensions.connectors.rocketmq.sink.RocketMQPublisherSink;
+import org.apache.streampipes.extensions.connectors.tubemq.sink.TubeMQPublisherSink;
import org.apache.streampipes.extensions.management.model.SpServiceDefinition;
import org.apache.streampipes.extensions.management.model.SpServiceDefinitionBuilder;
import org.apache.streampipes.messaging.jms.SpJmsProtocolFactory;
@@ -47,6 +53,13 @@ public SpServiceDefinition provideServiceDefinition() {
"", 8090)
.merge(new ConnectAdapterIiotInit().provideServiceDefinition())
.merge(new AllPipelineElementsInit().provideServiceDefinition())
+ .registerPipelineElements(
+ new KafkaPublishSink(),
+ new MqttPublisherSink(),
+ new NatsSink(),
+ new PulsarPublisherSink(),
+ new RocketMQPublisherSink(),
+ new TubeMQPublisherSink())
.registerRuntimeProvider(new StandaloneStreamPipesRuntimeProvider())
.registerMessagingFormats(
new JsonDataFormatFactory(),
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/pom.xml b/streampipes-extensions/streampipes-pipeline-elements-shared/pom.xml
index d4497a9418..6deb2233bf 100644
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/pom.xml
+++ b/streampipes-extensions/streampipes-pipeline-elements-shared/pom.xml
@@ -32,35 +32,11 @@
-
- com.google.code.gson
- gson
-
-
- org.apache.streampipes
- streampipes-sdk
- 0.93.0-SNAPSHOT
-
-
- org.apache.streampipes
- streampipes-messaging
- 0.93.0-SNAPSHOT
- compile
-
-
- org.fusesource.mqtt-client
- mqtt-client
-
org.apache.streampipes
streampipes-model
0.93.0-SNAPSHOT
-
- org.apache.streampipes
- streampipes-messaging-kafka
- 0.93.0-SNAPSHOT
-
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConnectUtils.java b/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConnectUtils.java
deleted file mode 100644
index 7cc3f24306..0000000000
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/KafkaConnectUtils.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.pe.shared.config.kafka;
-
-
-
-import org.apache.streampipes.messaging.kafka.config.AutoOffsetResetConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslPlainConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecuritySaslSSLConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedPlainConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityUnauthenticatedSSLConfig;
-import org.apache.streampipes.model.staticproperty.StaticPropertyAlternative;
-import org.apache.streampipes.sdk.StaticProperties;
-import org.apache.streampipes.sdk.extractor.StaticPropertyExtractor;
-import org.apache.streampipes.sdk.helpers.Alternatives;
-import org.apache.streampipes.sdk.helpers.Label;
-import org.apache.streampipes.sdk.helpers.Labels;
-
-import org.apache.kafka.clients.consumer.ConsumerConfig;
-
-public class KafkaConnectUtils {
-
- public static final String TOPIC_KEY = "topic";
- public static final String HOST_KEY = "host";
- public static final String PORT_KEY = "port";
-
- public static final String ACCESS_MODE = "access-mode";
- public static final String UNAUTHENTICATED_PLAIN = "unauthenticated-plain";
- public static final String UNAUTHENTICATED_SSL = "unauthenticated-ssl";
- public static final String SASL_PLAIN = "sasl-plain";
- public static final String SASL_SSL = "sasl-ssl";
-
- public static final String USERNAME_GROUP = "username-group";
- public static final String USERNAME_KEY = "username";
- public static final String PASSWORD_KEY = "password";
-
-
- private static final String HIDE_INTERNAL_TOPICS = "hide-internal-topics";
-
- public static final String AUTO_OFFSET_RESET_CONFIG = ConsumerConfig.AUTO_OFFSET_RESET_CONFIG;
- public static final String EARLIEST = "earliest";
- public static final String LATEST = "latest";
- public static final String NONE = "none";
-
- public static Label getTopicLabel() {
- return Labels.withId(TOPIC_KEY);
- }
-
- public static Label getHideInternalTopicsLabel() {
- return Labels.withId(HIDE_INTERNAL_TOPICS);
- }
-
- public static String getHideInternalTopicsKey() {
- return HIDE_INTERNAL_TOPICS;
- }
-
- public static Label getHostLabel() {
- return Labels.withId(HOST_KEY);
- }
-
- public static Label getPortLabel() {
- return Labels.withId(PORT_KEY);
- }
-
- public static Label getAccessModeLabel() {
- return Labels.withId(ACCESS_MODE);
- }
-
- public static Label getAutoOffsetResetConfigLabel() {
- return Labels.withId(AUTO_OFFSET_RESET_CONFIG);
- }
-
- public static KafkaConfig getConfig(StaticPropertyExtractor extractor, boolean containsTopic) {
- String brokerUrl = extractor.singleValueParameter(HOST_KEY, String.class);
- String topic = "";
- if (containsTopic) {
- topic = extractor.selectedSingleValue(TOPIC_KEY, String.class);
- }
-
- Integer port = extractor.singleValueParameter(PORT_KEY, Integer.class);
-
- String authentication = extractor.selectedAlternativeInternalId(ACCESS_MODE);
- boolean isUseSSL = isUseSSL(authentication);
-
- KafkaSecurityConfig securityConfig;
-
- // check if a user for the authentication is defined
- if (authentication.equals(KafkaConnectUtils.SASL_SSL) || authentication.equals(KafkaConnectUtils.SASL_PLAIN)) {
- String username = extractor.singleValueParameter(USERNAME_KEY, String.class);
- String password = extractor.secretValue(PASSWORD_KEY);
-
- securityConfig = isUseSSL
- ? new KafkaSecuritySaslSSLConfig(username, password) :
- new KafkaSecuritySaslPlainConfig(username, password);
- } else {
- // set security config for none authenticated access
- securityConfig = isUseSSL
- ? new KafkaSecurityUnauthenticatedSSLConfig() :
- new KafkaSecurityUnauthenticatedPlainConfig();
- }
-
- String auto = extractor.selectedAlternativeInternalId(AUTO_OFFSET_RESET_CONFIG);
- AutoOffsetResetConfig autoOffsetResetConfig = new AutoOffsetResetConfig(auto);
-
- return new KafkaConfig(brokerUrl, port, topic, securityConfig, autoOffsetResetConfig);
- }
-
- private static boolean isUseSSL(String authentication) {
- if (authentication.equals(KafkaConnectUtils.UNAUTHENTICATED_PLAIN)
- || authentication.equals(KafkaConnectUtils.SASL_PLAIN)) {
- return false;
- } else {
- return true;
- }
- }
-
-
- public static StaticPropertyAlternative getAlternativeUnauthenticatedPlain() {
- return Alternatives.from(Labels.withId(KafkaConnectUtils.UNAUTHENTICATED_PLAIN));
- }
-
- public static StaticPropertyAlternative getAlternativeUnauthenticatedSSL() {
- return Alternatives.from(Labels.withId(KafkaConnectUtils.UNAUTHENTICATED_SSL));
- }
-
- public static StaticPropertyAlternative getAlternativesSaslPlain() {
- return Alternatives.from(Labels.withId(KafkaConnectUtils.SASL_PLAIN),
- StaticProperties.group(Labels.withId(KafkaConnectUtils.USERNAME_GROUP),
- StaticProperties.stringFreeTextProperty(Labels.withId(KafkaConnectUtils.USERNAME_KEY)),
- StaticProperties.secretValue(Labels.withId(KafkaConnectUtils.PASSWORD_KEY))));
- }
-
- public static StaticPropertyAlternative getAlternativesSaslSSL() {
- return Alternatives.from(Labels.withId(KafkaConnectUtils.SASL_SSL),
- StaticProperties.group(Labels.withId(KafkaConnectUtils.USERNAME_GROUP),
- StaticProperties.stringFreeTextProperty(Labels.withId(KafkaConnectUtils.USERNAME_KEY)),
- StaticProperties.secretValue(Labels.withId(KafkaConnectUtils.PASSWORD_KEY))));
- }
-
-
- public static StaticPropertyAlternative getAlternativesLatest() {
- return Alternatives.from(Labels.withId(LATEST));
- }
-
- public static StaticPropertyAlternative getAlternativesEarliest() {
- return Alternatives.from(Labels.withId(EARLIEST));
- }
-
- public static StaticPropertyAlternative getAlternativesNone() {
- return Alternatives.from(Labels.withId(NONE));
- }
-}
diff --git a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConfig.java b/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConfig.java
deleted file mode 100644
index 61c83c2a10..0000000000
--- a/streampipes-extensions/streampipes-pipeline-elements-shared/src/main/java/org/apache/streampipes/pe/shared/config/kafka/kafka/KafkaConfig.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.streampipes.pe.shared.config.kafka.kafka;
-
-import org.apache.streampipes.messaging.kafka.config.AutoOffsetResetConfig;
-import org.apache.streampipes.messaging.kafka.security.KafkaSecurityConfig;
-
-public class KafkaConfig {
-
- private String kafkaHost;
- private Integer kafkaPort;
- private String topic;
-
- KafkaSecurityConfig securityConfig;
- AutoOffsetResetConfig autoOffsetResetConfig;
-
- public KafkaConfig(String kafkaHost,
- Integer kafkaPort,
- String topic,
- KafkaSecurityConfig securityConfig,
- AutoOffsetResetConfig autoOffsetResetConfig) {
- this.kafkaHost = kafkaHost;
- this.kafkaPort = kafkaPort;
- this.topic = topic;
- this.securityConfig = securityConfig;
- this.autoOffsetResetConfig = autoOffsetResetConfig;
- }
-
- public String getKafkaHost() {
- return kafkaHost;
- }
-
- public void setKafkaHost(String kafkaHost) {
- this.kafkaHost = kafkaHost;
- }
-
- public Integer getKafkaPort() {
- return kafkaPort;
- }
-
- public void setKafkaPort(Integer kafkaPort) {
- this.kafkaPort = kafkaPort;
- }
-
- public String getTopic() {
- return topic;
- }
-
- public void setTopic(String topic) {
- this.topic = topic;
- }
-
- public KafkaSecurityConfig getSecurityConfig() {
- return securityConfig;
- }
-
- public void setSecurityConfig(KafkaSecurityConfig securityConfig) {
- this.securityConfig = securityConfig;
- }
-
- public AutoOffsetResetConfig getAutoOffsetResetConfig() {
- return autoOffsetResetConfig;
- }
-
- public void setAutoOffsetResetConfig(AutoOffsetResetConfig autoOffsetResetConfig) {
- this.autoOffsetResetConfig = autoOffsetResetConfig;
- }
-}
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/pom.xml b/streampipes-extensions/streampipes-sinks-brokers-jvm/pom.xml
index dcd37af068..17ce327654 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/pom.xml
+++ b/streampipes-extensions/streampipes-sinks-brokers-jvm/pom.xml
@@ -59,14 +59,6 @@
org.apache.httpcomponents
fluent-hc
-
- org.apache.pulsar
- pulsar-client
-
-
- org.apache.rocketmq
- rocketmq-client-java
-
org.fusesource.mqtt-client
mqtt-client
@@ -79,15 +71,6 @@
org.java-websocket
Java-WebSocket
-
- io.nats
- jnats
- ${nats.version}
-
-
- org.apache.inlong
- tubemq-client
-
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/BrokersJvmInit.java b/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/BrokersJvmInit.java
index ec35607875..d9bde7132e 100644
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/BrokersJvmInit.java
+++ b/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/BrokersJvmInit.java
@@ -31,14 +31,8 @@
import org.apache.streampipes.service.extensions.ExtensionsModelSubmitter;
import org.apache.streampipes.sinks.brokers.jvm.bufferrest.BufferRestPublisherSink;
import org.apache.streampipes.sinks.brokers.jvm.jms.JmsPublisherSink;
-import org.apache.streampipes.sinks.brokers.jvm.kafka.KafkaPublishSink;
-import org.apache.streampipes.sinks.brokers.jvm.mqtt.MqttPublisherSink;
-import org.apache.streampipes.sinks.brokers.jvm.nats.NatsController;
-import org.apache.streampipes.sinks.brokers.jvm.pulsar.PulsarPublisherSink;
import org.apache.streampipes.sinks.brokers.jvm.rabbitmq.RabbitMqPublisherSink;
import org.apache.streampipes.sinks.brokers.jvm.rest.RestSink;
-import org.apache.streampipes.sinks.brokers.jvm.rocketmq.RocketMQPublisherSink;
-import org.apache.streampipes.sinks.brokers.jvm.tubemq.TubeMQPublisherSink;
import org.apache.streampipes.sinks.brokers.jvm.websocket.WebsocketServerSink;
public class BrokersJvmInit extends ExtensionsModelSubmitter {
@@ -54,17 +48,11 @@ public SpServiceDefinition provideServiceDefinition() {
"",
8096)
.registerPipelineElements(
- new KafkaPublishSink(),
new JmsPublisherSink(),
new RestSink(),
new BufferRestPublisherSink(),
new RabbitMqPublisherSink(),
- new MqttPublisherSink(),
- new WebsocketServerSink(),
- new PulsarPublisherSink(),
- new RocketMQPublisherSink(),
- new TubeMQPublisherSink(),
- new NatsController())
+ new WebsocketServerSink())
.registerMessagingFormats(
new JsonDataFormatFactory(),
new CborDataFormatFactory(),
diff --git a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttPublisherSink.java b/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttPublisherSink.java
deleted file mode 100644
index 3d17ea3992..0000000000
--- a/streampipes-extensions/streampipes-sinks-brokers-jvm/src/main/java/org/apache/streampipes/sinks/brokers/jvm/mqtt/MqttPublisherSink.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-package org.apache.streampipes.sinks.brokers.jvm.mqtt;
-
-import org.apache.streampipes.commons.exceptions.SpRuntimeException;
-import org.apache.streampipes.extensions.api.pe.context.EventSinkRuntimeContext;
-import org.apache.streampipes.model.DataSinkType;
-import org.apache.streampipes.model.graph.DataSinkDescription;
-import org.apache.streampipes.model.runtime.Event;
-import org.apache.streampipes.model.staticproperty.Option;
-import org.apache.streampipes.sdk.StaticProperties;
-import org.apache.streampipes.sdk.builder.DataSinkBuilder;
-import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder;
-import org.apache.streampipes.sdk.helpers.Alternatives;
-import org.apache.streampipes.sdk.helpers.Labels;
-import org.apache.streampipes.sdk.helpers.Locales;
-import org.apache.streampipes.sdk.utils.Assets;
-import org.apache.streampipes.wrapper.params.compat.SinkParams;
-import org.apache.streampipes.wrapper.standalone.StreamPipesDataSink;
-
-import java.util.Arrays;
-
-public class MqttPublisherSink extends StreamPipesDataSink {
-
- private static final int DEFAULT_MQTT_PORT = 1883;
- private static final int DEFAULT_RECONNECT_PERIOD = 30;
- private static final int DEFAULT_KEEP_ALIVE = 30;
-
- public static final String TOPIC = "topic";
- public static final String HOST = "host";
- public static final String PORT = "port";
- public static final String AUTH_MODE = "auth-mode";
- public static final String NO_AUTH_ALTERNATIVE = "no-auth-alternative";
- public static final String AUTH_ALTERNATIVE = "basic-auth-alternative";
- public static final String USERNAME_GROUP = "username-group";
- public static final String USERNAME = "username";
- public static final String PASSWORD = "password";
- public static final String QOS_LEVEL_KEY = "qos-level";
- public static final String CLEAN_SESSION_KEY = "clean-session";
- public static final String WILL_RETAIN = "will-retain";
- public static final String ENCRYPTION_MODE = "encryption-mode";
- public static final String RECONNECT_PERIOD_IN_SEC = "reconnect-period";
- public static final String WILL_MODE = "lwt-mode";
- public static final String NO_WILL_ALTERNATIVE = "no-lwt-alternative";
- public static final String WILL_ALTERNATIVE = "lwt-alternative";
- public static final String WILL_GROUP = "lwt-group";
- public static final String WILL_TOPIC = "lwt-topic";
- public static final String WILL_MESSAGE = "lwt-message";
- public static final String WILL_QOS = "lwt-qos-level";
- public static final String RETAIN = "retain";
- public static final String KEEP_ALIVE_IN_SEC = "keep-alive";
- public static final String MQTT_COMPLIANT = "mqtt-version-compliant";
-
- private MqttClient mqttClient;
-
- @Override
- public DataSinkDescription declareModel() {
- return DataSinkBuilder.create("org.apache.streampipes.sinks.brokers.jvm.mqtt")
- .category(DataSinkType.MESSAGING)
- .withLocales(Locales.EN)
- .withAssets(Assets.DOCUMENTATION, Assets.ICON)
- .requiredStream(StreamRequirementsBuilder.any())
- .requiredTextParameter(Labels.withId(TOPIC))
- .requiredTextParameter(Labels.withId(HOST))
- .requiredIntegerParameter(Labels.withId(PORT), DEFAULT_MQTT_PORT)
- .requiredAlternatives(
- Labels.withId(AUTH_MODE),
- Alternatives.from(Labels.withId(NO_AUTH_ALTERNATIVE), true),
- Alternatives.from(Labels.withId(AUTH_ALTERNATIVE),
- StaticProperties.group(Labels.withId(USERNAME_GROUP),
- StaticProperties.stringFreeTextProperty(Labels.withId(USERNAME)),
- StaticProperties.secretValue(Labels.withId(PASSWORD)))))
- .requiredSingleValueSelection(
- Labels.withId(ENCRYPTION_MODE),
- Arrays.asList(
- new Option("TCP", true),
- // SSL not yet supported
- new Option("SSL/TLS", false)))
- .requiredSingleValueSelection(
- Labels.withId(QOS_LEVEL_KEY),
- Arrays.asList(
- new Option("0 - at-most-once", false),
- new Option("1 - at-least-once", true),
- new Option("2 - exactly-once", false)))
- .requiredSingleValueSelection(
- Labels.withId(RETAIN),
- Arrays.asList(
- new Option("Yes", false),
- new Option("No", true)))
- .requiredSingleValueSelection(
- Labels.withId(CLEAN_SESSION_KEY),
- Arrays.asList(
- new Option("Yes", true),
- new Option("No", false)))
- .requiredIntegerParameter(Labels.withId(RECONNECT_PERIOD_IN_SEC), DEFAULT_RECONNECT_PERIOD)
- .requiredIntegerParameter(Labels.withId(KEEP_ALIVE_IN_SEC), DEFAULT_KEEP_ALIVE)
- .requiredSingleValueSelection(
- Labels.withId(MQTT_COMPLIANT),
- Arrays.asList(
- new Option("Yes", true),
- new Option("No", false)))
- .requiredAlternatives(
- Labels.withId(WILL_MODE),
- Alternatives.from(Labels.withId(NO_WILL_ALTERNATIVE), true),
- Alternatives.from(Labels.withId(WILL_ALTERNATIVE),
- StaticProperties.group(Labels.withId(WILL_GROUP),
- StaticProperties.stringFreeTextProperty(Labels.withId(WILL_TOPIC)),
- StaticProperties.stringFreeTextProperty(Labels.withId(WILL_MESSAGE)),
- StaticProperties.singleValueSelection(Labels.withId(WILL_RETAIN),
- Arrays.asList(
- new Option("Yes", false),
- new Option("No", true))),
- StaticProperties.singleValueSelection(
- Labels.withId(WILL_QOS),
- Arrays.asList(
- new Option("0 - at-most-once", true),
- new Option("1 - at-least-once", false),
- new Option("2 - exactly-once", false))))))
- .build();
- }
-
-
- @Override
- public void onInvocation(SinkParams params, EventSinkRuntimeContext runtimeContext) throws SpRuntimeException {
- this.mqttClient = new MqttClient(params);
- this.mqttClient.connect();
- }
-
- @Override
- public void onEvent(Event event) throws SpRuntimeException {
- this.mqttClient.publish(event);
- }
-
- @Override
- public void onDetach() throws SpRuntimeException {
- this.mqttClient.disconnect();
- }
-}
diff --git a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/AdaptersTest.java b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/AdaptersTest.java
index 4785c58368..6a334e822f 100644
--- a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/AdaptersTest.java
+++ b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/AdaptersTest.java
@@ -22,12 +22,12 @@
public class AdaptersTest {
-// @Test
-// public void testPulsarAdapter() throws Exception {
-// try (PulsarAdapterTester pulsarAdapterTester = new PulsarAdapterTester()) {
-// pulsarAdapterTester.run();
-// }
-// }
+ @Test
+ public void testPulsarAdapter() throws Exception {
+ try (PulsarAdapterTester pulsarAdapterTester = new PulsarAdapterTester()) {
+ pulsarAdapterTester.run();
+ }
+ }
@Test
public void testMqttAdapter() throws Exception {
diff --git a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/KafkaAdapterTester.java b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/KafkaAdapterTester.java
index 4d12cd10f7..d58611a5e4 100644
--- a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/KafkaAdapterTester.java
+++ b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/KafkaAdapterTester.java
@@ -19,9 +19,10 @@
package org.apache.streampipes.integration.adapters;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
-import org.apache.streampipes.connect.iiot.protocol.stream.KafkaProtocol;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter;
+import org.apache.streampipes.extensions.connectors.kafka.adapter.KafkaProtocol;
+import org.apache.streampipes.extensions.connectors.kafka.shared.kafka.KafkaConnectUtils;
import org.apache.streampipes.integration.containers.KafkaContainer;
import org.apache.streampipes.integration.containers.KafkaDevContainer;
import org.apache.streampipes.manager.template.AdapterTemplateHandler;
@@ -32,7 +33,6 @@
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternatives;
import org.apache.streampipes.model.template.PipelineElementTemplate;
import org.apache.streampipes.model.template.PipelineElementTemplateConfig;
-import org.apache.streampipes.pe.shared.config.kafka.KafkaConnectUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/MqttAdapterTester.java b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/MqttAdapterTester.java
index f7e38f7e1a..89eb52f814 100644
--- a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/MqttAdapterTester.java
+++ b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/MqttAdapterTester.java
@@ -19,9 +19,10 @@
package org.apache.streampipes.integration.adapters;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
-import org.apache.streampipes.connect.iiot.protocol.stream.MqttProtocol;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter;
+import org.apache.streampipes.extensions.connectors.mqtt.adapter.MqttProtocol;
+import org.apache.streampipes.extensions.connectors.mqtt.shared.MqttConnectUtils;
import org.apache.streampipes.integration.containers.MosquittoContainer;
import org.apache.streampipes.integration.containers.MosquittoDevContainer;
import org.apache.streampipes.integration.utils.Utils;
@@ -31,7 +32,6 @@
import org.apache.streampipes.model.staticproperty.StaticPropertyAlternatives;
import org.apache.streampipes.model.template.PipelineElementTemplate;
import org.apache.streampipes.model.template.PipelineElementTemplateConfig;
-import org.apache.streampipes.pe.shared.config.mqtt.MqttConnectUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/PulsarAdapterTester.java b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/PulsarAdapterTester.java
index 177b38a3da..79da691017 100644
--- a/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/PulsarAdapterTester.java
+++ b/streampipes-integration-tests/src/test/java/org/apache/streampipes/integration/adapters/PulsarAdapterTester.java
@@ -18,9 +18,9 @@
package org.apache.streampipes.integration.adapters;
import org.apache.streampipes.commons.exceptions.connect.AdapterException;
-import org.apache.streampipes.connect.iiot.protocol.stream.pulsar.PulsarProtocol;
import org.apache.streampipes.extensions.api.connect.IAdapterConfiguration;
import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter;
+import org.apache.streampipes.extensions.connectors.pulsar.adapter.PulsarProtocol;
import org.apache.streampipes.integration.containers.PulsarContainer;
import org.apache.streampipes.integration.containers.PulsarDevContainer;
import org.apache.streampipes.integration.utils.Utils;