From 11f0b316ae75207dc8ec082763cc76cc16da9b88 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Fri, 1 Nov 2024 15:16:59 +0100 Subject: [PATCH 1/3] Feature/add dke ping for health messages (#221) * Remove Ar2QA and update URLs in QA Deleted the `Ar2QA` class to eliminate redundancy and adjusted the URL constants in `QA` class to point to the correct QA environment. This streamlines the QA environment handling within the codebase. * Add support for MQTT communication unit and DKE ping Introduced MQTT_COMMUNICATION_UNIT in OnboardingResponseRepository and added a corresponding fixture. Updated certification details and added DKE_PING to SystemMessageType for improved system messaging capabilities. * Add Ping Service implementation Introduced PingService interface and its implementation, PingServiceImpl, to handle the pinging of health interfaces using MQTT protocol. Created PingParameters class for encapsulating ping request parameters and updated MessageEncoder to support encoding of ping messages. Also added a PingServiceTest class to validate the sending of health messages. * Correct formatting in AbstractIntegrationTest Fixed the indentation of the end-private-key line in AbstractIntegrationTest. Also removed unused import statements in PingServiceTest to clean up the code. * Enable test and update registration code and onboarding response Re-enabled the `onboardCommunicationUnitAndSaveToFile` test and updated its registration code. Also updated the `communication-unit.json` with new device and authentication details. * Update farming software JSON and adjust onboarding test Updated the `farming-software.json` with new device identifiers, connection criteria, and authentication details. Also, modified the test fixture to enable the onboarding test and updated the registration code accordingly. * Add new onboarding response JSON and update test classes Added a new `mqtt-communication-unit.json` file for onboarding responses. Corrected the file name reference in `OnboardingResponseRepository` and updated the registration code in the `MqttCommunicationUnitFixture` test case, while also re-enabling the previously disabled test. * Update telemetry platform onboarding response and test fixture Replaced telemetry platform onboarding details with new identifiers and updated the registration code in the test fixture. Also, enabled the previously disabled test for onboarding. * Remove obsolete onboarding responses JSON files Deleted JSON files for deactivated and removed farming software as well as telemetry platform to clean up outdated resources. These files are no longer needed and have been removed to maintain a leaner project repository. * Remove obsolete onboarding responses JSON files Deleted JSON files for deactivated and removed farming software as well as telemetry platform to clean up outdated resources. These files are no longer needed and have been removed to maintain a leaner project repository. * Refactor MQTT test cases for better integration Updated `PingServiceTest` to extend `AbstractIntegrationTest` and added necessary imports and services for MQTT testing. Modified `MqttCommunicationUnitFixture` to use MQTT instead of REST and added a logger for message delivery confirmation. Adjusted onboarding response JSON to match the new configuration. * Enhance MQTT Ping Service tests and fix onboarding fixture Refactored `PingServiceTest` to include message delivery and arrival checks. Updated `MqttCommunicationUnitFixture` to match the new test structure and modified the registration code in onboarding parameters. This ensures robust message handling and consistency in tests. * Refactor `PingServiceTest` and enhance message handling. Refactored the `PingServiceTest` to use instance variables instead of static. Enhance the `messageArrived` method to decode and validate incoming messages, improving test reliability and logging. * Remove unused imports and exception handling Removed unused import statements from three test classes to clean up the code. Additionally, eliminated the unnecessary throws declaration in `messageArrived` method in `PingServiceTest.java`. * Update project version to 3.3.0 Bump the parent project and all sub-modules from version 3.2.1 to 3.3.0. This ensures all modules are aligned with the latest version for consistency. * Refactor: Change async ping method to throw exception The `sendAsync` method in `PingServiceImpl` now throws a `RuntimeException`, instructing users to use the synchronous method instead. This change ensures clarity on the method's availability and usage. --- .gitignore | 5 +- .../dke/data/agrirouter/api/env/Ar2QA.java | 27 ---- .../com/dke/data/agrirouter/api/env/QA.java | 8 +- .../service/messaging/mqtt/PingService.java | 9 ++ .../agrirouter/api/enums/SystemMessageType.kt | 3 +- .../api/service/parameters/PingParameters.kt | 18 +++ .../impl/messaging/MessageEncoder.java | 36 +++++ .../impl/messaging/mqtt/PingServiceImpl.java | 64 ++++++++ .../communication-unit.json | 2 +- .../farming-software-deactivated.json | 1 - .../farming-software-removed.json | 1 - .../farming-software.json | 2 +- .../mqtt-communication-unit.json | 1 + .../telemetry-platform-deactivated.json | 15 -- .../telemetry-platform-removed.json | 15 -- .../telemetry-platform.json | 16 +- .../test/AbstractIntegrationTest.java | 148 +++++++++--------- .../test/OnboardingResponseRepository.java | 7 +- .../fixture/CommunicationUnitFixture.java | 2 +- .../test/fixture/FarmingSoftwareFixture.java | 72 +-------- .../fixture/MqttCommunicationUnitFixture.java | 129 +++++++++++++++ .../fixture/TelemetryPlatformFixture.java | 71 +-------- .../test/messaging/mqtt/PingServiceTest.java | 97 ++++++++++++ .../HealthCheckForEndpointsByPollingTest.java | 32 ---- .../AuthorizationRequestServiceTest.java | 7 +- 25 files changed, 447 insertions(+), 341 deletions(-) delete mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Ar2QA.java create mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/PingService.java create mode 100644 agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/PingParameters.kt create mode 100644 agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/PingServiceImpl.java delete mode 100644 agrirouter-sdk-java-tests/onboarding-responses/farming-software-deactivated.json delete mode 100644 agrirouter-sdk-java-tests/onboarding-responses/farming-software-removed.json create mode 100644 agrirouter-sdk-java-tests/onboarding-responses/mqtt-communication-unit.json delete mode 100644 agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-deactivated.json delete mode 100644 agrirouter-sdk-java-tests/onboarding-responses/telemetry-platform-removed.json create mode 100644 agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/MqttCommunicationUnitFixture.java create mode 100644 agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/mqtt/PingServiceTest.java diff --git a/.gitignore b/.gitignore index 659ca628..b4a56a0b 100644 --- a/.gitignore +++ b/.gitignore @@ -25,4 +25,7 @@ buildNumber.properties .settings # GENERATED # -src/main/generated \ No newline at end of file +src/main/generated + +# LCK # +*.lck \ No newline at end of file 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/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-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/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..b20daf4b --- /dev/null +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/mqtt/PingServiceImpl.java @@ -0,0 +1,64 @@ +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.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 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; + +/** + * Service implementation. + */ +public class PingServiceImpl extends MqttService + implements PingService, MessageBodyCreator, MessageEncoder { + + private final EncodeMessageService encodeMessageService; + + public PingServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(PingParameters parameters) { + 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); + } + } + + @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-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":"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"}} \ 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":"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\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":"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"}} \ 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":"MIINwwIBAzCCDY8GCSqGSIb3DQEHAaCCDYAEgg18MIINeDCCBe8GCSqGSIb3DQEHBqCCBeAwggXcAgEAMIIF1QYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIEzcZdHPUN+oCAggAgIIFqJ+zzYxdv90qPfDVGGp4U8JazaZW85JR0gE9aB6StkXhu0yaGjzOX4Ch/FDkn3Rkc+69HRS429x1GDG72h+w5ysrvrBGa8W0Eb61TiZD2wyTtf5l5vKNM6Oqb9JLdT6ML4vvnTexEa8CWEn9RWIJJb7/qGeloh/w3NaZFTKoQz+1wE1sTJtqSpDpg/HnpPCwRwRDWZ85wJLljDwwxxfWzMvi/HcVuD/yspBdkrb2PAfau6SCkH9J2o41dXS/N+cjXyh34uOCAIZYZ4JYrYJjeeLjNpfLBpMY8L6RXLdZSZFrdWqXFwxOdOpMQfOJvI9tiEHn2M2Mz5P7CfA+EKGfTrogf9fcXexNiDkBoWRzXxljMM/g9deNmYfBFYUbOoMNwdMTXA8nUnEQwPYzQIjgMe3WoIt+fnki3aZ7UDmw9wc31q/w0nSGURK6ihwL8trbrD8wLH8A6TRBMzlyVmLNVsk3Pf6LXetT4gN6ntaJV42Mu6FFiJCDOqCW/bUxwVPPn3eGgqIXlwPk1bLgA1m5XJeC3wQPH5Ozo8DFl8AyH2m3NbyDYjNAlBXah3lsqViyeUjSpZY6tYt2e64UXVxF5UkZnKsBxY8z7B/vMsKOPhFdFz1IRt+Sd+EQtXl8eXpKJHQjIqBiINYOND2smu3Yjr44OTlHbQ85mnkiqaZKnsEpAJ0hblky6CbUljrai9apQrWG0BOE8ptZIIyEsR92RmDlofXVVKdhVnH19eTSz4XYv8MMJcyPBSog5noFyQV1tHfhZkAkJrgO4jF5WF7rSJDQ8eEFrrTP0NGQ4RjVYw+gUQcyRYCoPsQ8rIcgOGW8Oh6tfv51zCLNks7OlXdCeHGxHaSfkHWqCbTLVFMwJ8eqbj3ka/Eyd2LsbJNPdW8xvqCPHikrOuwPMLBzQjonBhcZNFHQru3uOPV3q1y1nvm/5cFpO66Zv5ItVbYFRq1MLpO+gaVAXPa4T5rQICW/CTi4JhZ+1hH8fipN8jyh1+vvcdaQrySs+CgZLYWBGn7hOvsczPKDdOd3c8k5a6yOR7tOokNtdAUkPM2F0uiDFAZgEsgyhGpnIM6TPxkxFGYE99w0+SbgtDQ4/pPPwMlQFKF7y2W5SAy16+rlavaJUT6UXeQBC9YnXzSsdjqL+ojyUM1M9kVuopr7vyYQpsC1iGoADLE+MUefNTLSQcZ6QxPJqK4O2bkDiBmQOezGheKxzGlHVDBwUJTxyvyjLTjniVwL39lupYPeayVqIJm3QVBgDeYHbe+z91cgXTXoG73nBk1012I4IIWNAemULOJE32dt7ePrhelNW0q7U5esy+bQzb0D2CvwfsxtHpthSc6SoBYMklGyjH0pDKIHnrFC+F8LB5w9QMJ96m6dXF0l1QPMvQurCu5UC3RmfW1AEAqcHSujTGpsk6+LDF6Gvx3iLHGMccxP69MLqGdduOEHajEcFlNw7HkWOWVKIUO3M+rU4AyXp/b6Qfk3HgWWJ/+0mfdlskFSIXoQtC9E7wvdzHj0dWA781Q5PX0olg/Fgj7kbg1d4tWq/FKj+PjmBWsMzRChKk95rGdSRQ4H8+YYw6oWFD/cPLbRLqwqkhktGxX2Ox3zq38zWYfnQJpoBBHNYtRZy0YtzNb1JDb75R9dAm6w9oJUxC8QUYTD+uLKO2/HaJ3QDHboevDkLqVJX2QyDyQovWeud+LOl7y/FygE15pJIJo9nzT+WdgIGUI3V8U9TQuHNxX8OX4Z3N8NY1uSp+hM1VZjS7LmOCvq19pvPhn993+JaaW71L/2PAnbH1b3vfmFR3l+SLOuv627evqEVH1VpL9BMbpu2kXLZXiNW0EO1i+c0+YpPtf2vFPVrzXa3yWQvZEKZFutV+P1Ilwqg3mwcGeKYPVquJZGXIY0VFMdesAHAbZwSBHvkn5gxwHGF+1cc0FK+ag4MIIHgQYJKoZIhvcNAQcBoIIHcgSCB24wggdqMIIHZgYLKoZIhvcNAQwKAQKgggcuMIIHKjAcBgoqhkiG9w0BDAEDMA4ECI05GlM5xqwZAgIIAASCBwjwUyyIWet4qM0IIQn+beucQVTDL1vx+fnZL1LvsR/WqtLf6+ALwrq/qgvB9vxVvKlLhNEMj8JEyCldeUdHaACYuv6Kv6YBBOJ+mlHTLN3rtw8Pv74l+3Wga7f7fepCI8DJMYBNRSkZ8tlseyt+HVKXjeWC1UCwwWsPlS6Ztn2LfPgHYBHAEZ6r0XiLbgnvs3dC9+71sxapsv0JO/5uyBCKJzfkGpCYa25IctBMUsODe/xHJKgK4/z2Q+kmKRpGPB4iwKUxQ4ZZYqQUR6DyPteD1hWCZs2Yv2yqwIPqCikA4Lds6d/u8G7pRpnMuyzeVZoKrm7tEzrQvvQKhALvpfOV7Y0dYpfTAbmkOO+IwyDvICT9HX0kinnofbEeklbEY3qzcjG8MduvOCqGdY1Viw1p6Z54JyGcnMtbPqktAMsHPovzpD2mnfkjxRcDHrB3wlsnsOTsUucQ+UEwUsM8APtD/U3djt0b4np9CaJYUjZWg4pqhmgGYd1JOAy2fA+emo5n9gu8Py2/had/kyStbKTlSC3O1jI070nzCCuc1U4LO2nqybs16MHgjeycCVFj5A5DiV/sgy6NQJPesRt6uVowYjQWhuotiYPslW6xonYM3ZOA8cTAfMA6FRbOYW34bOscB2FCK5MM4dfYoczzNJcb7D++u9joOTfccNfBqGQ6MFSyza+3eO1GUkTvLsUwAjQ0nkhDV71WMLlCsABq3nn0FZXyUUroBwN8qb+FWi+7On8IjJYuTA1XqdEzoYYogrXe4ojehdoDKiI0MrNlMt0KTQkKcNXwDwW+nEoS5PVIKWUcNXwu4NZWhe9KL9kUXum8BFvX+Aj6q7AXx8tAW80rC1c1KnY0/McJv2glVQIMCZlD8I3gZvn8tf/M+yvhWZflfJT3iRzIG3YH7TUTyZYzxYk6f6Cd2MEKPVd9Pf/hanriRSNmW5Tx3OoEDXVoQZNAH9k4UyJy21rv6ezT1PLb8CLCp/apDSkGjeMAHuPCiKLpV4sn8eQI9PpFmwd0mPXCAEGU8lnIGSjeAtHei9RicFRxQSKbGcBQGnUxhrysTVwwTbjG29MRMrzAXxAXhQ8L8+56EAZyNvdnALEALP78/8sZM2QUkTqdvFh8R/PeLPcDpC5MBn4ZmRB7nODxJU3rF9sn1yQ7u2MBqiNxGsuP31OSImynqbeKKYwK1Si52CA4M9WBzWVK4CBy56QfkOiXhnWFDsvm4UwgeUp3Jc2l9hQAdnL6MaCsTPLw7ZiimKQi25lJVAPB9YDP5cFR8FzK9MmAkQPABWF6e6bRu6+fqdlQlVFFTlFmD7w3lX3yD/c+mEehJMSLh41Po+6DxP6PwOwycVkV9L2STw7a670Hu6tAwsWO1kx/wHqMGwWBs4N/0GKUm5+zZd6T3ZK3KniXP8ebichD29HMbGPENZ3EfMIagj27QOZZAzAGCj2V/q7GG7e4rlt5sUSWSGzwhPeJe1HffsuGrbtmUeVWIE80qSMK/p/zIBlrOcS4zW/RlJtSvk+PSHNy8NLQkXWU10dW7hD2rGbeIEOOe3Fd7hVKYTCcnxEMoHMSnQ9cSvH/SU/ljpq6PqdAO0GpRG4Nqt+E0CCTovhNT+UVDKNHKOZKaIyz8eKHFwoSlM/5aGT5gNnh6FoeB22oX7ggPsvJuFpg8GUwHmJTUV3+VQ5fTedy1EL6Dq4ryw7Z0/6XNO6xkLvnz3L6veKJAkxX0hMR+DYEK5uG0ofiCakB5x441Xr0m5IUSQ3GcAzC+iR915UkGesIC9X525Yil1Vo/1yS/GMFfDdbnX8lU3wegIg89j8sDwv/iYnImwTnSCUkM0kwAOsphC6BOoHsxJoVoyPo2wfZSD8fjqwXkNn/Q8rC+yJHqSaMQG9XJtv7tkYm5v++Z0r+Q5VKovVjzNEhHEX2j7Hf2/ApLipRorgQOztIpZXCoR1cSPGYFo7bw7IaZHJycn42vLZzkEb5fYTSx0A6AYh20aCX/zrTBIddqD9eTr29nL1wNJ3kMTuwuEgq9GmDiEJBgrwOrq++QoWSL3GOhDouJbQtoofJb5nH4diYqNxzNJUKva+dcu3K9Xi6xPmo2tQhQUn9rrjs3YZA+fvpQ8qsxQoIIr34YKV59n1PClgtTyyLwOHEpANkj3TXK06fl3eom53uJaFj3/IzJiW7sXqpbsEFc6thukx+9xppWVibwTvAnndT+GCgcEG7qG5foUqxsH3HcuskQHsr+vgpJSlDry2+QzMiAvpY9ak3Gk9Leti/vga0KPtuUDlpZsh2YmkNUgK2vfQ0HutOZHcr/M46Y08WCEJWdihX0Ru+BxoYpV1ERMT4aSL2AHnRuLnyjmhGxq9W+QjEo4UHynNYO7e9JCgYNGPkAFLDAronBpS9ytKF3jBxOagxJTAjBgkqhkiG9w0BCRUxFgQUvVKQX6kRi4PKMVQ0FJmQlOXjDZowKzAfMAcGBSsOAwIaBBQ5bEHWvZxP6M36J14XDDig4/y96gQI7gytJZtZxtU\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": "MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSABIIEADCCBRowggUWBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQIzfLY2ZrSGnECAgfQBIIEyC79FozwXsvMDVgJpg7j0xnNvRIydPbNxsFPOtu3fp3pQqlrMf1rFnw/IfCBScqjcvRjW/g12/TvRpIKCY3YkoPk1kMRFt+f34Mad0dLC+PBvbrxV8QbYiQFXVKZrr7iVxVOGjNMr4GlPYDwrUWKj7rK83xadwBSAV1GVLrx8/z73rTl8E2gzx3zjvfapVWRgJXeaNf1T1mFdyktQYKoXSSYwQBXlgu79rQuPehlw+dW3amqLgCa2hjyaA5RbGlrjvPe3kVJBbo5U9XDGlRyIHpLmLOPsNJmVso/jAPl4ZRlDONB7jXYqNzapcnz+fEQj19W+o3To11yJTVVKrdMMVf1ujYDrf147WZM613luyH/XAPMf2MPuVNOgAWkb/qVPlLlEnHdSSOKZK4ynrSHFd0opAD3PZqBqzAHlqqO0S9+vKNwJJui3yjNxfLRjmvX0yMbAUgoF6AgLaLODhW3QGt/R++/b0EwcAQnFtNCcbxs/SmQjExXvUbY/cTsDtcBB8BvzzLMUc7jOrs5pPXh4H/1lI8HWXhMR0vjX3H13j77DX9cyElqz6PDfmsX24wbna28O94GW6ZQnpFNdYuBHqBM7mZoJo6avNiWiGB5DarbM1kq5CWyEaQmKC3Q7vuSLDGUmJPPHTRhD+PMbzo84uczliSq76GVsUgz/O0LBqdWrRzZ+zmFk7x1SCJKcTc4yLl/ZBF5EGYR7KfMZJX5SJaO2lpMQ4oTk6o2212nAN1uZxenSIi28zQeq2Wceb8eGyNF+M01r+29bN+2h/4slgYVsLS9aBpqSlCKY8Si5HAYDCMCIUGUt647hLrVSIUbTX8Je+jpfu1AZrv57PXO3EMWCwiAgC9A5AZDGPB4vRj1LvZzVCJNL14Gq6V+BEEQbTWTv01UoKIoLzYm1CxWvGaOiJqIbCDcsd6paWoqBHKRVt6XajCurPCQDOmkL90zR4YVQXVZf+3TqYatoudQzG8PQwTJttzMb5i4iySzS+bLtA/HNG2KPSuG9gncBmsxksLE9sCyqpHMOdBtgtaWPI47f8VFrftf6/j9OKhB9M2rLc9jnBYNio8GVWDcyW6vvoylVzTWFzJiP5iXmgwP5J2z7MVSK2V47AZPECpa3ZZXVKBUSRDy451qy6P9HdL/62qz4ze+FypFVt7VwishZvyOX+DXWe4WBrd9BIGVkZRLK865Zq7tWHUvkrPeNZsRWABQcZfI/3oX+XrQTbDpgUW7Mcz1L6FMTNBsBIIEANL2Hjp6Hhsb+f58vslvFUG46JzZBc47BIIBHqq9HocjNmMDVWAgj5TXOmyQhzZCE4R34RKURJUDpvnk2fCI236mF7dgPjM81wQQAt10xDLZbR2OgzlBeNI1vRV0OlopRdZsCk9xEcc5cxRbpcBjg0MKBM/lQNGEypJMugFx1KHmcs8j+vMrs4cTc2bMX91TOAdj2a21eEsiyqH1Er56JCrpNSWy6LgrLKSOUFwCrKcedYk74/snBoIx11WgbQSJGgQO+b67u3drKMlg0ZoBJBv+iultQtzJ8dA130ygL0lBmB1whPwqU1+jfJMuUDOk4MWJ1AIK5uzKOwjXY8rvCelYJ+1eIRTS9g5RvEdUMqNkPm1o9ZtWQuC8aRCyu+9WwBpPMRUwEwYJKoZIhvcNAQkVMQYEBAEAAAAAAAAAAAAwgAYJKoZIhvcNAQcGoIAwgAIBADCABgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAih1t/kj5ME4AICB9CggASCBcgaD6agNP4alD4itikSCq5jZcNlzhdazKY4n9MPSshdzlNz8mfvi1SUR5frlVTYmAouMwx9uGa0PYcNAcydLel2Jqz6uxIjlMNaJw8EIv/23NjQfFXEEYFlhQFH9LcUVczneMgBQ+bQACjXIkwxnndtqazy7Uh7KVVBH14PXVwdkODA8QRVLOrLk3n16Kz06BJ3Zg/eXXW7Itu9FPgolOIuzijuBEbYR+upev8AqqNupmycjYjmf6J7Vluyj+OTxC25e6LJIEwaCKAYjstJquTyY2EU9m4aDVpRLy8z8LUpYEIw0fnXdqqFs50XNwjTHkdN+jA7CT1RTtlZcaOCesGjI/tz/Q6u4TLwIBd6g1VvJisc/dXxD1AFtIDnyHZg/DkWQYQ+oT6/BClDuFu0Sl9+c2qonoAbGv2c3EU2ofW4cxBBpOxhLv38siq+atBlEQXebrlkAWbrJk6+nZft+Xo8IWevubxOuyTMQOx3Dqvy9irqtO0URFeDwDSJo4HYl6//+2m5/yxxupQuYLjL6Nsmjfj3r/fbhYAh+b1/CJZGCS+6uCGEqjMsp4Ur674ODTQn7H0kqiYCJpVROTJFp1l6d6U+e+c38uAIxtWcZibsbs89gGasYR0g4cFWFcGfr1Ao941zrccJL5jDf/Wg0+YZ9P0H+4E4uVNJxn0PwmihJAkj1JV7e6cXtvkCVYkNXsGBdPj5EnhpbsBVJKdQYvZ+JyftxEo6kSktW4+iDSUaUk/7CaUMf5PwFh4xT5Mdo6oea7obE1Fy+sF2gHC0u1e21WRcPlBJ00vGXTJCDnYHkbOEB5FRz8rpRo+f8NfDCoXR8WaLEnNPl6geZ7UEggNYr7Tz6K3g5UyvivZ/TLVY7RkORNfiikbV1KtNcpKkBJx1i0T6IX+pWiRM86MuFpJWFjnx4yVfdRWhLUENSlBwSe2XgIXVvnMw2RAuOP2q7HsgmdK5Ow6EkFPtskWJKN5qXY+YVxgtnBx/lAEzFMph/zZU3/7afcGbzw4gAzF72qOQr1hgOvHrTOmCn/8gAGmOcHja6rVaKlcnNZI9J/vr0YilKtvjY6UIum6o6auDbF+NOo6PZNCgQn5IPbvhLVmmo1qMy+TO/Wv77mGrH2Si0I2d1QGVa2feIJqwRz+FGd2DJlUBIhAJf29ECuVdPH6ft5nGTVUfA/Vx+Aitm7s5U3r25SVENmfiy0a11GSwJ4UsPV+ifwhFfqpFPyFMfUQigYs2YU+IW16jNiKz+Eb3RuyntRf1s1FeM86KfG7UU8AXieH+QGOUqBj4pYUPj1EqWgVEsXyZ9RNAtklEO1i+dTkcqBHa/95FgyHZDBpAUYiCExcR+t7cZ5CjJhbmtr9ar1FNl2QhatE6kN36ZpcCvYzMkeruFfKMWJe2fxZUQSDSpAgu342BO6D9qfX7+eBelTn+PpFemSzROsMGLbWPwjKcFElHsX6UYMFt1rha7KS7hZd2BKpFW3wI1iEMmV2NrmWW+7YmSVOrFxExKCJcYD84nP+5t3Q/28JFwkhBiWHuk6Kmz1Q1X0/TviBSOV73uyUSO3YNptNUdCvTmkBqacqAFHD6WST068VnCqygs2a6TD4CJZX0vTYCQu2epuWJH1ro0PuZun3Qf9eJY+sGmns6Xrt75PH2zro6yE2sznhWllWt4AgCFIONTbqzmhlAfkveVmlCMNm0hFXVYaY4oi2Ic9FigfQyMLq20cjP4A9375LHHtVFWqdULpLq0cyqkNf2UfQ8dzn7r5twKs7atnIoCzOnPKqTVOnbYeNKtevdF1t+VQ02Fl4AOYA3tPZiGSw56Jy8gW/Ui9vLpHnVVUr6LgKMEyQHSxZ2veNyO+yXTHTjNP9CmiwY9A5VMolK6erVJFyFBOYqHsGGMoFcOD61AuZtMei9ndk+LhaI8rZSyIlH+BxalvGC/wNuZdblHPfWTB8aTx+mEkZj3elkyoPioVwhk17li0SV6gAAAAAAAAAAAAAAAAAAAAAAADAxMCEwCQYFKw4DAhoFAAQUrZy/tUYjrt2z4BZ9OEFmMhEggjwECHbwO7Elmt8HAgIH0AAA" - } -} \ 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/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)); } } From 4bc62e817278de31fb2139095cb591ea5e327ea0 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 18 Dec 2024 17:38:44 +0100 Subject: [PATCH 2/3] Update SDK version to 3.3.0 (#225) Bump parent POM version from 3.2.2 to 3.3.0 across all modules. This ensures consistency and incorporates the latest changes in the SDK dependencies and features. --- agrirouter-sdk-java-api/pom.xml | 2 +- agrirouter-sdk-java-convenience/pom.xml | 2 +- agrirouter-sdk-java-impl/pom.xml | 2 +- agrirouter-sdk-java-tests/pom.xml | 2 +- pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index f365729a..21f9ca17 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 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-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-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/pom.xml b/pom.xml index 7310dfc6..1aeb1e14 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 From d209a36671b8fb9e78d52ca6d1cf38fe6b304621 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Thu, 19 Dec 2024 12:14:23 +0100 Subject: [PATCH 3/3] Feature/add hivemq client for mqtt services (#224) * Add HiveMQ client dependency to Maven project Introduced the HiveMQ MQTT client (version 1.3.3) to the Maven project dependencies in pom.xml. This addition enables enhanced MQTT communication capabilities alongside the existing Paho client. * Refactor MQTT client handling Refactor MQTT client handling by introducing MqttClientWrapper and PahoMqttClientWrapper interfaces. This change encapsulates MQTT client operations, providing better abstraction and sanitizes the exception handling within the PahoMqttClientWrapper. Additionally, updated pom.xml to include the necessary MQTT dependency. * Refactor MQTT client handling Introduced MqttClientWrapper and PahoMqttClientWrapper to encapsulate MQTT client operations, improving abstraction and sanitarizing exception handling. This also simplifies the CloudOnboardingServiceImpl class and removes direct dependencies on the Paho MQTT library. * Update DeleteMessageServiceImpl to use PahoMqttClientWrapper Replaced direct usage of IMqttClient with PahoMqttClientWrapper for message publishing in DeleteMessageServiceImpl. Also removed unnecessary exception handling and simplified the payload publishing process. * Refactor MQTT client handling in ListEndpointsServiceImpl. Replace direct usage of IMqttClient with PahoMqttClientWrapper to improve MQTT client management. Remove the exception handling for MqttException, as it is now managed within the wrapper. * Refactor MQTT message confirmation handling Replaced direct use of `IMqttClient` with `PahoMqttClientWrapper` to streamline the client interface and removed unnecessary exception handling. This refactoring simplifies the codebase and improves maintainability by reducing direct dependencies on the Paho client within `MessageConfirmationServiceImpl.java`. * Refactor MQTT client handling for improved reliability Replace direct usage of `IMqttClient` with `PahoMqttClientWrapper` across multiple service implementations to streamline error handling and reduce boilerplate code. This includes updating message sending methods to remove redundant try-catch blocks and simplifying message publication. * Refactor MQTT client integration Renamed MQTT client classes to a new package and added HiveMQ MQTT client wrapper for improved modularity. Eliminated direct Paho dependencies in MessageQueryHelperService in favor of a unified client wrapper interface. Updated `.gitignore` to include local settings configuration. * Support HiveMQ MQTT Client in messaging services Added constructors to various messaging service implementations to support the HiveMQ MQTT client. This increases compatibility and allows for more flexible client configurations. Existing functionality with the Paho MQTT client remains unchanged. * Rename paho package to client Renamed MqttOptionService and MqttClientService classes to reflect a more appropriate package name of `client` instead of `paho`. This enhances clarity and consistency throughout the project. * Add HiveMqttClientService for creating MQTT clients Introduced HiveMqttClientService to facilitate the creation of MQTT clients using onboarding responses or router devices. This service ensures robust client creation, utilizing provided host, port, and clientId parameters and enforcing necessary validations. * Add Javadoc comments to MqttClientWrapper interface Added detailed Javadoc comments to the MqttClientWrapper interface. These comments describe the interface and its publish method, providing clarity on how to use them. * Add class-level Javadoc comments for MQTT client wrappers Added detailed Javadoc comments to both PahoMqttClientWrapper and HiveMqttClientWrapper classes. These comments provide an overview of the class functionality and its role in publishing MQTT messages to specified topics, which enhances code readability and maintainability. * Refactor PingServiceImpl to improve client handling Refactor the PingServiceImpl to use wrapper classes for different MQTT clients, ensuring better abstraction and flexibility. This change replaces the exception handling mechanism and removes unnecessary imports, thus streamlining the message publishing process. * Update SDK version to 3.3.0 Upgrade the agrirouter SDK version from 3.2.2 to 3.3.0 across all modules. This includes changes in the parent POM and specific module POMs for tests, convenience, implementation, and API. The update ensures consistency and leverages the new features and fixes in version 3.3.0. * Add SuppressWarnings annotation to constructor Added a @SuppressWarnings("unused") annotation to the PingServiceImpl constructor that accepts an Mqtt3AsyncClient parameter. This change addresses potential warnings about unused parameters, enhancing code cleanliness. * Update GitHub Actions to use latest versions Upgraded actions/checkout to v4.2.2 and actions/setup-java to v4.5.0 across all workflow steps. This ensures compatibility with the latest features and security enhancements. --- .github/workflows/continuous_integration.yml | 12 ++-- .gitignore | 3 + agrirouter-sdk-java-api/pom.xml | 8 +++ .../api/mqtt/HiveMqttClientWrapper.java | 22 ++++++ .../api/mqtt/MqttClientWrapper.java | 17 +++++ .../api/mqtt/PahoMqttClientWrapper.java | 30 ++++++++ .../mqtt/hive/HiveMqttClientService.java | 71 +++++++++++++++++++ .../impl/messaging/MqttService.java | 12 ++-- .../mqtt/MessageQueryHelperService.java | 57 ++++++++------- .../mqtt/CloudOffboardingServiceImpl.java | 47 ++++++------ .../mqtt/CloudOnboardingServiceImpl.java | 44 ++++++------ .../mqtt/DeleteMessageServiceImpl.java | 44 ++++++------ .../mqtt/ListEndpointsServiceImpl.java | 45 ++++++------ .../mqtt/MessageConfirmationServiceImpl.java | 45 ++++++------ .../mqtt/MessageHeaderQueryServiceImpl.java | 12 +++- .../mqtt/MessageQueryServiceImpl.java | 12 +++- .../impl/messaging/mqtt/PingServiceImpl.java | 46 ++++++------ .../mqtt/SendMessageServiceImpl.java | 32 ++++----- .../mqtt/SetCapabilityServiceImpl.java | 45 ++++++------ .../mqtt/SetSubscriptionServiceImpl.java | 45 ++++++------ pom.xml | 5 ++ 21 files changed, 419 insertions(+), 235 deletions(-) create mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/HiveMqttClientWrapper.java create mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/MqttClientWrapper.java create mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/mqtt/PahoMqttClientWrapper.java create mode 100644 agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/hive/HiveMqttClientService.java 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 b4a56a0b..0bdafc50 100644 --- a/.gitignore +++ b/.gitignore @@ -27,5 +27,8 @@ buildNumber.properties # GENERATED # 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 21f9ca17..ea08cf50 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -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/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-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/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 index b20daf4b..a36f8485 100644 --- 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 @@ -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.PingService; import com.dke.data.agrirouter.api.service.parameters.PingParameters; @@ -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; @@ -26,30 +26,32 @@ public class PingServiceImpl extends MqttService private final EncodeMessageService encodeMessageService; public PingServiceImpl(IMqttClient mqttClient) { - super(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) { - 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/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/pom.xml b/pom.xml index 1aeb1e14..56af2e28 100644 --- a/pom.xml +++ b/pom.xml @@ -214,6 +214,11 @@ org.eclipse.paho.client.mqttv3 1.2.5 + + com.hivemq + hivemq-mqtt-client + 1.3.3 +