diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 061e5831..8d6fa674 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -12,9 +12,9 @@ jobs: build_jdk17: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4.5.0 with: java-version: 17 distribution: zulu @@ -25,9 +25,9 @@ jobs: build_jdk21: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.2.2 - name: Set up JDK 21 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4.5.0 with: java-version: 21 distribution: zulu @@ -38,9 +38,9 @@ jobs: integration_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4.2.2 - name: Set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4.5.0 with: java-version: 17 distribution: zulu diff --git a/.gitignore b/.gitignore index 659ca628..0bdafc50 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,10 @@ buildNumber.properties .settings # GENERATED # -src/main/generated \ No newline at end of file +src/main/generated + +# LOCAL SETTINGS # +ci/local-settings.xml + +# LCK # +*.lck \ No newline at end of file diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index f365729a..ea08cf50 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 3.2.2 + 3.3.0 AGRIROUTER SDK JAVA - API agrirouter-sdk-java-api @@ -48,6 +48,14 @@ org.apache.commons commons-lang3 + + org.eclipse.paho + org.eclipse.paho.client.mqttv3 + + + com.hivemq + hivemq-mqtt-client + diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Ar2QA.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Ar2QA.java deleted file mode 100644 index 9b8abbae..00000000 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Ar2QA.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.dke.data.agrirouter.api.env; - -/** - * Abstraction of the QA environment, currently no overrides because the default is QA already. - */ -public abstract class Ar2QA implements Environment { - - private static final String ENV_BASE_URL = "https://app.qa.agrirouter.farm"; - private static final String API_PREFIX = "/api/v1.0"; - private static final String REGISTRATION_SERVICE_URL = - "https://endpoint-service.qa.agrirouter.farm"; - - @Override - public String getEnvironmentBaseUrl() { - return ENV_BASE_URL; - } - - @Override - public String getApiPrefix() { - return API_PREFIX; - } - - @Override - public String getRegistrationServiceUrl() { - return REGISTRATION_SERVICE_URL; - } -} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/QA.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/QA.java index c7ff69dd..78a1e428 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/QA.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/QA.java @@ -2,17 +2,13 @@ /** * Abstraction of the QA environment, currently no overrides because the default is QA already. - * - * @deprecated This class is deprecated and will be removed in future versions. - * The new agrirouter environment will be the default to use */ -@Deprecated(since = "3.2.0", forRemoval = true) public abstract class QA implements Environment { - private static final String ENV_BASE_URL = "https://agrirouter-qa.cfapps.eu10.hana.ondemand.com"; + private static final String ENV_BASE_URL = "https://app.qa.agrirouter.farm"; private static final String API_PREFIX = "/api/v1.0"; private static final String REGISTRATION_SERVICE_URL = - "https://agrirouter-registration-service-hubqa-eu10.cfapps.eu10.hana.ondemand.com"; + "https://endpoint-service.qa.agrirouter.farm"; @Override public String getEnvironmentBaseUrl() { diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/HiveMqttClientWrapper.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/HiveMqttClientWrapper.java new file mode 100644 index 00000000..c499dee1 --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/HiveMqttClientWrapper.java @@ -0,0 +1,22 @@ +package com.dke.data.agrirouter.api.mqtt; + +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; + +/** + * A wrapper around HiveMQ's Mqtt3AsyncClient that implements the MqttClientWrapper interface. + * This class is responsible for publishing messages to a specified MQTT topic using the + * provided Mqtt3AsyncClient. + */ +public class HiveMqttClientWrapper implements MqttClientWrapper { + + private final Mqtt3AsyncClient mqttClient; + + public HiveMqttClientWrapper(Mqtt3AsyncClient mqttClient) { + this.mqttClient = mqttClient; + } + + @Override + public void publish(String measures, byte[] payload) { + this.mqttClient.publishWith().topic(measures).payload(payload).send(); + } +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/MqttClientWrapper.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/MqttClientWrapper.java new file mode 100644 index 00000000..3948911b --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/MqttClientWrapper.java @@ -0,0 +1,17 @@ +package com.dke.data.agrirouter.api.mqtt; + +/** + * Interface representing an MQTT client wrapper for publishing messages. + * Implementations of this interface should define how to publish messages + * to a specific topic with a given payload. + */ +public interface MqttClientWrapper { + + /** + * Publishes a message to a specific topic with a given payload. + * + * @param measures the topic to which the message should be published + * @param payload the byte array representing the content of the message + */ + void publish(String measures, byte[] payload); +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/PahoMqttClientWrapper.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/PahoMqttClientWrapper.java new file mode 100644 index 00000000..0fdc606f --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/PahoMqttClientWrapper.java @@ -0,0 +1,30 @@ +package com.dke.data.agrirouter.api.mqtt; + +import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; +import org.eclipse.paho.client.mqttv3.IMqttClient; +import org.eclipse.paho.client.mqttv3.MqttException; +import org.eclipse.paho.client.mqttv3.MqttMessage; + +/** + * PahoMqttClientWrapper is an implementation of the MqttClientWrapper interface, + * providing a wrapper around an instance of IMqttClient from the Paho MQTT library. + * This class handles the publishing of MQTT messages to specified topics with a given payload. + */ +public class PahoMqttClientWrapper implements MqttClientWrapper { + + private final IMqttClient mqttClient; + + public PahoMqttClientWrapper(IMqttClient mqttClient) { + this.mqttClient = mqttClient; + } + + @Override + public void publish(String measures, byte[] payload) { + try { + this.mqttClient.publish(measures, new MqttMessage(payload)); + } catch (MqttException e) { + throw new CouldNotSendMqttMessageException(e); + } + } + +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/PingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/PingService.java new file mode 100644 index 00000000..3974e33d --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/PingService.java @@ -0,0 +1,9 @@ +package com.dke.data.agrirouter.api.service.messaging.mqtt; + +import com.dke.data.agrirouter.api.service.parameters.PingParameters; + +/** + * Service interface for pinging the health interface. + */ +public interface PingService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt index 4e5165e9..02e96f62 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SystemMessageType.kt @@ -29,7 +29,8 @@ enum class SystemMessageType(private val key: String, private val typeUrl: Strin DKE_FEED_CONFIRM("dke:feed_confirm", FeedRequests.MessageConfirm.getDescriptor().fullName), DKE_FEED_DELETE("dke:feed_delete", FeedRequests.MessageDelete.getDescriptor().fullName), DKE_FEED_MESSAGE_QUERY("dke:feed_message_query", FeedRequests.MessageQuery.getDescriptor().fullName), - DKE_FEED_HEADER_QUERY("dke:feed_header_query", FeedRequests.MessageQuery.getDescriptor().fullName); + DKE_FEED_HEADER_QUERY("dke:feed_header_query", FeedRequests.MessageQuery.getDescriptor().fullName), + DKE_PING("dke:ping", ""); override fun getKey(): String { return key diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PingParameters.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PingParameters.kt new file mode 100644 index 00000000..385f7bda --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PingParameters.kt @@ -0,0 +1,18 @@ +package com.dke.data.agrirouter.api.service.parameters + +import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse +import com.dke.data.agrirouter.api.service.ParameterValidation +import com.dke.data.agrirouter.api.service.parameters.base.AbstractParameterBase + +/** + * Parameters class. Encapsulation for the services. + */ +class PingParameters : AbstractParameterBase(), ParameterValidation { + + var onboardingResponse: OnboardingResponse? = null + + override fun technicalValidation() { + nullCheck("onboardingResponse", onboardingResponse) + } + +} \ No newline at end of file diff --git a/agrirouter-sdk-java-convenience/pom.xml b/agrirouter-sdk-java-convenience/pom.xml index a2612b2c..c4f68e20 100644 --- a/agrirouter-sdk-java-convenience/pom.xml +++ b/agrirouter-sdk-java-convenience/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 3.2.2 + 3.3.0 AGRIROUTER SDK JAVA - CONVENIENCE agrirouter-sdk-java-convenience diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/hive/HiveMqttClientService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/hive/HiveMqttClientService.java new file mode 100644 index 00000000..a3c2378d --- /dev/null +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/hive/HiveMqttClientService.java @@ -0,0 +1,71 @@ +package com.dke.data.agrirouter.convenience.mqtt.hive; + +import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; +import com.dke.data.agrirouter.api.dto.onboard.RouterDevice; +import com.dke.data.agrirouter.api.env.Environment; +import com.dke.data.agrirouter.api.exception.CouldNotCreateMqttClientException; +import com.dke.data.agrirouter.impl.EnvironmentalService; +import com.hivemq.client.mqtt.MqttClient; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; +import org.apache.commons.lang3.StringUtils; + +import java.util.Objects; + +/** + * Service to create a MQTT client using the given onboarding response. + */ +@SuppressWarnings("unused") +public class HiveMqttClientService extends EnvironmentalService { + + /** + * Constructor for an environmental service. + * + * @param environment - + */ + public HiveMqttClientService(Environment environment) { + super(environment); + } + + /** + * Creates a MQTT client using the given onboarding response. Communication relies on given root + * certificates in an external keystore. The keystore with the root certificates is not created + * locally. + * + * @param onboardingResponse - + * @return - + */ + public Mqtt3AsyncClient create(OnboardingResponse onboardingResponse) { + return this.createMqttClient( + onboardingResponse.getConnectionCriteria().getHost(), + onboardingResponse.getConnectionCriteria().getPort(), + onboardingResponse.getConnectionCriteria().getClientId()); + } + + /** + * Creates a MQTT client using the given router Device. Communication relies on given root + * certificates in an external keystore. The keystore with the root certificates is not created + * locally. + * + * @param routerDevice - + * @return - + */ + public Mqtt3AsyncClient create(RouterDevice routerDevice) { + return this.createMqttClient( + routerDevice.getConnectionCriteria().getHost(), + String.valueOf(routerDevice.getConnectionCriteria().getPort()), + routerDevice.getConnectionCriteria().getClientId()); + } + + private Mqtt3AsyncClient createMqttClient(String host, String port, String clientId) { + if (StringUtils.isAnyBlank(host, port, clientId)) { + throw new CouldNotCreateMqttClientException( + "Currently there are parameters missing. Did you onboard correctly - host, port or client id are missing."); + } + return MqttClient.builder() + .useMqttVersion3() + .identifier(Objects.requireNonNull(clientId)) + .serverHost(host) + .serverPort(Integer.parseInt(port)) + .buildAsync(); + } +} diff --git a/agrirouter-sdk-java-impl/pom.xml b/agrirouter-sdk-java-impl/pom.xml index 9b0b9434..31eccbfa 100644 --- a/agrirouter-sdk-java-impl/pom.xml +++ b/agrirouter-sdk-java-impl/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 3.2.2 + 3.3.0 AGRIROUTER SDK JAVA - IMPL agrirouter-sdk-java-impl diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java index ed034713..558a52dd 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageEncoder.java @@ -16,6 +16,7 @@ import com.dke.data.agrirouter.api.service.parameters.*; import com.dke.data.agrirouter.api.util.TimestampUtil; import com.dke.data.agrirouter.impl.common.MessageIdService; +import com.google.protobuf.ByteString; import java.util.Objects; @@ -450,10 +451,45 @@ default EncodedMessage encode(CloudOffboardingParameters parameters) { return new EncodedMessage(applicationMessageID, encodedMessage); } + /** + * Encode a message to send a message. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(PingParameters parameters) { + final var applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + var messageContent = ""; // No content for ping messages. + + var messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setApplicationMessageId(applicationMessageID); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_PING); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + var payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_PING.getTypeUrl()); + + payloadParameters.setValue(ByteString.copyFrom(messageContent.getBytes())); + + var encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); + } + /** * Get the service to encode messages. * * @return - */ EncodeMessageService getEncodeMessageService(); + } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java index 1a4bb7f7..d508b8f1 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java @@ -1,19 +1,19 @@ package com.dke.data.agrirouter.impl.messaging; -import org.eclipse.paho.client.mqttv3.IMqttClient; +import com.dke.data.agrirouter.api.mqtt.MqttClientWrapper; /** * Base class which holds the MQTT client with the connection provided by the provider. */ public class MqttService { - private final IMqttClient mqttClient; + private final MqttClientWrapper mqttClientWrapper; - public MqttService(IMqttClient mqttClient) { - this.mqttClient = mqttClient; + public MqttService(MqttClientWrapper mqttClientWrapper) { + this.mqttClientWrapper = mqttClientWrapper; } - protected IMqttClient getMqttClient() { - return mqttClient; + protected MqttClientWrapper getMqttClient() { + return mqttClientWrapper; } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/mqtt/MessageQueryHelperService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/mqtt/MessageQueryHelperService.java index fef5faaf..775591f9 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/mqtt/MessageQueryHelperService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/mqtt/MessageQueryHelperService.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.helper.mqtt; import com.dke.data.agrirouter.api.enums.TechnicalMessageType; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; @@ -9,9 +10,8 @@ import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.helper.QueryAllMessagesParameterCreator; import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -26,11 +26,18 @@ public MessageQueryHelperService( IMqttClient mqttClient, EncodeMessageService encodeMessageService, TechnicalMessageType technicalMessageType) { - super(mqttClient); - this.logMethodBegin(); + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = encodeMessageService; + this.technicalMessageType = technicalMessageType; + } + + public MessageQueryHelperService( + Mqtt3AsyncClient mqttClient, + EncodeMessageService encodeMessageService, + TechnicalMessageType technicalMessageType) { + super(new HiveMqttClientWrapper(mqttClient)); this.encodeMessageService = encodeMessageService; this.technicalMessageType = technicalMessageType; - this.logMethodEnd(); } public String send(MessageQueryParameters parameters) { @@ -38,29 +45,25 @@ public String send(MessageQueryParameters parameters) { this.getNativeLogger().trace("Validate parameters."); parameters.validate(); - try { - this.getNativeLogger().trace("Encode message."); - var encodedMessage = this.encode(this.technicalMessageType, parameters); + this.getNativeLogger().trace("Encode message."); + var encodedMessage = this.encode(this.technicalMessageType, parameters); - this.getNativeLogger().trace("Build message parameters."); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); + this.getNativeLogger().trace("Build message parameters."); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); - this.getNativeLogger().trace("Send and fetch message response."); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + this.getNativeLogger().trace("Send and fetch message response."); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOffboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOffboardingServiceImpl.java index a3c8ca19..caedaaa7 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOffboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOffboardingServiceImpl.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.CloudOffboardingService; import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters; @@ -10,9 +11,8 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -28,36 +28,35 @@ public class CloudOffboardingServiceImpl extends MqttService private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); public CloudOffboardingServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); } - /** + public CloudOffboardingServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); + } + + /** * Offboarding a virtual CU. Will deliver no result if the action was successful, if there's any * error an exception will be thrown. * * @param parameters Parameters for offboarding. */ - @Override + @Override public String send(CloudOffboardingParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOnboardingServiceImpl.java index 96d2b897..2c6c9367 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/CloudOnboardingServiceImpl.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.CloudOnboardingService; import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters; @@ -10,9 +11,8 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -25,7 +25,11 @@ public class CloudOnboardingServiceImpl extends MqttService private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); public CloudOnboardingServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + } + + public CloudOnboardingServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); } /** @@ -37,24 +41,20 @@ public CloudOnboardingServiceImpl(IMqttClient mqttClient) { @Override public String send(CloudOnboardingParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/DeleteMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/DeleteMessageServiceImpl.java index eee3006c..43e23f60 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/DeleteMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/DeleteMessageServiceImpl.java @@ -1,8 +1,9 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.DeleteMessageService; import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters; @@ -12,9 +13,8 @@ import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.messaging.helper.DeleteAllMessagesParameterCreator; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -30,30 +30,30 @@ public class DeleteMessageServiceImpl extends MqttService private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); public DeleteMessageServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + } + + public DeleteMessageServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); } @Override public String send(DeleteMessageParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/ListEndpointsServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/ListEndpointsServiceImpl.java index 7172236b..e2991f31 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/ListEndpointsServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/ListEndpointsServiceImpl.java @@ -3,8 +3,9 @@ import agrirouter.request.payload.account.Endpoints; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.SystemMessageType; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.messaging.mqtt.ListEndpointsService; @@ -16,9 +17,8 @@ import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -34,31 +34,32 @@ public class ListEndpointsServiceImpl extends MqttService private final EncodeMessageService encodeMessageService; public ListEndpointsServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + public ListEndpointsServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); this.encodeMessageService = new EncodeMessageServiceImpl(); } @Override public String send(ListEndpointsParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageConfirmationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageConfirmationServiceImpl.java index 0dfda664..941813f4 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageConfirmationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageConfirmationServiceImpl.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.MessageConfirmationService; import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters; @@ -10,9 +11,8 @@ import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -25,31 +25,32 @@ public class MessageConfirmationServiceImpl extends MqttService private final EncodeMessageService encodeMessageService; public MessageConfirmationServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + public MessageConfirmationServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); this.encodeMessageService = new EncodeMessageServiceImpl(); } @Override public String send(MessageConfirmationParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageHeaderQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageHeaderQueryServiceImpl.java index 94d20b3e..1546ba34 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageHeaderQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageHeaderQueryServiceImpl.java @@ -4,6 +4,8 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.mqtt.MessageHeaderQueryService; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; import com.dke.data.agrirouter.impl.messaging.MqttService; @@ -12,6 +14,7 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; import java.util.concurrent.CompletableFuture; @@ -23,7 +26,14 @@ public class MessageHeaderQueryServiceImpl extends MqttService private final MessageQueryHelperService messageQueryHelperService; public MessageHeaderQueryServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + messageQueryHelperService = + new MessageQueryHelperService( + mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); + } + + public MessageHeaderQueryServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); messageQueryHelperService = new MessageQueryHelperService( mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageQueryServiceImpl.java index dcea98b8..4d2667a1 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/MessageQueryServiceImpl.java @@ -4,6 +4,8 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.messaging.mqtt.MessageQueryService; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; @@ -13,6 +15,7 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; import java.util.concurrent.CompletableFuture; @@ -26,7 +29,14 @@ public class MessageQueryServiceImpl extends MqttService private final MessageQueryHelperService messageQueryHelperService; public MessageQueryServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + this.messageQueryHelperService = + new MessageQueryHelperService( + mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); + } + + public MessageQueryServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); this.messageQueryHelperService = new MessageQueryHelperService( mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/PingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/PingServiceImpl.java new file mode 100644 index 00000000..a36f8485 --- /dev/null +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/PingServiceImpl.java @@ -0,0 +1,66 @@ +package com.dke.data.agrirouter.impl.messaging.mqtt; + +import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; +import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; +import com.dke.data.agrirouter.api.service.messaging.mqtt.PingService; +import com.dke.data.agrirouter.api.service.parameters.PingParameters; +import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; +import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator; +import com.dke.data.agrirouter.impl.messaging.MessageEncoder; +import com.dke.data.agrirouter.impl.messaging.MqttService; +import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; +import org.eclipse.paho.client.mqttv3.IMqttClient; + +import java.util.Collections; +import java.util.Objects; + +/** + * Service implementation. + */ +public class PingServiceImpl extends MqttService + implements PingService, MessageBodyCreator, MessageEncoder { + + private final EncodeMessageService encodeMessageService; + + public PingServiceImpl(IMqttClient mqttClient) { + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @SuppressWarnings("unused") + public PingServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(PingParameters parameters) { + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public MqttAsyncMessageSendingResult sendAsync(PingParameters parameters) { + throw new RuntimeException("Not implemented, please use the synchronous send method."); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } +} diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SendMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SendMessageServiceImpl.java index 9999085a..b2344296 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SendMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SendMessageServiceImpl.java @@ -1,13 +1,13 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.SendMessageService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator; import com.dke.data.agrirouter.impl.messaging.MqttService; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Objects; import java.util.concurrent.CompletableFuture; @@ -21,7 +21,11 @@ public class SendMessageServiceImpl extends MqttService implements SendMessageService, MessageBodyCreator { public SendMessageServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + } + + public SendMessageServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); } /** @@ -31,18 +35,14 @@ public SendMessageServiceImpl(IMqttClient mqttClient) { */ public void send(SendMessageParameters sendMessageParameters) { sendMessageParameters.validate(); - try { - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(sendMessageParameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(sendMessageParameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetCapabilityServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetCapabilityServiceImpl.java index ec381a5e..647ab62f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetCapabilityServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetCapabilityServiceImpl.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.SetCapabilityService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; @@ -11,9 +12,8 @@ import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.dke.data.agrirouter.impl.validation.ResponseValidator; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -26,31 +26,32 @@ public class SetCapabilityServiceImpl extends MqttService private final EncodeMessageService encodeMessageService; public SetCapabilityServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + public SetCapabilityServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); this.encodeMessageService = new EncodeMessageServiceImpl(); } @Override public String send(SetCapabilitiesParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetSubscriptionServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetSubscriptionServiceImpl.java index 6e882790..6ae91be7 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetSubscriptionServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/SetSubscriptionServiceImpl.java @@ -1,7 +1,8 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; +import com.dke.data.agrirouter.api.mqtt.HiveMqttClientWrapper; +import com.dke.data.agrirouter.api.mqtt.PahoMqttClientWrapper; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.mqtt.SetSubscriptionService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; @@ -11,9 +12,8 @@ import com.dke.data.agrirouter.impl.messaging.MqttService; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; +import com.hivemq.client.mqtt.mqtt3.Mqtt3AsyncClient; import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; import java.util.Collections; import java.util.Objects; @@ -25,31 +25,32 @@ public class SetSubscriptionServiceImpl extends MqttService private final EncodeMessageService encodeMessageService; public SetSubscriptionServiceImpl(IMqttClient mqttClient) { - super(mqttClient); + super(new PahoMqttClientWrapper(mqttClient)); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + public SetSubscriptionServiceImpl(Mqtt3AsyncClient mqttClient) { + super(new HiveMqttClientWrapper(mqttClient)); this.encodeMessageService = new EncodeMessageServiceImpl(); } @Override public String send(SetSubscriptionParameters parameters) { parameters.validate(); - try { - var encodedMessage = this.encode(parameters); - var sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - var messageAsJson = this.createMessageBody(sendMessageParameters); - var payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - return encodedMessage.getApplicationMessageID(); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); - } + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + payload); + return encodedMessage.getApplicationMessageID(); } @Override diff --git a/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json b/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json index 0f244781..0259bc54 100644 --- a/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json +++ b/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json @@ -1 +1 @@ -{"deviceAlternateId":"cdee8e0c-05b8-4252-9da3-977239e54adc","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"f658fa1a-fef3-43bc-87e7-4499858ac609","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/cdee8e0c-05b8-4252-9da3-977239e54adc","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/cdee8e0c-05b8-4252-9da3-977239e54adc"},"authentication":{"type":"P12","secret":"FNG3X?X4gJwZlut!ebZ3rigVfQCyOrOqhCj7","certificate":"MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSABIIEADCCBRowggUWBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQI5/bn3aK74qcCAgfQBIIEyKlLZWlLkNBwPfT1j43J/uq1b/YrPNaA/eh60KWjPWx9lliS/zbJoarogWz36W58YgR//iJ4vnzTcgfpWa76UtJmyaXbOmCGeBz6dlNldoXyhlAqm2gFI66VmSQEdsthcTkywAvGZvo9Z72EvSzCkHarAzz1CL7dAumHwx9dCyU07tupDoevNUsSRu5nbFf8fDO4IxpJN3gNjBl7o9peQEaVnFpbi9JY3+ycoFweFg3SaUD+Sdfu0fXo3M/7a5Nehc7iNWvVMQSe9aK6q0Vh/1O3h9GZ0VSb0OkY6R+9/yqQs8cIYexoeCuIsF30SseQGTlLFH7htYRUnHsOUBY9x6tDFcrT1tVbiZogT8QKXj75g+ta0qfY1b/SEWmbuD3Wj7s06Ego8jdlXqfvyMlu41AZkjIqi3DaOtlJfmMok+f4X/VKCu51Vcf0GAJTc/BLROwZ83RrfUcXjaF1ARwmcOKpTWC5x7uPsGDKXw6RHQi+lkJon17/l5YEEbZ7w4CV5lK06jLJOyWcy+9OY3ptS4/DXXKFkQT9z2ZPtcOE7Kn71UoKrjbfmD5WXNriJGeZxogZfH4NiDZz0EhMZ2KRSOFxHneeetGsBZ9hWMNHyOge5NNb8G07EINNC7gY5mYKn7+IqJYg3Ul4dAaHrTyqhCqIXwvEurQfrmTMSpK5FWZhVUQRV+JyU6q69LtcJiN5cea3yh1f5nvPebvI6jgzBh+RDn71fPBfh+Sw6LCzuxxO1u5BzPExNjZsEXYhzGrbtMYuK7BkX6J9s10EQe63SHWQxiA21rNKrQTzNC4MzEdx1sgOJLOcf5eKgOC4aGrA7/39BbKVxVODBCLHhmWiE2R6PJgUPVlT7VvbP/m8qfV9FHtWMXPGBpQe8T+wYUSFnIxjlae8Jdn9iKzQ3eg09WcUpYpERXWTf2V5yWtaSkep7sZimSVwRD+ew3nKZVxobIr01eozzsr1Bx0zS/WRNqConEY0GhrIAB3QyNYSbGSr86Y2AyvmIthGqgNJgNnvVvdreL4V+eu45KTEGQDFbreyh/710tmoX+qxn+PuSDjwkC9BjU1bExisD8Ld8Lp5dnARd+et5ERsWiWEEjSgWhV7u/dWRTe6Vg2VNCos/cLFpWXIL/nWgORhfWfMjgn8nojD6BzJJJiVX/iaWNOGCo/GituEQaZrxI7bt6t4m3AwiKYyeterQjun8M1xBIHGvBSy4HityY+a5BGgwubOXvdxv9PH0SxSEAqkBIIEAKXnEFjvz1fQ0SMhcV7tJx1WHhZKVX9qBIIBHta2ev8v++j6Quqj2ZxkRia91ZKdC7m2I3ojLMcse1g4zkn7uTWwHZ58e/z1KwuDKVRVL5ldXmli7GrNx7pOZKXWnb4j8RCalMvoClWEQGDiSBhHO8WwaJfvhBFiGwSnb4dFaTwILqQ8Ugpft7O+YeybsTxDmY6PHDbu5btYtnVjnek1snKGmTC/2U9BihAMCSYweuNQcNG0w05VFB9vQpjJuDMOsFbFiTXGBDNqau/oRnODjjHpCz+9SZQ6kwUSDwxdp6RC7xDjAy9HBB8lkalJx7JOP4e8u6ebPH/CryT49xGJY3+/DQsDtzKysZOctvYVr8xEZUQ2byij7wcF/26GAjzcL34wMRUwEwYJKoZIhvcNAQkVMQYEBAEAAAAAAAAAAAAwgAYJKoZIhvcNAQcGoIAwgAIBADCABgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAgxx5iLgJAyBAICB9CggASCBcjDzcr69sC2Fy7B4Ky9FUh7qSV9sillIJoGd3rkAU9GkIqZa+19PVZOxrQZKLZJRaK/TpV7661nIbmHPPlV0Uj+qvj6usiqdYrfmdJ52bZE891rD7/8T07C2r38YKA8xA9vwdn8Wvye/JwKoseMQ+RAS2ju1d9Muh+JzT9XIw0J2jveHMogW5D/dI2gI/xPNy8GNXK3V4Ko3rw/mDtvNnWcUTvh5GFCaKVmoxIChn9TdbiqzJ/6vkMrn/OGRQNrhv5g/zzJZUoh9HYSZayEDdB8uYzzqAx7OpZj/1WdW6XsWTcSC83CaJUxFYTjI4ROr4hjWGce9zcxXLv5/MUT8w0cDjjCkur062AISTjq84Mh1ZOkaFUuk+aI1kUzeCld/tXON8JwBIfoteA9ayf29bBjUuWOL+MdVvzFZNJqdcTga7cnDGVAbjE2AMWB3OT5KQuBwwz3btVlFB8hNbcdS3qPQWk3hD6xu1R+GU0Ann4IqJvdxb5gkdMPWGCLGjqGOYDdp5GENeho3bNBANk14NZp3tf1W8CBvhHD6eofLa/EX82hVBGBE2swokfq7+YPbUDZM7Q5yLL46sFLZhaCD9yYHB24TMlo6q0XIVa1gaX+skAYrE0s7RzP919vjWZNRZ0/PMv2UxmqeHF6BuEJTRSPmayQ/+rYYW7cDjsEeM4/Dm+FoMz213DBXbkIEP4Yn5/wdPFRvBwThjethE98a2vnAt2Pw4Khg+CZstcG5HmryChoAEEIrpGiLqGcFCNorbGGd3K/oifsyp5g0/c65UErMJ1qu3+F8xmhTLwDlRLF1nHAgdVzQRWbbjzY4Sf/s0xhNneVv0o0j/e8eTsEggNYk8p+yfU4DG7isX/9YIBA5t+km3A92evLwyuCJ6rBXhtAm+YDUJq5eMuaemtuDZ4NaYPCYoJezbbXLO0rMDAM3OQf0kWfWbtei4ldSDnmeFPfWV2nXgOa21RN9tAFWBqT7IdeMS6wNbmrtwxLHmupBt1IbLj0IoNKXYSGPA6Pwarab4TY+J+XODURLwZMraWM4TUxxTDW3/vBX9uaePcM4UWA0UBlfTu/OlUoZ52uuivoxclFRk2f1uJwv+dBk5ENooTBGtkrrj5GNLe6NIqiQgG9W9WxcTI5NqJW19VSUNpB+ErrnSRR0L/vqRuFR8C4rqD5+N+HWWZ56ZYcv+HLi3dRDZvcqe2/ugzfJaAGDIjT6iTuvvaDH6ihh3rO/YNQxsvqJ6DiFp+B0lVIytrO50YADjs2KemQQXgdPOKc3M6vcxwWjw80hLcKmioY69MoZ45ZLms9BG6eR7vG2HxvPUF9ZCvrEwxMS9zoil/WB7ra6dslVyJkihuPJlxu6AVC+gXiUCE5LBcVmrCjLdcLovcOA334F80K/3kilT5lonTpU/RaU2A2mNewRSy9iD5Lyt5sZDxwaZnFZ/bc/XcEgxF+ZThrEsONLM+oBiOy8OC7Fd2tkAXKcvzdOEV7xGN1CZhuVS4mRKEPnIYxmOH/dGLpDj3NJqEsSo9itz+s2CczakXhe6SEj5NUKV3KSvk0PJs8PXaB5Feyw6XN9rLobNBE/Rb58fXU9qoNpgFfjwHawghcpIDZ9BMGxGALhCA932g0ETk2gd62tzopjvDSgddJmjkccxzN5IoiOCpfdVS4ot5NZElahR9fmTuwJWUQA3yIMbMi25UwiS24g5IozOtbIn0ctRFDFTXEH49wiqlfcfrNFmmq9cwdItnwviEYjGCd4CipU9AJ6ABIDOhsKQ4B81g9nrodsRVnXNcUqSywmdlhaVCoKE8aOaV0LERxQ4/ZV0n1jQurjnuvJR341p1BGa2mGcZ/uCd1ZIi1bQSc7WKQpmMigtbS5RaUCz5Ff9AIpTnLhyEw4uZy0P39Lc7P490FSA11edT09hEHCo3S2HhJ3PSwtNKYJ21TH1CktYzATqoGZuxELDuuY+97gEU9ZaKPcnRUSfFRHgAAAAAAAAAAAAAAAAAAAAAAADAxMCEwCQYFKw4DAhoFAAQU4HIzO4K0G2JETlax4nm23MmKH0UECFLun0BpI/44AgIH0AAA"}} \ No newline at end of file +{"deviceAlternateId":"5dade5c9-dcca-4bf1-be22-f7f61ed90ea7","capabilityAlternateId":"5dade5c9-dcca-4bf1-be22-f7f61ed90ea7","sensorAlternateId":"5dade5c9-dcca-4bf1-be22-f7f61ed90ea7","connectionCriteria":{"gatewayId":"3","measures":"https://gateway-service.qa.agrirouter.farm/inbox/5dade5c9-dcca-4bf1-be22-f7f61ed90ea7","commands":"https://gateway-service.qa.agrirouter.farm/outbox/5dade5c9-dcca-4bf1-be22-f7f61ed90ea7"},"authentication":{"type":"P12","secret":"Ga4OM1C4tgWGILrF","certificate":"MIINwwIBAzCCDY8GCSqGSIb3DQEHAaCCDYAEgg18MIINeDCCBe8GCSqGSIb3DQEHBqCCBeAwggXcAgEAMIIF1QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIKML/zSVPam0CAggAgIIFqBhjobX7bxXWGRQEc3bflue2rYelXj7LVzFAAzg+z1BvbbEBeEtreztRf4qXPL2yIZNtMGXshlPPHrb8WA9mCh7qJUO+3n5PBYZR4ohBJeaLY5X51Z5xoUuMBckQMtK3YaQjpnfQafRMZk5urLv3G6L1PcPGIwvz1q7SKmF8KY7Wix1RI8z/0EaBza8HJnLWlnn18XhusZRGhgZH0VXiSjVWWnmMdk3py2cZx5Hl7rZJwN86rlV/mhx2wLfIlmZ6YMtgYv4QF0PCxsNH8FcxYpE6OuqjgN0m5RqL3bDw1iWPfg5lpeS+TQcKhod+kH6f4p7YpPTorEfAOk8GjZAd30aeTVvdH4iO8JZ8z9U8bPEijJuA+gN+/tIQpbU3IqYk/5NfrWj/fwwLqvvKsvJPjHBmtretK8r/YsAmpdeLPu5He3LhlEnBbFhf9tKRU5BnWv+4pQc7n0NK3oNEITjz1F0tDpHTNbcHhviFhUyIHer2JQQAuJMoFg6p32fcnNTRqIdXQo0Qyq2ge3AD3MIuUkkiSTtgQqybNjtKl401oa3ioUI1855fSnqoTFrSGpUYGPpNZOYcmAf9GRoGPfwlKFPsYFiqSM4sgemNyv5jR7Ra0mg1ZJWxh284swtGYQCAbaBf6WSLUuzlZ4bV4Dsg/AArVQzCN8qq2wvCZgAz2scrcfPl/9mkQiU/4u1uQZEQrJzjgV9l9gSk+VxOeQdMR0sE2SQ6UiBNlOz/L8+6fqtSSLnv5U1IWc2uFLOgpSAJQbUERkWIHn1S/dKmxSI/0GoN6bOZgCebFicqb83lO0nvX49DNGykQDm/1lyjKJoG6OOhfBiCegPwOpxdE9s/xtLwkHbbwelo9QENlqtwrtIyYbO4kx8MYDgNs6DtmQiOpks0EkgrZPK9mmJdCBH9tYoUIIUWje7YQYv/sC3B0WlTPW60+2VTYALLeG/byQjt+I9Miuoo7AGr8Zh60u66Yksjs6wWupJRFzF1rcdAFpGP5TvI/HhsEfWa2ZVzgAEOzLci207zbSp2zY0mu8AgeBIzBX/o/r9JxLVpA9gOT3gO8J5nHuV5eRw4jJq+ovcOChFI06mISD1bJZwHnsbncXjHZrjVfso4m5ZcOWDdvMXZGruSwwms4CMPpoTuYZZtROq6Qx+YZFLASFhC56TWVwAPhMuj0NwSiWCycmyZ8IWaiTmgW20ttfQ8Xisdxn5c5rbIehpxuB2zDQOSCU3kZ729Eix5aYf2A507sdfmi+5c6B5rG264FyAau1gvpmn6zFCnPdiJTheCmPwjtIaas5/m5SG0zYeMehub9vnWv+mlvXHN0PXGh0ZZdDL7qX8+8jhDBHZGDQtu2+I8zQr2OcoeoP79uk2IznySqgs0gjSrzJkTb+b556LZW5uChp8YucUoINYS1MQB0ikdVyKyHvRKghutqgqzS2xS60KVZrqEZnST5qm3kCX5rt67vaywAwRqUAGgS0q6YhF1o/2EVMAdcfwfNMBdHcmLEM6iTAIr6nM5gJjodYnymA64oWAPCW5xRRRLq+l7e++wQ5tUV+1Gzp0RKEqtPs3+NNuXJqCsn8A5k2cBGfHH6UtGYz5e/Zm3AvJtXmkDWDhr3WGlm0DhPoKIwFLXvUHKvgLoZSLlmsxLz7RzLtt/vuuqKVM9viVVG0BFdJLdfb9PYPFlLyQZuQYv4VhKEteonf//hAMEQVyN9+M1pe37tmTSeDpUaSUexGDF6/ZX8k2vERuABzJ55PzmWYrbHQaEFghuyZ3WY+kGys2wOeJgYVh36XoLQoUj1EtpYZeyWna72B2xt5YUNxnjb+8aV9aINOFOa/8AKimVyIx04lzSLNShBeXlMVM4s3BLT4BW5tGGfCNQ0fMG7wtaW2rix10ycMhWk6NtNwZA1y7HFqZrmREkI5Xc19IYcRUyPUdEMIIHgQYJKoZIhvcNAQcBoIIHcgSCB24wggdqMIIHZgYLKoZIhvcNAQwKAQKgggcuMIIHKjAcBgoqhkiG9w0BDAEDMA4ECMueEy3QO5s1AgIIAASCBwginBQjZdZd5hbMlOnRleM1rhCAf0JhRreXRQMCIzkjFg0Ah+Cdh3JfV25zy6pHRQHiDUk0MXfQ6823ZfL2M62FnCsDtXx3cpKyWKv2GhYY3xSE/FrzP2SuEDcyQRXai4M4Da4732PD5tebNo9JnEgjahflsDhkiFpiblesN3iAaC38p8F4BA0VavVfA74L7ais35erF7LUzJHZWRjo3PkxZ34qkPuXcDScgNlyBaruh/uG1QQSt/qF0J13IHQrpu5boDjaHuiQtNmKVkd4RDpgzOzLZZy+6QBApOMLFRyRx/BsLDlLml7ktD1IrJfpwuOqwbphj4WP360Ro+3UwnPe5LmqOoCKoXYiKiCbD44HkRnwkePBk97NKwGkbwLUd0kabia1b5pbUjAlzJl9OypwoDp0OUUFAqXD2d5DVvlq1L8BUbySdLM2xetVTXEF15BgTt5XX2hKOoSYBBmHvMbudRcappKL8h31vKQi4lcLPyBgOBdYAOECshTEiJlm604/RtN/Z/4+zHOfpXbt3HoZHfV/ahKOVgQSicZVfOQBnNoT8hgOvBxPEQGWciOlKknVVXaZKVtoX5UiRwfO2Yjq9TtE6PuDD2kC78XVpFsDj8QwKaRdSknhOIkMX6uC/ao4HyTfRATquqgidZb7VlTR6UWb/dMGD6AD7JHxQqFKfKbIHdXCq5LEnJeY/daypwWykIf0FzSBJf41gXEts6zHZo7+mZQcnyR7rWvr2ws5qokWZk7d1jZ43bNDIUusipcelD0h7NUqqhvczELdqqxNkEqDmvJZwxWZCMhRKkBmXoyW+0VqxJiRzjttSGBozt6QdX5/9paUZuDtAnkr36krd1Z2eqcCwVqygFrUIVnndM6zdkDfnB5jIYJU83JPLmVUlA4uNRaU1a8rBcuhLvMRe7Lus+NE6SUyetvd5mXgNj+r95smvYhe8HfMti1ehIIC/Y6PqmhXeFVBahahaGwag+nFjp9On1DHSDYFrfFHBUD5gzJfKJp8wk4sX1Sp3THL2V65l9GOuhEGoEijRHlx94CxJ3kFwX8d89jFIhqHUj0QodceMAeH7pZ5E5/rW3W960Fh551C8ULlQk7gFWbBRZRcaIuJPRaveJeI4hLfEBXs7owpG/FkFqlay0s6DeJQXpGmtx9nmla3I+UfcskbodWmRNczoiP+neR79NcI+Ss1YWzClyhZzwOELpou8E8LysmLDBscqJeL5L1r2gKHHW5nFepmNx9OTf7rQUF9nySJ07r+ORrnJr5DRaJvoXEQuQzE1u71BkNiPXUa3wYEcdUcvsXt+CvvDIhyUmlahVlpUDDRUvXSz/9fToynuFHzbCdAuV2kCA6c3OkaSuHJ4xjGtco5fdvyWGDIsxbLObEBFLspiaHuAeKO2kGiHRmeWWDI+SB8Vu8UONdrAwBvdyATUKN1ux7pO4GhLi+OHsdr0cz3MCWESP+GKUk4lEqJ+ojyZyi1sCclrLyN+bk1efouivtO1mlLCqxuU9jTkFyfxl6C5fzSs0wYRUBg8UIRScCE4sI1+HAlk4BQq4SBlfdyriyxPP/hzHSydGkv9ZEVuQt2j576vDHOP5v4ogyr53i56wqFqWTX52vbexkmrsLw+ysfoGrnOan169Tgao9sL+FmFVdkhuHOKTNr8/K4otxEoE16ZEG0l9cVs1mUdiKytfbCk08kzto+cAn1uUOVtO0KmtDeFqMfMXz1E+L2qY1IyWM+HxxYzyz9aPSU1aixK/KmNBxJt0/+HcOXQdFLqEJu5/KmGr5shPiNw9xVLUEQHFIbMbZS3/EZDlcGf1X69VoWAHt1whDxx32a9PKmFFRNhvfL1RNL+0ZJeJQi3qXXFTf+NY1q32frlVYzegXOEh11Cjwr7Nh9x/G4raAxTrV/3ijXOeqB7Ar0s0iH/u4y8JlsuUndYPjXnK7+IHZ/Ipol69CVot2po4Ya9IkZebz2490PjvkKif+7j25adAEssJR7E58P6uw0fkpduj1R+UtxTemQuc2aaUNzbKFQgkzQoOpqggGHyCfwvOZWaa1C1vx6Lh78fK75PmR6SUu1Ow7bw7O8fHsFG1Y5R8P1sl375E4tkd8a59FmY3MAKbRAnkXTL2WG9pRaqkuF8SXXuLD2uqktLpSnE8o5X2qPHO0m+2eRMFN9+XHnUUx9s7NDmMVngF1cGZDTw8lxq8Ut8GbGrnECA/GCJD1gzs1eHrWnpBgE9lJthkVfXtlZyt9ak0VrYSs1P8SVD3x5II3CWcGsAGI2m90zk7CxKQi8KjbRq+EkC00ETQv3vRp84mp9mHWS/KyXPrQzQH6gRzsgPdXsbXVWLQjNHUqoTaeYAqsfzqZJIPx7fu5fYr9jCzMUjoQcplP4cweGvfjZ+2DwAkad3IYxJTAjBgkqhkiG9w0BCRUxFgQUKU26wdSYHSKOFqERtv10UTBNj/swKzAfMAcGBSsOAwIaBBRxI9cfwRTRQEUbMwLWYObIZs7/RAQI2qFX7NvrX8c\u003d"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/farming-software-deactivated.json b/agrirouter-sdk-java-tests/onboarding-responses/farming-software-deactivated.json deleted file mode 100644 index a6114a1b..00000000 --- a/agrirouter-sdk-java-tests/onboarding-responses/farming-software-deactivated.json +++ /dev/null @@ -1 +0,0 @@ -{"deviceAlternateId":"5c520765-33d6-49a8-bd16-e300375e56ec","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"29a2f1a8-9f38-4375-b882-f9e1fe3c9dee","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/5c520765-33d6-49a8-bd16-e300375e56ec","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/5c520765-33d6-49a8-bd16-e300375e56ec"},"authentication":{"type":"P12","secret":"NkCktQux#vyiRJF3ANHc2r9eTB2rqUK!XGdJ","certificate":"MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSABIIEADCCBRowggUWBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQI/t18IWk0q90CAgfQBIIEyMXGqRXFZTPkdqYZMwlTW4xSYlaj5GfX4nDM0cTfkCZ7ll/LG6Uuj1YMejMGefGD+pNU6bID8jOBqlZIYbw+UKz+eaxLds0OENclBwp+d1zPG/uydgPh8BH0b9+IwSIvE1TmX4Y91tvkynR599Xgwg/4L6ZXOVOT/Oar4nkYeMOJ6dftxeXrMpp4mpb81V+Ih3cTDVrQrBvzDIGtlVV5fNJC19+C/31DXMD51hC7xoYptVSJdcl3nZp7KxQW7RroVq174/HKQULX0oB9+cBy1vR4yY4BgRDILYP9n8B3EJy7nMx8cpOL09DADKsEdmIT8DJ8q4HADWY9fqWpFra/22gVzxK1XY9EhjoizRTSivYiBRWCyi9s0XxIGlpGntHLkem5AhOK80l49IQVEZhz8tZWZWcG1RuUck/TEWYKzviykzaeYF/kvL8fhhzn8QoNVTxrYnJHjKQ3fj2cplTLzy7gT0a10AiR0q4ym39IKggpLg/C997Zzrkxl1ykIr+3jNgRePTOzqMjbbVog/83LxWNiHVNej6kERcXzJ9grkiko20CkhrGNhuzO3iH46pxSXDkkjrh007F9N0aJwepG6sAHIfEP0EQ+Y4cDcahp5Y4lZ4AQ0415vNNW3+ly343oz20wtT2qUxibVZtXipylTowIdEruBovQQ1k7jQwcbcfBt3Jyws5+4i0gES4m7oqUJ/GmlVlLgJ5kWLHkQ4zb27Zyh6yTzyy4WLxgCJXtIf+iZE2QfsjrCM+aoRtSn2S4JI1fUwwUT5T/MX+ZpGAxXW8WgyoCR9tKNw5IGHcq0f7rrO2FriCrArD/0pHyWGFA0ItzRngZUFaEwdjrmEUm9e1OXkS7u1KYx5zJhUt94dyNbY1UobVnqfnqZddjZ6cTtL2ZztEVGlhNBFXGletY8MMUt9ds8KdEzQSrlSNWCwznVPECBaYiK4Wn6NjDsCXFJEV7/Bcxdg1YM0UQTuFne5gE6sJy2Tcl3EcS15YMaxKnSzrBFrO2rdr5xSlCJ4k2C7Xj9jyeNqF1UVr2N0RfCgcqxizwRqtupUhulM1v0a4RA6UxX8lmSgFV5/H98YQ77ls0JsL4E7uICokOcAf1TQA4xEHe+eAczHhU+LCn8jRySeXuo5Li0ETlGxSTN6UcmE75ba/l2Fd8CTs+kgHtGpQnU5U6Qt3oyClvNGwLswtlMTDtaxL0zOryejud8p4a8VR2dkOA9fvPImA/f52WU1Lm9xP/nx6NvWKBIIEABgKAsp8Y7bkrXdi5dgeFrCjbNuy6W0wBIIBHuZwzsKxZ5i4qpF5HoY9BoMQd214idfT7yQ5vjeuRl1jWHJuNd8k/YyMDNDzRlZIuGRWLREthS3UbS2SHBvgZ4P5GWfgMl8JcpPJA8AORhHCvz79kv9x8s/5okROULovEKRFM2oZzHd6EtUfPT3Et/wZc2fzOLHOHR7BZq3BK2WtVAdMKC4Y34dlIhalIP1MU9tK66/5a10Cpcdq3H+BhMelIx6v/hV3tfEp5N4QuTXTzCtSh+t5lbwuscvN3i6TmEzOhmN5M3xNQaQzNlMCTF1w2B0826dWuZoqNJ3iDDTtF+9d8ov1C+xccWd/5VzNnESN0KB7YhGz0KCqMVtSSxLocuILljA6MRUwEwYJKoZIhvcNAQkVMQYEBAEAAAAAAAAAAAAwgAYJKoZIhvcNAQcGoIAwgAIBADCABgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAgOAOMLUJugJgICB9CggASCBcgk15N1Qt449bw6V4epyZAhue9ZqqkaWUBc2asbNKbC5/uUFCWZFFbcOGofgnP3S3tJ59bh/Gv3Y3rcQODTAwIb9nxvCtYtpIxtT9Y/N9hSATeHezNDe/yjyJtyiqwTTx6s0kiL7auhMonxFxZDketzt9T/x4JPAyHD2SXlMTG2WUIl0LgS3uxdgLWmqZW+WMWKX4cO2W2eYU3efRBD9uVsCuysXp/pkAM1NhNUh2WuvCoipsJ+prGLdFzpe7KSbod81ovRaggqU1qXDT6K4suyL2kP3jLYsjkYgpQRON4iIJvYFhVxQL4UzXEAqXYxtt6YH07yjXVBtO71xcVZviFy/6pJQ/WGa/au4AeQv1SBIC+QUvGU+p1iXUbPkP0Kq7kVLbsxqc7qzfpCx4K4ECSR5R7xEiQGPlODGN8lyESUl1so/RZlCYg1WRTXYt07ROtskbMEy8WjifptQpmnzon46WMxSETOS4q9bYQuk8TrQwURmK4ejyZo5lawyzdwEGoKohQSMeON9pZSvCuBk5pMeNIWvk9W0NNt7HQFifSWL9wWgcKSQCZWom/sJjc50nrQmLYK6CruhzVwwxn2DrYydcFlQwRFpZR6s1QgxWfdusLq3HV1TopTxCRqmIKkTWydJl3+bVNOhDlZeXt9wIVqZkeH4PuzFhJNjiCPdslqfm/CwjuwOcGTp/a9ribG9hiLugSjTZXwi2fcMERTAUxT7MGmj5gVXcKhbrF7rkTIY1lpKjgzRpzGDTZgBOMBFK9vvSzNoFpOiqdF4G1kfOwkBpQZQEtIObaszczIz43grD6dNvRXbIfM3Zkh1LmN2NXGiSnnfucByamWTjIEggNYjv4Lhcq/yfB6d9X9Xr/c2qvAlamZE+5fhcKCdxl9guzg29Gk7VFxEQeeCadwWsegSuC/7o8Kqc9lxReW0tN0QgP+6WN5fnjib4WF5+hCpaQTt7vCsYmwQA1nPtcVK0jOz8iCJXmfNVFbePrC+r7INs8tkl4xKZ/aDYKgD+h/3XrsWTkgML2mcokPL3r8wN4YpT0pfaqVhC7CP5Cf10uQiNOmU8icC42PB4RJ/OuZXYs5X5h0DD+pu+laW9RqATlFK/qvk9J7p+hTVFPti15IlRuPAZFj3DL+F4rsiQRNXbFhL75j7MK8zF+cG4PT55bwk+BwJj1/N0JtD+nwDYftdl0tWL/nORveXjUu/sijdUaPl4KGLvteTkCj7oiHfpLEtcuHqKBi0+ZV5GYmzf5OC9KhelmsyIf3v4VC94CiOIrb9Cw0KQ3CbiCa3TyGv/CFgcEWWFWo8S0QNaCosCNNfsJTJNfjyU0CuX+219Q3tKxxDZYoT2vxI61uNtEor1qwEdT1cmTaMmJzGjBFky5+5zbHVRjCTrdxWzuxz6sWuJ4oD7Kwa9nBHhIskaiveE1Bw+OHt3OVcYHiBp74TjKIQIJJdjGs47eR9JWvWiR6cTUAPCBsvNCACQVylqir3hEAP0dLodhoReKAA507ypg72Ci9JU+JM/W93su7BWrN0tAiMBZWrCad93hjFyhTIcNDOcOfV/gNx9kmdr+3dwpvm2XGzuZm7G8vIshahQ8g4rfL3ieoCmGhIzuU7ZWbE0tuQcqyWHBZMitE7R1LxHftYhbZLn1QxjTAYTFoL7khrjbFjl19NT/mqHNAXprLUdRZhGSf8karYpjfQynpXYO9TkN0Z7YFyzrUAIBV9d+5l/GWtRvHZpIad3EUcTq86JyOSYtnjIviXZ9dL7ohro0G4uRCM52CB4RJnAXJp4c/bd11kUIANPI6veFII5hmSFDXo32I5Pzw/mbSvPyn7Yh7Sgqq/sR0MMDEX4j1RDWTNpVHX7KDkUCLkrRB1sy2xBTXQFeCe5C42PJKdU15vQlrNn/K32mqCrNtrvJ2b6e1y1CKauT8Wtz2cMRWI5LB5RTwi1gdw5RFPkV6iP83V0nO/HtJMjGwIHaEQesSgwAAAAAAAAAAAAAAAAAAAAAAADAxMCEwCQYFKw4DAhoFAAQUI0CXKAtNkq588dilMAlGiaTFykIECPcSG57Mv/s5AgIH0AAA"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/farming-software-removed.json b/agrirouter-sdk-java-tests/onboarding-responses/farming-software-removed.json deleted file mode 100644 index 8bee64c0..00000000 --- a/agrirouter-sdk-java-tests/onboarding-responses/farming-software-removed.json +++ /dev/null @@ -1 +0,0 @@ -{"deviceAlternateId":"49ac8bb0-e545-4b44-a672-e4b9d8bd3e86","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"5eb2a4d7-da77-4142-b19a-54d2dd97af65","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/49ac8bb0-e545-4b44-a672-e4b9d8bd3e86","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/49ac8bb0-e545-4b44-a672-e4b9d8bd3e86"},"authentication":{"type":"P12","secret":"jwNmGqzNfRn#dO7DTGkVu?cZz2Ta86#HhnjH","certificate":"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"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/farming-software.json b/agrirouter-sdk-java-tests/onboarding-responses/farming-software.json index 30653616..e1556b7e 100644 --- a/agrirouter-sdk-java-tests/onboarding-responses/farming-software.json +++ b/agrirouter-sdk-java-tests/onboarding-responses/farming-software.json @@ -1 +1 @@ -{"deviceAlternateId":"93e12d85-5cb1-4afc-aa53-db2fd9472437","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"b617b956-4145-43db-916b-fada868cb389","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/93e12d85-5cb1-4afc-aa53-db2fd9472437","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/93e12d85-5cb1-4afc-aa53-db2fd9472437"},"authentication":{"type":"P12","secret":"pT#uh2yNg#0iQqnC24c5cII5YWmJDc1hqTz5","certificate":"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"}} \ No newline at end of file +{"deviceAlternateId":"4e533dfc-89e3-4efd-a786-bec3612f9b96","capabilityAlternateId":"4e533dfc-89e3-4efd-a786-bec3612f9b96","sensorAlternateId":"4e533dfc-89e3-4efd-a786-bec3612f9b96","connectionCriteria":{"gatewayId":"3","measures":"https://gateway-service.qa.agrirouter.farm/inbox/4e533dfc-89e3-4efd-a786-bec3612f9b96","commands":"https://gateway-service.qa.agrirouter.farm/outbox/4e533dfc-89e3-4efd-a786-bec3612f9b96"},"authentication":{"type":"P12","secret":"9iPnjUlRZ8EXqAlW","certificate":"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\u003d"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/mqtt-communication-unit.json b/agrirouter-sdk-java-tests/onboarding-responses/mqtt-communication-unit.json new file mode 100644 index 00000000..00cf94be --- /dev/null +++ b/agrirouter-sdk-java-tests/onboarding-responses/mqtt-communication-unit.json @@ -0,0 +1 @@ +{"deviceAlternateId":"c2824851-4de8-4e27-a583-4d47fe314d5d","capabilityAlternateId":"c2824851-4de8-4e27-a583-4d47fe314d5d","sensorAlternateId":"c2824851-4de8-4e27-a583-4d47fe314d5d","connectionCriteria":{"gatewayId":"2","measures":"measures/c2824851-4de8-4e27-a583-4d47fe314d5d","commands":"commands/c2824851-4de8-4e27-a583-4d47fe314d5d","host":"mqtt.qa.agrirouter.farm","port":"8883","clientId":"c2824851-4de8-4e27-a583-4d47fe314d5d"},"authentication":{"type":"P12","secret":"ETuQsLEV2NyOwx0R","certificate":"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\u003d"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-deactivated.json b/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-deactivated.json deleted file mode 100644 index 97bb27f5..00000000 --- a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-deactivated.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "deviceAlternateId": "7b77dd4d-3782-4d14-8087-5f3026950427", - "capabilityAlternateId": "3035ec70-dca1-4d71-a000-e79eb5891f81", - "sensorAlternateId": "4c1041ec-787f-44bd-ac11-603746e1191d", - "connectionCriteria": { - "gatewayId": "3", - "measures": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/7b77dd4d-3782-4d14-8087-5f3026950427", - "commands": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/7b77dd4d-3782-4d14-8087-5f3026950427" - }, - "authentication": { - "type": "P12", - "secret": "xxdGPP#a9Tx?a67R3GtuTMc6Z13JaWR#?5cO", - "certificate": "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" - } -} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-removed.json b/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-removed.json deleted file mode 100644 index 07eed543..00000000 --- a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-removed.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "deviceAlternateId": "8fd61af3-3247-4abb-a9bd-e871a1cea4e7", - "capabilityAlternateId": "3035ec70-dca1-4d71-a000-e79eb5891f81", - "sensorAlternateId": "6a3220a9-daf6-4457-812c-7c90aae7b683", - "connectionCriteria": { - "gatewayId": "3", - "measures": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/8fd61af3-3247-4abb-a9bd-e871a1cea4e7", - "commands": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/8fd61af3-3247-4abb-a9bd-e871a1cea4e7" - }, - "authentication": { - "type": "P12", - "secret": "e76r1WIMDPmm3Rx4#bMLS!YNRzTAR1nGX1lv", - "certificate": "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" - } -} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform.json b/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform.json index 78066eb8..e49b32c3 100644 --- a/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform.json +++ b/agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform.json @@ -1,15 +1 @@ -{ - "deviceAlternateId": "a783ce19-79c6-4e50-9a9a-4f54e376844b", - "capabilityAlternateId": "3035ec70-dca1-4d71-a000-e79eb5891f81", - "sensorAlternateId": "2a7828f4-7ad2-40df-a942-274b7a96c508", - "connectionCriteria": { - "gatewayId": "3", - "measures": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/a783ce19-79c6-4e50-9a9a-4f54e376844b", - "commands": "https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/a783ce19-79c6-4e50-9a9a-4f54e376844b" - }, - "authentication": { - "type": "P12", - "secret": "DyPedBmnf!#DtierUhCwAX43JbWsbnKWD26M", - "certificate": "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" - } -} \ No newline at end of file +{"deviceAlternateId":"a55f9e96-86bb-4246-be3c-f3f9eb7a08ce","capabilityAlternateId":"a55f9e96-86bb-4246-be3c-f3f9eb7a08ce","sensorAlternateId":"a55f9e96-86bb-4246-be3c-f3f9eb7a08ce","connectionCriteria":{"gatewayId":"3","measures":"https://gateway-service.qa.agrirouter.farm/inbox/a55f9e96-86bb-4246-be3c-f3f9eb7a08ce","commands":"https://gateway-service.qa.agrirouter.farm/outbox/a55f9e96-86bb-4246-be3c-f3f9eb7a08ce"},"authentication":{"type":"P12","secret":"xA35MNgYumGgyIHg","certificate":"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\u003d"}} \ No newline at end of file diff --git a/agrirouter-sdk-java-tests/pom.xml b/agrirouter-sdk-java-tests/pom.xml index 3f952d3f..5bed6c13 100644 --- a/agrirouter-sdk-java-tests/pom.xml +++ b/agrirouter-sdk-java-tests/pom.xml @@ -5,7 +5,7 @@ agrirouter-sdk-java com.agrirouter.api - 3.2.2 + 3.3.0 4.0.0 AGRIROUTER SDK JAVA - TESTS diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/AbstractIntegrationTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/AbstractIntegrationTest.java index 04f00bd5..173d541c 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/AbstractIntegrationTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/AbstractIntegrationTest.java @@ -44,12 +44,12 @@ protected void waitForTheAgrirouterToProcessMultipleMessages() throws Interrupte new Application() { @Override public String getApplicationId() { - return "434989e2-b4be-4cfd-8e40-f5b89d83458d"; + return "8af89642-5e30-11ef-a95b-d2e1bbd0b244"; } @Override public String getCertificationVersionId() { - return "f491d487-f913-4732-8be4-c2eacff21816"; + return "96c2c3e8-5e30-11ef-a95b-d2e1bbd0b244"; } }; @@ -61,44 +61,44 @@ public String getCertificationVersionId() { @Override public String getApplicationId() { - return "905152eb-c526-47a3-b871-aa46d065bb4c"; + return "2bb59356-5e31-11ef-a95b-d2e1bbd0b244"; } @Override public String getCertificationVersionId() { - return "c8ee0fc3-056c-4d81-8eba-fb4f8208c827"; + return "4dc7a506-5e31-11ef-a95b-d2e1bbd0b244"; } @Override public String getPrivateKey() { return """ -----BEGIN PRIVATE KEY----- - MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDCiSNJmpAbrqF5 - wOe4kPtavH50OxfjevZjgFhoG/lO+nkJz366655pjKqkwmlxF3GhoXMppAR2K+Dh - x3g46dJGA/dG5Ju5TpLnPn3AskHJMcagGE+0Lb29pXUX7ZAdO0MrqIVSh9UZ3j2v - +MlF4GOwUkOLPu8IgtKK13vlTu3qYKmFzSss9M3r/t7hZemGyGUq/GVZ8wvYWFTc - SdBhOZBzGDpQmRKiL5wcF1HyZfmT8mwbPITzf9Pd+9cDvQT74Ohmu920wwQavS+n - hPaOFEW9io9gIsKY3y81Qt4OR+xQ20BdmsRscWwWaSoQpjol0+f3OnTFmLMGvjuw - y8keLp+zAgMBAAECggEAGm87MdHEelaBD8PkWQKufTZ28oFjLiCz4XJ70O3YM2C6 - 2NfuzyScWphoSco3PMxkPwPq28IzbwFoZhXOYuF3FteMHwCKnqQsNysZOHmgkd/n - LzMOhZvfmCknH7DC8A3xAzo7n6rgjMrT1Bk49HtY4IlVL1NGdQAd7wr4BYFzt/Dc - 8qXnqXWqWcvgktDQBKEPXc8XAQom6fWFcnx+CALUIx3c4QXaCgdG/EuWeaqqM14j - 2tM1PwVh3rxiDiwMJSDEQVSxkJtM9M+EEC6oCvBPE4txjaHBjQqsxZJ9po5Va00+ - Wm6DuPEfkKTxX1J0a/le8SA0JZ+Tlz/VXOySaeMKYQKBgQDpUoPOfpx/FfOIr4Tk - 311zqcPfY+XiCwq56CTfVYERF8QSDQAMuuW3K53SFLTwjgUEq7BwFshhhcTdRxsh - QtKAHg4NpownmGnmQCG681eFTB4IiiGNMlEt6hXh3MQK4QfjDFL/0Y1tXStsM7xB - ouwPOZweWmlv7u7kVEDx4kHEUwKBgQDVcYp2pI/SjXtsFF/LRy/0xW/dgRQMortV - IPYkYvSO/w2dMV2wX1Ly78wFs4uj4ODDfyeVG2xDjn6svQR67FtHPLyBS+SwNTbY - jfzRV1EydHweZgdw9/1yA9zvSPVMvieSgeiR++2YmEEtJYSEoxuBkVSnLAXKFy3/ - 4RCHrhBLIQKBgB6im/XX//pbyn8u9JcMkPun1bUWK8/zPTRNu9GrK2gwI6lvFYuW - WqUjT/SOjXdsXlJPrLn689KCOugG9xP17yetSpEWRh7Iz1bRItymKN6ysNrUMDWW - 3rvVmYvvbboz89InAxrdy+EJM7NgU56WosIZAVum6WMuDyXhvilEWPhLAoGALwnd - tPXhSEqr147J6befhvb4Bz3KGFrIpCMme7BfKyBkdK8LcbIgSq+0K9F8xbnqbssY - AxFPE7hUjGb/lMN//jwRYwFBvd+MXb8050GyAEeRjvV3UFsmvLjDOOzAOpBxkiUV - Bw8ZNpbfTj7FbKGxjyVjHZBjGj1vgsOr6+rdZmECgYEA5gBLtqvsebobo86J4LL7 - 6VaXtgbgShm8GYMfTDPxkmAv4a89Lpec2UQ6EaVt7xHSdk4hMidfZHGambOtd+Zh - DTWnVSzxt91ZSEcDc3gTxK3hBltTga+9Y63S+/6vVykWKRtAvqkiEEgLNnNXOFNX - lE8ylEsO1whZyzKceV8uaqA= + MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDRFJg/FMUntssw + Zy2/7KM3PM09DPbt7T4MFFM7/A6oUQPePm4EbBU2i2U7LRlVosE93F0zqo/ie7xt + yjkUmZZcaYP4+kRbzEJ2kANlZ44W0b0SRLx5VQ3aaQh7klo7VV/+NNToZ0p5Z+L7 + kBiOlgLPlCmZMloa0bStQPiOzmKgiyPhJp326hQUJ6Cl9oExhT/w+oFjygrrXE4c + B27kD4tve3Ai8X9ZfV1fMihexpCcvwowHN3MB376bkI++CxK8P+WI4MS46qMSsY2 + X4i/hGVevUF7tcykeYDFiVjaSDcWtBReG536gmB86Imhu+kCZPxz67hk6+z/EFKA + d0OQqGOBAgMBAAECggEAHlycQ0TT4JGF7jB9j0pg5UuaDkyMqz5xbTWiZKqUwlKJ + ekOcnF3JstMJT0+cRzhMUZxnmHIjVONdGKBuK5SmJiNYe9Z0CNSfrjH5nEcudhfd + GgMLT59PVLE9/xvgqI8cUoD/jgQ552lzp85kEoisPdKpO8r5FL3xO9ucfLhx0BhB + WdQZcnqAvMHrlMwuWCXzdqag3nAF7x+heNklVuhIrKGhy7r9ujmv2xf0ccpzfiSq + AC6p/BLgjdXRrZsGKZ/f5mL584RkhFhCfY8U7MURY4w1Qx73mAvY7DzPZ82cmjPf + D0HPGF9lNQNYeNP6LTZ6+wFLYhsJF00ciXAyeFs4RQKBgQDqJ6tLzQ3YRfk/wTAE + WLSxmtKsn7xWh9YhOiOs4vgGd4Ap0kcj4vzOgolNdqUDDTrVi/lyA3r26lzSsrbr + Tv/LzuhbTAEa+AlbfVaoimqRkz7oVSDVEeofLTiAm6KOVRCjcxSAKsZzCoZ0MWJl + Aq3U4XtjSq0gAzxiao5BrhwUuwKBgQDklhH55D8VHgb9KKznFw0yg2XK/+hAO+Lo + aTP+QdJRpbBEozmVWB8uPu116DALRYoQ16jPUU7xODf38UT/w1F8xpa8+UINXfO1 + nXl2hjqqwcs0V/1YAYHutMFmlDaN8V8w0FIFdnggOLkkvWdlP3nRslV5/1yZixZ2 + yDt7nbHC8wKBgFYkTeJPB57e7zlDKxUORTtph8O16CW1R1Nl/iXmQfSvFdlM4JsV + MIgQgc6brU0YGuLg4d3N5fjcc1WYJa8fmv8xmU2tAmMXiOm9jJnoghgYIXZ7it6X + /peFnVnC5+SQ6tQWzB3ynptH7frlCBu9BpJgeXIn0NUMG7ThGoCTOwVtAoGAHwLI + /4jakgfX1OJ+yn8TGEZBOhALtyMovnT/S8AsQ01iI32tYzhoSoLY/kT4t57Ag1Zu + nWmfdxQ0a5u8y6H43R+n9Y0vS9byKDJr9wtwzBesdLZ3NUhHE1ZMYpk66XjUfC/W + 4MzYsS5g174mV9MLuMoj1IAzVNVMv+KcR0H2iscCgYEA1uVd+razCxfq/4qRN5ke + BwPdbJx1m7V0dVHNJm6q+Ig7L3ovbJt88599T0Nf7WyEhbUaXVWKkH/OxCvesLX3 + b0VMOte/UYuSoGiOuOmzFoQoR1IAjqlC0vHqfzMJRGvOT9k/ZHvI2HwlHax0wcTI + wy+YtX0o2eOcr4QVO+M/kOI= -----END PRIVATE KEY----- """; } @@ -107,13 +107,13 @@ public String getPrivateKey() { public String getPublicKey() { return """ -----BEGIN PUBLIC KEY----- - MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwokjSZqQG66hecDnuJD7 - Wrx+dDsX43r2Y4BYaBv5Tvp5Cc9+uuueaYyqpMJpcRdxoaFzKaQEdivg4cd4OOnS - RgP3RuSbuU6S5z59wLJByTHGoBhPtC29vaV1F+2QHTtDK6iFUofVGd49r/jJReBj - sFJDiz7vCILSitd75U7t6mCphc0rLPTN6/7e4WXphshlKvxlWfML2FhU3EnQYTmQ - cxg6UJkSoi+cHBdR8mX5k/JsGzyE83/T3fvXA70E++DoZrvdtMMEGr0vp4T2jhRF - vYqPYCLCmN8vNULeDkfsUNtAXZrEbHFsFmkqEKY6JdPn9zp0xZizBr47sMvJHi6f - swIDAQAB + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0RSYPxTFJ7bLMGctv+yj + NzzNPQz27e0+DBRTO/wOqFED3j5uBGwVNotlOy0ZVaLBPdxdM6qP4nu8bco5FJmW + XGmD+PpEW8xCdpADZWeOFtG9EkS8eVUN2mkIe5JaO1Vf/jTU6GdKeWfi+5AYjpYC + z5QpmTJaGtG0rUD4js5ioIsj4Sad9uoUFCegpfaBMYU/8PqBY8oK61xOHAdu5A+L + b3twIvF/WX1dXzIoXsaQnL8KMBzdzAd++m5CPvgsSvD/liODEuOqjErGNl+Iv4Rl + Xr1Be7XMpHmAxYlY2kg3FrQUXhud+oJgfOiJobvpAmT8c+u4ZOvs/xBSgHdDkKhj + gQIDAQAB -----END PUBLIC KEY----- """; } @@ -127,45 +127,45 @@ public String getPublicKey() { @Override public String getApplicationId() { - return "3c3559c9-7062-4628-a4f7-c9f5aa07265f"; + return "e051056d-5e31-11ef-a95b-d2e1bbd0b244"; } @Override public String getCertificationVersionId() { - return "5e488554-d6bb-400c-9632-b3b4b35b07ca"; + return "e743930a-5e31-11ef-a95b-d2e1bbd0b244"; } @Override public String getPrivateKey() { return """ - -----BEGIN PRIVATE KEY----- - MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkAWrcN0FmbWZ+ - 24qE6maNlf46EjH/BOI5f79wFRJAeG6RXrl8KwWdlfeZOlEYRyq+o4AVuP7Mce6R - x5PR/AEtn1K4Twr5h1+uG+O5/D2jJ0O/+nFnNcX/WgJfEbriDK9ewV8mEnFgG3n5 - y6P9RCcu0zMFV9PrKTop419krg2Ij0/to5LLU0DaQXmgvSC7Crx0k9dIhDeZ4jc3 - rv4SWzOcZT5vPFtA/5G66ZeeTVX+3iJbasWOdatMc7/cGYxUlnzeNSoCAqmyuHzO - PKHWcjyVwPXWG64TSzkb+QypynUIZaAy+P8uawD0BivsmFSf0k4pGl8wSHhE2pN8 - OIIyud/lAgMBAAECgf93UZCtJoYuPumS4aaljOOPntCW7yXwo1zy+D4PDUV6IiRP - HttTuvka7UB1+jeFskEm8Uz+gNjfZQRsiwbAftdcmc1Uyizx3ct+oEvNw/YT/T0N - LufSbwzd+l4/TGbqjtAH4CeZS1Gw2kyjr8RfPnZDWuSDvqIvNI9cak+8r+SotHEL - i1yAZTDvZAqLhbDLbW9Ephxd5QkKfwegybSwxJJcOw+KLPsq0Ibb2YGbkPTL1P6o - Ul3/tiyzEMRc2ufyDJgYCAUmvVBjkbHT7hQNkTL8EPAEXfL+vhte8A98aFPnWMhS - yiJo3T643fjZ8fzPcv8GWmT+z6IxtlXguC/OmQECgYEAzUbQF5YqJ61n6sQiJ0VQ - ZMDDVHzf/oNUCPee4tCVS0ShQ2JURUIbss+lUWbKDfFTXW9mte4VRk+WUh2gQqm6 - 49IdIpRGx6m6/ye2g6EmXRzeSN9GJu/wltS2uQ+8fmOkWiBUFg8bkLWTTxAY1w0n - 31AYcE8wwLb2FXt6Q2u4OQECgYEAzIfrUejd7GS/eaUx2GFKsXaI3B3CmLQ8TQFu - JOh3i2NgcDK5Uwhy5TWozEn4BpwX8UOMciZIGjMr0i5TzpSVca1sv1wyIyWr7+AU - 2dmxPTXbkQQpEy7GDE1iCMvsi1lC6F+EUwdCKw6H5oa0oU1XMr/JWJSGh8iFRH5v - H3ic4uUCgYEAycZYV0boqtWddrtRou5UBqUfmxWgC4nFeYcE64gBp9mO9jBaCzXf - ChVnN6tk4u2adxZAjIW47cLfTFoIpF438SYgM1QyeqIQyCueEKa/kfkFWfX1++IP - yALQlPmt20JQU7LBVGmHO+fvI2D8Oa6ZybzuOL7ueg+dtiIIXOsuSwECgYEAjqaZ - 1PYymmamOWSjQESTQPTofYVwLOtAR4Eg3jMY9anpIDfwk94HrJ/hTCKnD40dEdPI - B/F1Rni8LorLPwDYvoFzoH/gJC1pHxPN1yeC+6stqZYaQ9vSm8/4+SOppoMqLEI6 - W2JrnvYyiPEY2IvFroqfFt34eom7kUsRnASWf5UCgYEAxEMOQ0/+hz1APqCGVo3t - uePUIdsokCusRpWsxUdwHBGqfDjULqVmDXIJuJekV4YUxzyzktRzVms0pgFbr47L - f8IeyJnYFhPn1hgthGlgV7JvFq2TU+EgZYVpVGL6jrw8t78Y4IresceIkz4q/bGV - j35jwp22eLOc0FdPo0KgO4s= - -----END PRIVATE KEY----- + -----BEGIN PRIVATE KEY----- + MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQD38PmCfYHaoPRF + J47yIxCVmGAg94mnSV5C4XGSOXq1ha/GCjhsR+YDgKnBt+lenxGt4TExN1OOK/SS + uconfh61o1ouUPbaq3OImlSecYGIFzOQxWj9q97Yp+SNek9GDKj8VgUK33atL82W + YbY3QO/clh41zHDJ8fMObZ+2setfdYaQkxOFxqVLBu5TDg7CTOFfgdFXdgX7e2Qu + C4p8YiTYO73YoqX/Rcnsc6tNbWA5lwqSDoaVXn3BHcjN9VDPMjDSWyJKq9cCVDus + Xs4uB5Nqv1MFiZoZQHz8Cvva8JbXVmET3sbPl12RCLflYi21q9NvUgUI36rPSykO + bTwu0duhAgMBAAECggEAYivCz10cdlF2ho80NUGXBnRv033PvjH5paeYDVq+8HK/ + dz2Cu7T4KPjfvjkwqOt4140rqh4K8mcLDrGLjnmMdUT5pw8dvtVWCId668VrkVQG + cdMIUDCmKsjHYRFFpCnNGySAGJ8EYWxlDZ8gw93tWz0BNzH8kqk/IL5dF7x4wrGB + kKdVybTjAJK6WEj7qcRriqER9HfFanhU9swQy8P8PbnHuFPVye0GqUfFEvBM0SSP + YRITNu+TkQX709We1ipycUhPfwdwPdK6RtBp1SNdXbp+fFjtkdihdwQ/950C7ZF7 + 2S3JVAnOn5lGGiPZGd5554sJfO1xv890FkHW9lpiRQKBgQD/K9Xsh9UfWZmAgsbH + dBisPOxRTX+bv4qeJoVaxP8pPvl8Efwkcr792mBz+6kXQdHeWUGrLL2ajsJE8ofr + OrfibQztCgMHJY2Smuc757yTIqyJOEVSFdmbi+0s1L/Kd04DAuXwoswB1gx79+ER + K33TDtAGP713Nyz28hLoBl+cSwKBgQD4vyCr0hq27j5aAOb7WnnOP0vjSlt/gvwJ + Ih8L6oWPs9YWTrhIVNPmcCX1AaAj5hZmcR4ve4DUWmLi1YsGshdZZf+fIDZhGYw+ + 639wC7MlcahqkliJN3XN1rNmRgpWVqgJWsJ+DtnpzK9dclgHdcCdb4YPPd9vW1/A + x1euwENcQwKBgQDmimlVsYdpMp+QTxdfHtIn00dDUXyIb+7CYlU7pB5Q2pe3c9xV + 5eIPIlzgjS/BVnNRq1y8VcjcOjzk5CbO7Rc0GIiEJPaFX3VgTlm6cu2aFcrCkzd2 + KU2Yzjwzs+ev+kheSiELX1poEkbnPhZ3V87vgEOMUcxRSGV0m1NflFqPrwKBgQDs + TBxMPQZVutMOiwbhxhwp+mUr4Oo0ooisYHafykTgs1Tv0g4r4DGAGg9kxQuMrrme + zVyAfNFwaQDBPVyZmrqlmUiQsHgYG73n0603ElY3ftYfjzB+AWpuhMPdpzGQvTdZ + 05cpSxBlkqUQn1vSkmDM7jGq7vr/fQzkRDoebtROowKBgDYH0nUzMXj+1q7ZEojk + DEPfY22pcH6pNrg3RkCi19BVRyUtk/CAJiSNud/wR61Kbq1wFQkqn8dU0ydbsqiX + Tz0LofvoLK3cZc6IhmdgOiOs75LIoMOfxskGpFdiNxGId8EIXACAwomm2S4o8KfI + fagxljG8Ic5oHxnVengksyd5 + -----END PRIVATE KEY----- """; } @@ -173,13 +173,13 @@ public String getPrivateKey() { public String getPublicKey() { return """ -----BEGIN PUBLIC KEY----- - MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApAFq3DdBZm1mftuKhOpm - jZX+OhIx/wTiOX+/cBUSQHhukV65fCsFnZX3mTpRGEcqvqOAFbj+zHHukceT0fwB - LZ9SuE8K+Ydfrhvjufw9oydDv/pxZzXF/1oCXxG64gyvXsFfJhJxYBt5+cuj/UQn - LtMzBVfT6yk6KeNfZK4NiI9P7aOSy1NA2kF5oL0guwq8dJPXSIQ3meI3N67+Elsz - nGU+bzxbQP+RuumXnk1V/t4iW2rFjnWrTHO/3BmMVJZ83jUqAgKpsrh8zjyh1nI8 - lcD11huuE0s5G/kMqcp1CGWgMvj/LmsA9AYr7JhUn9JOKRpfMEh4RNqTfDiCMrnf - 5QIDAQAB + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9/D5gn2B2qD0RSeO8iMQ + lZhgIPeJp0leQuFxkjl6tYWvxgo4bEfmA4CpwbfpXp8RreExMTdTjiv0krnKJ34e + taNaLlD22qtziJpUnnGBiBczkMVo/ave2KfkjXpPRgyo/FYFCt92rS/NlmG2N0Dv + 3JYeNcxwyfHzDm2ftrHrX3WGkJMThcalSwbuUw4OwkzhX4HRV3YF+3tkLguKfGIk + 2Du92KKl/0XJ7HOrTW1gOZcKkg6GlV59wR3IzfVQzzIw0lsiSqvXAlQ7rF7OLgeT + ar9TBYmaGUB8/Ar72vCW11ZhE97Gz5ddkQi35WIttavTb1IFCN+qz0spDm08LtHb + oQIDAQAB -----END PUBLIC KEY----- """; } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/OnboardingResponseRepository.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/OnboardingResponseRepository.java index d6c92be1..4e4d0fd5 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/OnboardingResponseRepository.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/OnboardingResponseRepository.java @@ -48,12 +48,9 @@ public static void save(Identifier identifier, OnboardingResponse onboardingResp */ public enum Identifier { FARMING_SOFTWARE("farming-software"), - FARMING_SOFTWARE_REMOVED("farming-software-removed"), - FARMING_SOFTWARE_DEACTIVATED("farming-software-deactivated"), TELEMETRY_PLATFORM("telemetry-platform"), - TELEMETRY_PLATFORM_REMOVED("telemetry-platform-removed"), - TELEMETRY_PLATFORM_DEACTIVATED("telemetry-platform-deactivated"), - COMMUNICATION_UNIT("communication-unit"); + COMMUNICATION_UNIT("communication-unit"), + MQTT_COMMUNICATION_UNIT("mqtt-communication-unit"); private final String fileName; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/CommunicationUnitFixture.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/CommunicationUnitFixture.java index 39492310..446f3b06 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/CommunicationUnitFixture.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/CommunicationUnitFixture.java @@ -41,7 +41,7 @@ void onboardCommunicationUnitAndSaveToFile() throws IOException { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); OnboardingParameters onboardingParameters = new OnboardingParameters(); - onboardingParameters.setRegistrationCode("f50319dc13"); + onboardingParameters.setRegistrationCode("8908462691"); onboardingParameters.setApplicationId(communicationUnit.getApplicationId()); onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId()); onboardingParameters.setCertificationType(CertificationType.P12); diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/FarmingSoftwareFixture.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/FarmingSoftwareFixture.java index fd975c42..c04a6559 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/FarmingSoftwareFixture.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/FarmingSoftwareFixture.java @@ -13,7 +13,6 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -38,7 +37,7 @@ void onboardFarmingSoftwareAndSaveToFile() throws IOException { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("6a049384e3"); + onboardingParameters.setRegistrationCode("2067663604"); onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); onboardingParameters.setCertificationType(CertificationType.P12); @@ -62,73 +61,4 @@ void onboardFarmingSoftwareAndSaveToFile() throws IOException { OnboardingResponseRepository.Identifier.FARMING_SOFTWARE, onboardingResponse); } - /** - * Create a new registration token by using the following link: - * - *

https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/905152eb-c526-47a3-b871-aa46d065bb4c/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri= - */ - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void onboardAndDeactivateFarmingSoftwareAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { - }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("4699be2f62"); - onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); - onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(FARMING_SOFTWARE_DEACTIVATED_ENDPOINT_ID); - onboardingParameters.setPrivateKey(farmingSoftware.getPrivateKey()); - onboardingParameters.setPublicKey(farmingSoftware.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); - assertNotNull(onboardingResponse); - assertNotNull(onboardingResponse.getCapabilityAlternateId()); - assertNotNull(onboardingResponse.getDeviceAlternateId()); - assertNotNull(onboardingResponse.getSensorAlternateId()); - assertNotNull(onboardingResponse.getAuthentication()); - assertNotNull(onboardingResponse.getAuthentication().getCertificate()); - assertNotNull(onboardingResponse.getAuthentication().getSecret()); - assertNotNull(onboardingResponse.getAuthentication().getType()); - assertNotNull(onboardingResponse.getConnectionCriteria()); - assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures()); - assertNotNull(onboardingResponse.getConnectionCriteria().getCommands()); - OnboardingResponseRepository.save( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_DEACTIVATED, onboardingResponse); - } - - /** - * Create a new registration token by using the following link: - * - *

https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/905152eb-c526-47a3-b871-aa46d065bb4c/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri= - */ - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void onboardAndRemoveFarmingSoftwareAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { - }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("bc4eba6065"); - onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); - onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(UUID.randomUUID().toString()); - onboardingParameters.setPrivateKey(farmingSoftware.getPrivateKey()); - onboardingParameters.setPublicKey(farmingSoftware.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); - assertNotNull(onboardingResponse); - assertNotNull(onboardingResponse.getCapabilityAlternateId()); - assertNotNull(onboardingResponse.getDeviceAlternateId()); - assertNotNull(onboardingResponse.getSensorAlternateId()); - assertNotNull(onboardingResponse.getAuthentication()); - assertNotNull(onboardingResponse.getAuthentication().getCertificate()); - assertNotNull(onboardingResponse.getAuthentication().getSecret()); - assertNotNull(onboardingResponse.getAuthentication().getType()); - assertNotNull(onboardingResponse.getConnectionCriteria()); - assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures()); - assertNotNull(onboardingResponse.getConnectionCriteria().getCommands()); - OnboardingResponseRepository.save( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_REMOVED, onboardingResponse); - } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/MqttCommunicationUnitFixture.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/MqttCommunicationUnitFixture.java new file mode 100644 index 00000000..428c8935 --- /dev/null +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/MqttCommunicationUnitFixture.java @@ -0,0 +1,129 @@ +package com.dke.data.agrirouter.test.fixture; + +import agrirouter.request.payload.endpoint.Capabilities; +import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; +import com.dke.data.agrirouter.api.enums.ApplicationType; +import com.dke.data.agrirouter.api.enums.CertificationType; +import com.dke.data.agrirouter.api.enums.ContentMessageType; +import com.dke.data.agrirouter.api.enums.Gateway; +import com.dke.data.agrirouter.api.env.QA; +import com.dke.data.agrirouter.api.service.onboard.OnboardingService; +import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters; +import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters; +import com.dke.data.agrirouter.convenience.mqtt.client.MqttClientService; +import com.dke.data.agrirouter.convenience.mqtt.client.MqttOptionService; +import com.dke.data.agrirouter.impl.messaging.mqtt.SetCapabilityServiceImpl; +import com.dke.data.agrirouter.impl.onboard.OnboardingServiceImpl; +import com.dke.data.agrirouter.test.AbstractIntegrationTest; +import com.dke.data.agrirouter.test.OnboardingResponseRepository; +import org.eclipse.paho.client.mqttv3.IMqttClient; +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.Collections; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * Class to onboard endpoints for different reasons. + */ +@SuppressWarnings("ALL") +class MqttCommunicationUnitFixture extends AbstractIntegrationTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(MqttCommunicationUnitFixture.class); + + private static boolean messageHasArrived = false; + private static boolean messageHasBeenDelivered = false; + + /** + * Create a new registration token by using the agrirouter UI and select the integration test + * application for CUs. + */ + @Test + //@Disabled("Please replace the placeholder for the registration code to run the test case.") + void onboardCommunicationUnitAndSaveToFile() throws Throwable { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + OnboardingParameters onboardingParameters = new OnboardingParameters(); + onboardingParameters.setRegistrationCode("4822479417"); + onboardingParameters.setApplicationId(communicationUnit.getApplicationId()); + onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId()); + onboardingParameters.setCertificationType(CertificationType.P12); + onboardingParameters.setGatewayId(Gateway.MQTT.getKey()); + onboardingParameters.setApplicationType(ApplicationType.APPLICATION); + onboardingParameters.setUuid(UUID.randomUUID().toString()); + final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); + assertNotNull(onboardingResponse); + assertNotNull(onboardingResponse.getCapabilityAlternateId()); + assertNotNull(onboardingResponse.getDeviceAlternateId()); + assertNotNull(onboardingResponse.getSensorAlternateId()); + assertNotNull(onboardingResponse.getAuthentication()); + assertNotNull(onboardingResponse.getAuthentication().getCertificate()); + assertNotNull(onboardingResponse.getAuthentication().getSecret()); + assertNotNull(onboardingResponse.getAuthentication().getType()); + assertNotNull(onboardingResponse.getConnectionCriteria()); + assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures()); + assertNotNull(onboardingResponse.getConnectionCriteria().getCommands()); + OnboardingResponseRepository.save( + OnboardingResponseRepository.Identifier.MQTT_COMMUNICATION_UNIT, onboardingResponse); + + MqttClientService mqttClientService = new MqttClientService(new QA() { + }); + IMqttClient mqttClient = mqttClientService.create(onboardingResponse); + + MqttOptionService mqttOptionService = new MqttOptionService(new QA() { + }); + mqttClient.setCallback(new InternalCallback()); + mqttClient.connect(mqttOptionService.createMqttConnectOptions(onboardingResponse)); + mqttClient.subscribe(onboardingResponse.getConnectionCriteria().getCommands()); + + final SetCapabilityServiceImpl setCapabilityService = new SetCapabilityServiceImpl(mqttClient); + final SetCapabilitiesParameters setCapabilitiesParameters = new SetCapabilitiesParameters(); + setCapabilitiesParameters.setApplicationId(communicationUnit.getApplicationId()); + setCapabilitiesParameters.setCertificationVersionId( + communicationUnit.getCertificationVersionId()); + setCapabilitiesParameters.setOnboardingResponse(onboardingResponse); + final SetCapabilitiesParameters.CapabilityParameters capabilityParameters = + new SetCapabilitiesParameters.CapabilityParameters(); + capabilityParameters.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); + capabilityParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + setCapabilitiesParameters.setCapabilitiesParameters( + Collections.singletonList(capabilityParameters)); + setCapabilityService.send(setCapabilitiesParameters); + + int nrOfRetries = 0; + while (!messageHasBeenDelivered && !messageHasArrived && nrOfRetries < 10) { + LOGGER.debug("Waiting for message to arrive, retrying in 1 second. This is the {} retry.", nrOfRetries); + Thread.sleep(1000); + nrOfRetries++; + } + mqttClient.disconnect(); + + Assertions.assertTrue(messageHasBeenDelivered, "Message has not delivered within the timeout configured. There were " + nrOfRetries + " retries."); + Assertions.assertTrue(messageHasArrived, "Message has not arrived within the timeout configured. There were " + nrOfRetries + " retries."); + } + + class InternalCallback implements MqttCallback { + + + @Override + public void connectionLost(Throwable throwable) { + } + + @Override + public void messageArrived(String s, MqttMessage mqttMessage) throws Exception { + messageHasArrived = true; + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + messageHasBeenDelivered = true; + } + } +} diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java index bb3b46b0..6abd4639 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java @@ -34,7 +34,7 @@ void onboardTelemetryPlatformAndSaveToFile() throws IOException { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("3e22929d3f"); + onboardingParameters.setRegistrationCode("8530975704"); onboardingParameters.setApplicationId(telemetryPlatform.getApplicationId()); onboardingParameters.setCertificationVersionId(telemetryPlatform.getCertificationVersionId()); onboardingParameters.setCertificationType(CertificationType.P12); @@ -58,73 +58,4 @@ void onboardTelemetryPlatformAndSaveToFile() throws IOException { OnboardingResponseRepository.Identifier.TELEMETRY_PLATFORM, onboardingResponse); } - /** - * Create a new registration token by using the following link: - * - *

https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/3c3559c9-7062-4628-a4f7-c9f5aa07265f/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri= - */ - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void onboardAndDeactivateTelemetryPlatformAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { - }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("b8dbca89d8"); - onboardingParameters.setApplicationId(telemetryPlatform.getApplicationId()); - onboardingParameters.setCertificationVersionId(telemetryPlatform.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(UUID.randomUUID().toString()); - onboardingParameters.setPrivateKey(telemetryPlatform.getPrivateKey()); - onboardingParameters.setPublicKey(telemetryPlatform.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); - assertNotNull(onboardingResponse); - assertNotNull(onboardingResponse.getCapabilityAlternateId()); - assertNotNull(onboardingResponse.getDeviceAlternateId()); - assertNotNull(onboardingResponse.getSensorAlternateId()); - assertNotNull(onboardingResponse.getAuthentication()); - assertNotNull(onboardingResponse.getAuthentication().getCertificate()); - assertNotNull(onboardingResponse.getAuthentication().getSecret()); - assertNotNull(onboardingResponse.getAuthentication().getType()); - assertNotNull(onboardingResponse.getConnectionCriteria()); - assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures()); - assertNotNull(onboardingResponse.getConnectionCriteria().getCommands()); - OnboardingResponseRepository.save( - OnboardingResponseRepository.Identifier.TELEMETRY_PLATFORM_DEACTIVATED, onboardingResponse); - } - - /** - * Create a new registration token by using the following link: - * - *

https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/3c3559c9-7062-4628-a4f7-c9f5aa07265f/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri= - */ - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void onboardAndRemoveTelemetryPlatformAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { - }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("bea75dff01"); - onboardingParameters.setApplicationId(telemetryPlatform.getApplicationId()); - onboardingParameters.setCertificationVersionId(telemetryPlatform.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(UUID.randomUUID().toString()); - onboardingParameters.setPrivateKey(telemetryPlatform.getPrivateKey()); - onboardingParameters.setPublicKey(telemetryPlatform.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); - assertNotNull(onboardingResponse); - assertNotNull(onboardingResponse.getCapabilityAlternateId()); - assertNotNull(onboardingResponse.getDeviceAlternateId()); - assertNotNull(onboardingResponse.getSensorAlternateId()); - assertNotNull(onboardingResponse.getAuthentication()); - assertNotNull(onboardingResponse.getAuthentication().getCertificate()); - assertNotNull(onboardingResponse.getAuthentication().getSecret()); - assertNotNull(onboardingResponse.getAuthentication().getType()); - assertNotNull(onboardingResponse.getConnectionCriteria()); - assertNotNull(onboardingResponse.getConnectionCriteria().getMeasures()); - assertNotNull(onboardingResponse.getConnectionCriteria().getCommands()); - OnboardingResponseRepository.save( - OnboardingResponseRepository.Identifier.TELEMETRY_PLATFORM_REMOVED, onboardingResponse); - } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/mqtt/PingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/mqtt/PingServiceTest.java new file mode 100644 index 00000000..4ae56dfa --- /dev/null +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/mqtt/PingServiceTest.java @@ -0,0 +1,97 @@ +package com.dke.data.agrirouter.test.messaging.mqtt; + +import agrirouter.response.Response; +import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; +import com.dke.data.agrirouter.api.env.QA; +import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; +import com.dke.data.agrirouter.api.service.messaging.mqtt.PingService; +import com.dke.data.agrirouter.api.service.parameters.PingParameters; +import com.dke.data.agrirouter.convenience.mqtt.client.MqttClientService; +import com.dke.data.agrirouter.convenience.mqtt.client.MqttOptionService; +import com.dke.data.agrirouter.impl.messaging.encoding.DecodeMessageServiceImpl; +import com.dke.data.agrirouter.impl.messaging.mqtt.PingServiceImpl; +import com.dke.data.agrirouter.test.AbstractIntegrationTest; +import com.dke.data.agrirouter.test.OnboardingResponseRepository; +import com.google.gson.Gson; +import org.apache.commons.lang3.StringUtils; +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttCallback; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; + +class PingServiceTest extends AbstractIntegrationTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(PingServiceTest.class); + + private boolean messageHasArrived = false; + private boolean messageHasBeenDelivered = false; + private static String healthMessageId = null; + + private final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + + @Test + void sendHealthMessageToPingEndpoint() throws Throwable { + var onboardingResponse = OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.MQTT_COMMUNICATION_UNIT); + + var mqttClientService = new MqttClientService(new QA() { + }); + var mqttClient = mqttClientService.create(onboardingResponse); + + var mqttOptionService = new MqttOptionService(new QA() { + }); + mqttClient.setCallback(new PingServiceTest.InternalCallback()); + mqttClient.connect(mqttOptionService.createMqttConnectOptions(onboardingResponse)); + mqttClient.subscribe(onboardingResponse.getConnectionCriteria().getCommands()); + + var pingParameters = new PingParameters(); + pingParameters.setOnboardingResponse(onboardingResponse); + + PingService pingService = new PingServiceImpl(mqttClient); + healthMessageId = pingService.send(pingParameters); + + var nrOfRetries = 0; + while (!messageHasBeenDelivered && !messageHasArrived && nrOfRetries < 10) { + LOGGER.debug("Waiting for message to arrive, retrying in 1 second. This is the {} retry.", nrOfRetries); + //noinspection BusyWait + Thread.sleep(1000); + nrOfRetries++; + } + mqttClient.disconnect(); + + Assertions.assertTrue(messageHasBeenDelivered, "Message has not delivered within the timeout configured. There were " + nrOfRetries + " retries."); + Assertions.assertTrue(messageHasArrived, "Message has not arrived within the timeout configured. There were " + nrOfRetries + " retries."); + } + + class InternalCallback implements MqttCallback { + + + @Override + public void connectionLost(Throwable throwable) { + } + + @Override + public void messageArrived(String s, MqttMessage mqttMessage) { + var payload = StringUtils.toEncodedString(mqttMessage.getPayload(), StandardCharsets.UTF_8); + final var fetchMessageResponse = new Gson().fromJson(payload, FetchMessageResponse.class); + final var decodedMessageResponse = decodeMessageService.decode(fetchMessageResponse.getCommand().getMessage()); + LOGGER.debug("Message arrived: {}", decodedMessageResponse); + if (decodedMessageResponse.getResponseEnvelope().getType() == Response.ResponseEnvelope.ResponseBodyType.ACK) { + messageHasArrived = StringUtils.equals(decodedMessageResponse.getResponseEnvelope().getApplicationMessageId(), healthMessageId); + } else { + LOGGER.warn("Message arrived, but this should not be the case {}.", decodedMessageResponse); + } + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + messageHasBeenDelivered = true; + } + } + + +} diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/HealthCheckForEndpointsByPollingTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/HealthCheckForEndpointsByPollingTest.java index 53e4196a..cb8ccca8 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/HealthCheckForEndpointsByPollingTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/HealthCheckForEndpointsByPollingTest.java @@ -1,7 +1,6 @@ package com.dke.data.agrirouter.test.messaging.rest; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.exception.UnauthorizedRequestException; import com.dke.data.agrirouter.api.service.messaging.http.FetchMessageService; import com.dke.data.agrirouter.impl.messaging.rest.FetchMessageServiceImpl; import com.dke.data.agrirouter.impl.messaging.rest.MessageFetcher; @@ -32,35 +31,4 @@ class HealthCheckForEndpointsByPollingTest extends AbstractIntegrationTest { Assertions.assertFalse(optionalMessageResponses.isPresent()); } - @Test - void - givenExistingAndDeactivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() - throws IOException { - final var onboardingResponse = - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_DEACTIVATED); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final var optionalMessageResponses = - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken( - MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL)); - Assertions.assertFalse(optionalMessageResponses.isPresent()); - } - - @Test - void givenRemovedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldDenyAccessToTheApi() - throws IOException { - final var onboardingResponse = - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_REMOVED); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Assertions.assertThrows( - UnauthorizedRequestException.class, - () -> - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken( - MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL))); - } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/AuthorizationRequestServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/AuthorizationRequestServiceTest.java index acb32f43..04fb32de 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/AuthorizationRequestServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/AuthorizationRequestServiceTest.java @@ -33,7 +33,7 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingS assertNotNull(authorizationRequestURL); assertTrue(StringUtils.isNotBlank(authorizationRequestURL)); assertEquals( - "https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/905152eb-c526-47a3-b871-aa46d065bb4c/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri=", + "https://app.qa.agrirouter.farm/application/" + farmingSoftware.getApplicationId() + "/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri=", authorizationRequestURL); } @@ -52,7 +52,7 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetr assertNotNull(authorizationRequestURL); assertTrue(StringUtils.isNotBlank(authorizationRequestURL)); assertEquals( - "https://agrirouter-qa.cfapps.eu10.hana.ondemand.com/application/3c3559c9-7062-4628-a4f7-c9f5aa07265f/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri=", + "https://app.qa.agrirouter.farm/application/" + telemetryPlatform.getApplicationId() + "/authorize?response_type=onboard&state=my-custom-state-to-identify-the-request&redirect_uri=", authorizationRequestURL); } @@ -66,7 +66,6 @@ void givenInvalidParameterWhenCreatingTheUrlThenTheUrlShouldBeGenerated() { authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); Assertions.assertThrows( IllegalParameterDefinitionException.class, - () -> - authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters)); + () -> authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters)); } } diff --git a/pom.xml b/pom.xml index 7310dfc6..56af2e28 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.agrirouter.api agrirouter-sdk-java - 3.2.2 + 3.3.0 pom AGRIROUTER SDK JAVA @@ -214,6 +214,11 @@ org.eclipse.paho.client.mqttv3 1.2.5 + + com.hivemq + hivemq-mqtt-client + 1.3.3 +