From 955192885a81a925493aabc0d4920e7fa9c2584f Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 27 Nov 2023 10:59:47 +0100 Subject: [PATCH 01/37] Update build scripts and dependencies in pom.xml This commit removes outdated or redundant properties in pom.xml, updates the Java version to 17 and hard-codes versions for each dependency in pom.xml directly, rather than referencing them as properties. This was done to improve readability and maintainability of the file. Additionally, the Java version on the GitHub workflows has been updated to align with the version in pom.xml, and unnecessary workflow steps have been removed. The commit also introduces a NonRetryCancellationToken class for non-cancellable tasks. --- .github/workflows/continuous_integration.yml | 27 ++--- .github/workflows/release.yml | 3 +- .../NonRetryCancellationToken.java | 25 +++++ pom.xml | 103 ++++++------------ 4 files changed, 70 insertions(+), 88 deletions(-) create mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index a64ca821..061e5831 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -9,33 +9,33 @@ on: - "main" jobs: - build_jdk8: + build_jdk17: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Set up JDK 8 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: - java-version: 8 + java-version: 17 distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk11: + build_jdk21: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK 21 uses: actions/setup-java@v3 with: - java-version: 11 + java-version: 21 distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk17: + integration_test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 @@ -44,19 +44,6 @@ jobs: with: java-version: 17 distribution: zulu - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - integration_test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - name: Set up JDK 11 - uses: actions/setup-java@v3 - with: - java-version: 11 - distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 85946b40..631013ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,7 @@ on: tags: - 1.* - 2.* + - 3.* jobs: deploy: @@ -14,7 +15,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v3 with: - java-version: 8 + java-version: 17 distribution: zulu - name: Build with Maven env: diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java new file mode 100644 index 00000000..b64a4e96 --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java @@ -0,0 +1,25 @@ +package com.dke.data.agrirouter.api.cancellation; + +/** + * Non-retry implementation of the cancellation token. + */ +public class NonRetryCancellationToken implements CancellationToken { + + public NonRetryCancellationToken() { + } + + @Override + public boolean isNotCancelled() { + return true; + } + + @Override + public void nextStep() { + // Do nothing + } + + @Override + public void waitIfNotCancelled() { + // Do nothing + } +} diff --git a/pom.xml b/pom.xml index 78dc2922..fa4cfc5f 100644 --- a/pom.xml +++ b/pom.xml @@ -68,39 +68,8 @@ UTF-8 UTF-8 - 1.8 - 1.8 - - - 4.3.0 - 5.6.1 - 4.12.2 - 1.6.1 - 3.10 - 1.67 - 2.4.0-b180830.0359 - 2.8.6 - 2.30.1 - 4.4.13 - 3.16.1 - 2.38.0 - 1.1.1 - 1.3.71 - 1.2.4 - 1.14 - 2.1.1 - 19.0.0 - 2.11.0.rc1 - 1.1.1 - 1.7.32 - - - 3.8.1 - 3.0.0-M4 - 3.0.2 - 3.1.0 - 2.9 - 30.1.1-jre + 17 + 1 @@ -127,7 +96,7 @@ com.agrirouter.proto agrirouter-api-protobuf-definitions - ${agrirouter-api-protobuf-definitions.version} + 1.1.1 @@ -141,7 +110,7 @@ io.rest-assured rest-assured - ${rest-assured.version} + 4.3.0 test @@ -149,25 +118,25 @@ org.junit.jupiter junit-jupiter-api - ${junit-jupiter.version} + 5.6.1 test org.junit.jupiter junit-jupiter-params - ${junit-jupiter.version} + 5.6.1 test org.junit.jupiter junit-jupiter-engine - ${junit-jupiter.version} + 5.6.1 test org.junit.platform junit-platform-launcher - ${junit-platform.version} + 1.6.1 test @@ -175,118 +144,118 @@ org.apache.commons commons-lang3 - ${commons-lang3.version} + 3.10 commons-codec commons-codec - ${commons-codec.version} + 1.14 org.bouncycastle bcprov-jdk15on - ${bcprov-jdk15on.version} + 1.67 - javax.xml.bind - jaxb-api - ${jaxb-api.version} - test + jakarta.xml.bind + jakarta.xml.bind-api + 4.0.1 - javax.activation - activation - ${activation.version} + jakarta.activation + jakarta.activation-api + 2.1.2 + com.google.code.gson gson - ${gson.version} + 2.8.6 org.glassfish.jersey.core jersey-client - ${jersey-client.version} + 2.30.1 org.glassfish.jersey.inject jersey-hk2 - ${jersey-client.version} + 2.30.1 org.glassfish.jersey.media jersey-media-json-jackson - ${jersey-client.version} + 2.30.1 com.fasterxml.jackson.core jackson-annotations - ${jackson-annotations.version} + 2.11.0.rc1 org.apache.httpcomponents httpcore - ${httpcore.version} + 4.4.13 org.slf4j slf4j-api - ${slf4j-api.version} + 1.7.32 org.slf4j slf4j-nop - ${slf4j-api.version} + 1.7.32 org.eclipse.paho org.eclipse.paho.client.mqttv3 - ${org.eclipse.paho.client.mqttv3.version} + 1.2.4 com.google.protobuf protobuf-java - ${protobuf.version} + 3.16.1 org.jetbrains.kotlin kotlin-stdlib - ${kotlin.version} + 1.3.71 org.jetbrains annotations - ${annotations.version} + 19.0.0 javax.ws.rs javax.ws.rs-api - ${javax.ws.rs-api.version} + 2.1.1 com.google.guava guava - ${guava.version} + 30.1.1-jre @@ -307,12 +276,12 @@ maven-surefire-plugin - ${maven-surefire-plugin.version} + 3.0.0-M4 org.codehaus.mojo build-helper-maven-plugin - ${build-helper-maven-plugin.version} + 3.1.0 generate-sources @@ -332,7 +301,7 @@ org.apache.maven.plugins maven-compiler-plugin - ${maven-compiler-plugin.version} + 3.8.1 ${maven-compiler-plugin.source} ${maven-compiler-plugin.target} @@ -366,7 +335,7 @@ com.coveo fmt-maven-plugin - ${fmt-maven-plugin.version} + 2.9 From 206425f6b2b7fa5ce4476797db8d5b75c10f4efb Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 27 Nov 2023 11:00:53 +0100 Subject: [PATCH 02/37] Update build scripts and dependencies in pom.xml This commit removes outdated or redundant properties in pom.xml, updates the Java version to 17 and hard-codes versions for each dependency in pom.xml directly, rather than referencing them as properties. This was done to improve readability and maintainability of the file. Additionally, the Java version on the GitHub workflows has been updated to align with the version in pom.xml, and unnecessary workflow steps have been removed. The commit also introduces a NonRetryCancellationToken class for non-cancellable tasks. --- .../agrirouter/api/cancellation/NonRetryCancellationToken.java | 1 + 1 file changed, 1 insertion(+) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java index b64a4e96..752249a0 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java @@ -3,6 +3,7 @@ /** * Non-retry implementation of the cancellation token. */ +@SuppressWarnings("unused") public class NonRetryCancellationToken implements CancellationToken { public NonRetryCancellationToken() { From 960b41b80648a2278fc68be5809f63e886c0c39a Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 27 Nov 2023 11:03:15 +0100 Subject: [PATCH 03/37] Update JAX-RS dependency in pom.xml This commit updates the JAX-RS dependency in pom.xml from javax.ws.rs-api 2.1.1 to jakarta.ws.rs-api 3.1.0. This shift was necessary as we are aligning our project with the Jakarta EE platform, following the transition from Java EE to Jakarta EE. Also, we ensure to use the most up-to-date and maintained version to avail better support and features. --- pom.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index fa4cfc5f..a16e823a 100644 --- a/pom.xml +++ b/pom.xml @@ -246,9 +246,9 @@ - javax.ws.rs - javax.ws.rs-api - 2.1.1 + jakarta.ws.rs + jakarta.ws.rs-api + 3.1.0 From 6fa62c4a4f08031ae634b1a51c7b3988e92f11ad Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Mon, 27 Nov 2023 14:00:42 +0100 Subject: [PATCH 04/37] Updated dependencies from JavaEE to JakartaEE and Kotlin Version The changes were required due to the deprecation of JavaEE in favour of JakartaEE. The restful Web services are now using updated libraries which led to code adaptation for API changes. Additionally, the Kotlin dependencies were upgraded from version 1.3.71 to 1.9.0. Code reformatting was done for better readability and maintainability following the project's coding standards. --- agrirouter-sdk-java-api/pom.xml | 2 +- .../NonRetryCancellationToken.java | 31 +- .../api/messaging/MessageSendingResponse.kt | 2 +- agrirouter-sdk-java-impl/pom.xml | 4 +- .../data/agrirouter/impl/RequestFactory.java | 305 +++++++++--------- .../impl/messaging/rest/MessageFetcher.java | 2 +- .../impl/messaging/rest/MessageSender.java | 4 +- .../impl/onboard/OnboardingServiceImpl.java | 4 +- .../AuthorizationRequestServiceImpl.java | 3 +- .../secured/OnboardingServiceImpl.java | 8 +- .../impl/revoke/RevokingServiceImpl.java | 7 +- pom.xml | 4 +- 12 files changed, 194 insertions(+), 182 deletions(-) diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index 52838434..f1c24dd3 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -59,7 +59,7 @@ org.jetbrains.kotlin kotlin-maven-plugin - ${kotlin.version} + 1.9.0 compile diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java index 752249a0..273cad61 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java @@ -1,26 +1,23 @@ package com.dke.data.agrirouter.api.cancellation; -/** - * Non-retry implementation of the cancellation token. - */ +/** Non-retry implementation of the cancellation token. */ @SuppressWarnings("unused") public class NonRetryCancellationToken implements CancellationToken { - public NonRetryCancellationToken() { - } + public NonRetryCancellationToken() {} - @Override - public boolean isNotCancelled() { - return true; - } + @Override + public boolean isNotCancelled() { + return true; + } - @Override - public void nextStep() { - // Do nothing - } + @Override + public void nextStep() { + // Do nothing + } - @Override - public void waitIfNotCancelled() { - // Do nothing - } + @Override + public void waitIfNotCancelled() { + // Do nothing + } } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResponse.kt index 98ebb187..e074f60d 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResponse.kt @@ -1,6 +1,6 @@ package com.dke.data.agrirouter.api.messaging -import javax.ws.rs.core.Response +import jakarta.ws.rs.core.Response /** * Wrapper for the response from the server. diff --git a/agrirouter-sdk-java-impl/pom.xml b/agrirouter-sdk-java-impl/pom.xml index 60e3fd1c..970791f7 100644 --- a/agrirouter-sdk-java-impl/pom.xml +++ b/agrirouter-sdk-java-impl/pom.xml @@ -21,8 +21,8 @@ protobuf-java - javax.ws.rs - javax.ws.rs-api + jakarta.ws.rs + jakarta.ws.rs-api commons-codec diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index 5c0c1075..d3e628e3 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java @@ -6,159 +6,174 @@ import com.dke.data.agrirouter.api.exception.CertificationTypeNotSupportedException; import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; import com.dke.data.agrirouter.impl.common.ssl.KeyStoreCreationService; -import java.security.KeyStore; -import javax.ws.rs.client.Client; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.HttpHeaders; -import javax.ws.rs.core.MediaType; -import org.glassfish.jersey.client.ClientConfig; +import jakarta.ws.rs.client.Client; +import jakarta.ws.rs.client.ClientBuilder; +import jakarta.ws.rs.client.Invocation; +import jakarta.ws.rs.client.WebTarget; +import jakarta.ws.rs.core.HttpHeaders; +import jakarta.ws.rs.core.MediaType; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.logging.LoggingFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** Factory to encapsulate the requests against the agrirouter */ +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManagerFactory; +import java.security.KeyStore; + +/** + * Factory to encapsulate the requests against the agrirouter + */ public final class RequestFactory { - private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); - - /** Hidden constructor. */ - private RequestFactory() { - // NOP - } - - /** - * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. - * - * @param url - - * @param certificate - - * @param password - - * @return Builder - - */ - public static Invocation.Builder securedRequest( - String url, String certificate, String password, CertificationType certificationType) { - ClientConfig clientConfig = new ClientConfig(); - KeyStore keyStore = createKeyStore(certificate, password, certificationType); - Client client = createClient(clientConfig, keyStore, password, certificationType); - if (Environment.httpRequestLoggingEnabled()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - } else { - LOGGER.debug( - "Request logging is currently disabled. If you want to enable it, please set '{}'.", - Environment.ENABLE_HTTP_REQUEST_LOGGING); + private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); + + /** + * Hidden constructor. + */ + private RequestFactory() { + // NOP } - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - return request; - } - - private static Client createClient( - ClientConfig clientConfig, - KeyStore keyStore, - String password, - CertificationType certificationType) { - try { - switch (certificationType) { - case PEM: - return ClientBuilder.newBuilder() - .withConfig(clientConfig) - .keyStore(keyStore, Constants.DEFAULT_PASSWORD) - .build(); - case P12: - return ClientBuilder.newBuilder() - .withConfig(clientConfig) - .keyStore(keyStore, password) - .build(); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + + /** + * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. + * + * @param url - + * @param certificate - + * @param password - + * @return Builder - + */ + public static Invocation.Builder securedRequest( + String url, String certificate, String password, CertificationType certificationType) { + KeyStore keyStore = createKeyStore(certificate, password, certificationType); + Client client = createClient(keyStore, password, certificationType); + if (Environment.httpRequestLoggingEnabled()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + } else { + LOGGER.debug( + "Request logging is currently disabled. If you want to enable it, please set '{}'.", + Environment.ENABLE_HTTP_REQUEST_LOGGING); + } + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + return request; } - } - - private static KeyStore createKeyStore( - String x509Certificate, String password, CertificationType certificationType) { - KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); - try { - switch (certificationType) { - case PEM: - return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); - case P12: - return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + + private static Client createClient( + KeyStore keyStore, + String password, + CertificationType certificationType) { + try { + KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + switch (certificationType) { + case PEM -> { + LOGGER.info("Creating client with PEM certificate"); + keyManagerFactory.init(keyStore, Constants.DEFAULT_PASSWORD.toCharArray()); + } + case P12 -> { + LOGGER.info("Creating client with P12 certificate"); + keyManagerFactory.init(keyStore, password.toCharArray()); + } + } + + LOGGER.info("Creating and initializing trust manager."); + var trustManager = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManager.init(keyStore); + + LOGGER.info("Creating and initializing SSL context."); + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyManagerFactory.getKeyManagers(), trustManager.getTrustManagers(), null); + + return ClientBuilder.newBuilder() + .sslContext(sslContext) + .keyStore(keyStore, Constants.DEFAULT_PASSWORD) + .build(); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + } + + private static KeyStore createKeyStore( + String x509Certificate, String password, CertificationType certificationType) { + KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); + try { + switch (certificationType) { + case PEM: + return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); + case P12: + return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); + default: + throw new CertificationTypeNotSupportedException(certificationType); + } + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + } + + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { + Client client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + + return request; + } + + /** + * Setting applicationID and Signature within the header. + * + * @param url - + * @param applicationId - + * @param signature - + * @return Builder - + */ + public static Invocation.Builder signedDeleteRequest( + String url, String applicationId, String signature) { + Client client = ClientBuilder.newClient(); + client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + + return request; + } + + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest( + String url, String accessToken, String applicationId, String signature) { + Client client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + return request; + } + + public static class AgrirouterHttpHeader { + public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; + public static final String SIGNATURE = "X-Agrirouter-Signature"; } - } - - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - - return request; - } - - /** - * Setting applicationID and Signature within the header. - * - * @param url - - * @param applicationId - - * @param signature - - * @return Builder - - */ - public static Invocation.Builder signedDeleteRequest( - String url, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - - return request; - } - - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest( - String url, String accessToken, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } - - public static class AgrirouterHttpHeader { - public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; - public static final String SIGNATURE = "X-Agrirouter-Signature"; - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java index 11512e3d..8ca092b8 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java @@ -6,9 +6,9 @@ import com.dke.data.agrirouter.api.service.parameters.FetchMessageParameters; import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.validation.ResponseValidator; +import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.Optional; -import javax.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; /** Interface to fetch messages for the HTTP implementation by polling the outbox. */ diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java index 3b340f02..2faed599 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java @@ -5,10 +5,10 @@ import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.concurrent.CompletableFuture; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; /** * Default message sending interface. Used by all REST implementations to send messages to the AR. diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java index d04e2cf6..84ea2834 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java @@ -9,10 +9,10 @@ import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters; import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.validation.ResponseValidator; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.Optional; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; /** Internal service implementation. */ public class OnboardingServiceImpl extends AbstractOnboardingService diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java index 8faad8f9..022fc25d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java @@ -13,6 +13,7 @@ import com.google.gson.Gson; import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; +import java.net.URI; import java.net.URL; import java.net.URLDecoder; import java.util.Arrays; @@ -101,7 +102,7 @@ public AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl) { public AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) throws MalformedURLException { - URL url = new URL(redirectPageUrl); + URL url = URI.create(redirectPageUrl).toURL(); return extractAuthorizationResponse(url); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java index b9d916ce..43528828 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java @@ -17,15 +17,15 @@ import com.dke.data.agrirouter.impl.onboard.AbstractOnboardingService; import com.dke.data.agrirouter.impl.validation.ResponseValidator; import com.google.gson.Gson; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.Signature; import java.security.SignatureException; import java.util.Objects; import java.util.Optional; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; @@ -74,7 +74,7 @@ private OnboardingResponse onboard( String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); this.verifySignature( jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); - Response response = + jakarta.ws.rs.core.Response response = RequestFactory.bearerTokenRequest( this.environment.getSecuredOnboardUrl(), securedOnboardingParameters.getRegistrationCode(), diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java index ad0b9b8b..4f3be794 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java @@ -12,11 +12,11 @@ import com.dke.data.agrirouter.impl.SignatureService; import com.dke.data.agrirouter.impl.common.UtcTimeService; import com.google.gson.Gson; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.Optional; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; import org.apache.commons.codec.binary.Hex; import org.apache.commons.lang3.StringUtils; @@ -76,7 +76,6 @@ private RevokeRequest createRevokeRequestBody(RevokeParameters parameters) { } public Optional getLastRevokingError(String errorResponse) { - Gson gson = new Gson(); return StringUtils.isBlank(errorResponse) ? Optional.empty() : Optional.of(failSafeGsonParsing(errorResponse)); diff --git a/pom.xml b/pom.xml index a16e823a..1be4a062 100644 --- a/pom.xml +++ b/pom.xml @@ -69,7 +69,7 @@ UTF-8 UTF-8 17 - 1 + 17 @@ -236,7 +236,7 @@ org.jetbrains.kotlin kotlin-stdlib - 1.3.71 + 1.9.0 org.jetbrains From 3c49e7dcc889bbee6954209ec5f23ef0f784e961 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 09:54:17 +0100 Subject: [PATCH 05/37] Update onboarding and request setup, refactor keystore creation The onboarding parameters and responses were adjusted based on new device and sensor alternate IDs, and the registration code was also amended. Moreover, the request factory was refactored to enhance the keystore creation method by taking into account certificate type. This results in a cleaner implementation of the SSL/TLS client configuration step. --- .../data/agrirouter/impl/RequestFactory.java | 293 +++++++++--------- .../common/ssl/KeyStoreCreationService.java | 2 +- .../communication-unit.json | 2 +- .../fixture/CommunicationUnitFixture.java | 2 +- pom.xml | 8 +- 5 files changed, 146 insertions(+), 161 deletions(-) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index d3e628e3..bb9bce80 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java @@ -12,168 +12,153 @@ import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.core.MediaType; +import java.security.KeyStore; +import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.logging.LoggingFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManagerFactory; -import java.security.KeyStore; - -/** - * Factory to encapsulate the requests against the agrirouter - */ +/** Factory to encapsulate the requests against the agrirouter */ public final class RequestFactory { - private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); - - /** - * Hidden constructor. - */ - private RequestFactory() { - // NOP + private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); + + /** Hidden constructor. */ + private RequestFactory() { + // NOP + } + + /** + * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. + * + * @param url - + * @param certificate - + * @param password - + * @return Builder - + */ + public static Invocation.Builder securedRequest( + String url, String certificate, String password, CertificationType certificationType) { + ClientConfig clientConfig = new ClientConfig(); + KeyStore keyStore = createKeyStore(certificate, password, certificationType); + Client client = createClient(clientConfig, keyStore, password, certificationType); + if (Environment.httpRequestLoggingEnabled()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + } else { + LOGGER.debug( + "Request logging is currently disabled. If you want to enable it, please set '{}'.", + Environment.ENABLE_HTTP_REQUEST_LOGGING); } - - /** - * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. - * - * @param url - - * @param certificate - - * @param password - - * @return Builder - - */ - public static Invocation.Builder securedRequest( - String url, String certificate, String password, CertificationType certificationType) { - KeyStore keyStore = createKeyStore(certificate, password, certificationType); - Client client = createClient(keyStore, password, certificationType); - if (Environment.httpRequestLoggingEnabled()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - } else { - LOGGER.debug( - "Request logging is currently disabled. If you want to enable it, please set '{}'.", - Environment.ENABLE_HTTP_REQUEST_LOGGING); - } - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - return request; + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + return request; + } + + private static Client createClient( + ClientConfig clientConfig, + KeyStore keyStore, + String password, + CertificationType certificationType) { + try { + switch (certificationType) { + case PEM: + return ClientBuilder.newBuilder() + .withConfig(clientConfig) + .keyStore(keyStore, Constants.DEFAULT_PASSWORD) + .build(); + case P12: + return ClientBuilder.newBuilder() + .withConfig(clientConfig) + .keyStore(keyStore, password) + .build(); + default: + throw new CertificationTypeNotSupportedException(certificationType); + } + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); } - - private static Client createClient( - KeyStore keyStore, - String password, - CertificationType certificationType) { - try { - KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - switch (certificationType) { - case PEM -> { - LOGGER.info("Creating client with PEM certificate"); - keyManagerFactory.init(keyStore, Constants.DEFAULT_PASSWORD.toCharArray()); - } - case P12 -> { - LOGGER.info("Creating client with P12 certificate"); - keyManagerFactory.init(keyStore, password.toCharArray()); - } - } - - LOGGER.info("Creating and initializing trust manager."); - var trustManager = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - trustManager.init(keyStore); - - LOGGER.info("Creating and initializing SSL context."); - SSLContext sslContext = SSLContext.getInstance("TLS"); - sslContext.init(keyManagerFactory.getKeyManagers(), trustManager.getTrustManagers(), null); - - return ClientBuilder.newBuilder() - .sslContext(sslContext) - .keyStore(keyStore, Constants.DEFAULT_PASSWORD) - .build(); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } - } - - private static KeyStore createKeyStore( - String x509Certificate, String password, CertificationType certificationType) { - KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); - try { - switch (certificationType) { - case PEM: - return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); - case P12: - return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } - } - - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - - return request; - } - - /** - * Setting applicationID and Signature within the header. - * - * @param url - - * @param applicationId - - * @param signature - - * @return Builder - - */ - public static Invocation.Builder signedDeleteRequest( - String url, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - - return request; - } - - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest( - String url, String accessToken, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } - - public static class AgrirouterHttpHeader { - public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; - public static final String SIGNATURE = "X-Agrirouter-Signature"; + } + + private static KeyStore createKeyStore( + String x509Certificate, String password, CertificationType certificationType) { + KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); + try { + switch (certificationType) { + case PEM: + return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); + case P12: + return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); + default: + throw new CertificationTypeNotSupportedException(certificationType); + } + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); } + } + + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { + Client client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + + return request; + } + + /** + * Setting applicationID and Signature within the header. + * + * @param url - + * @param applicationId - + * @param signature - + * @return Builder - + */ + public static Invocation.Builder signedDeleteRequest( + String url, String applicationId, String signature) { + Client client = ClientBuilder.newClient(); + client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + + return request; + } + + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest( + String url, String accessToken, String applicationId, String signature) { + Client client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + WebTarget target = client.target(url); + Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + return request; + } + + public static class AgrirouterHttpHeader { + public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; + public static final String SIGNATURE = "X-Agrirouter-Signature"; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java index a9461869..4b6ddf29 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java @@ -57,7 +57,7 @@ public KeyStore createAndReturnKeystoreFromP12(String certificate, String passwo KeyStore keyStore; try { this.getNativeLogger().trace("Create PKCS12 instance for keystore."); - keyStore = KeyStore.getInstance("PKCS12"); + keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); this.getNativeLogger().trace("Create input stream for certificate."); InputStream sslInputStream = diff --git a/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json b/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json index d3634f5e..0f244781 100644 --- a/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json +++ b/agrirouter-sdk-java-tests/onboarding-responses/communication-unit.json @@ -1 +1 @@ -{"deviceAlternateId":"ba9c08c9-e18a-4394-a913-579058f15064","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"19747ef0-66f8-49d6-aceb-6c10105821c2","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/ba9c08c9-e18a-4394-a913-579058f15064","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/ba9c08c9-e18a-4394-a913-579058f15064"},"authentication":{"type":"P12","secret":"nOq#RPxeFaOG6QSj1LLQj7w#i?VJQxR0?nz!","certificate":"MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSABIIEADCCBRowggUWBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQIQjR0iz6awo4CAgfQBIIEyLqx3hYdCsJgGdwLLN2nscoLjr54EOO3beTD5MHZdVql1A0MBxIhFi8iDicNgRHkYLwxA1dHiSNx4kaPnmbtLwZ3xbTqNMLjXi1nGpz0yqdK8zE5Ia5c0Sq9WhvjezZj+TLWk5YebEsJObWLEHqX5D1Q0ukS5Y47bqldUbutTNXkVXLpZgzqqPR2ztJSrSZ6Cb0t8zzMZT9pEk4QOxpITZ4X389ZVNqziB4KnO3dw22hyqJGPCyobzV96F42SJLH7WPW8cTo2e9HTqic9FBZqR8ljomOy1ZhsgmzjY+aMZfk0ljvkC2eMIxOppxEDtHwHpCZIZLsCze3egymJ0kRt3Rsl9d0w95BSvOwU2MWb4XGYNjBN9Zx17yDyYnQ3I2iVUGnRHZJ/IznUg+Ull1IDWd0ZhV4bmUHH1GWJT2HCp1H3BiBvRtikrumAmhGpsyd/1kd7hAEM1mTW0BtLZxkI+3E0eGLM4rHYf5PW5zkbRi4hya0ZxDO4Lt1PAFGnwSMjxwo0RI/9CTDnRkTG88lGsHsT5+YuHUhp/Ld6yv/C1aV83+36pRlXoRs4TUu1jkZ/Oo6mNqlHV83Z6ZQJQVOyDHnnTHEmzBpVfJvREr+KTjykuh0K3kzf0fgcs1bRPGMkI37uG0WhiOCT0nPUO6kvu2PGTxTf0H3w5TB+7nHeaRkQt0mYQEA/nrFCnYUrPgNfuQxc94MJgbLLYe/tVULCxUvcvhkJZqd4pBFx5j5ThQYFgFaXS1RzW04Yst376+izC+JFfaCEu1UUEwPcla4CAkacnOlOyL5c6nvIRff66JiTryDx+qBbUD8lnVzhxeXa+Mnjg6ONSeeX/xo7T10KSHsjzuYyJC0mSm0eMpp38QxMEM2fhe7fMSfENUkTJ8NKmMMUKaJQdO/2xqT/An6Su8iRrDOk7ut0EWR5bmVkacKQwVLo/DUGZHRkBJQA+2v8Ahb8cfk76r/7koJQ6N/0Dc2Mbvv8zqon9qahQVC15/VEU+t6XRnXLIbCypR7QfjCPLe//UF1ntk/q79ObFL6A3Q/ZlxfoWEOJL9AqdvnWjoVhKyQws4v/2oFL3ti07zeS2wOyq2YXXaQiICYLL17riO/F5YGBSz7L52jNi9UOpneIIrx9K6k5+Kt8a5E0hzr8Ojw3ifoCNQl9cZ8j7iqwPy4ZcD1JJA/5qoIe9pmvot78ytPWZuyR6b9z7cD44CR1cO3MXjrpz349nnDGeEpZjyVJaLkWPPU2eXBIIEAB7LgwPElSSNzugB6j6epV+X+egiK8KQBIIBHjfDAL4ETS46drA7fMmSA5Uhc2ViSXeiAywHkXR7su8uKepKTNo9v3pDDv0jroe7zcPLKb8MmQtUqfUd+hq3VGsbFAN+e3YACI4jvZubuC9UYpKbiQz2T7sBfvNgM/5PUS6dtPgtdr1rkEGprcHjQKr0I6gWHmjMKfdCDK+ipu2aBjdrzKuzXuoGVYXGG3JWRVkVxRzyYqZWKH65maZVR0MG/I1TZ1SQflmBxodw/5vjZww/TMnO/aUVN0cGwsYa8J9WsTf+R402z99IFfKb3LUiFwlSAwdhVyxD+1BPlETkBXbE80uihoKzp0wi+O8zVt5gFEWojIvAn9Vc+C3ZMuYmNRBI7oklMRUwEwYJKoZIhvcNAQkVMQYEBAEAAAAAAAAAAAAwgAYJKoZIhvcNAQcGoIAwgAIBADCABgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAhqiRcK2WKOHQICB9CggASCBcih5nKKAygQjmXP+GKLzWFyfswP3mw42m+TkpbY+ogs/mcklGsaEgsW44YIF+dYBKBANKEXC2m3MignLWVqa/Kpo7RPL+M0P3WDLNqpMCpjwnZYdyrST8laRLUatQvPvk3y7oCtXPjBEZFg1Fiu4TbZpbZcPmgZ9ogZMGFgoxB54FJcyGn7teMuaBkfWLcZ6cLNp88YjCHKAG6w6f8wgBQeeJs8uhq5WlvIyXkQ/Iev9WIMgUpCVRdKe8RA2Ljk0PELfey/CUJ8HA8APrQv8+x7fp0lIhMkYKXwQFmACpF4oN7dP4yNmUBQfDnfHrDYJm/0ZD24OyN9Y3UsJRLC5qMVwQ77d8jBXApY98iPauASt1C6OuX4jpj4q80dTtZBqRZEVoiSSsg+s5C9evzABlMdpN985FKeNXpIweMRbXsFmab6JVsJg8Vaq9oQuqqrK/wDu2TEhzQyCfJHvHt0LkW97QLPnkdsVQdXAK/6mooKYjE0IPiWmlZoEk40Os+JwU7aWJoPFhak9e7AnzAPfob3dXZ7aXB9iTplsNjwyJ/yRU/yYhKpeQGdu4U9lYIjRzC1IJaQQm2g7KtAsJQxPvSpDbLRbBuVnNND3+QpEEzFbqK9/pveuJY1emv5si/AICK6AXF9JTsbOj7WtU6y+GFCHhy3Mj4xUHrWQipqgdm0SoYvvOmFTLLiVYarjxDo5lpZNm6onYD3HzIos0gshqMsNjp/7Vow2jK7z4CnQ2or/C+3HjgMxXnCWflY4amzVqv9yKjk2a2TSWsdBgmYNgPS9DnsD4Ue5Pb6PjOBYFR1KPZgSFKIMFwpbud0jbDveyz+ZV0nkL0iGU01s8QEggNYFP/cAcQHUg7o/SRBRSYCzmB/3p7FeqD44IMtm9g4jwiPtA+N18/MCneh6VAqA87Zvbo6dtld4ltYP6T9+t7mTj6GYIZe5t5YXtzJ5aFH0twFHFCdleoN9xSaN7YYvPil5H7nOt4lmdsvb7fcSPydEvgDzV/I9ynhnsGlRsHot3OmRNLqToCIWtwlcXG59iskDlTKnLwhY6Rr8PxZjfNIYWC1xC66PDJPDJMVf7qDdYp+xfkF9aamrxrbhli3+1O7YYjIThBTNVLt01d5ESuNyo3h9StSbxLUX7FMy5QAv2cdN6BisOdcq03gdKRmNDjgqZ0JkEehmpdTztJCgyu0FqAzBpmBCPjIPLJ2KOFlKRJPGs7K6rW1QmjBYzdwPKoWv375p6Iw2pObM4nxNyMhL5YyxzAGnzGTYcLh/5go1ogucDWtGaMXM+vrnVZ3F4Y8y1zrpLuYJMvTp2/Jkc+K8alD6LpGFfmYHuIgmt0d4jwfCwE5625LCRGOnatgBR7ehsFsUqNanrfBgAkHNGob3KMdFjSLEdIEhqoTQjTbsEvdOx6pXsrGm1Fp7HmxNjCpt36oUqPNQIrk0DbD2WzThKUV2tfle0De0ki+tyskGp41nrMPhPA6YSQ5ByG3H7kzWBKGN6QNEGlzdOHizaSCBc3uOubWvhEKB5ab261rEQnshJFU70Erh3+cOTqYoRktFAxHwSlE5616OPPfkiwNHc/cYqO/Y7psKYmaohBlZ0yAn+/QOvOwYwLFz2bXzmRxHjjKnUeZz0pEO+oYUKlvrUIm8GjmQIwS6y78JBR6oit/7Hd3QkPQdB4Re4ss6WCWh+Edvjc88omG8lXWhKqW6E26PxmkBUzaQ5Szp/DrBvQS2bQOfvOez+gFNtcE7sleQryzpQCzlnV78th3uHZRerQ/n7p1E9YxkSaeYs4TVxxFx82BmZSuWsOoCob+dI3euKhY6FIHp01lhuaQaFkVTmX2jQ6tfn8pVWJIxfD3dYxCYlqWVtvk/64Em6zS5QXcQ6eZdvTI5RtSVRBXYYgcIK3uqK5qFITa230loeUvmG43KlooRxRXRyS0u3jF8SWWVaUK+XgZHaMns0355K5rkr7hYilZRFaY6opsewAAAAAAAAAAAAAAAAAAAAAAADAxMCEwCQYFKw4DAhoFAAQUSXS6j13RZidL+zMQTQX1DO6m6NkECPhqS/9UEIgKAgIH0AAA"}} \ No newline at end of file +{"deviceAlternateId":"cdee8e0c-05b8-4252-9da3-977239e54adc","capabilityAlternateId":"3035ec70-dca1-4d71-a000-e79eb5891f81","sensorAlternateId":"f658fa1a-fef3-43bc-87e7-4499858ac609","connectionCriteria":{"gatewayId":"3","measures":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/measures/cdee8e0c-05b8-4252-9da3-977239e54adc","commands":"https://dke-qa.eu10.cp.iot.sap/iot/gateway/rest/commands/cdee8e0c-05b8-4252-9da3-977239e54adc"},"authentication":{"type":"P12","secret":"FNG3X?X4gJwZlut!ebZ3rigVfQCyOrOqhCj7","certificate":"MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCBAAwgDCABgkqhkiG9w0BBwGggCSABIIEADCCBRowggUWBgsqhkiG9w0BDAoBAqCCBO4wggTqMBwGCiqGSIb3DQEMAQMwDgQI5/bn3aK74qcCAgfQBIIEyKlLZWlLkNBwPfT1j43J/uq1b/YrPNaA/eh60KWjPWx9lliS/zbJoarogWz36W58YgR//iJ4vnzTcgfpWa76UtJmyaXbOmCGeBz6dlNldoXyhlAqm2gFI66VmSQEdsthcTkywAvGZvo9Z72EvSzCkHarAzz1CL7dAumHwx9dCyU07tupDoevNUsSRu5nbFf8fDO4IxpJN3gNjBl7o9peQEaVnFpbi9JY3+ycoFweFg3SaUD+Sdfu0fXo3M/7a5Nehc7iNWvVMQSe9aK6q0Vh/1O3h9GZ0VSb0OkY6R+9/yqQs8cIYexoeCuIsF30SseQGTlLFH7htYRUnHsOUBY9x6tDFcrT1tVbiZogT8QKXj75g+ta0qfY1b/SEWmbuD3Wj7s06Ego8jdlXqfvyMlu41AZkjIqi3DaOtlJfmMok+f4X/VKCu51Vcf0GAJTc/BLROwZ83RrfUcXjaF1ARwmcOKpTWC5x7uPsGDKXw6RHQi+lkJon17/l5YEEbZ7w4CV5lK06jLJOyWcy+9OY3ptS4/DXXKFkQT9z2ZPtcOE7Kn71UoKrjbfmD5WXNriJGeZxogZfH4NiDZz0EhMZ2KRSOFxHneeetGsBZ9hWMNHyOge5NNb8G07EINNC7gY5mYKn7+IqJYg3Ul4dAaHrTyqhCqIXwvEurQfrmTMSpK5FWZhVUQRV+JyU6q69LtcJiN5cea3yh1f5nvPebvI6jgzBh+RDn71fPBfh+Sw6LCzuxxO1u5BzPExNjZsEXYhzGrbtMYuK7BkX6J9s10EQe63SHWQxiA21rNKrQTzNC4MzEdx1sgOJLOcf5eKgOC4aGrA7/39BbKVxVODBCLHhmWiE2R6PJgUPVlT7VvbP/m8qfV9FHtWMXPGBpQe8T+wYUSFnIxjlae8Jdn9iKzQ3eg09WcUpYpERXWTf2V5yWtaSkep7sZimSVwRD+ew3nKZVxobIr01eozzsr1Bx0zS/WRNqConEY0GhrIAB3QyNYSbGSr86Y2AyvmIthGqgNJgNnvVvdreL4V+eu45KTEGQDFbreyh/710tmoX+qxn+PuSDjwkC9BjU1bExisD8Ld8Lp5dnARd+et5ERsWiWEEjSgWhV7u/dWRTe6Vg2VNCos/cLFpWXIL/nWgORhfWfMjgn8nojD6BzJJJiVX/iaWNOGCo/GituEQaZrxI7bt6t4m3AwiKYyeterQjun8M1xBIHGvBSy4HityY+a5BGgwubOXvdxv9PH0SxSEAqkBIIEAKXnEFjvz1fQ0SMhcV7tJx1WHhZKVX9qBIIBHta2ev8v++j6Quqj2ZxkRia91ZKdC7m2I3ojLMcse1g4zkn7uTWwHZ58e/z1KwuDKVRVL5ldXmli7GrNx7pOZKXWnb4j8RCalMvoClWEQGDiSBhHO8WwaJfvhBFiGwSnb4dFaTwILqQ8Ugpft7O+YeybsTxDmY6PHDbu5btYtnVjnek1snKGmTC/2U9BihAMCSYweuNQcNG0w05VFB9vQpjJuDMOsFbFiTXGBDNqau/oRnODjjHpCz+9SZQ6kwUSDwxdp6RC7xDjAy9HBB8lkalJx7JOP4e8u6ebPH/CryT49xGJY3+/DQsDtzKysZOctvYVr8xEZUQ2byij7wcF/26GAjzcL34wMRUwEwYJKoZIhvcNAQkVMQYEBAEAAAAAAAAAAAAwgAYJKoZIhvcNAQcGoIAwgAIBADCABgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAgxx5iLgJAyBAICB9CggASCBcjDzcr69sC2Fy7B4Ky9FUh7qSV9sillIJoGd3rkAU9GkIqZa+19PVZOxrQZKLZJRaK/TpV7661nIbmHPPlV0Uj+qvj6usiqdYrfmdJ52bZE891rD7/8T07C2r38YKA8xA9vwdn8Wvye/JwKoseMQ+RAS2ju1d9Muh+JzT9XIw0J2jveHMogW5D/dI2gI/xPNy8GNXK3V4Ko3rw/mDtvNnWcUTvh5GFCaKVmoxIChn9TdbiqzJ/6vkMrn/OGRQNrhv5g/zzJZUoh9HYSZayEDdB8uYzzqAx7OpZj/1WdW6XsWTcSC83CaJUxFYTjI4ROr4hjWGce9zcxXLv5/MUT8w0cDjjCkur062AISTjq84Mh1ZOkaFUuk+aI1kUzeCld/tXON8JwBIfoteA9ayf29bBjUuWOL+MdVvzFZNJqdcTga7cnDGVAbjE2AMWB3OT5KQuBwwz3btVlFB8hNbcdS3qPQWk3hD6xu1R+GU0Ann4IqJvdxb5gkdMPWGCLGjqGOYDdp5GENeho3bNBANk14NZp3tf1W8CBvhHD6eofLa/EX82hVBGBE2swokfq7+YPbUDZM7Q5yLL46sFLZhaCD9yYHB24TMlo6q0XIVa1gaX+skAYrE0s7RzP919vjWZNRZ0/PMv2UxmqeHF6BuEJTRSPmayQ/+rYYW7cDjsEeM4/Dm+FoMz213DBXbkIEP4Yn5/wdPFRvBwThjethE98a2vnAt2Pw4Khg+CZstcG5HmryChoAEEIrpGiLqGcFCNorbGGd3K/oifsyp5g0/c65UErMJ1qu3+F8xmhTLwDlRLF1nHAgdVzQRWbbjzY4Sf/s0xhNneVv0o0j/e8eTsEggNYk8p+yfU4DG7isX/9YIBA5t+km3A92evLwyuCJ6rBXhtAm+YDUJq5eMuaemtuDZ4NaYPCYoJezbbXLO0rMDAM3OQf0kWfWbtei4ldSDnmeFPfWV2nXgOa21RN9tAFWBqT7IdeMS6wNbmrtwxLHmupBt1IbLj0IoNKXYSGPA6Pwarab4TY+J+XODURLwZMraWM4TUxxTDW3/vBX9uaePcM4UWA0UBlfTu/OlUoZ52uuivoxclFRk2f1uJwv+dBk5ENooTBGtkrrj5GNLe6NIqiQgG9W9WxcTI5NqJW19VSUNpB+ErrnSRR0L/vqRuFR8C4rqD5+N+HWWZ56ZYcv+HLi3dRDZvcqe2/ugzfJaAGDIjT6iTuvvaDH6ihh3rO/YNQxsvqJ6DiFp+B0lVIytrO50YADjs2KemQQXgdPOKc3M6vcxwWjw80hLcKmioY69MoZ45ZLms9BG6eR7vG2HxvPUF9ZCvrEwxMS9zoil/WB7ra6dslVyJkihuPJlxu6AVC+gXiUCE5LBcVmrCjLdcLovcOA334F80K/3kilT5lonTpU/RaU2A2mNewRSy9iD5Lyt5sZDxwaZnFZ/bc/XcEgxF+ZThrEsONLM+oBiOy8OC7Fd2tkAXKcvzdOEV7xGN1CZhuVS4mRKEPnIYxmOH/dGLpDj3NJqEsSo9itz+s2CczakXhe6SEj5NUKV3KSvk0PJs8PXaB5Feyw6XN9rLobNBE/Rb58fXU9qoNpgFfjwHawghcpIDZ9BMGxGALhCA932g0ETk2gd62tzopjvDSgddJmjkccxzN5IoiOCpfdVS4ot5NZElahR9fmTuwJWUQA3yIMbMi25UwiS24g5IozOtbIn0ctRFDFTXEH49wiqlfcfrNFmmq9cwdItnwviEYjGCd4CipU9AJ6ABIDOhsKQ4B81g9nrodsRVnXNcUqSywmdlhaVCoKE8aOaV0LERxQ4/ZV0n1jQurjnuvJR341p1BGa2mGcZ/uCd1ZIi1bQSc7WKQpmMigtbS5RaUCz5Ff9AIpTnLhyEw4uZy0P39Lc7P490FSA11edT09hEHCo3S2HhJ3PSwtNKYJ21TH1CktYzATqoGZuxELDuuY+97gEU9ZaKPcnRUSfFRHgAAAAAAAAAAAAAAAAAAAAAAADAxMCEwCQYFKw4DAhoFAAQU4HIzO4K0G2JETlax4nm23MmKH0UECFLun0BpI/44AgIH0AAA"}} \ No newline at end of file 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 6312d346..1f2366cc 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 @@ -37,7 +37,7 @@ class CommunicationUnitFixture extends AbstractIntegrationTest { void onboardCommunicationUnitAndSaveToFile() throws IOException { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); OnboardingParameters onboardingParameters = new OnboardingParameters(); - onboardingParameters.setRegistrationCode("06535d66c2"); + onboardingParameters.setRegistrationCode("f50319dc13"); onboardingParameters.setApplicationId(communicationUnit.getApplicationId()); onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId()); onboardingParameters.setCertificationType(CertificationType.P12); diff --git a/pom.xml b/pom.xml index 1be4a062..3d611cc7 100644 --- a/pom.xml +++ b/pom.xml @@ -181,22 +181,22 @@ org.glassfish.jersey.core jersey-client - 2.30.1 + 3.1.3 org.glassfish.jersey.inject jersey-hk2 - 2.30.1 + 3.1.3 org.glassfish.jersey.media jersey-media-json-jackson - 2.30.1 + 3.1.3 com.fasterxml.jackson.core jackson-annotations - 2.11.0.rc1 + 2.16.0 From fb319b3e4edc4371dc619f5291c7a4bfb8fd2406 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 10:01:37 +0100 Subject: [PATCH 06/37] Update request setup and keystore creation methods Refined the request factory to improve the keystore creation by considering the certificate type. Also, adjusted onboarding parameters and responses based on new device and sensor alternate IDs and amended registration code. This results in more straightforward implementation of SSL/TLS client configuration. --- .../data/agrirouter/impl/RequestFactory.java | 263 ++++++------- .../common/ssl/KeyStoreCreationService.java | 357 +++++++++--------- 2 files changed, 313 insertions(+), 307 deletions(-) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index bb9bce80..d209fd51 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java @@ -9,156 +9,159 @@ import jakarta.ws.rs.client.Client; import jakarta.ws.rs.client.ClientBuilder; import jakarta.ws.rs.client.Invocation; -import jakarta.ws.rs.client.WebTarget; import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.core.MediaType; -import java.security.KeyStore; import org.glassfish.jersey.client.ClientConfig; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.logging.LoggingFeature; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -/** Factory to encapsulate the requests against the agrirouter */ -public final class RequestFactory { +import java.security.KeyStore; - private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); +/** + * Factory to encapsulate the requests against the agrirouter + */ +public final class RequestFactory { - /** Hidden constructor. */ - private RequestFactory() { - // NOP - } + private static final Logger LOGGER = LoggerFactory.getLogger(RequestFactory.class); - /** - * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. - * - * @param url - - * @param certificate - - * @param password - - * @return Builder - - */ - public static Invocation.Builder securedRequest( - String url, String certificate, String password, CertificationType certificationType) { - ClientConfig clientConfig = new ClientConfig(); - KeyStore keyStore = createKeyStore(certificate, password, certificationType); - Client client = createClient(clientConfig, keyStore, password, certificationType); - if (Environment.httpRequestLoggingEnabled()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - } else { - LOGGER.debug( - "Request logging is currently disabled. If you want to enable it, please set '{}'.", - Environment.ENABLE_HTTP_REQUEST_LOGGING); + /** + * Hidden constructor. + */ + private RequestFactory() { + // NOP } - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - return request; - } - private static Client createClient( - ClientConfig clientConfig, - KeyStore keyStore, - String password, - CertificationType certificationType) { - try { - switch (certificationType) { - case PEM: - return ClientBuilder.newBuilder() - .withConfig(clientConfig) - .keyStore(keyStore, Constants.DEFAULT_PASSWORD) - .build(); - case P12: - return ClientBuilder.newBuilder() - .withConfig(clientConfig) - .keyStore(keyStore, password) - .build(); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + /** + * Creating a request with SSL configuration using the PEM and KEY files from the agrirouter. + * + * @param url - + * @param certificate - + * @param password - + * @return Builder - + */ + public static Invocation.Builder securedRequest( + String url, String certificate, String password, CertificationType certificationType) { + var clientConfig = new ClientConfig(); + var keyStore = createKeyStore(certificate, password, certificationType); + try (var client = createClient(clientConfig, keyStore, password, certificationType)) { + if (Environment.httpRequestLoggingEnabled()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + } else { + LOGGER.debug( + "Request logging is currently disabled. If you want to enable it, please set '{}'.", + Environment.ENABLE_HTTP_REQUEST_LOGGING); + } + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + return request; + } } - } - private static KeyStore createKeyStore( - String x509Certificate, String password, CertificationType certificationType) { - KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); - try { - switch (certificationType) { - case PEM: - return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); - case P12: - return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + private static Client createClient( + ClientConfig clientConfig, + KeyStore keyStore, + String password, + CertificationType certificationType) { + try { + return switch (certificationType) { + case PEM -> ClientBuilder.newBuilder() + .withConfig(clientConfig) + .keyStore(keyStore, Constants.DEFAULT_PASSWORD) + .build(); + case P12 -> ClientBuilder.newBuilder() + .withConfig(clientConfig) + .keyStore(keyStore, password) + .build(); + }; + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } } - } - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + private static KeyStore createKeyStore( + String x509Certificate, String password, CertificationType certificationType) { + var keyStoreCreationService = new KeyStoreCreationService(); + try { + switch (certificationType) { + case PEM: + return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); + case P12: + return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); + default: + throw new CertificationTypeNotSupportedException(certificationType); + } + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + } - return request; - } + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { + try (var client = ClientBuilder.newClient()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + return request; + } + } - /** - * Setting applicationID and Signature within the header. - * - * @param url - - * @param applicationId - - * @param signature - - * @return Builder - - */ - public static Invocation.Builder signedDeleteRequest( - String url, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); + /** + * Setting applicationID and Signature within the header. + * + * @param url - + * @param applicationId - + * @param signature - + * @return Builder - + */ + public static Invocation.Builder signedDeleteRequest( + String url, String applicationId, String signature) { + try (var client = ClientBuilder.newClient()) { + client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } + return request; + } + } - /** - * Setting the 'reg_access_token' within the header. - * - * @param url - - * @param accessToken - - * @return Builder - - */ - public static Invocation.Builder bearerTokenRequest( - String url, String accessToken, String applicationId, String signature) { - Client client = ClientBuilder.newClient(); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - WebTarget target = client.target(url); - Invocation.Builder request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } + /** + * Setting the 'reg_access_token' within the header. + * + * @param url - + * @param accessToken - + * @return Builder - + */ + public static Invocation.Builder bearerTokenRequest( + String url, String accessToken, String applicationId, String signature) { + try (var client = ClientBuilder.newClient()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + return request; + } + } - public static class AgrirouterHttpHeader { - public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; - public static final String SIGNATURE = "X-Agrirouter-Signature"; - } + public static class AgrirouterHttpHeader { + public static final String APPLICATION_ID = "X-Agrirouter-ApplicationId"; + public static final String SIGNATURE = "X-Agrirouter-Signature"; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java index 4b6ddf29..d77ae2e5 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java @@ -3,6 +3,15 @@ import com.dke.data.agrirouter.api.env.Constants; import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; import com.dke.data.agrirouter.api.service.HasLogger; + +import javax.crypto.EncryptedPrivateKeyInfo; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.net.SocketFactory; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -13,228 +22,222 @@ import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import java.security.spec.PKCS8EncodedKeySpec; import java.util.*; -import javax.crypto.EncryptedPrivateKeyInfo; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.net.SocketFactory; -import javax.net.ssl.*; public class KeyStoreCreationService implements HasLogger { - private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; - private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; + private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; + private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; + + private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; + private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; + + public SocketFactory getSocketFactory( + List rootCertificates, String certificate, String password) throws Exception { + this.logMethodBegin(rootCertificates, certificate, password); - private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; - private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; + this.getNativeLogger().trace("Create trust managers."); + var trustManagers = this.createTrustManagers(rootCertificates); - public SocketFactory getSocketFactory( - List rootCertificates, String certificate, String password) throws Exception { - this.logMethodBegin(rootCertificates, certificate, password); + this.getNativeLogger().trace("Init key manager factory."); + var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); - this.getNativeLogger().trace("Create trust managers."); - TrustManager[] trustManagers = this.createTrustManagers(rootCertificates); + this.getNativeLogger().trace("Generate SSL context."); + var context = SSLContext.getInstance("TLSv1.2"); - this.getNativeLogger().trace("Init key manager factory."); - KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); + this.getNativeLogger().trace("Init SSL context."); + context.init(kmf.getKeyManagers(), trustManagers, null); - this.getNativeLogger().trace("Generate SSL context."); - SSLContext context = SSLContext.getInstance("TLSv1.2"); + var socketFactory = context.getSocketFactory(); + this.logMethodEnd(socketFactory); + return socketFactory; + } - this.getNativeLogger().trace("Initi SSL context."); - context.init(kmf.getKeyManagers(), trustManagers, null); + public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { + this.logMethodBegin(certificate, password); - SSLSocketFactory socketFactory = context.getSocketFactory(); - this.logMethodEnd(socketFactory); - return socketFactory; - } + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create PKCS12 instance for keystore."); + keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { - this.logMethodBegin(certificate, password); + this.getNativeLogger().trace("Create input stream for certificate."); + InputStream sslInputStream = + new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create PKCS12 instance for keystore."); - keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + this.getNativeLogger().trace("Load input stream into keystore."); + keyStore.load(sslInputStream, password.toCharArray()); - this.getNativeLogger().trace("Create input stream for certificate."); - InputStream sslInputStream = - new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } - this.getNativeLogger().trace("Load input stream into keystore."); - keyStore.load(sslInputStream, password.toCharArray()); + this.logMethodEnd(keyStore); + return keyStore; + } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + public TrustManager[] createTrustManagers(List certificates) { + this.logMethodBegin(certificates); + + List trustManagers = new ArrayList<>(); + certificates.forEach( + certificate -> { + try { + this.getNativeLogger().trace("Create certificate for '{}'.", certificate); + var cert = + createCertificate( + extractFromOriginal( + certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create default keystore type."); + var caKs = KeyStore.getInstance(KeyStore.getDefaultType()); + caKs.load(null, null); + caKs.setCertificateEntry("ca-certificate", cert); + + this.getNativeLogger().trace("Create trust manager factory."); + var tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + this.getNativeLogger().trace("Init trust manager factory."); + tmf.init(caKs); + + this.getNativeLogger().trace("Add all trust managers from factory."); + trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + }); + + this.logMethodEnd(trustManagers); + return trustManagers.toArray(new TrustManager[0]); } - this.logMethodEnd(keyStore); - return keyStore; - } - - public TrustManager[] createTrustManagers(List certificates) { - this.logMethodBegin(certificates); - - List trustManagers = new ArrayList<>(); - certificates.forEach( - certificate -> { - try { - this.getNativeLogger().trace("Create certificate for '{}'.", certificate); - X509Certificate cert = - createCertificate( - extractFromOriginal( - certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create default keystore type."); - KeyStore caKs = KeyStore.getInstance(KeyStore.getDefaultType()); - caKs.load(null, null); - caKs.setCertificateEntry("ca-certificate", cert); - - this.getNativeLogger().trace("Create trust manager factory."); - TrustManagerFactory tmf = - TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - - this.getNativeLogger().trace("Init trust manager factory."); - tmf.init(caKs); - - this.getNativeLogger().trace("Add all trust managers from factory."); - trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); - } catch (Exception e) { + public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { + this.logMethodBegin(certificateAndPrivateKey, password); + + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create certificate."); + var cert = + createCertificate( + extractFromOriginal( + certificateAndPrivateKey, + BEGIN_DELIMITER_CERTIFICATE, + END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create private key."); + var key = + createPrivateKey( + extractFromOriginal( + certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), + password); + + this.getNativeLogger().trace("Create key store."); + keyStore = createKeyStore(cert, key); + } catch (Exception e) { throw new CouldNotCreateDynamicKeyStoreException(e); - } - }); - - this.logMethodEnd(trustManagers); - return trustManagers.toArray(new TrustManager[0]); - } - - public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { - this.logMethodBegin(certificateAndPrivateKey, password); - - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create certificate."); - X509Certificate cert = - createCertificate( - extractFromOriginal( - certificateAndPrivateKey, - BEGIN_DELIMITER_CERTIFICATE, - END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create private key."); - PrivateKey key = - createPrivateKey( - extractFromOriginal( - certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), - password); - - this.getNativeLogger().trace("Create key store."); - keyStore = createKeyStore(cert, key); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } + } - this.logMethodEnd(keyStore); - return keyStore; - } + this.logMethodEnd(keyStore); + return keyStore; + } - String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(cert, key); + String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(cert, key); - this.getNativeLogger().trace("Create keystore."); - KeyStore keystore = createKeyStore(cert, key); + this.getNativeLogger().trace("Create keystore."); + var keystore = createKeyStore(cert, key); - this.getNativeLogger().trace("Create random keystore name."); - String tmpKeystoreName = UUID.randomUUID().toString(); + this.getNativeLogger().trace("Create random keystore name."); + var tmpKeystoreName = UUID.randomUUID().toString(); - this.getNativeLogger().trace("Store keystore within temporary folder."); - keystore.store( - Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), - Constants.DEFAULT_PASSWORD.toCharArray()); + this.getNativeLogger().trace("Store keystore within temporary folder."); + keystore.store( + Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), + Constants.DEFAULT_PASSWORD.toCharArray()); - this.logMethodEnd(tmpKeystoreName); - return tmpKeystoreName; - } + this.logMethodEnd(tmpKeystoreName); + return tmpKeystoreName; + } - private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { - this.logMethodBegin(original, beginDelimiter, endDelimiter); + private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { + this.logMethodBegin(original, beginDelimiter, endDelimiter); - this.getNativeLogger().trace("Split by delimiter."); - String[] tokens = original.split(beginDelimiter); + this.getNativeLogger().trace("Split by delimiter."); + var tokens = original.split(beginDelimiter); - this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); - tokens = tokens[1].split(endDelimiter); + this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); + tokens = tokens[1].split(endDelimiter); - this.getNativeLogger().trace("Replace all line breaks."); - String certificate = tokens[0].replaceAll("\\s", ""); + this.getNativeLogger().trace("Replace all line breaks."); + var certificate = tokens[0].replaceAll("\\s", ""); - this.logMethodEnd(certificate); - return certificate; - } + this.logMethodEnd(certificate); + return certificate; + } - PrivateKey createPrivateKey(String privateKey, String password) throws Exception { - this.logMethodBegin(privateKey, password); + PrivateKey createPrivateKey(String privateKey, String password) throws Exception { + this.logMethodBegin(privateKey, password); - this.getNativeLogger().trace("Create PBE key spec."); - PBEKeySpec pbeSpec = new PBEKeySpec(password.toCharArray()); + this.getNativeLogger().trace("Create PBE key spec."); + var pbeSpec = new PBEKeySpec(password.toCharArray()); - this.getNativeLogger().trace("Create PK info using the private key."); - EncryptedPrivateKeyInfo pkinfo = - new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); + this.getNativeLogger().trace("Create PK info using the private key."); + var pkinfo = + new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); - this.getNativeLogger().trace("Create secret factory for PK info."); - SecretKeyFactory skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); + this.getNativeLogger().trace("Create secret factory for PK info."); + var skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); - this.getNativeLogger().trace("Generate secret."); - Key secret = skf.generateSecret(pbeSpec); + this.getNativeLogger().trace("Generate secret."); + Key secret = skf.generateSecret(pbeSpec); - this.getNativeLogger().trace("Generate encoded key spec."); - PKCS8EncodedKeySpec keySpec = pkinfo.getKeySpec(secret); + this.getNativeLogger().trace("Generate encoded key spec."); + var keySpec = pkinfo.getKeySpec(secret); - this.getNativeLogger().trace("Create RSA key factory."); - KeyFactory kf = KeyFactory.getInstance("RSA"); + this.getNativeLogger().trace("Create RSA key factory."); + var kf = KeyFactory.getInstance("RSA"); - PrivateKey privateKeyWithSpec = kf.generatePrivate(keySpec); - this.logMethodEnd(privateKey); - return privateKeyWithSpec; - } + var privateKeyWithSpec = kf.generatePrivate(keySpec); + this.logMethodEnd(privateKey); + return privateKeyWithSpec; + } - X509Certificate createCertificate(String x509Certificate) throws Exception { - this.logMethodBegin(x509Certificate); + X509Certificate createCertificate(String x509Certificate) throws Exception { + this.logMethodBegin(x509Certificate); - this.getNativeLogger().trace("Decode certificate."); - byte[] certBytes = Base64.getDecoder().decode(x509Certificate); + this.getNativeLogger().trace("Decode certificate."); + var certBytes = Base64.getDecoder().decode(x509Certificate); - this.getNativeLogger().trace("Create 'X.509' certification factory."); - CertificateFactory factory = CertificateFactory.getInstance("X.509"); + this.getNativeLogger().trace("Create 'X.509' certification factory."); + var factory = CertificateFactory.getInstance("X.509"); - X509Certificate certificate = - (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); - this.logMethodEnd(certificate); - return certificate; - } + var certificate = + (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); + this.logMethodEnd(certificate); + return certificate; + } - private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(x509Certificate, key); + private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(x509Certificate, key); - this.getNativeLogger().trace("Create JKS keystore."); - KeyStore keystore = KeyStore.getInstance("JKS"); - keystore.load(null); - keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); + this.getNativeLogger().trace("Create JKS keystore."); + var keystore = KeyStore.getInstance("JKS"); + keystore.load(null); + keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); - this.getNativeLogger().trace("Add certificate to the key store."); - keystore.setKeyEntry( - Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[] {x509Certificate}); + this.getNativeLogger().trace("Add certificate to the key store."); + keystore.setKeyEntry( + Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[]{x509Certificate}); - this.logMethodEnd(keystore); - return keystore; - } + this.logMethodEnd(keystore); + return keystore; + } - private static char[] getDefaultPassword() { - return Constants.DEFAULT_PASSWORD.toCharArray(); - } + private static char[] getDefaultPassword() { + return Constants.DEFAULT_PASSWORD.toCharArray(); + } } From 6d8e07716f6752150c53f2b732c4daf4674eb9c7 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 10:28:26 +0100 Subject: [PATCH 07/37] Remove unnecessary dependencies and refactor REST calls Removed redundant dependency 'org.glassfish.jersey.inject:jersey-hk2' from pom.xml. Refactored the createClient methods in RequestFactory.java to exclude unnecessary try-with-resources statements because the Client instance does not need to be closed immediately. Improved the legibility by adjusting spacing and indentation in KeyStoreCreationService.java. --- agrirouter-sdk-java-impl/pom.xml | 4 - .../data/agrirouter/impl/RequestFactory.java | 76 ++-- .../common/ssl/KeyStoreCreationService.java | 351 +++++++++--------- agrirouter-sdk-java-tests/pom.xml | 4 - pom.xml | 17 - 5 files changed, 210 insertions(+), 242 deletions(-) diff --git a/agrirouter-sdk-java-impl/pom.xml b/agrirouter-sdk-java-impl/pom.xml index 970791f7..962b000e 100644 --- a/agrirouter-sdk-java-impl/pom.xml +++ b/agrirouter-sdk-java-impl/pom.xml @@ -48,10 +48,6 @@ org.glassfish.jersey.core jersey-client - - org.glassfish.jersey.inject - jersey-hk2 - org.eclipse.paho org.eclipse.paho.client.mqttv3 diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index d209fd51..f450642f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java @@ -45,19 +45,18 @@ public static Invocation.Builder securedRequest( String url, String certificate, String password, CertificationType certificationType) { var clientConfig = new ClientConfig(); var keyStore = createKeyStore(certificate, password, certificationType); - try (var client = createClient(clientConfig, keyStore, password, certificationType)) { - if (Environment.httpRequestLoggingEnabled()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - } else { - LOGGER.debug( - "Request logging is currently disabled. If you want to enable it, please set '{}'.", - Environment.ENABLE_HTTP_REQUEST_LOGGING); - } - var target = client.target(url); - var request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - return request; + var client = createClient(clientConfig, keyStore, password, certificationType); + if (Environment.httpRequestLoggingEnabled()) { + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + } else { + LOGGER.debug( + "Request logging is currently disabled. If you want to enable it, please set '{}'.", + Environment.ENABLE_HTTP_REQUEST_LOGGING); } + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + return request; } private static Client createClient( @@ -106,14 +105,13 @@ private static KeyStore createKeyStore( * @return Builder - */ public static Invocation.Builder bearerTokenRequest(String url, String accessToken) { - try (var client = ClientBuilder.newClient()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - var target = client.target(url); - var request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - return request; - } + var client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + return request; } /** @@ -126,17 +124,16 @@ public static Invocation.Builder bearerTokenRequest(String url, String accessTok */ public static Invocation.Builder signedDeleteRequest( String url, String applicationId, String signature) { - try (var client = ClientBuilder.newClient()) { - client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - var target = client.target(url); - var request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); + var client = ClientBuilder.newClient(); + client.property(ClientProperties.SUPPRESS_HTTP_COMPLIANCE_VALIDATION, true); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } + return request; } /** @@ -148,16 +145,15 @@ public static Invocation.Builder signedDeleteRequest( */ public static Invocation.Builder bearerTokenRequest( String url, String accessToken, String applicationId, String signature) { - try (var client = ClientBuilder.newClient()) { - client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); - var target = client.target(url); - var request = target.request(MediaType.APPLICATION_JSON_TYPE); - request.accept(MediaType.APPLICATION_JSON_TYPE); - request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); - request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); - request.header(AgrirouterHttpHeader.SIGNATURE, signature); - return request; - } + var client = ClientBuilder.newClient(); + client.property(LoggingFeature.LOGGING_FEATURE_LOGGER_LEVEL_CLIENT, "INFO"); + var target = client.target(url); + var request = target.request(MediaType.APPLICATION_JSON_TYPE); + request.accept(MediaType.APPLICATION_JSON_TYPE); + request.header(HttpHeaders.AUTHORIZATION, "Bearer " + accessToken); + request.header(AgrirouterHttpHeader.APPLICATION_ID, applicationId); + request.header(AgrirouterHttpHeader.SIGNATURE, signature); + return request; } public static class AgrirouterHttpHeader { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java index d77ae2e5..37ae4682 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java @@ -3,15 +3,6 @@ import com.dke.data.agrirouter.api.env.Constants; import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; import com.dke.data.agrirouter.api.service.HasLogger; - -import javax.crypto.EncryptedPrivateKeyInfo; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.net.SocketFactory; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -23,221 +14,227 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.*; +import javax.crypto.EncryptedPrivateKeyInfo; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.net.SocketFactory; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; public class KeyStoreCreationService implements HasLogger { - private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; - private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; + private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; + private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; - private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; - private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; + private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; + private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; - public SocketFactory getSocketFactory( - List rootCertificates, String certificate, String password) throws Exception { - this.logMethodBegin(rootCertificates, certificate, password); + public SocketFactory getSocketFactory( + List rootCertificates, String certificate, String password) throws Exception { + this.logMethodBegin(rootCertificates, certificate, password); - this.getNativeLogger().trace("Create trust managers."); - var trustManagers = this.createTrustManagers(rootCertificates); + this.getNativeLogger().trace("Create trust managers."); + var trustManagers = this.createTrustManagers(rootCertificates); - this.getNativeLogger().trace("Init key manager factory."); - var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); + this.getNativeLogger().trace("Init key manager factory."); + var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); - this.getNativeLogger().trace("Generate SSL context."); - var context = SSLContext.getInstance("TLSv1.2"); + this.getNativeLogger().trace("Generate SSL context."); + var context = SSLContext.getInstance("TLSv1.2"); - this.getNativeLogger().trace("Init SSL context."); - context.init(kmf.getKeyManagers(), trustManagers, null); + this.getNativeLogger().trace("Init SSL context."); + context.init(kmf.getKeyManagers(), trustManagers, null); - var socketFactory = context.getSocketFactory(); - this.logMethodEnd(socketFactory); - return socketFactory; - } - - public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { - this.logMethodBegin(certificate, password); + var socketFactory = context.getSocketFactory(); + this.logMethodEnd(socketFactory); + return socketFactory; + } - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create PKCS12 instance for keystore."); - keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { + this.logMethodBegin(certificate, password); - this.getNativeLogger().trace("Create input stream for certificate."); - InputStream sslInputStream = - new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create PKCS12 instance for keystore."); + keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - this.getNativeLogger().trace("Load input stream into keystore."); - keyStore.load(sslInputStream, password.toCharArray()); + this.getNativeLogger().trace("Create input stream for certificate."); + InputStream sslInputStream = + new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } + this.getNativeLogger().trace("Load input stream into keystore."); + keyStore.load(sslInputStream, password.toCharArray()); - this.logMethodEnd(keyStore); - return keyStore; + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); } - public TrustManager[] createTrustManagers(List certificates) { - this.logMethodBegin(certificates); - - List trustManagers = new ArrayList<>(); - certificates.forEach( - certificate -> { - try { - this.getNativeLogger().trace("Create certificate for '{}'.", certificate); - var cert = - createCertificate( - extractFromOriginal( - certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create default keystore type."); - var caKs = KeyStore.getInstance(KeyStore.getDefaultType()); - caKs.load(null, null); - caKs.setCertificateEntry("ca-certificate", cert); - - this.getNativeLogger().trace("Create trust manager factory."); - var tmf = - TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - - this.getNativeLogger().trace("Init trust manager factory."); - tmf.init(caKs); - - this.getNativeLogger().trace("Add all trust managers from factory."); - trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } - }); - - this.logMethodEnd(trustManagers); - return trustManagers.toArray(new TrustManager[0]); - } + this.logMethodEnd(keyStore); + return keyStore; + } - public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { - this.logMethodBegin(certificateAndPrivateKey, password); + public TrustManager[] createTrustManagers(List certificates) { + this.logMethodBegin(certificates); - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create certificate."); + List trustManagers = new ArrayList<>(); + certificates.forEach( + certificate -> { + try { + this.getNativeLogger().trace("Create certificate for '{}'.", certificate); var cert = - createCertificate( - extractFromOriginal( - certificateAndPrivateKey, - BEGIN_DELIMITER_CERTIFICATE, - END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create private key."); - var key = - createPrivateKey( - extractFromOriginal( - certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), - password); - - this.getNativeLogger().trace("Create key store."); - keyStore = createKeyStore(cert, key); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } + createCertificate( + extractFromOriginal( + certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create default keystore type."); + var caKs = KeyStore.getInstance(KeyStore.getDefaultType()); + caKs.load(null, null); + caKs.setCertificateEntry("ca-certificate", cert); + + this.getNativeLogger().trace("Create trust manager factory."); + var tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + this.getNativeLogger().trace("Init trust manager factory."); + tmf.init(caKs); - this.logMethodEnd(keyStore); - return keyStore; + this.getNativeLogger().trace("Add all trust managers from factory."); + trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + }); + + this.logMethodEnd(trustManagers); + return trustManagers.toArray(new TrustManager[0]); + } + + public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { + this.logMethodBegin(certificateAndPrivateKey, password); + + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create certificate."); + var cert = + createCertificate( + extractFromOriginal( + certificateAndPrivateKey, + BEGIN_DELIMITER_CERTIFICATE, + END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create private key."); + var key = + createPrivateKey( + extractFromOriginal( + certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), + password); + + this.getNativeLogger().trace("Create key store."); + keyStore = createKeyStore(cert, key); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); } - String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(cert, key); + this.logMethodEnd(keyStore); + return keyStore; + } - this.getNativeLogger().trace("Create keystore."); - var keystore = createKeyStore(cert, key); + String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(cert, key); - this.getNativeLogger().trace("Create random keystore name."); - var tmpKeystoreName = UUID.randomUUID().toString(); + this.getNativeLogger().trace("Create keystore."); + var keystore = createKeyStore(cert, key); - this.getNativeLogger().trace("Store keystore within temporary folder."); - keystore.store( - Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), - Constants.DEFAULT_PASSWORD.toCharArray()); + this.getNativeLogger().trace("Create random keystore name."); + var tmpKeystoreName = UUID.randomUUID().toString(); - this.logMethodEnd(tmpKeystoreName); - return tmpKeystoreName; - } + this.getNativeLogger().trace("Store keystore within temporary folder."); + keystore.store( + Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), + Constants.DEFAULT_PASSWORD.toCharArray()); - private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { - this.logMethodBegin(original, beginDelimiter, endDelimiter); + this.logMethodEnd(tmpKeystoreName); + return tmpKeystoreName; + } - this.getNativeLogger().trace("Split by delimiter."); - var tokens = original.split(beginDelimiter); + private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { + this.logMethodBegin(original, beginDelimiter, endDelimiter); - this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); - tokens = tokens[1].split(endDelimiter); + this.getNativeLogger().trace("Split by delimiter."); + var tokens = original.split(beginDelimiter); - this.getNativeLogger().trace("Replace all line breaks."); - var certificate = tokens[0].replaceAll("\\s", ""); + this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); + tokens = tokens[1].split(endDelimiter); - this.logMethodEnd(certificate); - return certificate; - } + this.getNativeLogger().trace("Replace all line breaks."); + var certificate = tokens[0].replaceAll("\\s", ""); - PrivateKey createPrivateKey(String privateKey, String password) throws Exception { - this.logMethodBegin(privateKey, password); + this.logMethodEnd(certificate); + return certificate; + } - this.getNativeLogger().trace("Create PBE key spec."); - var pbeSpec = new PBEKeySpec(password.toCharArray()); + PrivateKey createPrivateKey(String privateKey, String password) throws Exception { + this.logMethodBegin(privateKey, password); - this.getNativeLogger().trace("Create PK info using the private key."); - var pkinfo = - new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); + this.getNativeLogger().trace("Create PBE key spec."); + var pbeSpec = new PBEKeySpec(password.toCharArray()); - this.getNativeLogger().trace("Create secret factory for PK info."); - var skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); + this.getNativeLogger().trace("Create PK info using the private key."); + var pkinfo = new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); - this.getNativeLogger().trace("Generate secret."); - Key secret = skf.generateSecret(pbeSpec); + this.getNativeLogger().trace("Create secret factory for PK info."); + var skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); - this.getNativeLogger().trace("Generate encoded key spec."); - var keySpec = pkinfo.getKeySpec(secret); + this.getNativeLogger().trace("Generate secret."); + Key secret = skf.generateSecret(pbeSpec); - this.getNativeLogger().trace("Create RSA key factory."); - var kf = KeyFactory.getInstance("RSA"); + this.getNativeLogger().trace("Generate encoded key spec."); + var keySpec = pkinfo.getKeySpec(secret); - var privateKeyWithSpec = kf.generatePrivate(keySpec); - this.logMethodEnd(privateKey); - return privateKeyWithSpec; - } + this.getNativeLogger().trace("Create RSA key factory."); + var kf = KeyFactory.getInstance("RSA"); - X509Certificate createCertificate(String x509Certificate) throws Exception { - this.logMethodBegin(x509Certificate); + var privateKeyWithSpec = kf.generatePrivate(keySpec); + this.logMethodEnd(privateKey); + return privateKeyWithSpec; + } - this.getNativeLogger().trace("Decode certificate."); - var certBytes = Base64.getDecoder().decode(x509Certificate); + X509Certificate createCertificate(String x509Certificate) throws Exception { + this.logMethodBegin(x509Certificate); - this.getNativeLogger().trace("Create 'X.509' certification factory."); - var factory = CertificateFactory.getInstance("X.509"); + this.getNativeLogger().trace("Decode certificate."); + var certBytes = Base64.getDecoder().decode(x509Certificate); - var certificate = - (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); - this.logMethodEnd(certificate); - return certificate; - } + this.getNativeLogger().trace("Create 'X.509' certification factory."); + var factory = CertificateFactory.getInstance("X.509"); - private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(x509Certificate, key); + var certificate = + (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); + this.logMethodEnd(certificate); + return certificate; + } - this.getNativeLogger().trace("Create JKS keystore."); - var keystore = KeyStore.getInstance("JKS"); - keystore.load(null); - keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); + private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(x509Certificate, key); - this.getNativeLogger().trace("Add certificate to the key store."); - keystore.setKeyEntry( - Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[]{x509Certificate}); + this.getNativeLogger().trace("Create JKS keystore."); + var keystore = KeyStore.getInstance("JKS"); + keystore.load(null); + keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); - this.logMethodEnd(keystore); - return keystore; - } + this.getNativeLogger().trace("Add certificate to the key store."); + keystore.setKeyEntry( + Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[] {x509Certificate}); - private static char[] getDefaultPassword() { - return Constants.DEFAULT_PASSWORD.toCharArray(); - } + this.logMethodEnd(keystore); + return keystore; + } + + private static char[] getDefaultPassword() { + return Constants.DEFAULT_PASSWORD.toCharArray(); + } } diff --git a/agrirouter-sdk-java-tests/pom.xml b/agrirouter-sdk-java-tests/pom.xml index 6f34fdac..0f7773a7 100644 --- a/agrirouter-sdk-java-tests/pom.xml +++ b/agrirouter-sdk-java-tests/pom.xml @@ -40,10 +40,6 @@ org.junit.jupiter junit-jupiter-params - - org.glassfish.jersey.inject - jersey-hk2 - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 3d611cc7..f25554fc 100644 --- a/pom.xml +++ b/pom.xml @@ -183,11 +183,6 @@ jersey-client 3.1.3 - - org.glassfish.jersey.inject - jersey-hk2 - 3.1.3 - org.glassfish.jersey.media jersey-media-json-jackson @@ -332,18 +327,6 @@ - - com.coveo - fmt-maven-plugin - 2.9 - - - - format - - - - From 0ee541042e93c7997b5161827efdb0d1d7f9f443 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 10:34:10 +0100 Subject: [PATCH 08/37] Adjust formatting and indentation for readability Reformatted the code according to the standard conventions for better readability. Adjusted the indentation and spacing in various classes. Removed unused imports, and reorganized the order of the imports. This change does not affect the program's semantics or its performance. --- .../api/cancellation/CancellationToken.java | 32 +- .../DefaultCancellationToken.java | 58 +- .../NonRetryCancellationToken.java | 31 +- .../data/agrirouter/api/env/Constants.java | 12 +- .../data/agrirouter/api/env/Environment.java | 204 +++-- .../data/agrirouter/api/env/Production.java | 30 +- .../com/dke/data/agrirouter/api/env/QA.java | 36 +- ...ertificationTypeNotSupportedException.java | 20 +- ...ouldNotCreateDynamicKeyStoreException.java | 10 +- .../CouldNotCreateMqttClientException.java | 16 +- .../CouldNotCreateMqttOptionException.java | 16 +- .../CouldNotCreatePrivateKeyException.java | 6 +- .../CouldNotCreatePublicKeyException.java | 6 +- .../CouldNotCreateSignatureException.java | 10 +- .../exception/CouldNotDecodeHexException.java | 10 +- .../CouldNotDecodeMessageException.java | 6 +- ...uldNotDecodePushNotificationException.java | 12 +- .../CouldNotEncodeMessageException.java | 6 +- .../CouldNotFetchCookiesException.java | 6 +- .../CouldNotFindTimeZoneException.java | 3 +- .../CouldNotGetRegistrationCodeException.java | 16 +- ...oardVirtualCommunicationUnitException.java | 6 +- ...oardVirtualCommunicationUnitException.java | 6 +- .../CouldNotSendMqttMessageException.java | 10 +- ...rifySecuredOnboardingRequestException.java | 10 +- .../CouldNotVerifySignatureException.java | 10 +- .../exception/ForbiddenRequestException.java | 7 +- .../IllegalParameterDefinitionException.java | 26 +- .../exception/InvalidHttpStatusException.java | 10 +- .../exception/InvalidSignatureException.java | 3 +- .../InvalidUrlForRequestException.java | 7 +- .../api/exception/OnboardingException.java | 33 +- .../api/exception/RevokingException.java | 33 +- .../UnauthorizedRequestException.java | 3 +- .../UnexpectedHttpStatusException.java | 18 +- .../agrirouter/api/service/HasLogger.java | 75 +- .../api/service/ParameterValidation.java | 157 ++-- .../api/service/RevokingService.java | 17 +- .../service/messaging/SendMessageService.java | 31 +- .../encoding/DecodeMessageService.java | 50 +- .../DecodePushNotificationService.java | 14 +- .../encoding/EncodeMessageService.java | 61 +- .../messaging/encoding/MessageDecoder.java | 14 +- .../http/CloudOffboardingService.java | 3 +- .../http/CloudOnboardingService.java | 3 +- .../messaging/http/DeleteMessageService.java | 36 +- .../messaging/http/FetchMessageService.java | 99 +- .../messaging/http/ListEndpointsService.java | 58 +- .../http/MessageConfirmationService.java | 3 +- .../http/MessageHeaderQueryService.java | 36 +- .../messaging/http/MessageQueryService.java | 34 +- .../messaging/http/MessagingService.java | 28 +- .../messaging/http/SetCapabilityService.java | 7 +- .../http/SetSubscriptionService.java | 7 +- .../mqtt/CloudOffboardingService.java | 3 +- .../mqtt/CloudOnboardingService.java | 3 +- .../messaging/mqtt/DeleteMessageService.java | 36 +- .../messaging/mqtt/ListEndpointsService.java | 58 +- .../mqtt/MessageConfirmationService.java | 3 +- .../mqtt/MessageHeaderQueryService.java | 36 +- .../messaging/mqtt/MessageQueryService.java | 34 +- .../messaging/mqtt/MessagingService.java | 28 +- .../messaging/mqtt/SetCapabilityService.java | 7 +- .../mqtt/SetSubscriptionService.java | 7 +- .../service/onboard/OnboardingService.java | 37 +- .../secured/AuthorizationRequestService.java | 17 +- .../onboard/secured/OnboardingService.java | 61 +- .../api/dto/messaging/FetchMessageResponse.kt | 6 +- .../messaging/MessageConfirmationRequest.kt | 2 +- .../api/dto/onboard/RouterDevice.kt | 16 +- .../dto/onboard/inner/ConnectionCriteria.kt | 6 +- .../RegistrationCodeResponse.kt | 2 +- .../secured/AuthorizationResponse.kt | 4 +- .../api/dto/revoke/RevokeRequest.kt | 4 - .../api/enums/ContentMessageType.kt | 12 +- .../agrirouter/api/enums/RevokeResponse.kt | 2 +- .../enums/SecuredOnboardingResponseType.kt | 3 +- .../agrirouter/api/enums/SystemMessageType.kt | 15 +- .../api/messaging/MessageSendingResult.kt | 2 +- .../parameters/DeleteMessageParameters.kt | 8 +- .../parameters/MessageParameterTuple.kt | 5 +- .../parameters/MessageQueryParameters.kt | 8 +- .../parameters/SetCapabilitiesParameters.kt | 3 +- agrirouter-sdk-java-convenience/pom.xml | 3 +- ...DecodeCloudOnboardingResponsesService.java | 121 +-- .../mqtt/client/MqttClientService.java | 101 ++- .../mqtt/client/MqttOptionService.java | 193 ++-- .../impl/ChunkContextIdService.java | 20 +- .../agrirouter/impl/EnvironmentalService.java | 16 +- .../impl/NonEnvironmentalService.java | 7 +- .../agrirouter/impl/SignatureService.java | 67 +- .../impl/common/MessageIdService.java | 20 +- .../impl/common/StateIdService.java | 20 +- .../impl/common/UtcTimeService.java | 91 +- .../signing/SecurityKeyCreationService.java | 79 +- .../common/ssl/KeyStoreCreationService.java | 349 +++---- .../impl/gson/MessageTypeAdapter.java | 25 +- .../impl/messaging/MessageBodyCreator.java | 51 +- .../impl/messaging/MessageEncoder.java | 849 +++++++++--------- .../impl/messaging/MqttService.java | 18 +- .../impl/messaging/SequenceNumberService.java | 35 +- .../encoding/DecodeMessageServiceImpl.java | 101 ++- .../DecodePushNotificationServiceImpl.java | 54 +- .../encoding/EncodeMessageServiceImpl.java | 407 ++++----- .../DeleteAllMessagesParameterCreator.java | 43 +- .../helper/MessageQueryHelperService.java | 101 +-- .../QueryAllMessagesParameterCreator.java | 43 +- .../mqtt/MessageQueryHelperService.java | 89 +- .../mqtt/CloudOffboardingServiceImpl.java | 88 +- .../mqtt/CloudOnboardingServiceImpl.java | 89 +- .../mqtt/DeleteMessageServiceImpl.java | 101 +-- .../mqtt/ListEndpointsServiceImpl.java | 165 ++-- .../mqtt/MessageConfirmationServiceImpl.java | 74 +- .../mqtt/MessageHeaderQueryServiceImpl.java | 80 +- .../mqtt/MessageQueryServiceImpl.java | 73 +- .../mqtt/SendMessageServiceImpl.java | 59 +- .../mqtt/SetCapabilityServiceImpl.java | 79 +- .../mqtt/SetSubscriptionServiceImpl.java | 74 +- .../rest/CloudOffboardingServiceImpl.java | 81 +- .../rest/CloudOnboardingServiceImpl.java | 77 +- .../rest/DeleteMessageServiceImpl.java | 93 +- .../rest/FetchMessageServiceImpl.java | 89 +- .../rest/ListEndpointsServiceImpl.java | 153 ++-- .../rest/MessageConfirmationServiceImpl.java | 79 +- .../impl/messaging/rest/MessageFetcher.java | 89 +- .../rest/MessageHeaderQueryServiceImpl.java | 82 +- .../rest/MessageQueryServiceImpl.java | 80 +- .../impl/messaging/rest/MessageSender.java | 61 +- .../rest/SendMessageServiceImpl.java | 31 +- .../rest/SetCapabilityServiceImpl.java | 77 +- .../rest/SetSubscriptionServiceImpl.java | 77 +- .../onboard/AbstractOnboardingService.java | 121 +-- .../impl/onboard/OnboardingServiceImpl.java | 103 +-- .../AuthorizationRequestServiceImpl.java | 149 +-- .../secured/OnboardingServiceImpl.java | 255 +++--- .../impl/revoke/RevokingServiceImpl.java | 123 +-- .../impl/validation/ResponseValidator.java | 160 ++-- .../PrivateKeyCreationServiceTest.java | 101 +-- .../ssl/KeyStoreCreationServiceTest.java | 173 ++-- .../messaging/SequenceNumberServiceTest.java | 106 +-- .../DecodeMessageServiceImplTest.java | 100 +-- ...DecodePushNotificationServiceImplTest.java | 126 +-- .../EncodeMessageServiceImplTest.java | 317 +++---- .../test/AbstractIntegrationTest.java | 377 ++++---- .../dke/data/agrirouter/test/Assertions.java | 44 +- .../test/OnboardingResponseRepository.java | 95 +- .../fixture/CommunicationUnitFixture.java | 111 +-- .../test/fixture/FarmingSoftwareFixture.java | 220 ++--- .../fixture/TelemetryPlatformFixture.java | 214 ++--- .../agrirouter/test/helper/ContentReader.java | 44 +- .../rest/CancellationTokenPollingTest.java | 149 +-- .../rest/CloudOffboardingServiceTest.java | 249 ++--- .../rest/CloudOnboardingServiceTest.java | 249 ++--- .../HealthCheckForEndpointsByPollingTest.java | 97 +- .../rest/SendChunkedMessageTest.java | 156 ++-- .../rest/SetCapabilityServiceTest.java | 199 ++-- .../rest/SetSubscriptionServiceTest.java | 179 ++-- .../AuthorizationRequestServiceTest.java | 103 ++- .../OnboardingWithErrorMessageTest.java | 54 +- .../SecuredOnboardingServiceTest.java | 154 ++-- .../SendAndReceiveChunkedMessagesTest.java | 500 ++++++----- 161 files changed, 6043 insertions(+), 5728 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/CancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/CancellationToken.java index b0234e7e..43ad3ef2 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/CancellationToken.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/CancellationToken.java @@ -1,21 +1,25 @@ package com.dke.data.agrirouter.api.cancellation; -/** Cancellation token to enable custom implementations integration within the solution. */ +/** + * Cancellation token to enable custom implementations integration within the solution. + */ public interface CancellationToken { - /** - * Signals the polling that the operation can be cancelled. - * - * @return true if the operation can be cancelled, false otherwise. - */ - boolean isNotCancelled(); + /** + * Signals the polling that the operation can be cancelled. + * + * @return true if the operation can be cancelled, false otherwise. + */ + boolean isNotCancelled(); - /** - * Will be called if one step during the whole polling mechanism is done and the next iteration - * will start afterwards. - */ - void nextStep(); + /** + * Will be called if one step during the whole polling mechanism is done and the next iteration + * will start afterwards. + */ + void nextStep(); - /** Will wait a dedicated amount of time before starting the next step. */ - void waitIfNotCancelled(); + /** + * Will wait a dedicated amount of time before starting the next step. + */ + void waitIfNotCancelled(); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/DefaultCancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/DefaultCancellationToken.java index 73dd5da0..36054b78 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/DefaultCancellationToken.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/DefaultCancellationToken.java @@ -1,38 +1,40 @@ package com.dke.data.agrirouter.api.cancellation; -/** Default - time based - implementation of the cancellation token. */ +/** + * Default - time based - implementation of the cancellation token. + */ public class DefaultCancellationToken implements CancellationToken { - private int nrOfTries; - private final int maxTries; - private final long timeToWait; - private boolean wasInterrupted; + private int nrOfTries; + private final int maxTries; + private final long timeToWait; + private boolean wasInterrupted; - public DefaultCancellationToken(int maxTries, long timeToWait) { - this.nrOfTries = 0; - this.maxTries = maxTries; - this.timeToWait = timeToWait; - this.wasInterrupted = false; - } + public DefaultCancellationToken(int maxTries, long timeToWait) { + this.nrOfTries = 0; + this.maxTries = maxTries; + this.timeToWait = timeToWait; + this.wasInterrupted = false; + } - @Override - public boolean isNotCancelled() { - return nrOfTries < maxTries && !wasInterrupted; - } + @Override + public boolean isNotCancelled() { + return nrOfTries < maxTries && !wasInterrupted; + } - @Override - public void nextStep() { - nrOfTries++; - } + @Override + public void nextStep() { + nrOfTries++; + } - @Override - public void waitIfNotCancelled() { - if (isNotCancelled()) { - try { - Thread.sleep(timeToWait); - } catch (InterruptedException nop) { - wasInterrupted = true; - } + @Override + public void waitIfNotCancelled() { + if (isNotCancelled()) { + try { + Thread.sleep(timeToWait); + } catch (InterruptedException nop) { + wasInterrupted = true; + } + } } - } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java index 273cad61..752249a0 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/cancellation/NonRetryCancellationToken.java @@ -1,23 +1,26 @@ package com.dke.data.agrirouter.api.cancellation; -/** Non-retry implementation of the cancellation token. */ +/** + * Non-retry implementation of the cancellation token. + */ @SuppressWarnings("unused") public class NonRetryCancellationToken implements CancellationToken { - public NonRetryCancellationToken() {} + public NonRetryCancellationToken() { + } - @Override - public boolean isNotCancelled() { - return true; - } + @Override + public boolean isNotCancelled() { + return true; + } - @Override - public void nextStep() { - // Do nothing - } + @Override + public void nextStep() { + // Do nothing + } - @Override - public void waitIfNotCancelled() { - // Do nothing - } + @Override + public void waitIfNotCancelled() { + // Do nothing + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Constants.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Constants.java index a877157d..62b19c16 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Constants.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Constants.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.env; -/** Constants for the SDK. */ +/** + * Constants for the SDK. + */ public interface Constants { - String DEFAULT_PASSWORD = "changeit"; - String PROTOCOL = "TLSv1.2"; - String CERT_ALIAS = "cert-alias"; - String KEY_ALIAS = "key-alias"; + String DEFAULT_PASSWORD = "changeit"; + String PROTOCOL = "TLSv1.2"; + String CERT_ALIAS = "cert-alias"; + String KEY_ALIAS = "key-alias"; } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java index d6f5c9d5..80d79e87 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java @@ -3,116 +3,124 @@ import com.dke.data.agrirouter.api.enums.SecuredOnboardingResponseType; import org.apache.commons.lang3.BooleanUtils; -/** Common Environment, holds some default methods pointing to the QA. */ +/** + * Common Environment, holds some default methods pointing to the QA. + */ public interface Environment { - /** System property to enable logging for HTTP requests. */ - String ENABLE_HTTP_REQUEST_LOGGING = "agrirouter.sdk.enable.http.request.logging"; + /** + * System property to enable logging for HTTP requests. + */ + String ENABLE_HTTP_REQUEST_LOGGING = "agrirouter.sdk.enable.http.request.logging"; - /** Template for MQTT connections. */ - String MQTT_URL_TEMPLATE = "ssl://%s:%s"; + /** + * Template for MQTT connections. + */ + String MQTT_URL_TEMPLATE = "ssl://%s:%s"; - /** Link template for the secured onboarding process. */ - String SECURED_ONBOARDING_AUTHORIZATION_LINK_TEMPLATE = - "/application/%s/authorize?response_type=%s&state=%s&redirect_uri=%s"; + /** + * Link template for the secured onboarding process. + */ + String SECURED_ONBOARDING_AUTHORIZATION_LINK_TEMPLATE = + "/application/%s/authorize?response_type=%s&state=%s&redirect_uri=%s"; - /** - * Checks whether the HTTP request logging is enabled or not. - * - * @return - - */ - static boolean httpRequestLoggingEnabled() { - final String httpRequestLoggingEnabled = System.getProperty(ENABLE_HTTP_REQUEST_LOGGING); - return BooleanUtils.toBoolean(httpRequestLoggingEnabled); - } + /** + * Checks whether the HTTP request logging is enabled or not. + * + * @return - + */ + static boolean httpRequestLoggingEnabled() { + final String httpRequestLoggingEnabled = System.getProperty(ENABLE_HTTP_REQUEST_LOGGING); + return BooleanUtils.toBoolean(httpRequestLoggingEnabled); + } - /** - * Returning the AR base URL without trailing '/'. - * - * @return - - */ - String getEnvironmentBaseUrl(); + /** + * Returning the AR base URL without trailing '/'. + * + * @return - + */ + String getEnvironmentBaseUrl(); - /** - * Returning the API prefix for several AR URLs, like the onboarding URL for example. - * - * @return - - */ - String getApiPrefix(); + /** + * Returning the API prefix for several AR URLs, like the onboarding URL for example. + * + * @return - + */ + String getApiPrefix(); - /** - * URL for the registration service. - * - * @return - - */ - String getRegistrationServiceUrl(); + /** + * URL for the registration service. + * + * @return - + */ + String getRegistrationServiceUrl(); - /** - * URL for the onboarding request. - * - * @return - - */ - default String getOnboardUrl() { - return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard"; - } + /** + * URL for the onboarding request. + * + * @return - + */ + default String getOnboardUrl() { + return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard"; + } - /** - * URL for the secured onboarding request. - * - * @return - - */ - default String getSecuredOnboardUrl() { - return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/request"; - } + /** + * URL for the secured onboarding request. + * + * @return - + */ + default String getSecuredOnboardUrl() { + return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/request"; + } - /** - * URL for verifying the secured onboarding request. - * - * @return - - */ - default String getVerifyOnboardRequestUrl() { - return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/verify"; - } + /** + * URL for verifying the secured onboarding request. + * + * @return - + */ + default String getVerifyOnboardRequestUrl() { + return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/verify"; + } - /** - * URL for revoking requests. - * - * @return - - */ - default String getRevokeUrl() { - return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/revoke"; - } + /** + * URL for revoking requests. + * + * @return - + */ + default String getRevokeUrl() { + return getRegistrationServiceUrl() + getApiPrefix() + "/registration/onboard/revoke"; + } - /** - * Returning the authorization URL for secured onboarding. - * - * @param responseType - - * @param state - - * @param redirectUrl - - * @return - - */ - default String getSecuredOnboardingAuthorizationUrl( - String applicationId, - SecuredOnboardingResponseType responseType, - String state, - String redirectUrl) { - return this.getEnvironmentBaseUrl() - + String.format( - SECURED_ONBOARDING_AUTHORIZATION_LINK_TEMPLATE, - applicationId, - responseType.getKey(), - state, - redirectUrl); - } + /** + * Returning the authorization URL for secured onboarding. + * + * @param responseType - + * @param state - + * @param redirectUrl - + * @return - + */ + default String getSecuredOnboardingAuthorizationUrl( + String applicationId, + SecuredOnboardingResponseType responseType, + String state, + String redirectUrl) { + return this.getEnvironmentBaseUrl() + + String.format( + SECURED_ONBOARDING_AUTHORIZATION_LINK_TEMPLATE, + applicationId, + responseType.getKey(), + state, + redirectUrl); + } - /** - * Returning the server URL for MQTT communication. - * - * @param host Host - * @param port Port - * @return - - */ - default String getMqttServerUrl(String host, String port) { - return String.format(MQTT_URL_TEMPLATE, host, port); - } + /** + * Returning the server URL for MQTT communication. + * + * @param host Host + * @param port Port + * @return - + */ + default String getMqttServerUrl(String host, String port) { + return String.format(MQTT_URL_TEMPLATE, host, port); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java index 3501f329..16a75bf5 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java @@ -6,22 +6,22 @@ */ public abstract class Production implements Environment { - private static final String ENV_BASE_URL = "https://goto.my-agrirouter.com"; - private static final String API_PREFIX = "/api/v1.0"; - private static final String REGISTRATION_SERVICE_URL = "https://onboard.my-agrirouter.com"; + private static final String ENV_BASE_URL = "https://goto.my-agrirouter.com"; + private static final String API_PREFIX = "/api/v1.0"; + private static final String REGISTRATION_SERVICE_URL = "https://onboard.my-agrirouter.com"; - @Override - public String getEnvironmentBaseUrl() { - return ENV_BASE_URL; - } + @Override + public String getEnvironmentBaseUrl() { + return ENV_BASE_URL; + } - @Override - public String getApiPrefix() { - return API_PREFIX; - } + @Override + public String getApiPrefix() { + return API_PREFIX; + } - @Override - public String getRegistrationServiceUrl() { - return REGISTRATION_SERVICE_URL; - } + @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 7cb30cea..548a251a 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 @@ -1,25 +1,27 @@ package com.dke.data.agrirouter.api.env; -/** Abstraction of the QA environment, currently no overrides because the default is QA already. */ +/** + * Abstraction of the QA environment, currently no overrides because the default is QA already. + */ 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 API_PREFIX = "/api/v1.0"; - private static final String REGISTRATION_SERVICE_URL = - "https://agrirouter-registration-service-hubqa-eu10.cfapps.eu10.hana.ondemand.com"; + private static final String ENV_BASE_URL = "https://agrirouter-qa.cfapps.eu10.hana.ondemand.com"; + 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"; - @Override - public String getEnvironmentBaseUrl() { - return ENV_BASE_URL; - } + @Override + public String getEnvironmentBaseUrl() { + return ENV_BASE_URL; + } - @Override - public String getApiPrefix() { - return API_PREFIX; - } + @Override + public String getApiPrefix() { + return API_PREFIX; + } - @Override - public String getRegistrationServiceUrl() { - return REGISTRATION_SERVICE_URL; - } + @Override + public String getRegistrationServiceUrl() { + return REGISTRATION_SERVICE_URL; + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CertificationTypeNotSupportedException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CertificationTypeNotSupportedException.java index 65eb0c57..770cd751 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CertificationTypeNotSupportedException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CertificationTypeNotSupportedException.java @@ -2,17 +2,19 @@ import com.dke.data.agrirouter.api.enums.CertificationType; -/** Will be thrown if the certification type is not known. */ +/** + * Will be thrown if the certification type is not known. + */ public class CertificationTypeNotSupportedException extends RuntimeException { - private final CertificationType unknown; + private final CertificationType unknown; - public CertificationTypeNotSupportedException(CertificationType unknown) { - this.unknown = unknown; - } + public CertificationTypeNotSupportedException(CertificationType unknown) { + this.unknown = unknown; + } - @Override - public String getMessage() { - return this.unknown + " is unknown and therefore not supported."; - } + @Override + public String getMessage() { + return this.unknown + " is unknown and therefore not supported."; + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateDynamicKeyStoreException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateDynamicKeyStoreException.java index 52bd4814..ab4f431a 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateDynamicKeyStoreException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateDynamicKeyStoreException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the keystore can not be created. */ +/** + * Will be thrown if the keystore can not be created. + */ public class CouldNotCreateDynamicKeyStoreException extends RuntimeException { - public CouldNotCreateDynamicKeyStoreException(Exception cause) { - super(cause); - } + public CouldNotCreateDynamicKeyStoreException(Exception cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttClientException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttClientException.java index 51a8e8f1..c4667e92 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttClientException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttClientException.java @@ -1,12 +1,14 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the service can not create a MQTT client. */ +/** + * Will be thrown if the service can not create a MQTT client. + */ public class CouldNotCreateMqttClientException extends RuntimeException { - public CouldNotCreateMqttClientException(String message, Throwable throwable) { - super(message, throwable); - } + public CouldNotCreateMqttClientException(String message, Throwable throwable) { + super(message, throwable); + } - public CouldNotCreateMqttClientException(String message) { - super(message); - } + public CouldNotCreateMqttClientException(String message) { + super(message); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java index cb5b8040..0bdb65c6 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java @@ -1,13 +1,15 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the MQTT option can not be created. */ +/** + * Will be thrown if the MQTT option can not be created. + */ public class CouldNotCreateMqttOptionException extends RuntimeException { - public CouldNotCreateMqttOptionException(String message) { - super(message); - } + public CouldNotCreateMqttOptionException(String message) { + super(message); + } - public CouldNotCreateMqttOptionException(String message, Throwable cause) { - super(message, cause); - } + public CouldNotCreateMqttOptionException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePrivateKeyException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePrivateKeyException.java index d68ed0f8..7ada1a08 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePrivateKeyException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePrivateKeyException.java @@ -2,7 +2,7 @@ public class CouldNotCreatePrivateKeyException extends RuntimeException { - public CouldNotCreatePrivateKeyException(Throwable cause) { - super(cause); - } + public CouldNotCreatePrivateKeyException(Throwable cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePublicKeyException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePublicKeyException.java index b4d29fb3..ea682f16 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePublicKeyException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreatePublicKeyException.java @@ -2,7 +2,7 @@ public class CouldNotCreatePublicKeyException extends RuntimeException { - public CouldNotCreatePublicKeyException(Throwable cause) { - super(cause); - } + public CouldNotCreatePublicKeyException(Throwable cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateSignatureException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateSignatureException.java index d687083c..1872a189 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateSignatureException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateSignatureException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the keystore can not be created. */ +/** + * Will be thrown if the keystore can not be created. + */ public class CouldNotCreateSignatureException extends RuntimeException { - public CouldNotCreateSignatureException(Exception cause) { - super(cause); - } + public CouldNotCreateSignatureException(Exception cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeHexException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeHexException.java index d84777d0..6a3c7061 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeHexException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeHexException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the keystore can not be created. */ +/** + * Will be thrown if the keystore can not be created. + */ public class CouldNotDecodeHexException extends RuntimeException { - public CouldNotDecodeHexException(Exception cause) { - super(cause); - } + public CouldNotDecodeHexException(Exception cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeMessageException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeMessageException.java index 1156e21c..b08829cf 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeMessageException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodeMessageException.java @@ -6,7 +6,7 @@ */ public class CouldNotDecodeMessageException extends RuntimeException { - public CouldNotDecodeMessageException(Throwable cause) { - super(cause); - } + public CouldNotDecodeMessageException(Throwable cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodePushNotificationException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodePushNotificationException.java index 6e847391..8c1d3d67 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodePushNotificationException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotDecodePushNotificationException.java @@ -6,11 +6,11 @@ */ public class CouldNotDecodePushNotificationException extends RuntimeException { - public CouldNotDecodePushNotificationException(Throwable cause) { - super(cause); - } + public CouldNotDecodePushNotificationException(Throwable cause) { + super(cause); + } - public CouldNotDecodePushNotificationException(String message) { - super(message); - } + public CouldNotDecodePushNotificationException(String message) { + super(message); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotEncodeMessageException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotEncodeMessageException.java index c5001775..5c400235 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotEncodeMessageException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotEncodeMessageException.java @@ -6,7 +6,7 @@ */ public class CouldNotEncodeMessageException extends RuntimeException { - public CouldNotEncodeMessageException(Throwable cause) { - super(cause); - } + public CouldNotEncodeMessageException(Throwable cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java index 8d353cfa..61ce1ee5 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java @@ -2,8 +2,8 @@ public class CouldNotFetchCookiesException extends RuntimeException { - public CouldNotFetchCookiesException(Throwable cause) { + public CouldNotFetchCookiesException(Throwable cause) { - super(cause); - } + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFindTimeZoneException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFindTimeZoneException.java index 5bb9c44f..d8446301 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFindTimeZoneException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFindTimeZoneException.java @@ -1,3 +1,4 @@ package com.dke.data.agrirouter.api.exception; -public class CouldNotFindTimeZoneException extends RuntimeException {} +public class CouldNotFindTimeZoneException extends RuntimeException { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java index 437f6430..cce43c45 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java @@ -1,13 +1,15 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the registration code could not be obtained. */ +/** + * Will be thrown if the registration code could not be obtained. + */ public class CouldNotGetRegistrationCodeException extends RuntimeException { - public CouldNotGetRegistrationCodeException(Throwable cause) { - super(cause); - } + public CouldNotGetRegistrationCodeException(Throwable cause) { + super(cause); + } - public CouldNotGetRegistrationCodeException(String message, Throwable cause) { - super(message, cause); - } + public CouldNotGetRegistrationCodeException(String message, Throwable cause) { + super(message, cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java index 03e80a27..39646c3c 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java @@ -1,7 +1,7 @@ package com.dke.data.agrirouter.api.exception; public class CouldNotOffboardVirtualCommunicationUnitException extends RuntimeException { - public CouldNotOffboardVirtualCommunicationUnitException(String message) { - super(message); - } + public CouldNotOffboardVirtualCommunicationUnitException(String message) { + super(message); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOnboardVirtualCommunicationUnitException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOnboardVirtualCommunicationUnitException.java index 49d74b99..111ffaee 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOnboardVirtualCommunicationUnitException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOnboardVirtualCommunicationUnitException.java @@ -1,7 +1,7 @@ package com.dke.data.agrirouter.api.exception; public class CouldNotOnboardVirtualCommunicationUnitException extends RuntimeException { - public CouldNotOnboardVirtualCommunicationUnitException(String message) { - super(message); - } + public CouldNotOnboardVirtualCommunicationUnitException(String message) { + super(message); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotSendMqttMessageException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotSendMqttMessageException.java index 95f14ec8..5389b795 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotSendMqttMessageException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotSendMqttMessageException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Exception to rise if the MQTT message could not be send. */ +/** + * Exception to rise if the MQTT message could not be send. + */ public class CouldNotSendMqttMessageException extends RuntimeException { - public CouldNotSendMqttMessageException(Throwable cause) { - super(cause); - } + public CouldNotSendMqttMessageException(Throwable cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySecuredOnboardingRequestException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySecuredOnboardingRequestException.java index 8f3b9b4a..2e412435 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySecuredOnboardingRequestException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySecuredOnboardingRequestException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the request can not be verified. */ +/** + * Will be thrown if the request can not be verified. + */ public class CouldNotVerifySecuredOnboardingRequestException extends RuntimeException { - public CouldNotVerifySecuredOnboardingRequestException(Exception cause) { - super(cause); - } + public CouldNotVerifySecuredOnboardingRequestException(Exception cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySignatureException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySignatureException.java index 8f15e437..dc501456 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySignatureException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotVerifySignatureException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the keystore can not be created. */ +/** + * Will be thrown if the keystore can not be created. + */ public class CouldNotVerifySignatureException extends RuntimeException { - public CouldNotVerifySignatureException(Exception cause) { - super(cause); - } + public CouldNotVerifySignatureException(Exception cause) { + super(cause); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/ForbiddenRequestException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/ForbiddenRequestException.java index a5a81b50..4bef8126 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/ForbiddenRequestException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/ForbiddenRequestException.java @@ -1,4 +1,7 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the HTTP status is 503. */ -public class ForbiddenRequestException extends RuntimeException {} +/** + * Will be thrown if the HTTP status is 503. + */ +public class ForbiddenRequestException extends RuntimeException { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java index 72ec0928..943391bd 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java @@ -1,20 +1,22 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if any kind of parameter attribute is invalid due to the given metrics. */ +/** + * Will be thrown if any kind of parameter attribute is invalid due to the given metrics. + */ public class IllegalParameterDefinitionException extends RuntimeException { - private String message; + private String message; - public IllegalParameterDefinitionException() { - this(""); - } + public IllegalParameterDefinitionException() { + this(""); + } - public IllegalParameterDefinitionException(String message) { - this.message = message; - } + public IllegalParameterDefinitionException(String message) { + this.message = message; + } - @Override - public String getMessage() { - return "There are validation errors. Please check your parameters.\n\n" + message; - } + @Override + public String getMessage() { + return "There are validation errors. Please check your parameters.\n\n" + message; + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidHttpStatusException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidHttpStatusException.java index 0fd3f40c..e8f23429 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidHttpStatusException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidHttpStatusException.java @@ -1,9 +1,11 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the expected status does not match the current status. */ +/** + * Will be thrown if the expected status does not match the current status. + */ public class InvalidHttpStatusException extends RuntimeException { - public InvalidHttpStatusException(int status) { - super("Did not expect HTTP status " + status + "."); - } + public InvalidHttpStatusException(int status) { + super("Did not expect HTTP status " + status + "."); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidSignatureException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidSignatureException.java index e7ed2fbf..c00034d1 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidSignatureException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidSignatureException.java @@ -1,3 +1,4 @@ package com.dke.data.agrirouter.api.exception; -public class InvalidSignatureException extends RuntimeException {} +public class InvalidSignatureException extends RuntimeException { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidUrlForRequestException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidUrlForRequestException.java index 2e7caea9..b6fea7ea 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidUrlForRequestException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/InvalidUrlForRequestException.java @@ -1,4 +1,7 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if there is an invalid URL within a request. */ -public class InvalidUrlForRequestException extends RuntimeException {} +/** + * Will be thrown if there is an invalid URL within a request. + */ +public class InvalidUrlForRequestException extends RuntimeException { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/OnboardingException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/OnboardingException.java index c879b8b4..6cd45bb7 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/OnboardingException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/OnboardingException.java @@ -1,26 +1,27 @@ package com.dke.data.agrirouter.api.exception; import com.dke.data.agrirouter.api.dto.onboard.OnboardingError; + import java.util.Optional; public class OnboardingException extends RuntimeException { - private final OnboardingError onboardingError; + private final OnboardingError onboardingError; - @SuppressWarnings("OptionalUsedAsFieldOrParameterType") - public OnboardingException(Optional onboardingError) { - this.onboardingError = onboardingError.orElse(null); - } + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public OnboardingException(Optional onboardingError) { + this.onboardingError = onboardingError.orElse(null); + } - public OnboardingError getOnboardingError() { - return onboardingError; - } + public OnboardingError getOnboardingError() { + return onboardingError; + } - @Override - public String getMessage() { - return null != onboardingError - ? String.format( - "There was an error '%s' during the onboarding process, details were '%s'", - onboardingError.getError().getCode(), onboardingError.getError().message) - : "There was an error during the onboarding process."; - } + @Override + public String getMessage() { + return null != onboardingError + ? String.format( + "There was an error '%s' during the onboarding process, details were '%s'", + onboardingError.getError().getCode(), onboardingError.getError().message) + : "There was an error during the onboarding process."; + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java index 2ea74318..80125363 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java @@ -1,26 +1,27 @@ package com.dke.data.agrirouter.api.exception; import com.dke.data.agrirouter.api.dto.revoke.RevokingError; + import java.util.Optional; public class RevokingException extends RuntimeException { - private final RevokingError revokingError; + private final RevokingError revokingError; - @SuppressWarnings("OptionalUsedAsFieldOrParameterType") - public RevokingException(Optional lastError) { - this.revokingError = lastError.orElse(null); - } + @SuppressWarnings("OptionalUsedAsFieldOrParameterType") + public RevokingException(Optional lastError) { + this.revokingError = lastError.orElse(null); + } - public RevokingError getRevokingError() { - return revokingError; - } + public RevokingError getRevokingError() { + return revokingError; + } - @Override - public String getMessage() { - return null != revokingError - ? String.format( - "There was an error '%s' during the revoking, details were '%s'", - revokingError.getError().getCode(), revokingError.getError().message) - : "There was an error during the revoking process."; - } + @Override + public String getMessage() { + return null != revokingError + ? String.format( + "There was an error '%s' during the revoking, details were '%s'", + revokingError.getError().getCode(), revokingError.getError().message) + : "There was an error during the revoking process."; + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnauthorizedRequestException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnauthorizedRequestException.java index 15b800c9..c8aba288 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnauthorizedRequestException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnauthorizedRequestException.java @@ -4,4 +4,5 @@ * Will be thrown if there was an HTTP status 401 which can indicate invalid client id and secret, * missing bearer token or an invalid SSL cert. */ -public class UnauthorizedRequestException extends RuntimeException {} +public class UnauthorizedRequestException extends RuntimeException { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnexpectedHttpStatusException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnexpectedHttpStatusException.java index bcbdc4d5..bf9b4bc1 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnexpectedHttpStatusException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/UnexpectedHttpStatusException.java @@ -1,13 +1,15 @@ package com.dke.data.agrirouter.api.exception; -/** Will be thrown if the expected status does not match the current status. */ +/** + * Will be thrown if the expected status does not match the current status. + */ public class UnexpectedHttpStatusException extends RuntimeException { - public UnexpectedHttpStatusException(int status, int exceptedHttpStatus) { - super( - "Did not expect this HTTP status. Status was " - + status - + ", expected status was " - + exceptedHttpStatus); - } + public UnexpectedHttpStatusException(int status, int exceptedHttpStatus) { + super( + "Did not expect this HTTP status. Status was " + + status + + ", expected status was " + + exceptedHttpStatus); + } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java index 080eda99..45e7b2e5 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java @@ -1,15 +1,16 @@ package com.dke.data.agrirouter.api.service; -import static java.lang.String.valueOf; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.Marker; import org.slf4j.MarkerFactory; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static java.lang.String.valueOf; + /** * Interface to encapsulate logging capabilities. Logging will be done using LOG4J2, ruleset should * be: @@ -20,42 +21,44 @@ *
  • Log method result on level TRACE. *
  • Log method exit on level DEBUG. * - * + *

    * Please be aware of the rule "Log or throw" regarding exceptions. */ public interface HasLogger { - Marker METHOD_BEGIN = MarkerFactory.getMarker("METHOD_BEGIN"); - Marker METHOD_END = MarkerFactory.getMarker("METHOD_END"); + Marker METHOD_BEGIN = MarkerFactory.getMarker("METHOD_BEGIN"); + Marker METHOD_END = MarkerFactory.getMarker("METHOD_END"); - Map loggerCache = new HashMap<>(); + Map loggerCache = new HashMap<>(); + + /** + * Returns the native LOG4J2 logger for further logging. + * + * @return - + */ + default Logger getNativeLogger() { + if (null == loggerCache.get(this.getClass().getName())) { + final Logger logger = LoggerFactory.getLogger(this.getClass()); + loggerCache.put(this.getClass().getName(), logger); + } + return loggerCache.get(this.getClass().getName()); + } + + /** + * Log method begin. Will log all given parameters as well. + */ + default void logMethodBegin(Object... objects) { + getNativeLogger().debug(METHOD_BEGIN, "BEGIN | Start of method."); + Arrays.stream(objects).forEach(o -> getNativeLogger().trace(valueOf(o))); + } - /** - * Returns the native LOG4J2 logger for further logging. - * - * @return - - */ - default Logger getNativeLogger() { - if (null == loggerCache.get(this.getClass().getName())) { - final Logger logger = LoggerFactory.getLogger(this.getClass()); - loggerCache.put(this.getClass().getName(), logger); + /** + * Log method exit. Will log all given results as well. + * + * @param objects The results of the method. + */ + default void logMethodEnd(Object... objects) { + Arrays.stream(objects).forEach(o -> getNativeLogger().trace(valueOf(o))); + getNativeLogger().debug(METHOD_END, "END | End of method."); } - return loggerCache.get(this.getClass().getName()); - } - - /** Log method begin. Will log all given parameters as well. */ - default void logMethodBegin(Object... objects) { - getNativeLogger().debug(METHOD_BEGIN, "BEGIN | Start of method."); - Arrays.stream(objects).forEach(o -> getNativeLogger().trace(valueOf(o))); - } - - /** - * Log method exit. Will log all given results as well. - * - * @param objects The results of the method. - */ - default void logMethodEnd(Object... objects) { - Arrays.stream(objects).forEach(o -> getNativeLogger().trace(valueOf(o))); - getNativeLogger().debug(METHOD_END, "END | End of method."); - } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java index 5959b4b0..089d4e36 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java @@ -1,92 +1,99 @@ package com.dke.data.agrirouter.api.service; import com.dke.data.agrirouter.api.exception.IllegalParameterDefinitionException; -import java.util.Collection; import org.apache.commons.lang3.StringUtils; -/** Parameter validation using bean validation. */ +import java.util.Collection; + +/** + * Parameter validation using bean validation. + */ public interface ParameterValidation extends HasLogger { - /** - * Validation of the parameters. If there are any constraint violations, there will be a - * exception. - * - * @throws IllegalParameterDefinitionException - - */ - default void validate() { - getNativeLogger().debug("Validating parameters."); - getNativeLogger().trace("Technical validation."); - this.technicalValidation(); - getNativeLogger().trace("Business validation."); - this.businessValidation(); - } + /** + * Validation of the parameters. If there are any constraint violations, there will be a + * exception. + * + * @throws IllegalParameterDefinitionException - + */ + default void validate() { + getNativeLogger().debug("Validating parameters."); + getNativeLogger().trace("Technical validation."); + this.technicalValidation(); + getNativeLogger().trace("Business validation."); + this.businessValidation(); + } - /** Technical validation. Empty by default. */ - default void technicalValidation() { - // - } + /** + * Technical validation. Empty by default. + */ + default void technicalValidation() { + // + } - /** Business validation. Empty by default. */ - default void businessValidation() { - // - } + /** + * Business validation. Empty by default. + */ + default void businessValidation() { + // + } - /** - * Rise an exception if there has to be at least one valid parameter. - * - * @param message - - */ - default void rise(String message, String... parameterNames) { - final String joinedParametersNames = String.join(",", parameterNames); - throw new IllegalParameterDefinitionException( - String.format( - "At least one of the following parameters has to be defined [%s] was not defined correctly, please check the values. '%s'.", - joinedParametersNames, message)); - } + /** + * Rise an exception if there has to be at least one valid parameter. + * + * @param message - + */ + default void rise(String message, String... parameterNames) { + final String joinedParametersNames = String.join(",", parameterNames); + throw new IllegalParameterDefinitionException( + String.format( + "At least one of the following parameters has to be defined [%s] was not defined correctly, please check the values. '%s'.", + joinedParametersNames, message)); + } - /** - * Check for null values. - * - * @param o - - */ - default void nullCheck(String parameterName, Object o) { - if (null == o) { - this.rise( - String.format( - "The parameter '%s' should not have been null, please check your values.", - parameterName), - parameterName); + /** + * Check for null values. + * + * @param o - + */ + default void nullCheck(String parameterName, Object o) { + if (null == o) { + this.rise( + String.format( + "The parameter '%s' should not have been null, please check your values.", + parameterName), + parameterName); + } } - } - /** - * Check for null or empty values. - * - * @param s - - */ - default void isBlank(String parameterName, String s) { - if (StringUtils.isBlank(s)) { - this.rise( - String.format( - "The parameter '%s' should not have been blank, please check your values.", - parameterName), - parameterName); + /** + * Check for null or empty values. + * + * @param s - + */ + default void isBlank(String parameterName, String s) { + if (StringUtils.isBlank(s)) { + this.rise( + String.format( + "The parameter '%s' should not have been blank, please check your values.", + parameterName), + parameterName); + } } - } - /** - * Check for null or empty values. - * - * @param c - - */ - default void nullOrEmpty(String parameterName, Collection c) { - nullCheck(parameterName, c); - if (c.isEmpty()) { - this.rise( - String.format( - "The parameter '%s' should not have been empty, please check your values.", - parameterName), - parameterName); + /** + * Check for null or empty values. + * + * @param c - + */ + default void nullOrEmpty(String parameterName, Collection c) { + nullCheck(parameterName, c); + if (c.isEmpty()) { + this.rise( + String.format( + "The parameter '%s' should not have been empty, please check your values.", + parameterName), + parameterName); + } } - } } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java index 4c3e5d8b..e885f147 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java @@ -3,17 +3,18 @@ import com.dke.data.agrirouter.api.dto.revoke.RevokingError; import com.dke.data.agrirouter.api.enums.RevokeResponse; import com.dke.data.agrirouter.api.service.parameters.RevokeParameters; + import java.util.Optional; public interface RevokingService { - RevokeResponse revoke(RevokeParameters revokeParameters); + RevokeResponse revoke(RevokeParameters revokeParameters); - /** - * The last error as RevokingError-Object, if the last revoking failed as object read from the - * JSON String - * - * @return The last error as RevokingError-Object - */ - Optional getLastRevokingError(String errorResponse); + /** + * The last error as RevokingError-Object, if the last revoking failed as object read from the + * JSON String + * + * @return The last error as RevokingError-Object + */ + Optional getLastRevokingError(String errorResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/SendMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/SendMessageService.java index 51f2b717..65674af6 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/SendMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/SendMessageService.java @@ -1,23 +1,26 @@ package com.dke.data.agrirouter.api.service.messaging; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; + import java.util.concurrent.CompletableFuture; -/** Service for sending a message */ +/** + * Service for sending a message + */ public interface SendMessageService { - /** - * Sending a message - * - * @param sendMessageParameters - - */ - void send(SendMessageParameters sendMessageParameters); + /** + * Sending a message + * + * @param sendMessageParameters - + */ + void send(SendMessageParameters sendMessageParameters); - /** - * Sending a message - * - * @param sendMessageParameters - - * @return - - */ - CompletableFuture sendAsync(SendMessageParameters sendMessageParameters); + /** + * Sending a message + * + * @param sendMessageParameters - + * @return - + */ + CompletableFuture sendAsync(SendMessageParameters sendMessageParameters); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodeMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodeMessageService.java index 7372e3e7..58af7ced 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodeMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodeMessageService.java @@ -5,32 +5,34 @@ import com.google.protobuf.Any; import com.google.protobuf.ByteString; -/** Decoding of messages. */ +/** + * Decoding of messages. + */ public interface DecodeMessageService { - /** - * Decode a given message using the internal protobuf implementation. - * - * @param encodedResponse - - * @return - - */ - DecodeMessageResponse decode(String encodedResponse); + /** + * Decode a given message using the internal protobuf implementation. + * + * @param encodedResponse - + * @return - + */ + DecodeMessageResponse decode(String encodedResponse); - /** - * Decoding a given message using the internal protobuf implementation. - * - * @param message - - * @return - - */ - @Deprecated - MessageOuterClass.Message decode(ByteString message); + /** + * Decoding a given message using the internal protobuf implementation. + * + * @param message - + * @return - + */ + @Deprecated + MessageOuterClass.Message decode(ByteString message); - /** - * Decoding a given Any object containing the messages from the AR using the internal protobuf - * implementation. - * - * @param any - - * @return - - */ - MessageOuterClass.Messages decode(Any any); + /** + * Decoding a given Any object containing the messages from the AR using the internal protobuf + * implementation. + * + * @param any - + * @return - + */ + MessageOuterClass.Messages decode(Any any); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodePushNotificationService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodePushNotificationService.java index b98fa0d2..c70db2d0 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodePushNotificationService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/DecodePushNotificationService.java @@ -4,11 +4,11 @@ public interface DecodePushNotificationService { - /** - * Decoding a given push notification using the intenral protobuf implementation. - * - * @param message - - * @return - - */ - PushNotificationOuterClass.PushNotification decode(String message); + /** + * Decoding a given push notification using the intenral protobuf implementation. + * + * @param message - + * @return - + */ + PushNotificationOuterClass.PushNotification decode(String message); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/EncodeMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/EncodeMessageService.java index 90dcb350..a2e049fb 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/EncodeMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/EncodeMessageService.java @@ -4,39 +4,42 @@ import com.dke.data.agrirouter.api.service.parameters.MessageHeaderParameters; import com.dke.data.agrirouter.api.service.parameters.MessageParameterTuple; import com.dke.data.agrirouter.api.service.parameters.PayloadParameters; + import java.util.List; -/** Encoding of messages. */ +/** + * Encoding of messages. + */ public interface EncodeMessageService { - /** - * Encode a given message using the internal protobuf encoding mechanism. - * - * @param messageHeaderParameters - - * @param payloadParameters - - * @return - - */ - String encode( - MessageHeaderParameters messageHeaderParameters, PayloadParameters payloadParameters); + /** + * Encode a given message using the internal protobuf encoding mechanism. + * + * @param messageHeaderParameters - + * @param payloadParameters - + * @return - + */ + String encode( + MessageHeaderParameters messageHeaderParameters, PayloadParameters payloadParameters); - /** - * Encode a number of messages. - * - * @param messageParameterTuples - - * @return - - */ - List encode(List messageParameterTuples); + /** + * Encode a number of messages. + * + * @param messageParameterTuples - + * @return - + */ + List encode(List messageParameterTuples); - /** - * Chunk a raw message if necessary. The chunk information and all IDs will be set by the SDK and - * are no longer in control of the application. - * - * @param messageHeaderParameters - - * @param payloadParameters - - * @return - - */ - List chunkAndBase64EncodeEachChunk( - MessageHeaderParameters messageHeaderParameters, - PayloadParameters payloadParameters, - OnboardingResponse onboardingResponse); + /** + * Chunk a raw message if necessary. The chunk information and all IDs will be set by the SDK and + * are no longer in control of the application. + * + * @param messageHeaderParameters - + * @param payloadParameters - + * @return - + */ + List chunkAndBase64EncodeEachChunk( + MessageHeaderParameters messageHeaderParameters, + PayloadParameters payloadParameters, + OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/MessageDecoder.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/MessageDecoder.java index cd25efe5..c7d33e82 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/MessageDecoder.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/encoding/MessageDecoder.java @@ -6,13 +6,13 @@ public interface MessageDecoder { - default T decode(ByteString message) { - try { - return unsafeDecode(message); - } catch (InvalidProtocolBufferException e) { - throw new CouldNotDecodeMessageException(e); + default T decode(ByteString message) { + try { + return unsafeDecode(message); + } catch (InvalidProtocolBufferException e) { + throw new CouldNotDecodeMessageException(e); + } } - } - T unsafeDecode(ByteString message) throws InvalidProtocolBufferException; + T unsafeDecode(ByteString message) throws InvalidProtocolBufferException; } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOffboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOffboardingService.java index 392e7c8c..0529bdcd 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOffboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOffboardingService.java @@ -2,4 +2,5 @@ import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters; -public interface CloudOffboardingService extends MessagingService {} +public interface CloudOffboardingService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOnboardingService.java index 829d79de..bcb581db 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/CloudOnboardingService.java @@ -2,4 +2,5 @@ import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters; -public interface CloudOnboardingService extends MessagingService {} +public interface CloudOnboardingService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java index 1863fa96..eba66bfc 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java @@ -6,23 +6,23 @@ public interface DeleteMessageService extends MessagingService { - /** - * Delete all messages in the feed. The function will delete all messages based on the time - * interval of 4 weeks (which is the maximum of time the messages are stored within the - * agrirouter). - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToDeleteAll(OnboardingResponse onboardingResponse); + /** + * Delete all messages in the feed. The function will delete all messages based on the time + * interval of 4 weeks (which is the maximum of time the messages are stored within the + * agrirouter). + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToDeleteAll(OnboardingResponse onboardingResponse); - /** - * Delete all messages in the feed. The function will delete all messages based on the time - * interval of 4 weeks (which is the maximum of time the messages are stored within the - * agrirouter). - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - HttpAsyncMessageSendingResult sendMessageToDeleteAllAsync(OnboardingResponse onboardingResponse); + /** + * Delete all messages in the feed. The function will delete all messages based on the time + * interval of 4 weeks (which is the maximum of time the messages are stored within the + * agrirouter). + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + HttpAsyncMessageSendingResult sendMessageToDeleteAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/FetchMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/FetchMessageService.java index 2220bea8..7e4e81f8 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/FetchMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/FetchMessageService.java @@ -4,57 +4,60 @@ import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.parameters.FetchMessageParameters; + import java.util.List; import java.util.Optional; -/** Service for fetching messages for the given endpoint. */ +/** + * Service for fetching messages for the given endpoint. + */ public interface FetchMessageService { - /** - * Fetch messages using the given onboarding response using the number of tries and the given - * interval. - * - * @param onboardingResponse - - * @param maxTries - - * @param interval - - * @return Native response. - */ - @Deprecated - Optional> fetch( - OnboardingResponse onboardingResponse, int maxTries, long interval); - - /** - * Fetch messages using the given parameters using the number of tries and the given interval. - * - * @param parameters - - * @param maxTries - - * @param interval - - * @return Native response. - */ - @Deprecated - Optional> fetch( - FetchMessageParameters parameters, int maxTries, long interval); - - /** - * Fetch messages using the given onboarding response using the number of tries and the given - * interval. - * - * @param onboardingResponse - - * @param cancellationToken - - * @return Native response. - */ - Optional> fetch( - OnboardingResponse onboardingResponse, CancellationToken cancellationToken); - - /** - * Fetch messages using the given parameters using the number of tries and the given interval. - * - * @param parameters - - * @param cancellationToken - - * @return Native response. - */ - Optional> fetch( - FetchMessageParameters parameters, CancellationToken cancellationToken); - - FetchMessageResponse parseJson(byte[] json); + /** + * Fetch messages using the given onboarding response using the number of tries and the given + * interval. + * + * @param onboardingResponse - + * @param maxTries - + * @param interval - + * @return Native response. + */ + @Deprecated + Optional> fetch( + OnboardingResponse onboardingResponse, int maxTries, long interval); + + /** + * Fetch messages using the given parameters using the number of tries and the given interval. + * + * @param parameters - + * @param maxTries - + * @param interval - + * @return Native response. + */ + @Deprecated + Optional> fetch( + FetchMessageParameters parameters, int maxTries, long interval); + + /** + * Fetch messages using the given onboarding response using the number of tries and the given + * interval. + * + * @param onboardingResponse - + * @param cancellationToken - + * @return Native response. + */ + Optional> fetch( + OnboardingResponse onboardingResponse, CancellationToken cancellationToken); + + /** + * Fetch messages using the given parameters using the number of tries and the given interval. + * + * @param parameters - + * @param cancellationToken - + * @return Native response. + */ + Optional> fetch( + FetchMessageParameters parameters, CancellationToken cancellationToken); + + FetchMessageResponse parseJson(byte[] json); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java index e052a4cf..f5c21399 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java @@ -6,36 +6,36 @@ public interface ListEndpointsService extends MessagingService { - /** - * List all endpoints with a route to the dedicated endpoint. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse); + /** + * List all endpoints with a route to the dedicated endpoint. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse); - /** - * List all endpoints for the account, even those that do not have a route. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToListAll(OnboardingResponse onboardingResponse); + /** + * List all endpoints for the account, even those that do not have a route. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToListAll(OnboardingResponse onboardingResponse); - /** - * List all endpoints with a route to the dedicated endpoint. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( - OnboardingResponse onboardingResponse); + /** + * List all endpoints with a route to the dedicated endpoint. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( + OnboardingResponse onboardingResponse); - /** - * List all endpoints for the account, even those that do not have a route. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - HttpAsyncMessageSendingResult sendMessageToListAllAsync(OnboardingResponse onboardingResponse); + /** + * List all endpoints for the account, even those that do not have a route. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + HttpAsyncMessageSendingResult sendMessageToListAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageConfirmationService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageConfirmationService.java index 88104c1a..5959c024 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageConfirmationService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageConfirmationService.java @@ -3,4 +3,5 @@ import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters; public interface MessageConfirmationService - extends MessagingService {} + extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java index 8fdcbee2..e134b160 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java @@ -7,25 +7,25 @@ import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; public interface MessageHeaderQueryService - extends MessagingService, + extends MessagingService, MessageDecoder { - /** - * Query all message headers as default function. The query will be based on a time period since - * message ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToQueryAll(OnboardingResponse onboardingResponse); + /** + * Query all message headers as default function. The query will be based on a time period since + * message ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToQueryAll(OnboardingResponse onboardingResponse); - /** - * Query all message headers as async default function. The query will be based on a time period - * since message ID filtering or sender filtering can be achieved using the default message - * sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - HttpAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); + /** + * Query all message headers as async default function. The query will be based on a time period + * since message ID filtering or sender filtering can be achieved using the default message + * sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + HttpAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java index c8a133d6..edd3388e 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java @@ -7,24 +7,24 @@ import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; public interface MessageQueryService - extends MessagingService, + extends MessagingService, MessageDecoder { - /** - * Query all messages as default function. The query will be based on a time period since message - * ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToQueryAll(OnboardingResponse onboardingResponse); + /** + * Query all messages as default function. The query will be based on a time period since message + * ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToQueryAll(OnboardingResponse onboardingResponse); - /** - * Query all messages as async default function. The query will be based on a time period since - * message ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - HttpAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); + /** + * Query all messages as async default function. The query will be based on a time period since + * message ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + HttpAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessagingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessagingService.java index 8411554d..ef6f7b37 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessagingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessagingService.java @@ -9,19 +9,19 @@ */ public interface MessagingService { - /** - * Send a synchronous message. - * - * @param parameters - - * @return The ID of the message. - */ - String send(T parameters); + /** + * Send a synchronous message. + * + * @param parameters - + * @return The ID of the message. + */ + String send(T parameters); - /** - * Send an asynchronous message. - * - * @param parameters - - * @return The completable future containing the possible result. - */ - HttpAsyncMessageSendingResult sendAsync(T parameters); + /** + * Send an asynchronous message. + * + * @param parameters - + * @return The completable future containing the possible result. + */ + HttpAsyncMessageSendingResult sendAsync(T parameters); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetCapabilityService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetCapabilityService.java index a68ba1cb..d65aabc9 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetCapabilityService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetCapabilityService.java @@ -2,5 +2,8 @@ import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters; -/** Service interface set capabilities. */ -public interface SetCapabilityService extends MessagingService {} +/** + * Service interface set capabilities. + */ +public interface SetCapabilityService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetSubscriptionService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetSubscriptionService.java index c3fc1122..c6de56bd 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetSubscriptionService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/SetSubscriptionService.java @@ -2,5 +2,8 @@ import com.dke.data.agrirouter.api.service.parameters.SetSubscriptionParameters; -/** Service to set the subscriptions for an endpoint. */ -public interface SetSubscriptionService extends MessagingService {} +/** + * Service to set the subscriptions for an endpoint. + */ +public interface SetSubscriptionService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOffboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOffboardingService.java index ca816643..4a9055bf 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOffboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOffboardingService.java @@ -2,4 +2,5 @@ import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters; -public interface CloudOffboardingService extends MessagingService {} +public interface CloudOffboardingService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOnboardingService.java index 85217000..fa60b880 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/CloudOnboardingService.java @@ -2,4 +2,5 @@ import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters; -public interface CloudOnboardingService extends MessagingService {} +public interface CloudOnboardingService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java index aee24433..00599e27 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java @@ -6,23 +6,23 @@ public interface DeleteMessageService extends MessagingService { - /** - * Delete all messages in the feed. The function will delete all messages based on the time - * interval of 4 weeks (which is the maximum of time the messages are stored within the - * agrirouter). - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToDeleteAll(OnboardingResponse onboardingResponse); + /** + * Delete all messages in the feed. The function will delete all messages based on the time + * interval of 4 weeks (which is the maximum of time the messages are stored within the + * agrirouter). + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToDeleteAll(OnboardingResponse onboardingResponse); - /** - * Delete all messages in the feed. The function will delete all messages based on the time - * interval of 4 weeks (which is the maximum of time the messages are stored within the - * agrirouter). - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - MqttAsyncMessageSendingResult sendMessageToDeleteAllAsync(OnboardingResponse onboardingResponse); + /** + * Delete all messages in the feed. The function will delete all messages based on the time + * interval of 4 weeks (which is the maximum of time the messages are stored within the + * agrirouter). + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + MqttAsyncMessageSendingResult sendMessageToDeleteAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java index 982d100e..00562de6 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java @@ -6,36 +6,36 @@ public interface ListEndpointsService extends MessagingService { - /** - * List all endpoints with a route to the dedicated endpoint. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse); + /** + * List all endpoints with a route to the dedicated endpoint. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse); - /** - * List all endpoints for the account, even those that do not have a route. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToListAll(OnboardingResponse onboardingResponse); + /** + * List all endpoints for the account, even those that do not have a route. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToListAll(OnboardingResponse onboardingResponse); - /** - * List all endpoints with a route to the dedicated endpoint. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( - OnboardingResponse onboardingResponse); + /** + * List all endpoints with a route to the dedicated endpoint. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( + OnboardingResponse onboardingResponse); - /** - * List all endpoints for the account, even those that do not have a route. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - MqttAsyncMessageSendingResult sendMessageToListAllAsync(OnboardingResponse onboardingResponse); + /** + * List all endpoints for the account, even those that do not have a route. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + MqttAsyncMessageSendingResult sendMessageToListAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageConfirmationService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageConfirmationService.java index 3c04238b..7e58fc55 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageConfirmationService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageConfirmationService.java @@ -3,4 +3,5 @@ import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters; public interface MessageConfirmationService - extends MessagingService {} + extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java index f51cf491..6c508a0a 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java @@ -7,25 +7,25 @@ import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; public interface MessageHeaderQueryService - extends MessagingService, + extends MessagingService, MessageDecoder { - /** - * Query all message headers as default function. The query will be based on a time period since - * message ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToQueryAll(OnboardingResponse onboardingResponse); + /** + * Query all message headers as default function. The query will be based on a time period since + * message ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToQueryAll(OnboardingResponse onboardingResponse); - /** - * Query all message headers as async default function. The query will be based on a time period - * since message ID filtering or sender filtering can be achieved using the default message - * sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - MqttAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); + /** + * Query all message headers as async default function. The query will be based on a time period + * since message ID filtering or sender filtering can be achieved using the default message + * sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + MqttAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java index a721707a..03b8dd00 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java @@ -7,24 +7,24 @@ import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; public interface MessageQueryService - extends MessagingService, + extends MessagingService, MessageDecoder { - /** - * Query all messages as default function. The query will be based on a time period since message - * ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - String sendMessageToQueryAll(OnboardingResponse onboardingResponse); + /** + * Query all messages as default function. The query will be based on a time period since message + * ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + String sendMessageToQueryAll(OnboardingResponse onboardingResponse); - /** - * Query all messages as async default function. The query will be based on a time period since - * message ID filtering or sender filtering can be achieved using the default message sending. - * - * @param onboardingResponse The onboard response for the endpoint. - * @return The message ID. - */ - MqttAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); + /** + * Query all messages as async default function. The query will be based on a time period since + * message ID filtering or sender filtering can be achieved using the default message sending. + * + * @param onboardingResponse The onboard response for the endpoint. + * @return The message ID. + */ + MqttAsyncMessageSendingResult sendMessageToQueryAllAsync(OnboardingResponse onboardingResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessagingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessagingService.java index 36300e66..c2ebca41 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessagingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessagingService.java @@ -9,19 +9,19 @@ */ public interface MessagingService { - /** - * Send a synchronous message. - * - * @param parameters - - * @return The ID of the message. - */ - String send(T parameters); + /** + * Send a synchronous message. + * + * @param parameters - + * @return The ID of the message. + */ + String send(T parameters); - /** - * Send an asynchronous message. - * - * @param parameters - - * @return The completable future containing the possible result. - */ - MqttAsyncMessageSendingResult sendAsync(T parameters); + /** + * Send an asynchronous message. + * + * @param parameters - + * @return The completable future containing the possible result. + */ + MqttAsyncMessageSendingResult sendAsync(T parameters); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetCapabilityService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetCapabilityService.java index 2a1010c7..e189f923 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetCapabilityService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetCapabilityService.java @@ -2,5 +2,8 @@ import com.dke.data.agrirouter.api.service.parameters.SetCapabilitiesParameters; -/** Service interface set capabilities. */ -public interface SetCapabilityService extends MessagingService {} +/** + * Service interface set capabilities. + */ +public interface SetCapabilityService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetSubscriptionService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetSubscriptionService.java index e01c5698..84559a37 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetSubscriptionService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/SetSubscriptionService.java @@ -2,5 +2,8 @@ import com.dke.data.agrirouter.api.service.parameters.SetSubscriptionParameters; -/** Service to set the subscriptions for an endpoint. */ -public interface SetSubscriptionService extends MessagingService {} +/** + * Service to set the subscriptions for an endpoint. + */ +public interface SetSubscriptionService extends MessagingService { +} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java index 4f4251c0..c48b26aa 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java @@ -4,27 +4,30 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.parameters.AuthorizationRequestParameters; import com.dke.data.agrirouter.api.service.parameters.OnboardingParameters; + import java.util.Optional; -/** Service for the onboarding process. */ +/** + * Service for the onboarding process. + */ public interface OnboardingService { - /** - * Oboarding of an endpoint. - * - * @param parameters- - * @return - - */ - OnboardingResponse onboard(OnboardingParameters parameters); + /** + * Oboarding of an endpoint. + * + * @param parameters- + * @return - + */ + OnboardingResponse onboard(OnboardingParameters parameters); - String generateAuthorizationUrl(AuthorizationRequestParameters parameters); + String generateAuthorizationUrl(AuthorizationRequestParameters parameters); - /** - * The last error as OnboardingError-Object, if the last onboarding failed as object read from the - * JSON String - * - * @param errorResponse - - * @return The last error as OnboardingError-Object - */ - Optional getLastOnboardingError(String errorResponse); + /** + * The last error as OnboardingError-Object, if the last onboarding failed as object read from the + * JSON String + * + * @param errorResponse - + * @return The last error as OnboardingError-Object + */ + Optional getLastOnboardingError(String errorResponse); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java index 4cb148b1..fe5f8d47 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java @@ -3,20 +3,23 @@ import com.dke.data.agrirouter.api.dto.registrationrequest.secured.AuthorizationResponse; import com.dke.data.agrirouter.api.dto.registrationrequest.secured.AuthorizationResponseToken; import com.dke.data.agrirouter.api.service.parameters.AuthorizationRequestParameters; + import java.net.MalformedURLException; import java.net.URL; -/** Service for the registration request. */ +/** + * Service for the registration request. + */ public interface AuthorizationRequestService { - String getAuthorizationRequestURL(AuthorizationRequestParameters authorizationRequestParameters); + String getAuthorizationRequestURL(AuthorizationRequestParameters authorizationRequestParameters); - AuthorizationResponse extractAuthorizationResponseFromQuery(String query); + AuthorizationResponse extractAuthorizationResponseFromQuery(String query); - AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl); + AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl); - AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) - throws MalformedURLException; + AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) + throws MalformedURLException; - AuthorizationResponseToken decodeToken(String token); + AuthorizationResponseToken decodeToken(String token); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java index 5c8a7218..6657e968 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java @@ -4,40 +4,43 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.parameters.AuthorizationRequestParameters; import com.dke.data.agrirouter.api.service.parameters.SecuredOnboardingParameters; + import java.util.Optional; -/** Service for the onboarding process. */ +/** + * Service for the onboarding process. + */ public interface OnboardingService { - /** - * Oboarding of an endpoint. - * - * @param parameters- - * @return - - */ - OnboardingResponse onboard(SecuredOnboardingParameters parameters); + /** + * Oboarding of an endpoint. + * + * @param parameters- + * @return - + */ + OnboardingResponse onboard(SecuredOnboardingParameters parameters); - /** - * Verify the onboarding request to ensure correct signature and hashing. - * - * @param parameters - - */ - void verify(SecuredOnboardingParameters parameters); + /** + * Verify the onboarding request to ensure correct signature and hashing. + * + * @param parameters - + */ + void verify(SecuredOnboardingParameters parameters); - /** - * Generating the authorization URL. - * - * @param parameters - - * @return - - */ - String generateAuthorizationUrl(AuthorizationRequestParameters parameters); + /** + * Generating the authorization URL. + * + * @param parameters - + * @return - + */ + String generateAuthorizationUrl(AuthorizationRequestParameters parameters); - /** - * The last error as OnboardingError-Object, if the last onboarding failed as object read from the - * JSON String - * - * @param errorResponse - - * @return The last error as OnboardingError-Object - */ - Optional getLastOnboardingError(String errorResponse); + /** + * The last error as OnboardingError-Object, if the last onboarding failed as object read from the + * JSON String + * + * @param errorResponse - + * @return The last error as OnboardingError-Object + */ + Optional getLastOnboardingError(String errorResponse); } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/FetchMessageResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/FetchMessageResponse.kt index b6c4c609..5e856ca6 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/FetchMessageResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/FetchMessageResponse.kt @@ -4,9 +4,9 @@ import com.dke.data.agrirouter.api.dto.messaging.inner.Message class FetchMessageResponse { - lateinit var sensorAlternateId:String + lateinit var sensorAlternateId: String - lateinit var capabilityAlternateId:String + lateinit var capabilityAlternateId: String - lateinit var command:Message + lateinit var command: Message } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt index ea38b1d9..482775b0 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt @@ -2,6 +2,6 @@ package com.dke.data.agrirouter.api.dto.messaging class MessageConfirmationRequest { - lateinit var messageIds : List + lateinit var messageIds: List } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt index 0cff43cd..8643392e 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt @@ -1,8 +1,8 @@ package com.dke.data.agrirouter.api.dto.onboard -class RouterDevice{ +class RouterDevice { - class Authentication{ + class Authentication { lateinit var type: String @@ -12,21 +12,21 @@ class RouterDevice{ } - class ConnectionCriteria{ + class ConnectionCriteria { - lateinit var clientId:String + lateinit var clientId: String - lateinit var gatewayId:String + lateinit var gatewayId: String - lateinit var host:String + lateinit var host: String - var port:Int = 0 + var port: Int = 0 } var authentication: Authentication = Authentication(); var connectionCriteria: ConnectionCriteria = ConnectionCriteria(); - lateinit var deviceAlternateId:String + lateinit var deviceAlternateId: String } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/inner/ConnectionCriteria.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/inner/ConnectionCriteria.kt index c8172cd3..edb4b68d 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/inner/ConnectionCriteria.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/inner/ConnectionCriteria.kt @@ -11,9 +11,9 @@ class ConnectionCriteria { lateinit var commands: String - var host : String? = null + var host: String? = null - var port : String? = null + var port: String? = null - var clientId : String? = null + var clientId: String? = null } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt index 4dd281b3..cba8c693 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt @@ -8,5 +8,5 @@ class RegistrationCodeResponse { lateinit var registrationCode: String lateinit var validTo: String - + } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt index 0b0a6727..e8339d3a 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt @@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties @JsonIgnoreProperties(ignoreUnknown = true) class AuthorizationResponse { - lateinit var signature : String + lateinit var signature: String lateinit var state: String lateinit var token: String var error: String? = null @@ -13,7 +13,7 @@ class AuthorizationResponse { /** * Returns true, if an error accoured while generating token serverside */ - fun hasError():Boolean{ + fun hasError(): Boolean { return !error.isNullOrBlank() } } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt index daa04fbe..d41a17d3 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt @@ -1,10 +1,6 @@ package com.dke.data.agrirouter.api.dto.revoke -import com.fasterxml.jackson.annotation.JsonIgnoreProperties -import com.fasterxml.jackson.annotation.JsonProperty -import com.google.gson.annotations.SerializedName - class RevokeRequest { lateinit var accountId: String diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt index 24e25465..dbf45301 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/ContentMessageType.kt @@ -6,7 +6,11 @@ import agrirouter.technicalmessagetype.Gps * Enum containing all the content message types the AR is supporting. */ @Suppress("unused") -enum class ContentMessageType(private val key: String, private val typeUrl: String, private val needsBase64Encoding: Boolean) : TechnicalMessageType { +enum class ContentMessageType( + private val key: String, + private val typeUrl: String, + private val needsBase64Encoding: Boolean +) : TechnicalMessageType { ISO_11783_TASKDATA_ZIP("iso:11783:-10:taskdata:zip", "", true), SHP_SHAPE_ZIP("shp:shape:zip", "", true), DOC_PDF("doc:pdf", "", true), @@ -19,7 +23,11 @@ enum class ContentMessageType(private val key: String, private val typeUrl: Stri GPS_INFO("gps:info", Gps.GPSList.getDescriptor().fullName, false), //FIXME Since the spec is not public, we can only use those literals. - ISO_11783_DEVICE_DESCRIPTION("iso:11783:-10:device_description:protobuf", "types.agrirouter.com/efdi.ISO11783_TaskData", false), + ISO_11783_DEVICE_DESCRIPTION( + "iso:11783:-10:device_description:protobuf", + "types.agrirouter.com/efdi.ISO11783_TaskData", + false + ), ISO_11783_TIME_LOG("iso:11783:-10:time_log:protobuf", "types.agrirouter.com/efdi.TimeLog", false); override fun getKey(): String { diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt index c3155050..09cae220 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt @@ -5,7 +5,7 @@ enum class RevokeResponse(val key: Int) { VALIDATION_ERROR(400), UNAUTHORIZED(401); - companion object Filter{ + companion object Filter { fun valueOf(value: Int): RevokeResponse? = RevokeResponse.values().find { it.key == value } } } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SecuredOnboardingResponseType.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SecuredOnboardingResponseType.kt index deda8b7f..46e169be 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SecuredOnboardingResponseType.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/SecuredOnboardingResponseType.kt @@ -10,7 +10,8 @@ enum class SecuredOnboardingResponseType(val key: String) { companion object { fun of(key: String): Optional? { - return Arrays.stream(SecuredOnboardingResponseType.values()).filter { a -> a.key.contentEquals(key) }.findFirst() + return Arrays.stream(SecuredOnboardingResponseType.values()).filter { a -> a.key.contentEquals(key) } + .findFirst() } } 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 a3f11ecf..f77e7d9b 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 @@ -12,12 +12,21 @@ import agrirouter.request.payload.endpoint.SubscriptionOuterClass @Suppress("unused") enum class SystemMessageType(private val key: String, private val typeUrl: String) : TechnicalMessageType { EMPTY("", ""), - DKE_CLOUD_ONBOARD_ENDPOINTS("dke:cloud_onboard_endpoints", CloudVirtualizedAppRegistration.OnboardingRequest.getDescriptor().fullName), - DKE_CLOUD_OFFBOARD_ENDPOINTS("dke:cloud_offboard_endpoints", CloudVirtualizedAppRegistration.OffboardingRequest.getDescriptor().fullName), + DKE_CLOUD_ONBOARD_ENDPOINTS( + "dke:cloud_onboard_endpoints", + CloudVirtualizedAppRegistration.OnboardingRequest.getDescriptor().fullName + ), + DKE_CLOUD_OFFBOARD_ENDPOINTS( + "dke:cloud_offboard_endpoints", + CloudVirtualizedAppRegistration.OffboardingRequest.getDescriptor().fullName + ), DKE_CAPABILITIES("dke:capabilities", Capabilities.CapabilitySpecification.getDescriptor().fullName), DKE_SUBSCRIPTION("dke:subscription", SubscriptionOuterClass.Subscription.getDescriptor().fullName), DKE_LIST_ENDPOINTS("dke:list_endpoints", Endpoints.ListEndpointsQuery.getDescriptor().fullName), - DKE_LIST_ENDPOINTS_UNFILTERED("dke:list_endpoints_unfiltered", Endpoints.ListEndpointsQuery.getDescriptor().fullName), + DKE_LIST_ENDPOINTS_UNFILTERED( + "dke:list_endpoints_unfiltered", + Endpoints.ListEndpointsQuery.getDescriptor().fullName + ), 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), diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt index 0f08ce91..bf06e2ab 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt @@ -1,3 +1,3 @@ package com.dke.data.agrirouter.api.messaging -class MessageSendingResult(val messageSendingResponse: MessageSendingResponse, val messageId : String) \ No newline at end of file +class MessageSendingResult(val messageSendingResponse: MessageSendingResponse, val messageId: String) \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/DeleteMessageParameters.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/DeleteMessageParameters.kt index a64483d1..aea4b9b5 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/DeleteMessageParameters.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/DeleteMessageParameters.kt @@ -25,7 +25,13 @@ class DeleteMessageParameters : AbstractParameterBase(), ParameterValidation { override fun businessValidation() { if (null == messageIds && null == senderIds && null == sentFromInSeconds && null == sentToInSeconds) { - rise("There has to be a filter criteria for the query.", "messageIds", "senderIds", "sentFromInSeconds & sendToInSeconds", "") + rise( + "There has to be a filter criteria for the query.", + "messageIds", + "senderIds", + "sentFromInSeconds & sendToInSeconds", + "" + ) } } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageParameterTuple.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageParameterTuple.kt index e7eb0630..97840289 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageParameterTuple.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageParameterTuple.kt @@ -3,5 +3,8 @@ package com.dke.data.agrirouter.api.service.parameters /** * Containing a tuple for message sending, i.e. used after chunking the messages. */ -class MessageParameterTuple(var messageHeaderParameters: MessageHeaderParameters, var payloadParameters: PayloadParameters) { +class MessageParameterTuple( + var messageHeaderParameters: MessageHeaderParameters, + var payloadParameters: PayloadParameters +) { } \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageQueryParameters.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageQueryParameters.kt index f3777b63..4e5d8881 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageQueryParameters.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/MessageQueryParameters.kt @@ -25,7 +25,13 @@ class MessageQueryParameters : AbstractParameterBase(), ParameterValidation { override fun businessValidation() { if (null == messageIds && null == senderIds && null == sentFromInSeconds && null == sentToInSeconds) { - rise("There has to be a filter criteria for the query.", "messageIds", "senderIds", "sentFromInSeconds & sendToInSeconds", "") + rise( + "There has to be a filter criteria for the query.", + "messageIds", + "senderIds", + "sentFromInSeconds & sendToInSeconds", + "" + ) } } diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/SetCapabilitiesParameters.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/SetCapabilitiesParameters.kt index 0855def7..cedd5b4e 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/SetCapabilitiesParameters.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/service/parameters/SetCapabilitiesParameters.kt @@ -19,7 +19,8 @@ class SetCapabilitiesParameters : AbstractParameterBase(), ParameterValidation { var capabilitiesParameters: List? = null - var enablePushNotifications: Capabilities.CapabilitySpecification.PushNotification = Capabilities.CapabilitySpecification.PushNotification.DISABLED + var enablePushNotifications: Capabilities.CapabilitySpecification.PushNotification = + Capabilities.CapabilitySpecification.PushNotification.DISABLED class CapabilityParameters : ParameterValidation { diff --git a/agrirouter-sdk-java-convenience/pom.xml b/agrirouter-sdk-java-convenience/pom.xml index d2ade9b1..f971225d 100644 --- a/agrirouter-sdk-java-convenience/pom.xml +++ b/agrirouter-sdk-java-convenience/pom.xml @@ -1,5 +1,6 @@ - + 4.0.0 diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java index 4d5eaa94..2b46de93 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java @@ -13,73 +13,76 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; + import java.util.ArrayList; import java.util.List; -/** Convenience implementation to decode multiple onboarding responses from the fetched mesage. */ +/** + * Convenience implementation to decode multiple onboarding responses from the fetched mesage. + */ public class DecodeCloudOnboardingResponsesService - implements ResponseValidator, + implements ResponseValidator, MessageDecoder { - private final DecodeMessageService decodeMessageService; - - public DecodeCloudOnboardingResponsesService() { - this.decodeMessageService = new DecodeMessageServiceImpl(); - } + private final DecodeMessageService decodeMessageService; - /** - * Decode onbarding response for cloud onboarding given the message responses. - * - * @param fetchMessageResponses - - * @param onboardingResponse - - * @return - - */ - public List decode( - List fetchMessageResponses, OnboardingResponse onboardingResponse) { - List responses = new ArrayList<>(); - DecodeMessageResponse decodedMessageQueryResponse = - this.decodeMessageService.decode(fetchMessageResponses.get(0).getCommand().getMessage()); - try { - this.assertStatusCodeIsValid( - decodedMessageQueryResponse.getResponseEnvelope().getResponseCode()); - } catch (Exception e) { - MessageOuterClass.Messages message = - this.decodeMessageService.decode( - decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails()); - throw new CouldNotOnboardVirtualCommunicationUnitException( - message.getMessages(0).getMessage()); + public DecodeCloudOnboardingResponsesService() { + this.decodeMessageService = new DecodeMessageServiceImpl(); } - if (decodedMessageQueryResponse.getResponseEnvelope().getType() - == Response.ResponseEnvelope.ResponseBodyType.CLOUD_REGISTRATIONS - && this.assertStatusCodeIsCreated( - decodedMessageQueryResponse.getResponseEnvelope().getResponseCode())) { - CloudVirtualizedAppRegistration.OnboardingResponse cloudOnboardingResponse = - this.decode( - decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails().getValue()); - cloudOnboardingResponse - .getOnboardedEndpointsList() - .forEach( - endpointRegistrationDetails -> { - OnboardingResponse internalOnboardingResponse = new OnboardingResponse(); - internalOnboardingResponse.setSensorAlternateId( - endpointRegistrationDetails.getSensorAlternateId()); - internalOnboardingResponse.setCapabilityAlternateId( - endpointRegistrationDetails.getCapabilityAlternateId()); - internalOnboardingResponse.setDeviceAlternateId( - endpointRegistrationDetails.getDeviceAlternateId()); - internalOnboardingResponse.setAuthentication( - onboardingResponse.getAuthentication()); - internalOnboardingResponse.setConnectionCriteria( - onboardingResponse.getConnectionCriteria()); - responses.add(internalOnboardingResponse); - }); + + /** + * Decode onbarding response for cloud onboarding given the message responses. + * + * @param fetchMessageResponses - + * @param onboardingResponse - + * @return - + */ + public List decode( + List fetchMessageResponses, OnboardingResponse onboardingResponse) { + List responses = new ArrayList<>(); + DecodeMessageResponse decodedMessageQueryResponse = + this.decodeMessageService.decode(fetchMessageResponses.get(0).getCommand().getMessage()); + try { + this.assertStatusCodeIsValid( + decodedMessageQueryResponse.getResponseEnvelope().getResponseCode()); + } catch (Exception e) { + MessageOuterClass.Messages message = + this.decodeMessageService.decode( + decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails()); + throw new CouldNotOnboardVirtualCommunicationUnitException( + message.getMessages(0).getMessage()); + } + if (decodedMessageQueryResponse.getResponseEnvelope().getType() + == Response.ResponseEnvelope.ResponseBodyType.CLOUD_REGISTRATIONS + && this.assertStatusCodeIsCreated( + decodedMessageQueryResponse.getResponseEnvelope().getResponseCode())) { + CloudVirtualizedAppRegistration.OnboardingResponse cloudOnboardingResponse = + this.decode( + decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails().getValue()); + cloudOnboardingResponse + .getOnboardedEndpointsList() + .forEach( + endpointRegistrationDetails -> { + OnboardingResponse internalOnboardingResponse = new OnboardingResponse(); + internalOnboardingResponse.setSensorAlternateId( + endpointRegistrationDetails.getSensorAlternateId()); + internalOnboardingResponse.setCapabilityAlternateId( + endpointRegistrationDetails.getCapabilityAlternateId()); + internalOnboardingResponse.setDeviceAlternateId( + endpointRegistrationDetails.getDeviceAlternateId()); + internalOnboardingResponse.setAuthentication( + onboardingResponse.getAuthentication()); + internalOnboardingResponse.setConnectionCriteria( + onboardingResponse.getConnectionCriteria()); + responses.add(internalOnboardingResponse); + }); + } + return responses; } - return responses; - } - @Override - public CloudVirtualizedAppRegistration.OnboardingResponse unsafeDecode(ByteString message) - throws InvalidProtocolBufferException { - return CloudVirtualizedAppRegistration.OnboardingResponse.parseFrom(message); - } + @Override + public CloudVirtualizedAppRegistration.OnboardingResponse unsafeDecode(ByteString message) + throws InvalidProtocolBufferException { + return CloudVirtualizedAppRegistration.OnboardingResponse.parseFrom(message); + } } diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java index 787cc9a6..c4b5730d 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java @@ -5,65 +5,68 @@ import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.exception.CouldNotCreateMqttClientException; import com.dke.data.agrirouter.impl.EnvironmentalService; -import java.util.Objects; import org.apache.commons.lang3.StringUtils; import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttException; -/** Service to create a MQTT client using the given onboarding response. */ +import java.util.Objects; + +/** + * Service to create a MQTT client using the given onboarding response. + */ public class MqttClientService extends EnvironmentalService { - /** - * Constructor for an environmental service. - * - * @param environment - - */ - public MqttClientService(Environment environment) { - super(environment); - } + /** + * Constructor for an environmental service. + * + * @param environment - + */ + public MqttClientService(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 IMqttClient create(OnboardingResponse onboardingResponse) { - return this.createMqttClient( - onboardingResponse.getConnectionCriteria().getHost(), - onboardingResponse.getConnectionCriteria().getPort(), - onboardingResponse.getConnectionCriteria().getClientId()); - } + /** + * 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 IMqttClient 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 IMqttClient create(RouterDevice routerDevice) { - return this.createMqttClient( - routerDevice.getConnectionCriteria().getHost(), - String.valueOf(routerDevice.getConnectionCriteria().getPort()), - routerDevice.getDeviceAlternateId()); - } + /** + * 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 IMqttClient create(RouterDevice routerDevice) { + return this.createMqttClient( + routerDevice.getConnectionCriteria().getHost(), + String.valueOf(routerDevice.getConnectionCriteria().getPort()), + routerDevice.getDeviceAlternateId()); + } - private IMqttClient createMqttClient(String host, String port, String clientId) { - try { - 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 new MqttClient( - this.environment.getMqttServerUrl(host, port), Objects.requireNonNull(clientId)); + private IMqttClient createMqttClient(String host, String port, String clientId) { + try { + 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 new MqttClient( + this.environment.getMqttServerUrl(host, port), Objects.requireNonNull(clientId)); - } catch (MqttException e) { - throw new CouldNotCreateMqttClientException("Could not create MQTT client.", e); + } catch (MqttException e) { + throw new CouldNotCreateMqttClientException("Could not create MQTT client.", e); + } } - } } diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java index 216b7376..8dc25bf4 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java @@ -8,112 +8,115 @@ import com.dke.data.agrirouter.api.exception.CouldNotCreateMqttOptionException; import com.dke.data.agrirouter.impl.EnvironmentalService; import com.dke.data.agrirouter.impl.common.ssl.KeyStoreCreationService; +import org.eclipse.paho.client.mqttv3.MqttConnectOptions; + +import javax.net.SocketFactory; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; import java.security.KeyManagementException; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; -import javax.net.SocketFactory; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import org.eclipse.paho.client.mqttv3.MqttConnectOptions; -/** Creating MQTT options for the MQTT client. */ +/** + * Creating MQTT options for the MQTT client. + */ public class MqttOptionService extends EnvironmentalService { - private final KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); + private final KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); - /** - * Constructor for an environmental service. - * - * @param environment - - */ - public MqttOptionService(Environment environment) { - super(environment); - } + /** + * Constructor for an environmental service. + * + * @param environment - + */ + public MqttOptionService(Environment environment) { + super(environment); + } - /** - * Create default MQTT connect options using the given onboarding response. The MQTT options - * contain a socket factory which uses the personal certificate of the endpoint. - * - * @param onboardingResponse - - * @return - - */ - public MqttConnectOptions createMqttConnectOptions(OnboardingResponse onboardingResponse) { - MqttConnectOptions options = new MqttConnectOptions(); - CertificationType certificationType = - CertificationType.valueOf(onboardingResponse.getAuthentication().getType()); - options.setSocketFactory( - this.getSocketFactory( - onboardingResponse.getAuthentication().getCertificate(), - onboardingResponse.getAuthentication().getSecret(), - certificationType)); - options.setKeepAliveInterval(60); - options.setAutomaticReconnect(true); - options.setCleanSession(true); - return options; - } + /** + * Create default MQTT connect options using the given onboarding response. The MQTT options + * contain a socket factory which uses the personal certificate of the endpoint. + * + * @param onboardingResponse - + * @return - + */ + public MqttConnectOptions createMqttConnectOptions(OnboardingResponse onboardingResponse) { + MqttConnectOptions options = new MqttConnectOptions(); + CertificationType certificationType = + CertificationType.valueOf(onboardingResponse.getAuthentication().getType()); + options.setSocketFactory( + this.getSocketFactory( + onboardingResponse.getAuthentication().getCertificate(), + onboardingResponse.getAuthentication().getSecret(), + certificationType)); + options.setKeepAliveInterval(60); + options.setAutomaticReconnect(true); + options.setCleanSession(true); + return options; + } - /** - * Create default MQTT connect options using the given router device. The MQTT options contain a - * socket factory which uses the personal certificate of the endpoint. - * - * @param routerDevice - - * @return - - */ - public MqttConnectOptions createMqttConnectOptions(RouterDevice routerDevice) { - MqttConnectOptions options = new MqttConnectOptions(); - CertificationType certificationType = - CertificationType.valueOf(routerDevice.getAuthentication().getType()); - options.setSocketFactory( - this.getSocketFactory( - routerDevice.getAuthentication().getCertificate(), - routerDevice.getAuthentication().getSecret(), - certificationType)); - options.setKeepAliveInterval(60); - options.setAutomaticReconnect(true); - options.setCleanSession(true); - return options; - } + /** + * Create default MQTT connect options using the given router device. The MQTT options contain a + * socket factory which uses the personal certificate of the endpoint. + * + * @param routerDevice - + * @return - + */ + public MqttConnectOptions createMqttConnectOptions(RouterDevice routerDevice) { + MqttConnectOptions options = new MqttConnectOptions(); + CertificationType certificationType = + CertificationType.valueOf(routerDevice.getAuthentication().getType()); + options.setSocketFactory( + this.getSocketFactory( + routerDevice.getAuthentication().getCertificate(), + routerDevice.getAuthentication().getSecret(), + certificationType)); + options.setKeepAliveInterval(60); + options.setAutomaticReconnect(true); + options.setCleanSession(true); + return options; + } - /** - * Creating the socket factory for the MQTT options. - * - * @param certificate Certificate of the endpoint. - * @param password The password for the certificate. - * @param certificationType The type of certificate. - * @return - - */ - private SocketFactory getSocketFactory( - String certificate, String password, CertificationType certificationType) { - try { - KeyManagerFactory kmf = - KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - if (certificationType == CertificationType.PEM) { - kmf.init( - this.keyStoreCreationService.createAndReturnKeystoreFromPEM(certificate, password), - Constants.DEFAULT_PASSWORD.toCharArray()); - } else { - if (certificationType == CertificationType.P12) { - kmf.init( - this.keyStoreCreationService.createAndReturnKeystoreFromP12(certificate, password), - password.toCharArray()); + /** + * Creating the socket factory for the MQTT options. + * + * @param certificate Certificate of the endpoint. + * @param password The password for the certificate. + * @param certificationType The type of certificate. + * @return - + */ + private SocketFactory getSocketFactory( + String certificate, String password, CertificationType certificationType) { + try { + KeyManagerFactory kmf = + KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + if (certificationType == CertificationType.PEM) { + kmf.init( + this.keyStoreCreationService.createAndReturnKeystoreFromPEM(certificate, password), + Constants.DEFAULT_PASSWORD.toCharArray()); + } else { + if (certificationType == CertificationType.P12) { + kmf.init( + this.keyStoreCreationService.createAndReturnKeystoreFromP12(certificate, password), + password.toCharArray()); + } + } + SSLContext context = SSLContext.getInstance(Constants.PROTOCOL); + context.init(kmf.getKeyManagers(), null, null); + return context.getSocketFactory(); + } catch (NoSuchAlgorithmException e) { + throw new CouldNotCreateMqttOptionException( + "No such algorithm, can not create MQTT options.", e); + } catch (UnrecoverableKeyException e) { + throw new CouldNotCreateMqttOptionException( + "Key in the keystore could not be restored, can not create MQTT options.", e); + } catch (KeyStoreException e) { + throw new CouldNotCreateMqttOptionException( + "Generic keystore error, can not create MQTT options.", e); + } catch (KeyManagementException e) { + throw new CouldNotCreateMqttOptionException( + "Generic key management error, can not create MQTT options.", e); } - } - SSLContext context = SSLContext.getInstance(Constants.PROTOCOL); - context.init(kmf.getKeyManagers(), null, null); - return context.getSocketFactory(); - } catch (NoSuchAlgorithmException e) { - throw new CouldNotCreateMqttOptionException( - "No such algorithm, can not create MQTT options.", e); - } catch (UnrecoverableKeyException e) { - throw new CouldNotCreateMqttOptionException( - "Key in the keystore could not be restored, can not create MQTT options.", e); - } catch (KeyStoreException e) { - throw new CouldNotCreateMqttOptionException( - "Generic keystore error, can not create MQTT options.", e); - } catch (KeyManagementException e) { - throw new CouldNotCreateMqttOptionException( - "Generic key management error, can not create MQTT options.", e); } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/ChunkContextIdService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/ChunkContextIdService.java index a8c5a907..aa6934a6 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/ChunkContextIdService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/ChunkContextIdService.java @@ -2,15 +2,17 @@ import java.util.UUID; -/** Service to provide a unique chunk context id. */ +/** + * Service to provide a unique chunk context id. + */ public class ChunkContextIdService { - /** - * Generate a unique id by using the internal UUID implementation. - * - * @return - - */ - public static String generateChunkContextId() { - return UUID.randomUUID().toString(); - } + /** + * Generate a unique id by using the internal UUID implementation. + * + * @return - + */ + public static String generateChunkContextId() { + return UUID.randomUUID().toString(); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/EnvironmentalService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/EnvironmentalService.java index 3b8734d8..2f7df6e8 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/EnvironmentalService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/EnvironmentalService.java @@ -3,13 +3,17 @@ import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.service.HasLogger; -/** Internal implementation for an environmental service. */ +/** + * Internal implementation for an environmental service. + */ public abstract class EnvironmentalService implements HasLogger { - /** The current environment. */ - protected final Environment environment; + /** + * The current environment. + */ + protected final Environment environment; - protected EnvironmentalService(Environment environment) { - this.environment = environment; - } + protected EnvironmentalService(Environment environment) { + this.environment = environment; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/NonEnvironmentalService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/NonEnvironmentalService.java index a3e5b04f..f3a10ba6 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/NonEnvironmentalService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/NonEnvironmentalService.java @@ -2,5 +2,8 @@ import com.dke.data.agrirouter.api.service.HasLogger; -/** Internal implementation for an environmental service. */ -public abstract class NonEnvironmentalService implements HasLogger {} +/** + * Internal implementation for an environmental service. + */ +public abstract class NonEnvironmentalService implements HasLogger { +} diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java index b931efd7..6d730d24 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java @@ -1,53 +1,54 @@ package com.dke.data.agrirouter.impl; -import static java.nio.charset.StandardCharsets.UTF_8; - import com.dke.data.agrirouter.api.exception.CouldNotCreateSignatureException; import com.dke.data.agrirouter.api.exception.CouldNotDecodeHexException; import com.dke.data.agrirouter.api.exception.CouldNotVerifySignatureException; import com.dke.data.agrirouter.api.exception.InvalidSignatureException; import com.dke.data.agrirouter.impl.common.signing.SecurityKeyCreationService; +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; + import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.Signature; import java.security.SignatureException; -import org.apache.commons.codec.DecoderException; -import org.apache.commons.codec.binary.Hex; + +import static java.nio.charset.StandardCharsets.UTF_8; public interface SignatureService { - String SIGNATURE_ALGORITHM = "SHA256withRSA"; + String SIGNATURE_ALGORITHM = "SHA256withRSA"; - default byte[] createSignature(String requestBody, String privateKey) { - try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); - signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); - signature.update(requestBody.getBytes(UTF_8)); - return signature.sign(); - } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { - throw new CouldNotCreateSignatureException(e); + default byte[] createSignature(String requestBody, String privateKey) { + try { + SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); + Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); + signature.update(requestBody.getBytes(UTF_8)); + return signature.sign(); + } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { + throw new CouldNotCreateSignatureException(e); + } } - } - default void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { - try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); - signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); - signature.update(requestBody.getBytes(UTF_8)); - if (!signature.verify(signedBytes)) { - throw new InvalidSignatureException(); - } - } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { - throw new CouldNotVerifySignatureException(e); + default void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { + try { + SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); + Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); + signature.update(requestBody.getBytes(UTF_8)); + if (!signature.verify(signedBytes)) { + throw new InvalidSignatureException(); + } + } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { + throw new CouldNotVerifySignatureException(e); + } } - } - default byte[] decodeHex(String encodedSignature) { - try { - return Hex.decodeHex(encodedSignature.toCharArray()); - } catch (DecoderException e) { - throw new CouldNotDecodeHexException(e); + default byte[] decodeHex(String encodedSignature) { + try { + return Hex.decodeHex(encodedSignature.toCharArray()); + } catch (DecoderException e) { + throw new CouldNotDecodeHexException(e); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/MessageIdService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/MessageIdService.java index 067c6c22..b98c2376 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/MessageIdService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/MessageIdService.java @@ -2,15 +2,17 @@ import java.util.UUID; -/** Service to provide a unique application message id. */ +/** + * Service to provide a unique application message id. + */ public class MessageIdService { - /** - * Generate a unique message id by using the internal UUID implementation. - * - * @return - - */ - public static String generateMessageId() { - return UUID.randomUUID().toString(); - } + /** + * Generate a unique message id by using the internal UUID implementation. + * + * @return - + */ + public static String generateMessageId() { + return UUID.randomUUID().toString(); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/StateIdService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/StateIdService.java index 86304c31..0c7ba9ed 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/StateIdService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/StateIdService.java @@ -2,15 +2,17 @@ import java.util.UUID; -/** Service to provide a unique state id. */ +/** + * Service to provide a unique state id. + */ public class StateIdService { - /** - * Generate a unique state id by using the internal UUID implementation. - * - * @return - - */ - public static String generateState() { - return UUID.randomUUID().toString(); - } + /** + * Generate a unique state id by using the internal UUID implementation. + * + * @return - + */ + public static String generateState() { + return UUID.randomUUID().toString(); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java index 63c7225d..03e56c90 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java @@ -1,6 +1,7 @@ package com.dke.data.agrirouter.impl.common; import com.dke.data.agrirouter.api.exception.CouldNotFindTimeZoneException; + import java.time.*; import java.util.Arrays; import java.util.Calendar; @@ -9,58 +10,58 @@ public class UtcTimeService { - public static final long ONE_DAY_AGO = 60 * 60 * 24; - public static final long TWO_DAYS_AGO = 60 * 60 * 24 * 2; - public static final long THREE_DAYS_AGO = 60 * 60 * 24 * 3; - public static final long FOUR_DAYS_AGO = 60 * 60 * 24 * 4; - public static final long FIVE_DAYS_AGO = 60 * 60 * 24 * 5; - public static final long SIX_DAYS_AGO = 60 * 60 * 24 * 6; + public static final long ONE_DAY_AGO = 60 * 60 * 24; + public static final long TWO_DAYS_AGO = 60 * 60 * 24 * 2; + public static final long THREE_DAYS_AGO = 60 * 60 * 24 * 3; + public static final long FOUR_DAYS_AGO = 60 * 60 * 24 * 4; + public static final long FIVE_DAYS_AGO = 60 * 60 * 24 * 5; + public static final long SIX_DAYS_AGO = 60 * 60 * 24 * 6; - public static final long ONE_WEEKS_AGO = 60 * 60 * 24 * 7; - public static final long TWO_WEEKS_AGO = 60 * 60 * 24 * 14; - public static final long THREE_WEEKS_AGO = 60 * 60 * 24 * 21; - public static final long FOUR_WEEKS_AGO = 60 * 60 * 24 * 28; + public static final long ONE_WEEKS_AGO = 60 * 60 * 24 * 7; + public static final long TWO_WEEKS_AGO = 60 * 60 * 24 * 14; + public static final long THREE_WEEKS_AGO = 60 * 60 * 24 * 21; + public static final long FOUR_WEEKS_AGO = 60 * 60 * 24 * 28; - public static OffsetDateTime inThePast(long seconds) { - return Instant.now().atOffset(ZoneOffset.UTC).minusSeconds(seconds); - } + public static OffsetDateTime inThePast(long seconds) { + return Instant.now().atOffset(ZoneOffset.UTC).minusSeconds(seconds); + } - public static OffsetDateTime inTheFuture(long seconds) { - return Instant.now().atOffset(ZoneOffset.UTC).plusSeconds(seconds); - } + public static OffsetDateTime inTheFuture(long seconds) { + return Instant.now().atOffset(ZoneOffset.UTC).plusSeconds(seconds); + } - public static OffsetDateTime now() { - return Instant.now().atOffset(ZoneOffset.UTC); - } + public static OffsetDateTime now() { + return Instant.now().atOffset(ZoneOffset.UTC); + } - public static OffsetDateTime min() { - return Instant.MIN.atOffset(ZoneOffset.UTC); - } + public static OffsetDateTime min() { + return Instant.MIN.atOffset(ZoneOffset.UTC); + } - public static OffsetDateTime max() { - return Instant.MAX.atOffset(ZoneOffset.UTC); - } + public static OffsetDateTime max() { + return Instant.MAX.atOffset(ZoneOffset.UTC); + } - public static String offset() { - Optional currentTimeZone = timeZone(); - if (currentTimeZone.isPresent()) { - ZonedDateTime zdt = Instant.now().atZone(ZoneId.of(currentTimeZone.get())); - return zdt.getOffset().getId().replaceAll("Z", "+00:00"); - } else { - throw new CouldNotFindTimeZoneException(); + public static String offset() { + Optional currentTimeZone = timeZone(); + if (currentTimeZone.isPresent()) { + ZonedDateTime zdt = Instant.now().atZone(ZoneId.of(currentTimeZone.get())); + return zdt.getOffset().getId().replaceAll("Z", "+00:00"); + } else { + throw new CouldNotFindTimeZoneException(); + } } - } - private static Optional timeZone() { - Calendar calendar = Calendar.getInstance(); - long zoneOffset = calendar.get(Calendar.ZONE_OFFSET); - String[] ids = TimeZone.getAvailableIDs(); - return Arrays.stream(ids) - .filter( - (id) -> { - TimeZone tz = TimeZone.getTimeZone(id); - return tz.getRawOffset() == zoneOffset; - }) - .findFirst(); - } + private static Optional timeZone() { + Calendar calendar = Calendar.getInstance(); + long zoneOffset = calendar.get(Calendar.ZONE_OFFSET); + String[] ids = TimeZone.getAvailableIDs(); + return Arrays.stream(ids) + .filter( + (id) -> { + TimeZone tz = TimeZone.getTimeZone(id); + return tz.getRawOffset() == zoneOffset; + }) + .findFirst(); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java index 9fc49723..4792e9c5 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java @@ -3,6 +3,7 @@ import com.dke.data.agrirouter.api.exception.CouldNotCreatePrivateKeyException; import com.dke.data.agrirouter.api.exception.CouldNotCreatePublicKeyException; import com.dke.data.agrirouter.api.service.HasLogger; + import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; @@ -14,53 +15,53 @@ public class SecurityKeyCreationService implements HasLogger { - public PrivateKey createPrivateKey(String privateKey) { - this.logMethodBegin(privateKey); + public PrivateKey createPrivateKey(String privateKey) { + this.logMethodBegin(privateKey); + + PrivateKey result; + try { + this.getNativeLogger().trace("Replacing comments within file."); + String pkcs8Pem = privateKey.replace("-----BEGIN PRIVATE KEY-----", ""); + pkcs8Pem = pkcs8Pem.replace("-----END PRIVATE KEY-----", ""); + pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); - PrivateKey result; - try { - this.getNativeLogger().trace("Replacing comments within file."); - String pkcs8Pem = privateKey.replace("-----BEGIN PRIVATE KEY-----", ""); - pkcs8Pem = pkcs8Pem.replace("-----END PRIVATE KEY-----", ""); - pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); + this.getNativeLogger().trace("Decode base 64 values."); + byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); - this.getNativeLogger().trace("Decode base 64 values."); - byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); + this.getNativeLogger().trace("Generate private key."); + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + result = keyFactory.generatePrivate(keySpec); + } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { + throw new CouldNotCreatePrivateKeyException(e); + } - this.getNativeLogger().trace("Generate private key."); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - result = keyFactory.generatePrivate(keySpec); - } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { - throw new CouldNotCreatePrivateKeyException(e); + this.logMethodEnd(result); + return result; } - this.logMethodEnd(result); - return result; - } + public PublicKey createPublicKey(String publicKey) { + this.logMethodBegin(publicKey); - public PublicKey createPublicKey(String publicKey) { - this.logMethodBegin(publicKey); + PublicKey result; + try { + this.getNativeLogger().trace("Replacing comments within file."); + String pkcs8Pem = publicKey.replace("-----BEGIN PUBLIC KEY-----", ""); + pkcs8Pem = pkcs8Pem.replace("-----END PUBLIC KEY-----", ""); + pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); - PublicKey result; - try { - this.getNativeLogger().trace("Replacing comments within file."); - String pkcs8Pem = publicKey.replace("-----BEGIN PUBLIC KEY-----", ""); - pkcs8Pem = pkcs8Pem.replace("-----END PUBLIC KEY-----", ""); - pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); + this.getNativeLogger().trace("Decode base 64 values."); + byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); - this.getNativeLogger().trace("Decode base 64 values."); - byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); + this.getNativeLogger().trace("Generate public key."); + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(pkcs8EncodedBytes); + KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + result = keyFactory.generatePublic(keySpec); + } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { + throw new CouldNotCreatePublicKeyException(e); + } - this.getNativeLogger().trace("Generate public key."); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(pkcs8EncodedBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); - result = keyFactory.generatePublic(keySpec); - } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { - throw new CouldNotCreatePublicKeyException(e); + this.logMethodEnd(result); + return result; } - - this.logMethodEnd(result); - return result; - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java index 37ae4682..81c9898f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationService.java @@ -3,6 +3,15 @@ import com.dke.data.agrirouter.api.env.Constants; import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; import com.dke.data.agrirouter.api.service.HasLogger; + +import javax.crypto.EncryptedPrivateKeyInfo; +import javax.crypto.SecretKeyFactory; +import javax.crypto.spec.PBEKeySpec; +import javax.net.SocketFactory; +import javax.net.ssl.KeyManagerFactory; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; @@ -14,227 +23,219 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.util.*; -import javax.crypto.EncryptedPrivateKeyInfo; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.net.SocketFactory; -import javax.net.ssl.KeyManagerFactory; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.TrustManagerFactory; public class KeyStoreCreationService implements HasLogger { - private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; - private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; + private static final String BEGIN_DELIMITER_PRIVATE_KEY = "-----BEGIN ENCRYPTED PRIVATE KEY-----"; + private static final String END_DELIMITER_PRIVATE_KEY = "-----END ENCRYPTED PRIVATE KEY-----"; - private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; - private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; + private static final String BEGIN_DELIMITER_CERTIFICATE = "-----BEGIN CERTIFICATE-----"; + private static final String END_DELIMITER_CERTIFICATE = "-----END CERTIFICATE-----"; - public SocketFactory getSocketFactory( - List rootCertificates, String certificate, String password) throws Exception { - this.logMethodBegin(rootCertificates, certificate, password); + public SocketFactory getSocketFactory( + List rootCertificates, String certificate, String password) throws Exception { + this.logMethodBegin(rootCertificates, certificate, password); - this.getNativeLogger().trace("Create trust managers."); - var trustManagers = this.createTrustManagers(rootCertificates); + this.getNativeLogger().trace("Create trust managers."); + var trustManagers = this.createTrustManagers(rootCertificates); - this.getNativeLogger().trace("Init key manager factory."); - var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); + this.getNativeLogger().trace("Init key manager factory."); + var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); + kmf.init(this.createAndReturnKeystoreFromPEM(certificate, password), getDefaultPassword()); - this.getNativeLogger().trace("Generate SSL context."); - var context = SSLContext.getInstance("TLSv1.2"); + this.getNativeLogger().trace("Generate SSL context."); + var context = SSLContext.getInstance("TLSv1.2"); - this.getNativeLogger().trace("Init SSL context."); - context.init(kmf.getKeyManagers(), trustManagers, null); + this.getNativeLogger().trace("Init SSL context."); + context.init(kmf.getKeyManagers(), trustManagers, null); - var socketFactory = context.getSocketFactory(); - this.logMethodEnd(socketFactory); - return socketFactory; - } + var socketFactory = context.getSocketFactory(); + this.logMethodEnd(socketFactory); + return socketFactory; + } + + public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { + this.logMethodBegin(certificate, password); - public KeyStore createAndReturnKeystoreFromP12(String certificate, String password) { - this.logMethodBegin(certificate, password); + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create PKCS12 instance for keystore."); + keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create PKCS12 instance for keystore."); - keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); + this.getNativeLogger().trace("Create input stream for certificate."); + InputStream sslInputStream = + new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); - this.getNativeLogger().trace("Create input stream for certificate."); - InputStream sslInputStream = - new ByteArrayInputStream(Base64.getDecoder().decode(certificate.getBytes())); + this.getNativeLogger().trace("Load input stream into keystore."); + keyStore.load(sslInputStream, password.toCharArray()); - this.getNativeLogger().trace("Load input stream into keystore."); - keyStore.load(sslInputStream, password.toCharArray()); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); + this.logMethodEnd(keyStore); + return keyStore; } - this.logMethodEnd(keyStore); - return keyStore; - } + public TrustManager[] createTrustManagers(List certificates) { + this.logMethodBegin(certificates); + + List trustManagers = new ArrayList<>(); + certificates.forEach( + certificate -> { + try { + this.getNativeLogger().trace("Create certificate for '{}'.", certificate); + var cert = + createCertificate( + extractFromOriginal( + certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create default keystore type."); + var caKs = KeyStore.getInstance(KeyStore.getDefaultType()); + caKs.load(null, null); + caKs.setCertificateEntry("ca-certificate", cert); + + this.getNativeLogger().trace("Create trust manager factory."); + var tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + + this.getNativeLogger().trace("Init trust manager factory."); + tmf.init(caKs); + + this.getNativeLogger().trace("Add all trust managers from factory."); + trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); + } catch (Exception e) { + throw new CouldNotCreateDynamicKeyStoreException(e); + } + }); + + this.logMethodEnd(trustManagers); + return trustManagers.toArray(new TrustManager[0]); + } - public TrustManager[] createTrustManagers(List certificates) { - this.logMethodBegin(certificates); + public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { + this.logMethodBegin(certificateAndPrivateKey, password); - List trustManagers = new ArrayList<>(); - certificates.forEach( - certificate -> { - try { - this.getNativeLogger().trace("Create certificate for '{}'.", certificate); + KeyStore keyStore; + try { + this.getNativeLogger().trace("Create certificate."); var cert = - createCertificate( - extractFromOriginal( - certificate, BEGIN_DELIMITER_CERTIFICATE, END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create default keystore type."); - var caKs = KeyStore.getInstance(KeyStore.getDefaultType()); - caKs.load(null, null); - caKs.setCertificateEntry("ca-certificate", cert); - - this.getNativeLogger().trace("Create trust manager factory."); - var tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); - - this.getNativeLogger().trace("Init trust manager factory."); - tmf.init(caKs); - - this.getNativeLogger().trace("Add all trust managers from factory."); - trustManagers.addAll(Arrays.asList(tmf.getTrustManagers())); - } catch (Exception e) { + createCertificate( + extractFromOriginal( + certificateAndPrivateKey, + BEGIN_DELIMITER_CERTIFICATE, + END_DELIMITER_CERTIFICATE)); + + this.getNativeLogger().trace("Create private key."); + var key = + createPrivateKey( + extractFromOriginal( + certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), + password); + + this.getNativeLogger().trace("Create key store."); + keyStore = createKeyStore(cert, key); + } catch (Exception e) { throw new CouldNotCreateDynamicKeyStoreException(e); - } - }); - - this.logMethodEnd(trustManagers); - return trustManagers.toArray(new TrustManager[0]); - } - - public KeyStore createAndReturnKeystoreFromPEM(String certificateAndPrivateKey, String password) { - this.logMethodBegin(certificateAndPrivateKey, password); - - KeyStore keyStore; - try { - this.getNativeLogger().trace("Create certificate."); - var cert = - createCertificate( - extractFromOriginal( - certificateAndPrivateKey, - BEGIN_DELIMITER_CERTIFICATE, - END_DELIMITER_CERTIFICATE)); - - this.getNativeLogger().trace("Create private key."); - var key = - createPrivateKey( - extractFromOriginal( - certificateAndPrivateKey, BEGIN_DELIMITER_PRIVATE_KEY, END_DELIMITER_PRIVATE_KEY), - password); - - this.getNativeLogger().trace("Create key store."); - keyStore = createKeyStore(cert, key); - } catch (Exception e) { - throw new CouldNotCreateDynamicKeyStoreException(e); - } + } - this.logMethodEnd(keyStore); - return keyStore; - } + this.logMethodEnd(keyStore); + return keyStore; + } - String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(cert, key); + String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(cert, key); - this.getNativeLogger().trace("Create keystore."); - var keystore = createKeyStore(cert, key); + this.getNativeLogger().trace("Create keystore."); + var keystore = createKeyStore(cert, key); - this.getNativeLogger().trace("Create random keystore name."); - var tmpKeystoreName = UUID.randomUUID().toString(); + this.getNativeLogger().trace("Create random keystore name."); + var tmpKeystoreName = UUID.randomUUID().toString(); - this.getNativeLogger().trace("Store keystore within temporary folder."); - keystore.store( - Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), - Constants.DEFAULT_PASSWORD.toCharArray()); + this.getNativeLogger().trace("Store keystore within temporary folder."); + keystore.store( + Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), + Constants.DEFAULT_PASSWORD.toCharArray()); - this.logMethodEnd(tmpKeystoreName); - return tmpKeystoreName; - } + this.logMethodEnd(tmpKeystoreName); + return tmpKeystoreName; + } - private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { - this.logMethodBegin(original, beginDelimiter, endDelimiter); + private String extractFromOriginal(String original, String beginDelimiter, String endDelimiter) { + this.logMethodBegin(original, beginDelimiter, endDelimiter); - this.getNativeLogger().trace("Split by delimiter."); - var tokens = original.split(beginDelimiter); + this.getNativeLogger().trace("Split by delimiter."); + var tokens = original.split(beginDelimiter); - this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); - tokens = tokens[1].split(endDelimiter); + this.getNativeLogger().trace("Fetch second token as certificate from delimiter."); + tokens = tokens[1].split(endDelimiter); - this.getNativeLogger().trace("Replace all line breaks."); - var certificate = tokens[0].replaceAll("\\s", ""); + this.getNativeLogger().trace("Replace all line breaks."); + var certificate = tokens[0].replaceAll("\\s", ""); - this.logMethodEnd(certificate); - return certificate; - } + this.logMethodEnd(certificate); + return certificate; + } - PrivateKey createPrivateKey(String privateKey, String password) throws Exception { - this.logMethodBegin(privateKey, password); + PrivateKey createPrivateKey(String privateKey, String password) throws Exception { + this.logMethodBegin(privateKey, password); - this.getNativeLogger().trace("Create PBE key spec."); - var pbeSpec = new PBEKeySpec(password.toCharArray()); + this.getNativeLogger().trace("Create PBE key spec."); + var pbeSpec = new PBEKeySpec(password.toCharArray()); - this.getNativeLogger().trace("Create PK info using the private key."); - var pkinfo = new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); + this.getNativeLogger().trace("Create PK info using the private key."); + var pkinfo = new EncryptedPrivateKeyInfo(Base64.getDecoder().decode(privateKey)); - this.getNativeLogger().trace("Create secret factory for PK info."); - var skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); + this.getNativeLogger().trace("Create secret factory for PK info."); + var skf = SecretKeyFactory.getInstance(pkinfo.getAlgName()); - this.getNativeLogger().trace("Generate secret."); - Key secret = skf.generateSecret(pbeSpec); + this.getNativeLogger().trace("Generate secret."); + Key secret = skf.generateSecret(pbeSpec); - this.getNativeLogger().trace("Generate encoded key spec."); - var keySpec = pkinfo.getKeySpec(secret); + this.getNativeLogger().trace("Generate encoded key spec."); + var keySpec = pkinfo.getKeySpec(secret); - this.getNativeLogger().trace("Create RSA key factory."); - var kf = KeyFactory.getInstance("RSA"); + this.getNativeLogger().trace("Create RSA key factory."); + var kf = KeyFactory.getInstance("RSA"); - var privateKeyWithSpec = kf.generatePrivate(keySpec); - this.logMethodEnd(privateKey); - return privateKeyWithSpec; - } + var privateKeyWithSpec = kf.generatePrivate(keySpec); + this.logMethodEnd(privateKey); + return privateKeyWithSpec; + } - X509Certificate createCertificate(String x509Certificate) throws Exception { - this.logMethodBegin(x509Certificate); + X509Certificate createCertificate(String x509Certificate) throws Exception { + this.logMethodBegin(x509Certificate); - this.getNativeLogger().trace("Decode certificate."); - var certBytes = Base64.getDecoder().decode(x509Certificate); + this.getNativeLogger().trace("Decode certificate."); + var certBytes = Base64.getDecoder().decode(x509Certificate); - this.getNativeLogger().trace("Create 'X.509' certification factory."); - var factory = CertificateFactory.getInstance("X.509"); + this.getNativeLogger().trace("Create 'X.509' certification factory."); + var factory = CertificateFactory.getInstance("X.509"); - var certificate = - (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); - this.logMethodEnd(certificate); - return certificate; - } + var certificate = + (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(certBytes)); + this.logMethodEnd(certificate); + return certificate; + } - private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) - throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { - this.logMethodBegin(x509Certificate, key); + private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) + throws KeyStoreException, IOException, NoSuchAlgorithmException, CertificateException { + this.logMethodBegin(x509Certificate, key); - this.getNativeLogger().trace("Create JKS keystore."); - var keystore = KeyStore.getInstance("JKS"); - keystore.load(null); - keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); + this.getNativeLogger().trace("Create JKS keystore."); + var keystore = KeyStore.getInstance("JKS"); + keystore.load(null); + keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); - this.getNativeLogger().trace("Add certificate to the key store."); - keystore.setKeyEntry( - Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[] {x509Certificate}); + this.getNativeLogger().trace("Add certificate to the key store."); + keystore.setKeyEntry( + Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[]{x509Certificate}); - this.logMethodEnd(keystore); - return keystore; - } + this.logMethodEnd(keystore); + return keystore; + } - private static char[] getDefaultPassword() { - return Constants.DEFAULT_PASSWORD.toCharArray(); - } + private static char[] getDefaultPassword() { + return Constants.DEFAULT_PASSWORD.toCharArray(); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/gson/MessageTypeAdapter.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/gson/MessageTypeAdapter.java index f3e4c59d..8ad187cd 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/gson/MessageTypeAdapter.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/gson/MessageTypeAdapter.java @@ -4,21 +4,22 @@ import com.google.gson.TypeAdapter; import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonWriter; -import java.io.IOException; import org.apache.commons.lang3.NotImplementedException; +import java.io.IOException; + public class MessageTypeAdapter extends TypeAdapter { - @Override - public void write(JsonWriter jsonWriter, Message message) throws IOException { - jsonWriter.beginArray(); - jsonWriter.value(message.getMessage()); - jsonWriter.value(Long.parseLong(message.getTimestamp())); - jsonWriter.endArray(); - } + @Override + public void write(JsonWriter jsonWriter, Message message) throws IOException { + jsonWriter.beginArray(); + jsonWriter.value(message.getMessage()); + jsonWriter.value(Long.parseLong(message.getTimestamp())); + jsonWriter.endArray(); + } - @Override - public Message read(JsonReader jsonReader) throws IOException { - throw new NotImplementedException("Not yet supported."); - } + @Override + public Message read(JsonReader jsonReader) throws IOException { + throw new NotImplementedException("Not yet supported."); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java index 05f0d86f..b8b4f411 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java @@ -6,36 +6,37 @@ import com.dke.data.agrirouter.impl.common.UtcTimeService; import com.dke.data.agrirouter.impl.gson.MessageTypeAdapter; import com.google.gson.GsonBuilder; + import java.util.ArrayList; import java.util.List; import java.util.Objects; public interface MessageBodyCreator { - default String createMessageBody(SendMessageParameters parameters) { - parameters.validate(); - GsonBuilder gsonBuilder = new GsonBuilder(); - gsonBuilder.registerTypeAdapter(Message.class, new MessageTypeAdapter()); - return gsonBuilder.create().toJson(this.createSendMessageRequest(parameters)); - } + default String createMessageBody(SendMessageParameters parameters) { + parameters.validate(); + GsonBuilder gsonBuilder = new GsonBuilder(); + gsonBuilder.registerTypeAdapter(Message.class, new MessageTypeAdapter()); + return gsonBuilder.create().toJson(this.createSendMessageRequest(parameters)); + } - default SendMessageRequest createSendMessageRequest(SendMessageParameters parameters) { - parameters.validate(); - SendMessageRequest sendMessageRequest = new SendMessageRequest(); - sendMessageRequest.setSensorAlternateId( - Objects.requireNonNull(parameters.getOnboardingResponse()).getSensorAlternateId()); - sendMessageRequest.setCapabilityAlternateId( - parameters.getOnboardingResponse().getCapabilityAlternateId()); - List messages = new ArrayList<>(); - Objects.requireNonNull(parameters.getEncodedMessages()) - .forEach( - messageToSend -> { - Message message = new Message(); - message.setMessage(messageToSend); - message.setTimestamp("" + UtcTimeService.now().toEpochSecond()); - messages.add(message); - }); - sendMessageRequest.setMessages(messages); - return sendMessageRequest; - } + default SendMessageRequest createSendMessageRequest(SendMessageParameters parameters) { + parameters.validate(); + SendMessageRequest sendMessageRequest = new SendMessageRequest(); + sendMessageRequest.setSensorAlternateId( + Objects.requireNonNull(parameters.getOnboardingResponse()).getSensorAlternateId()); + sendMessageRequest.setCapabilityAlternateId( + parameters.getOnboardingResponse().getCapabilityAlternateId()); + List messages = new ArrayList<>(); + Objects.requireNonNull(parameters.getEncodedMessages()) + .forEach( + messageToSend -> { + Message message = new Message(); + message.setMessage(messageToSend); + message.setTimestamp("" + UtcTimeService.now().toEpochSecond()); + messages.add(message); + }); + sendMessageRequest.setMessages(messages); + return sendMessageRequest; + } } 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 c7fad4f3..adf1ab0f 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,443 +16,444 @@ 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 java.util.Objects; public interface MessageEncoder extends HasLogger { - /** - * Encode a message to delete messages. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(DeleteMessageParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - FeedRequests.MessageDelete.Builder messageContent = FeedRequests.MessageDelete.newBuilder(); - if (parameters.getMessageIds() != null) { - messageContent.addAllMessageIds(parameters.getMessageIds()); + /** + * Encode a message to delete messages. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(DeleteMessageParameters parameters) { + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + FeedRequests.MessageDelete.Builder messageContent = FeedRequests.MessageDelete.newBuilder(); + if (parameters.getMessageIds() != null) { + messageContent.addAllMessageIds(parameters.getMessageIds()); + } + if (parameters.getSenderIds() != null) { + messageContent.addAllSenders(parameters.getSenderIds()); + } + if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { + FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); + if (null != parameters.getSentFromInSeconds()) { + validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); + } + if (null != parameters.getSentToInSeconds()) { + validityPeriod.setSentTo(new TimestampUtil().seconds(parameters.getSentToInSeconds())); + } + messageContent.setValidityPeriod(validityPeriod); + } + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_DELETE.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); + } + + /** + * Encode a message to list endpoints. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(ListEndpointsParameters parameters) { + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + if (parameters.getUnfilteredList()) { + messageHeaderParameters.setTechnicalMessageType( + SystemMessageType.DKE_LIST_ENDPOINTS_UNFILTERED); + } else { + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_LIST_ENDPOINTS); + } + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + Endpoints.ListEndpointsQuery.Builder messageContent = Endpoints.ListEndpointsQuery.newBuilder(); + messageContent.setDirection(Objects.requireNonNull(parameters.getDirection())); + messageContent.setTechnicalMessageType( + Objects.requireNonNull(parameters.getTechnicalMessageType()).getKey()); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_LIST_ENDPOINTS.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + + return new EncodedMessage(applicationMessageID, encodedMessage); + } + + /** + * Encode a message to send a message confirmation. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(MessageConfirmationParameters parameters) { + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_CONFIRM); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + FeedRequests.MessageConfirm.Builder messageContent = FeedRequests.MessageConfirm.newBuilder(); + messageContent.addAllMessageIds(Objects.requireNonNull(parameters.getMessageIds())); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_CONFIRM.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); } - if (parameters.getSenderIds() != null) { - messageContent.addAllSenders(parameters.getSenderIds()); + + /** + * Encode a message to set capabilities. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(SetCapabilitiesParameters parameters) { + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + Capabilities.CapabilitySpecification.Builder builder = + Capabilities.CapabilitySpecification.newBuilder(); + builder.setAppCertificationId(Objects.requireNonNull(parameters.getApplicationId())); + builder.setAppCertificationVersionId( + Objects.requireNonNull(parameters.getCertificationVersionId())); + builder.setEnablePushNotifications(parameters.getEnablePushNotifications()); + + parameters.getCapabilitiesParameters(); + Objects.requireNonNull(parameters.getCapabilitiesParameters()) + .forEach( + p -> { + Capabilities.CapabilitySpecification.Capability.Builder capabilityBuilder = + Capabilities.CapabilitySpecification.Capability.newBuilder(); + capabilityBuilder.setTechnicalMessageType( + Objects.requireNonNull(p.getTechnicalMessageType()).getKey()); + capabilityBuilder.setDirection(Objects.requireNonNull(p.getDirection())); + Capabilities.CapabilitySpecification.Capability capability = + capabilityBuilder.build(); + builder.addCapabilities(capability); + }); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CAPABILITIES.getTypeUrl()); + payloadParameters.setValue(builder.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); } - if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { - FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); - if (null != parameters.getSentFromInSeconds()) { - validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); - } - if (null != parameters.getSentToInSeconds()) { - validityPeriod.setSentTo(new TimestampUtil().seconds(parameters.getSentToInSeconds())); - } - messageContent.setValidityPeriod(validityPeriod); + + static void setSequenceNumber( + MessageHeaderParameters messageHeaderParameters, + long sequenceNumber, + OnboardingResponse onboardingResponse) { + if (sequenceNumber == 0 && onboardingResponse == null) { + throw new IllegalArgumentException( + "Either sequence number or onboarding response must be set."); + } + + messageHeaderParameters.setApplicationMessageSeqNo( + sequenceNumber != 0 + ? sequenceNumber + : SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); } - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_DELETE.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode a message to list endpoints. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(ListEndpointsParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - if (parameters.getUnfilteredList()) { - messageHeaderParameters.setTechnicalMessageType( - SystemMessageType.DKE_LIST_ENDPOINTS_UNFILTERED); - } else { - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_LIST_ENDPOINTS); + /** + * Encode a message to set a subscription. + * + * @param parameters - + * @return - + */ + @Deprecated + default EncodedMessage encodeMessage(SetSubscriptionParameters parameters) { + return encode(parameters); } - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - Endpoints.ListEndpointsQuery.Builder messageContent = Endpoints.ListEndpointsQuery.newBuilder(); - messageContent.setDirection(Objects.requireNonNull(parameters.getDirection())); - messageContent.setTechnicalMessageType( - Objects.requireNonNull(parameters.getTechnicalMessageType()).getKey()); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_LIST_ENDPOINTS.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode a message to send a message confirmation. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(MessageConfirmationParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_CONFIRM); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - FeedRequests.MessageConfirm.Builder messageContent = FeedRequests.MessageConfirm.newBuilder(); - messageContent.addAllMessageIds(Objects.requireNonNull(parameters.getMessageIds())); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_CONFIRM.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode a message to set capabilities. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(SetCapabilitiesParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - Capabilities.CapabilitySpecification.Builder builder = - Capabilities.CapabilitySpecification.newBuilder(); - builder.setAppCertificationId(Objects.requireNonNull(parameters.getApplicationId())); - builder.setAppCertificationVersionId( - Objects.requireNonNull(parameters.getCertificationVersionId())); - builder.setEnablePushNotifications(parameters.getEnablePushNotifications()); - - parameters.getCapabilitiesParameters(); - Objects.requireNonNull(parameters.getCapabilitiesParameters()) - .forEach( - p -> { - Capabilities.CapabilitySpecification.Capability.Builder capabilityBuilder = - Capabilities.CapabilitySpecification.Capability.newBuilder(); - capabilityBuilder.setTechnicalMessageType( - Objects.requireNonNull(p.getTechnicalMessageType()).getKey()); - capabilityBuilder.setDirection(Objects.requireNonNull(p.getDirection())); - Capabilities.CapabilitySpecification.Capability capability = - capabilityBuilder.build(); - builder.addCapabilities(capability); - }); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_CAPABILITIES.getTypeUrl()); - payloadParameters.setValue(builder.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - static void setSequenceNumber( - MessageHeaderParameters messageHeaderParameters, - long sequenceNumber, - OnboardingResponse onboardingResponse) { - if (sequenceNumber == 0 && onboardingResponse == null) { - throw new IllegalArgumentException( - "Either sequence number or onboarding response must be set."); + + /** + * Encode a message to set a subscription. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(SetSubscriptionParameters parameters) { + assert parameters.getOnboardingResponse() != null; + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_SUBSCRIPTION); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + SubscriptionOuterClass.Subscription.Builder messageContent = + SubscriptionOuterClass.Subscription.newBuilder(); + parameters + .getSubscriptions() + .forEach( + parameter -> { + SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.Builder + technicalMessageType = + SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.newBuilder(); + technicalMessageType.setTechnicalMessageType( + Objects.requireNonNull(parameter.getTechnicalMessageType()).getKey()); + technicalMessageType.addAllDdis(parameter.getDdis()); + technicalMessageType.setPosition(parameter.getPosition()); + messageContent.addTechnicalMessageTypes(technicalMessageType); + }); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_SUBSCRIPTION.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); } - messageHeaderParameters.setApplicationMessageSeqNo( - sequenceNumber != 0 - ? sequenceNumber - : SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - } - - /** - * Encode a message to set a subscription. - * - * @param parameters - - * @return - - */ - @Deprecated - default EncodedMessage encodeMessage(SetSubscriptionParameters parameters) { - return encode(parameters); - } - - /** - * Encode a message to set a subscription. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(SetSubscriptionParameters parameters) { - assert parameters.getOnboardingResponse() != null; - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_SUBSCRIPTION); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - SubscriptionOuterClass.Subscription.Builder messageContent = - SubscriptionOuterClass.Subscription.newBuilder(); - parameters - .getSubscriptions() - .forEach( - parameter -> { - SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.Builder - technicalMessageType = - SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.newBuilder(); - technicalMessageType.setTechnicalMessageType( - Objects.requireNonNull(parameter.getTechnicalMessageType()).getKey()); - technicalMessageType.addAllDdis(parameter.getDdis()); - technicalMessageType.setPosition(parameter.getPosition()); - messageContent.addTechnicalMessageTypes(technicalMessageType); - }); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_SUBSCRIPTION.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode a message to query messages. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode( - TechnicalMessageType technicalMessageType, MessageQueryParameters parameters) { - this.logMethodBegin(parameters); - this.getNativeLogger().trace("Build message header parameters."); - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setTechnicalMessageType(technicalMessageType); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - this.getNativeLogger().trace("Build message query parameters."); - FeedRequests.MessageQuery.Builder messageContent = FeedRequests.MessageQuery.newBuilder(); - if (parameters.getMessageIds() != null) { - messageContent.addAllMessageIds(parameters.getMessageIds()); + /** + * Encode a message to query messages. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode( + TechnicalMessageType technicalMessageType, MessageQueryParameters parameters) { + this.logMethodBegin(parameters); + this.getNativeLogger().trace("Build message header parameters."); + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setTechnicalMessageType(technicalMessageType); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + this.getNativeLogger().trace("Build message query parameters."); + FeedRequests.MessageQuery.Builder messageContent = FeedRequests.MessageQuery.newBuilder(); + if (parameters.getMessageIds() != null) { + messageContent.addAllMessageIds(parameters.getMessageIds()); + } + if (parameters.getSenderIds() != null) { + messageContent.addAllSenders(parameters.getSenderIds()); + } + if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { + FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); + if (null != parameters.getSentFromInSeconds()) { + validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); + } + if (null != parameters.getSentToInSeconds()) { + validityPeriod.setSentTo(new TimestampUtil().seconds(parameters.getSentToInSeconds())); + } + messageContent.setValidityPeriod(validityPeriod); + } + + this.getNativeLogger().trace("Build message payload parameters."); + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(technicalMessageType.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + this.getNativeLogger().trace("Encode message."); + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + + this.logMethodEnd(encodedMessage); + return new EncodedMessage(applicationMessageID, encodedMessage); } - if (parameters.getSenderIds() != null) { - messageContent.addAllSenders(parameters.getSenderIds()); + + /** + * Encode message for cloud onboarding of virtual CUs. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(CloudOnboardingParameters parameters) { + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + final String teamsetContextId = + parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); + + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setApplicationMessageId(applicationMessageID); + messageHeaderParameters.setTeamSetContextId(teamsetContextId); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + + CloudVirtualizedAppRegistration.OnboardingRequest.Builder messageContent = + CloudVirtualizedAppRegistration.OnboardingRequest.newBuilder(); + Objects.requireNonNull(parameters.getEndpointDetails()) + .forEach( + p -> { + CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails.Builder + builder = + CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails + .newBuilder(); + builder.setId(Objects.requireNonNull(p.getEndpointId())); + builder.setName(Objects.requireNonNull(p.getEndpointName())); + messageContent.addOnboardingRequests(builder.build()); + }); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS.getTypeUrl()); + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); } - if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { - FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); - if (null != parameters.getSentFromInSeconds()) { - validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); - } - if (null != parameters.getSentToInSeconds()) { - validityPeriod.setSentTo(new TimestampUtil().seconds(parameters.getSentToInSeconds())); - } - messageContent.setValidityPeriod(validityPeriod); + + /** + * Encode cloud offboarding message. + * + * @param parameters - + * @return - + */ + default EncodedMessage encode(CloudOffboardingParameters parameters) { + final String applicationMessageID = + parameters.getApplicationMessageId() == null + ? MessageIdService.generateMessageId() + : parameters.getApplicationMessageId(); + + CloudVirtualizedAppRegistration.OffboardingRequest.Builder messageContent = + CloudVirtualizedAppRegistration.OffboardingRequest.newBuilder(); + messageContent.addAllEndpoints(Objects.requireNonNull(parameters.getEndpointIds())); + + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setApplicationMessageId(applicationMessageID); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); + + setSequenceNumber( + messageHeaderParameters, + parameters.getSequenceNumber(), + parameters.getOnboardingResponse()); + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS.getTypeUrl()); + + payloadParameters.setValue(messageContent.build().toByteString()); + + String encodedMessage = + this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); + return new EncodedMessage(applicationMessageID, encodedMessage); } - this.getNativeLogger().trace("Build message payload parameters."); - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(technicalMessageType.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - this.getNativeLogger().trace("Encode message."); - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - - this.logMethodEnd(encodedMessage); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode message for cloud onboarding of virtual CUs. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(CloudOnboardingParameters parameters) { - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - final String teamsetContextId = - parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - messageHeaderParameters.setApplicationMessageId(applicationMessageID); - messageHeaderParameters.setTeamSetContextId(teamsetContextId); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - - CloudVirtualizedAppRegistration.OnboardingRequest.Builder messageContent = - CloudVirtualizedAppRegistration.OnboardingRequest.newBuilder(); - Objects.requireNonNull(parameters.getEndpointDetails()) - .forEach( - p -> { - CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails.Builder - builder = - CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails - .newBuilder(); - builder.setId(Objects.requireNonNull(p.getEndpointId())); - builder.setName(Objects.requireNonNull(p.getEndpointName())); - messageContent.addOnboardingRequests(builder.build()); - }); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS.getTypeUrl()); - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Encode cloud offboarding message. - * - * @param parameters - - * @return - - */ - default EncodedMessage encode(CloudOffboardingParameters parameters) { - final String applicationMessageID = - parameters.getApplicationMessageId() == null - ? MessageIdService.generateMessageId() - : parameters.getApplicationMessageId(); - - CloudVirtualizedAppRegistration.OffboardingRequest.Builder messageContent = - CloudVirtualizedAppRegistration.OffboardingRequest.newBuilder(); - messageContent.addAllEndpoints(Objects.requireNonNull(parameters.getEndpointIds())); - - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - messageHeaderParameters.setApplicationMessageId(applicationMessageID); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - - setSequenceNumber( - messageHeaderParameters, - parameters.getSequenceNumber(), - parameters.getOnboardingResponse()); - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS.getTypeUrl()); - - payloadParameters.setValue(messageContent.build().toByteString()); - - String encodedMessage = - this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); - return new EncodedMessage(applicationMessageID, encodedMessage); - } - - /** - * Get the service to encode messages. - * - * @return - - */ - EncodeMessageService getEncodeMessageService(); + /** + * Get the service to encode messages. + * + * @return - + */ + EncodeMessageService getEncodeMessageService(); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MqttService.java index dc577b3e..1a4bb7f7 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 @@ -2,16 +2,18 @@ import org.eclipse.paho.client.mqttv3.IMqttClient; -/** Base class which holds the MQTT client with the connection provided by the provider. */ +/** + * Base class which holds the MQTT client with the connection provided by the provider. + */ public class MqttService { - private final IMqttClient mqttClient; + private final IMqttClient mqttClient; - public MqttService(IMqttClient mqttClient) { - this.mqttClient = mqttClient; - } + public MqttService(IMqttClient mqttClient) { + this.mqttClient = mqttClient; + } - protected IMqttClient getMqttClient() { - return mqttClient; - } + protected IMqttClient getMqttClient() { + return mqttClient; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java index cfc8f974..7a3db3c5 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java @@ -1,6 +1,7 @@ package com.dke.data.agrirouter.impl.messaging; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; + import java.util.concurrent.ConcurrentHashMap; /** @@ -10,22 +11,22 @@ */ public class SequenceNumberService { - private static final ConcurrentHashMap sequenceNumbersForEndpoints = - new ConcurrentHashMap<>(); + private static final ConcurrentHashMap sequenceNumbersForEndpoints = + new ConcurrentHashMap<>(); - /** - * Generate the sequence number for the onboarding response. - * - * @param onboardingResponse - - * @return 1 if this was the first call, 1+n for the n-th call. - */ - public static synchronized long generateSequenceNumberForEndpoint( - OnboardingResponse onboardingResponse) { - sequenceNumbersForEndpoints.putIfAbsent(onboardingResponse.getSensorAlternateId(), 1L); - Long currentSequenceNumber = - sequenceNumbersForEndpoints.get(onboardingResponse.getSensorAlternateId()); - sequenceNumbersForEndpoints.put( - onboardingResponse.getSensorAlternateId(), currentSequenceNumber + 1); - return currentSequenceNumber; - } + /** + * Generate the sequence number for the onboarding response. + * + * @param onboardingResponse - + * @return 1 if this was the first call, 1+n for the n-th call. + */ + public static synchronized long generateSequenceNumberForEndpoint( + OnboardingResponse onboardingResponse) { + sequenceNumbersForEndpoints.putIfAbsent(onboardingResponse.getSensorAlternateId(), 1L); + Long currentSequenceNumber = + sequenceNumbersForEndpoints.get(onboardingResponse.getSensorAlternateId()); + sequenceNumbersForEndpoints.put( + onboardingResponse.getSensorAlternateId(), currentSequenceNumber + 1); + return currentSequenceNumber; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java index a23265f5..1534a5b8 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java @@ -8,71 +8,74 @@ import com.google.protobuf.Any; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import org.apache.commons.lang3.StringUtils; + import java.io.ByteArrayInputStream; import java.io.IOException; import java.util.Base64; -import org.apache.commons.lang3.StringUtils; -/** Internal service implementation. */ +/** + * Internal service implementation. + */ public class DecodeMessageServiceImpl extends NonEnvironmentalService - implements DecodeMessageService { + implements DecodeMessageService { - @Override - public DecodeMessageResponse decode(String encodedResponse) { - this.logMethodBegin(encodedResponse); + @Override + public DecodeMessageResponse decode(String encodedResponse) { + this.logMethodBegin(encodedResponse); - if (StringUtils.isBlank(encodedResponse)) { - throw new IllegalArgumentException("Please provide a valid encoded response."); - } - try { + if (StringUtils.isBlank(encodedResponse)) { + throw new IllegalArgumentException("Please provide a valid encoded response."); + } + try { - this.getNativeLogger().trace("Decoding byte array."); - byte[] decodedBytes = Base64.getDecoder().decode(encodedResponse); - ByteArrayInputStream inputStream = new ByteArrayInputStream(decodedBytes); + this.getNativeLogger().trace("Decoding byte array."); + byte[] decodedBytes = Base64.getDecoder().decode(encodedResponse); + ByteArrayInputStream inputStream = new ByteArrayInputStream(decodedBytes); - this.getNativeLogger().trace("Parse response envelope."); - agrirouter.response.Response.ResponseEnvelope responseEnvelope = - agrirouter.response.Response.ResponseEnvelope.parseDelimitedFrom(inputStream); + this.getNativeLogger().trace("Parse response envelope."); + agrirouter.response.Response.ResponseEnvelope responseEnvelope = + agrirouter.response.Response.ResponseEnvelope.parseDelimitedFrom(inputStream); - this.getNativeLogger().trace("Parse response payload wrapper."); - agrirouter.response.Response.ResponsePayloadWrapper responsePayloadWrapper = - agrirouter.response.Response.ResponsePayloadWrapper.parseDelimitedFrom(inputStream); - DecodeMessageResponse decodeMessageResponse = new DecodeMessageResponse(); - decodeMessageResponse.setResponseEnvelope(responseEnvelope); - decodeMessageResponse.setResponsePayloadWrapper(responsePayloadWrapper); + this.getNativeLogger().trace("Parse response payload wrapper."); + agrirouter.response.Response.ResponsePayloadWrapper responsePayloadWrapper = + agrirouter.response.Response.ResponsePayloadWrapper.parseDelimitedFrom(inputStream); + DecodeMessageResponse decodeMessageResponse = new DecodeMessageResponse(); + decodeMessageResponse.setResponseEnvelope(responseEnvelope); + decodeMessageResponse.setResponsePayloadWrapper(responsePayloadWrapper); - this.logMethodEnd(decodeMessageResponse); - return decodeMessageResponse; - } catch (IOException e) { - throw new CouldNotDecodeMessageException(e); + this.logMethodEnd(decodeMessageResponse); + return decodeMessageResponse; + } catch (IOException e) { + throw new CouldNotDecodeMessageException(e); + } } - } - @Override - public MessageOuterClass.Message decode(ByteString message) { - try { - this.logMethodBegin(message); + @Override + public MessageOuterClass.Message decode(ByteString message) { + try { + this.logMethodBegin(message); - this.getNativeLogger().trace("Decoding byte string."); - MessageOuterClass.Message decodedMessage = MessageOuterClass.Message.parseFrom(message); + this.getNativeLogger().trace("Decoding byte string."); + MessageOuterClass.Message decodedMessage = MessageOuterClass.Message.parseFrom(message); - this.logMethodEnd(decodedMessage); - return decodedMessage; - } catch (InvalidProtocolBufferException e) { - throw new CouldNotDecodeMessageException(e); + this.logMethodEnd(decodedMessage); + return decodedMessage; + } catch (InvalidProtocolBufferException e) { + throw new CouldNotDecodeMessageException(e); + } } - } - @Override - public MessageOuterClass.Messages decode(Any any) { - try { - this.logMethodBegin(any); - MessageOuterClass.Messages messages = - any.unpack(agrirouter.commons.MessageOuterClass.Messages.class); - this.logMethodEnd(); - return messages; - } catch (InvalidProtocolBufferException e) { - throw new CouldNotDecodeMessageException(e); + @Override + public MessageOuterClass.Messages decode(Any any) { + try { + this.logMethodBegin(any); + MessageOuterClass.Messages messages = + any.unpack(agrirouter.commons.MessageOuterClass.Messages.class); + this.logMethodEnd(); + return messages; + } catch (InvalidProtocolBufferException e) { + throw new CouldNotDecodeMessageException(e); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java index 6e0b1a1c..07fc944f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java @@ -10,36 +10,36 @@ import org.apache.commons.lang3.StringUtils; public class DecodePushNotificationServiceImpl extends NonEnvironmentalService - implements DecodePushNotificationService { + implements DecodePushNotificationService { - private final DecodeMessageServiceImpl decodeMessageService; + private final DecodeMessageServiceImpl decodeMessageService; - public DecodePushNotificationServiceImpl() { - this.decodeMessageService = new DecodeMessageServiceImpl(); - } + public DecodePushNotificationServiceImpl() { + this.decodeMessageService = new DecodeMessageServiceImpl(); + } - @Override - public PushNotificationOuterClass.PushNotification decode(String encodedResponse) { - this.logMethodBegin(encodedResponse); + @Override + public PushNotificationOuterClass.PushNotification decode(String encodedResponse) { + this.logMethodBegin(encodedResponse); - if (StringUtils.isBlank(encodedResponse)) { - throw new IllegalArgumentException("Please provide a valid encoded response."); - } - try { - DecodeMessageResponse decodedMessagesResponse = - this.decodeMessageService.decode(encodedResponse); - if (decodedMessagesResponse.getResponseEnvelope().getType() - == Response.ResponseEnvelope.ResponseBodyType.PUSH_NOTIFICATION) { - return decodedMessagesResponse - .getResponsePayloadWrapper() - .getDetails() - .unpack(PushNotificationOuterClass.PushNotification.class); - } else { - throw new CouldNotDecodePushNotificationException( - "This was not a push notification, please use common message decoding to decode the message itself."); - } - } catch (InvalidProtocolBufferException e) { - throw new CouldNotDecodePushNotificationException(e); + if (StringUtils.isBlank(encodedResponse)) { + throw new IllegalArgumentException("Please provide a valid encoded response."); + } + try { + DecodeMessageResponse decodedMessagesResponse = + this.decodeMessageService.decode(encodedResponse); + if (decodedMessagesResponse.getResponseEnvelope().getType() + == Response.ResponseEnvelope.ResponseBodyType.PUSH_NOTIFICATION) { + return decodedMessagesResponse + .getResponsePayloadWrapper() + .getDetails() + .unpack(PushNotificationOuterClass.PushNotification.class); + } else { + throw new CouldNotDecodePushNotificationException( + "This was not a push notification, please use common message decoding to decode the message itself."); + } + } catch (InvalidProtocolBufferException e) { + throw new CouldNotDecodePushNotificationException(e); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java index d52e18ff..b74d35f9 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import static com.dke.data.agrirouter.api.service.parameters.PayloadParametersKt.MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT; - import agrirouter.commons.Chunk; import agrirouter.request.Request; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; @@ -17,223 +15,228 @@ import com.dke.data.agrirouter.impl.messaging.SequenceNumberService; import com.google.protobuf.Any; import com.google.protobuf.ByteString; +import org.apache.commons.lang3.StringUtils; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import org.apache.commons.lang3.StringUtils; -/** Internal service implementation. */ +import static com.dke.data.agrirouter.api.service.parameters.PayloadParametersKt.MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT; + +/** + * Internal service implementation. + */ @SuppressWarnings("ConstantConditions") public class EncodeMessageServiceImpl extends NonEnvironmentalService - implements EncodeMessageService { - - /** - * Encode a message. In this case chunking will be done by the application and not by the SDK. - * - * @param messageHeaderParameters - - * @param payloadParameters - - * @return Single message, encoded by the SDK. - */ - public String encode( - MessageHeaderParameters messageHeaderParameters, PayloadParameters payloadParameters) { - logMethodBegin(messageHeaderParameters, payloadParameters); - - if (null == messageHeaderParameters || null == payloadParameters) { - throw new IllegalArgumentException("Parameters cannot be NULL"); + implements EncodeMessageService { + + /** + * Encode a message. In this case chunking will be done by the application and not by the SDK. + * + * @param messageHeaderParameters - + * @param payloadParameters - + * @return Single message, encoded by the SDK. + */ + public String encode( + MessageHeaderParameters messageHeaderParameters, PayloadParameters payloadParameters) { + logMethodBegin(messageHeaderParameters, payloadParameters); + + if (null == messageHeaderParameters || null == payloadParameters) { + throw new IllegalArgumentException("Parameters cannot be NULL"); + } + messageHeaderParameters.validate(); + payloadParameters.validate(); + + try (ByteArrayOutputStream streamedMessage = new ByteArrayOutputStream()) { + + getNativeLogger().trace("Encode header."); + header(messageHeaderParameters).writeDelimitedTo(streamedMessage); + + getNativeLogger().trace("Encode payload."); + payload(payloadParameters).writeDelimitedTo(streamedMessage); + + getNativeLogger().trace("Encoding message."); + String encodedMessage = Base64.getEncoder().encodeToString(streamedMessage.toByteArray()); + + logMethodEnd(encodedMessage); + return encodedMessage; + } catch (IOException e) { + throw new CouldNotEncodeMessageException(e); + } } - messageHeaderParameters.validate(); - payloadParameters.validate(); - - try (ByteArrayOutputStream streamedMessage = new ByteArrayOutputStream()) { - - getNativeLogger().trace("Encode header."); - header(messageHeaderParameters).writeDelimitedTo(streamedMessage); - - getNativeLogger().trace("Encode payload."); - payload(payloadParameters).writeDelimitedTo(streamedMessage); - - getNativeLogger().trace("Encoding message."); - String encodedMessage = Base64.getEncoder().encodeToString(streamedMessage.toByteArray()); - logMethodEnd(encodedMessage); - return encodedMessage; - } catch (IOException e) { - throw new CouldNotEncodeMessageException(e); + /** + * Encode a number of messages. + * + * @param messageParameterTuples - + * @return - + */ + public List encode(List messageParameterTuples) { + return messageParameterTuples.stream() + .map( + messageParameterTuple -> + encode( + messageParameterTuple.getMessageHeaderParameters(), + messageParameterTuple.getPayloadParameters())) + .collect(Collectors.toList()); } - } - - /** - * Encode a number of messages. - * - * @param messageParameterTuples - - * @return - - */ - public List encode(List messageParameterTuples) { - return messageParameterTuples.stream() - .map( - messageParameterTuple -> - encode( - messageParameterTuple.getMessageHeaderParameters(), - messageParameterTuple.getPayloadParameters())) - .collect(Collectors.toList()); - } - - /** - * Chunk and add the Base64 encoding for a message if necessary. If there is only one chunk, the - * single chunk will be returned as Base64 encoded value. The chunk information and all IDs will - * be set by the SDK and are no longer in control of the application. - * - * @param messageHeaderParameters - - * @param payloadParameters Content of the message. It shall not be Base64 encoded before. - * @return - - */ - public List chunkAndBase64EncodeEachChunk( - MessageHeaderParameters messageHeaderParameters, - PayloadParameters payloadParameters, - OnboardingResponse onboardingResponse) { - logMethodBegin(messageHeaderParameters, payloadParameters); - - if (null == messageHeaderParameters - || null == payloadParameters - || null == onboardingResponse) { - throw new IllegalArgumentException("Parameters cannot be NULL"); - } - messageHeaderParameters.validate(); - payloadParameters.validate(); - - if (messageHeaderParameters - .getTechnicalMessageType() - .needsBase64EncodingAndHasToBeChunkedIfNecessary()) { - if (payloadParameters.shouldBeChunked()) { - getNativeLogger() - .debug( - "The message should be chunked, current size of the payload ({}) is above the limitation.", - payloadParameters.getValue().toStringUtf8().length()); - byte[] wholeMessage = payloadParameters.getValue().toByteArray(); - final List messageChunks = splitIntoChunks(wholeMessage); - List tuples = new ArrayList<>(); - AtomicInteger chunkNr = new AtomicInteger(1); - final String chunkContextId = ChunkContextIdService.generateChunkContextId(); - messageChunks.forEach( - chunk -> { - final String messageIdForChunk = MessageIdService.generateMessageId(); - final long sequenceNumberForChunk = - SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse); - - final MessageHeaderParameters header = new MessageHeaderParameters(); - header.copy(messageHeaderParameters); - header.setApplicationMessageId(messageIdForChunk); - header.setApplicationMessageSeqNo(sequenceNumberForChunk); - Chunk.ChunkComponent.Builder chunkInfo = Chunk.ChunkComponent.newBuilder(); - chunkInfo.setContextId(chunkContextId); - chunkInfo.setCurrent(chunkNr.getAndIncrement()); - chunkInfo.setTotal(messageChunks.size()); - chunkInfo.setTotalSize(wholeMessage.length); - header.setChunkInfo(chunkInfo.build()); - - final PayloadParameters payload = new PayloadParameters(); - payload.copyFrom(payloadParameters); - payload.setValue(ByteString.copyFromUtf8(Base64.getEncoder().encodeToString(chunk))); - - tuples.add(new MessageParameterTuple(header, payload)); - }); - return tuples; - } else { - getNativeLogger() - .debug( - "The message is not chunked since the current size of the payload ({}) is not above the limitation and the technical message type '{}' does support chunking.", - payloadParameters.getValue().toStringUtf8().length(), - messageHeaderParameters.getTechnicalMessageType().getKey()); - getNativeLogger() - .debug("The content is encoded, since in other cases the content is encoded as well."); - final PayloadParameters payload = new PayloadParameters(); - payload.copyFrom(payloadParameters); - payload.setValue( - ByteString.copyFromUtf8( - Base64.getEncoder() - .encodeToString( - payloadParameters - .getValue() - .toStringUtf8() - .getBytes(StandardCharsets.UTF_8)))); - return Collections.singletonList( - new MessageParameterTuple(messageHeaderParameters, payload)); - } - } else { - getNativeLogger() - .debug( - "The message type does not need chunking and base 64 encoding, we are returning the tuple 'as it is'."); - return Collections.singletonList( - new MessageParameterTuple(messageHeaderParameters, payloadParameters)); - } - } - - private List splitIntoChunks(byte[] wholeMessage) { - List chunks = new ArrayList<>(); - byte[] remainingBytes = wholeMessage; - do { - final byte[] chunk = - Arrays.copyOfRange(remainingBytes, 0, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); - chunks.add(chunk); - remainingBytes = - Arrays.copyOfRange( - remainingBytes, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT, remainingBytes.length); - } while (remainingBytes.length > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); - if (remainingBytes.length > 0) { - chunks.add(remainingBytes); - } - return chunks; - } - - private Request.RequestEnvelope header(MessageHeaderParameters parameters) { - logMethodBegin(parameters); - - getNativeLogger().trace("Create message header."); - agrirouter.request.Request.RequestEnvelope.Builder messageHeader = - Request.RequestEnvelope.newBuilder(); - messageHeader.setApplicationMessageId(parameters.getApplicationMessageId()); - messageHeader.setApplicationMessageSeqNo(parameters.getApplicationMessageSeqNo()); - messageHeader.setTechnicalMessageType(parameters.getTechnicalMessageType().getKey()); - messageHeader.setMode(parameters.getMode()); - if (null != parameters.getMetadata()) { - messageHeader.setMetadata(parameters.getMetadata()); - } - if (StringUtils.isNotBlank(parameters.getTeamSetContextId())) { - messageHeader.setTeamSetContextId(parameters.getTeamSetContextId()); - } - if (!parameters.getRecipients().isEmpty()) { - messageHeader.addAllRecipients(parameters.getRecipients()); - } - if (parameters.getChunkInfo() != null) { - messageHeader.setChunkInfo(parameters.getChunkInfo()); + + /** + * Chunk and add the Base64 encoding for a message if necessary. If there is only one chunk, the + * single chunk will be returned as Base64 encoded value. The chunk information and all IDs will + * be set by the SDK and are no longer in control of the application. + * + * @param messageHeaderParameters - + * @param payloadParameters Content of the message. It shall not be Base64 encoded before. + * @return - + */ + public List chunkAndBase64EncodeEachChunk( + MessageHeaderParameters messageHeaderParameters, + PayloadParameters payloadParameters, + OnboardingResponse onboardingResponse) { + logMethodBegin(messageHeaderParameters, payloadParameters); + + if (null == messageHeaderParameters + || null == payloadParameters + || null == onboardingResponse) { + throw new IllegalArgumentException("Parameters cannot be NULL"); + } + messageHeaderParameters.validate(); + payloadParameters.validate(); + + if (messageHeaderParameters + .getTechnicalMessageType() + .needsBase64EncodingAndHasToBeChunkedIfNecessary()) { + if (payloadParameters.shouldBeChunked()) { + getNativeLogger() + .debug( + "The message should be chunked, current size of the payload ({}) is above the limitation.", + payloadParameters.getValue().toStringUtf8().length()); + byte[] wholeMessage = payloadParameters.getValue().toByteArray(); + final List messageChunks = splitIntoChunks(wholeMessage); + List tuples = new ArrayList<>(); + AtomicInteger chunkNr = new AtomicInteger(1); + final String chunkContextId = ChunkContextIdService.generateChunkContextId(); + messageChunks.forEach( + chunk -> { + final String messageIdForChunk = MessageIdService.generateMessageId(); + final long sequenceNumberForChunk = + SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse); + + final MessageHeaderParameters header = new MessageHeaderParameters(); + header.copy(messageHeaderParameters); + header.setApplicationMessageId(messageIdForChunk); + header.setApplicationMessageSeqNo(sequenceNumberForChunk); + Chunk.ChunkComponent.Builder chunkInfo = Chunk.ChunkComponent.newBuilder(); + chunkInfo.setContextId(chunkContextId); + chunkInfo.setCurrent(chunkNr.getAndIncrement()); + chunkInfo.setTotal(messageChunks.size()); + chunkInfo.setTotalSize(wholeMessage.length); + header.setChunkInfo(chunkInfo.build()); + + final PayloadParameters payload = new PayloadParameters(); + payload.copyFrom(payloadParameters); + payload.setValue(ByteString.copyFromUtf8(Base64.getEncoder().encodeToString(chunk))); + + tuples.add(new MessageParameterTuple(header, payload)); + }); + return tuples; + } else { + getNativeLogger() + .debug( + "The message is not chunked since the current size of the payload ({}) is not above the limitation and the technical message type '{}' does support chunking.", + payloadParameters.getValue().toStringUtf8().length(), + messageHeaderParameters.getTechnicalMessageType().getKey()); + getNativeLogger() + .debug("The content is encoded, since in other cases the content is encoded as well."); + final PayloadParameters payload = new PayloadParameters(); + payload.copyFrom(payloadParameters); + payload.setValue( + ByteString.copyFromUtf8( + Base64.getEncoder() + .encodeToString( + payloadParameters + .getValue() + .toStringUtf8() + .getBytes(StandardCharsets.UTF_8)))); + return Collections.singletonList( + new MessageParameterTuple(messageHeaderParameters, payload)); + } + } else { + getNativeLogger() + .debug( + "The message type does not need chunking and base 64 encoding, we are returning the tuple 'as it is'."); + return Collections.singletonList( + new MessageParameterTuple(messageHeaderParameters, payloadParameters)); + } } - messageHeader.setTimestamp(new TimestampUtil().current()); - getNativeLogger().trace("Build message envelope."); - Request.RequestEnvelope requestEnvelope = messageHeader.build(); + private List splitIntoChunks(byte[] wholeMessage) { + List chunks = new ArrayList<>(); + byte[] remainingBytes = wholeMessage; + do { + final byte[] chunk = + Arrays.copyOfRange(remainingBytes, 0, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); + chunks.add(chunk); + remainingBytes = + Arrays.copyOfRange( + remainingBytes, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT, remainingBytes.length); + } while (remainingBytes.length > MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); + if (remainingBytes.length > 0) { + chunks.add(remainingBytes); + } + return chunks; + } - logMethodEnd(requestEnvelope); - return requestEnvelope; - } + private Request.RequestEnvelope header(MessageHeaderParameters parameters) { + logMethodBegin(parameters); + + getNativeLogger().trace("Create message header."); + agrirouter.request.Request.RequestEnvelope.Builder messageHeader = + Request.RequestEnvelope.newBuilder(); + messageHeader.setApplicationMessageId(parameters.getApplicationMessageId()); + messageHeader.setApplicationMessageSeqNo(parameters.getApplicationMessageSeqNo()); + messageHeader.setTechnicalMessageType(parameters.getTechnicalMessageType().getKey()); + messageHeader.setMode(parameters.getMode()); + if (null != parameters.getMetadata()) { + messageHeader.setMetadata(parameters.getMetadata()); + } + if (StringUtils.isNotBlank(parameters.getTeamSetContextId())) { + messageHeader.setTeamSetContextId(parameters.getTeamSetContextId()); + } + if (!parameters.getRecipients().isEmpty()) { + messageHeader.addAllRecipients(parameters.getRecipients()); + } + if (parameters.getChunkInfo() != null) { + messageHeader.setChunkInfo(parameters.getChunkInfo()); + } + messageHeader.setTimestamp(new TimestampUtil().current()); + + getNativeLogger().trace("Build message envelope."); + Request.RequestEnvelope requestEnvelope = messageHeader.build(); + + logMethodEnd(requestEnvelope); + return requestEnvelope; + } - private Request.RequestPayloadWrapper payload(PayloadParameters parameters) { - logMethodBegin(parameters); + private Request.RequestPayloadWrapper payload(PayloadParameters parameters) { + logMethodBegin(parameters); - getNativeLogger().trace("Create message payload."); - Request.RequestPayloadWrapper.Builder messagePayload = - Request.RequestPayloadWrapper.newBuilder(); - Any.Builder builder = Any.newBuilder(); - builder.setTypeUrl(parameters.getTypeUrl()); - builder.setValue(parameters.getValue()); - messagePayload.setDetails(builder.build()); + getNativeLogger().trace("Create message payload."); + Request.RequestPayloadWrapper.Builder messagePayload = + Request.RequestPayloadWrapper.newBuilder(); + Any.Builder builder = Any.newBuilder(); + builder.setTypeUrl(parameters.getTypeUrl()); + builder.setValue(parameters.getValue()); + messagePayload.setDetails(builder.build()); - getNativeLogger().trace("Message message payload wrapper."); - Request.RequestPayloadWrapper requestPayloadWrapper = messagePayload.build(); + getNativeLogger().trace("Message message payload wrapper."); + Request.RequestPayloadWrapper requestPayloadWrapper = messagePayload.build(); - logMethodEnd(requestPayloadWrapper); - return requestPayloadWrapper; - } + logMethodEnd(requestPayloadWrapper); + return requestPayloadWrapper; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java index 94ff87c4..a02ce0ea 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java @@ -3,28 +3,31 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters; import com.dke.data.agrirouter.impl.common.UtcTimeService; -import java.util.Collections; import org.jetbrains.annotations.NotNull; -/** Interface to avaoid duplicate parameter creation. */ +import java.util.Collections; + +/** + * Interface to avaoid duplicate parameter creation. + */ public interface DeleteAllMessagesParameterCreator { - /** - * Create message parameters to delete all messages. - * - * @param onboardingResponse - - * @return - - */ - @NotNull - default DeleteMessageParameters createMessageParametersToDeleteAllMessages( - OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); - deleteMessageParameters.setOnboardingResponse(onboardingResponse); - deleteMessageParameters.setMessageIds(Collections.emptyList()); - deleteMessageParameters.setSenderIds(Collections.emptyList()); - deleteMessageParameters.setSentFromInSeconds( - UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); - deleteMessageParameters.setSentToInSeconds(UtcTimeService.now().toEpochSecond()); - return deleteMessageParameters; - } + /** + * Create message parameters to delete all messages. + * + * @param onboardingResponse - + * @return - + */ + @NotNull + default DeleteMessageParameters createMessageParametersToDeleteAllMessages( + OnboardingResponse onboardingResponse) { + final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); + deleteMessageParameters.setOnboardingResponse(onboardingResponse); + deleteMessageParameters.setMessageIds(Collections.emptyList()); + deleteMessageParameters.setSenderIds(Collections.emptyList()); + deleteMessageParameters.setSentFromInSeconds( + UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); + deleteMessageParameters.setSentToInSeconds(UtcTimeService.now().toEpochSecond()); + return deleteMessageParameters; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java index 9858fdf6..3250838d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java @@ -11,74 +11,75 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; import java.util.concurrent.CompletableFuture; public class MessageQueryHelperService extends NonEnvironmentalService - implements MessageSender, MessageEncoder, ResponseValidator, QueryAllMessagesParameterCreator { + implements MessageSender, MessageEncoder, ResponseValidator, QueryAllMessagesParameterCreator { - private final EncodeMessageService encodeMessageService; - private final TechnicalMessageType technicalMessageType; + private final EncodeMessageService encodeMessageService; + private final TechnicalMessageType technicalMessageType; - public MessageQueryHelperService( - EncodeMessageService encodeMessageService, TechnicalMessageType technicalMessageType) { - this.logMethodBegin(); - this.encodeMessageService = encodeMessageService; - this.technicalMessageType = technicalMessageType; - this.logMethodEnd(); - } + public MessageQueryHelperService( + EncodeMessageService encodeMessageService, TechnicalMessageType technicalMessageType) { + this.logMethodBegin(); + this.encodeMessageService = encodeMessageService; + this.technicalMessageType = technicalMessageType; + this.logMethodEnd(); + } - public String send(MessageQueryParameters parameters) { - this.logMethodBegin(parameters); + public String send(MessageQueryParameters parameters) { + this.logMethodBegin(parameters); - this.getNativeLogger().trace("Validate parameters."); - parameters.validate(); + this.getNativeLogger().trace("Validate parameters."); + parameters.validate(); - this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); + this.getNativeLogger().trace("Encode message."); + EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); - this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessageResponse.getEncodedMessage())); + this.getNativeLogger().trace("Build message parameters."); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessageResponse.getEncodedMessage())); - this.getNativeLogger().trace("Send and fetch message response."); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.getNativeLogger().trace("Send and fetch message response."); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.getNativeLogger().trace("Validate message response."); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + this.getNativeLogger().trace("Validate message response."); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - this.logMethodEnd(); - return encodedMessageResponse.getApplicationMessageID(); - } + this.logMethodEnd(); + return encodedMessageResponse.getApplicationMessageID(); + } - public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { - this.logMethodBegin(parameters); + public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { + this.logMethodBegin(parameters); - this.getNativeLogger().trace("Validate parameters."); - parameters.validate(); + this.getNativeLogger().trace("Validate parameters."); + parameters.validate(); - this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); + this.getNativeLogger().trace("Encode message."); + EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); - this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessageResponse.getEncodedMessage())); + this.getNativeLogger().trace("Build message parameters."); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessageResponse.getEncodedMessage())); - this.getNativeLogger().trace("Send and fetch message response."); - CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); + this.getNativeLogger().trace("Send and fetch message response."); + CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); - this.logMethodEnd(); - return new HttpAsyncMessageSendingResult( - response, encodedMessageResponse.getApplicationMessageID()); - } + this.logMethodEnd(); + return new HttpAsyncMessageSendingResult( + response, encodedMessageResponse.getApplicationMessageID()); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java index 19aeadd0..2ef520b0 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java @@ -3,28 +3,31 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; import com.dke.data.agrirouter.impl.common.UtcTimeService; -import java.util.Collections; import org.jetbrains.annotations.NotNull; -/** Interface to abstract the message query creation. */ +import java.util.Collections; + +/** + * Interface to abstract the message query creation. + */ public interface QueryAllMessagesParameterCreator { - /** - * Create message parameters to query all messages. - * - * @param onboardingResponse - - * @return - - */ - @NotNull - default MessageQueryParameters createMessageParametersToQueryAll( - OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); - messageQueryParameters.setOnboardingResponse(onboardingResponse); - messageQueryParameters.setMessageIds(Collections.emptyList()); - messageQueryParameters.setSenderIds(Collections.emptyList()); - messageQueryParameters.setSentFromInSeconds( - UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); - messageQueryParameters.setSentToInSeconds(UtcTimeService.now().toEpochSecond()); - return messageQueryParameters; - } + /** + * Create message parameters to query all messages. + * + * @param onboardingResponse - + * @return - + */ + @NotNull + default MessageQueryParameters createMessageParametersToQueryAll( + OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); + messageQueryParameters.setOnboardingResponse(onboardingResponse); + messageQueryParameters.setMessageIds(Collections.emptyList()); + messageQueryParameters.setSenderIds(Collections.emptyList()); + messageQueryParameters.setSentFromInSeconds( + UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); + messageQueryParameters.setSentToInSeconds(UtcTimeService.now().toEpochSecond()); + return messageQueryParameters; + } } 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 b9004a60..7be87413 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 @@ -10,61 +10,62 @@ 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 java.util.Collections; -import java.util.Objects; 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; + public class MessageQueryHelperService extends MqttService - implements MessageSender, MessageEncoder, QueryAllMessagesParameterCreator { + implements MessageSender, MessageEncoder, QueryAllMessagesParameterCreator { - private final EncodeMessageService encodeMessageService; - private final TechnicalMessageType technicalMessageType; + private final EncodeMessageService encodeMessageService; + private final TechnicalMessageType technicalMessageType; - public MessageQueryHelperService( - IMqttClient mqttClient, - EncodeMessageService encodeMessageService, - TechnicalMessageType technicalMessageType) { - super(mqttClient); - this.logMethodBegin(); - this.encodeMessageService = encodeMessageService; - this.technicalMessageType = technicalMessageType; - this.logMethodEnd(); - } + public MessageQueryHelperService( + IMqttClient mqttClient, + EncodeMessageService encodeMessageService, + TechnicalMessageType technicalMessageType) { + super(mqttClient); + this.logMethodBegin(); + this.encodeMessageService = encodeMessageService; + this.technicalMessageType = technicalMessageType; + this.logMethodEnd(); + } - public String send(MessageQueryParameters parameters) { - this.logMethodBegin(parameters); + public String send(MessageQueryParameters parameters) { + this.logMethodBegin(parameters); - this.getNativeLogger().trace("Validate parameters."); - parameters.validate(); - try { - this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessage = this.encode(this.technicalMessageType, parameters); + this.getNativeLogger().trace("Validate parameters."); + parameters.validate(); + try { + this.getNativeLogger().trace("Encode message."); + EncodedMessage encodedMessage = this.encode(this.technicalMessageType, parameters); - this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); + this.getNativeLogger().trace("Build message parameters."); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); - this.getNativeLogger().trace("Send and fetch message response."); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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."); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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 EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } 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 7f500258..6dafdc91 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 @@ -11,60 +11,64 @@ 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 java.util.Collections; import java.util.Objects; import java.util.concurrent.CompletableFuture; + import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; -/** Service implementation. */ +/** + * Service implementation. + */ public class CloudOffboardingServiceImpl extends MqttService - implements CloudOffboardingService, MessageBodyCreator, MessageEncoder { + implements CloudOffboardingService, MessageBodyCreator, MessageEncoder { - private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - public CloudOffboardingServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - } + public CloudOffboardingServiceImpl(IMqttClient mqttClient) { + super(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 - public String send(CloudOffboardingParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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); + /** + * 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 + public String send(CloudOffboardingParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(CloudOffboardingParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(CloudOffboardingParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } 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 5fc93219..3ce6a995 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 @@ -11,59 +11,60 @@ 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 java.util.Collections; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; 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; +import java.util.concurrent.CompletableFuture; + public class CloudOnboardingServiceImpl extends MqttService - implements CloudOnboardingService, MessageBodyCreator, MessageEncoder { + implements CloudOnboardingService, MessageBodyCreator, MessageEncoder { - private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - public CloudOnboardingServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - } + public CloudOnboardingServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + } - /** - * Onboarding a virtual CU for an existing cloud application (incl. several checks). - * - * @param parameters Parameters for the onboarding. - * @return - - */ - @Override - public String send(CloudOnboardingParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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); + /** + * Onboarding a virtual CU for an existing cloud application (incl. several checks). + * + * @param parameters Parameters for the onboarding. + * @return - + */ + @Override + public String send(CloudOnboardingParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(CloudOnboardingParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(CloudOnboardingParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } 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 b39a4fa5..d2edd0a0 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 @@ -13,70 +13,71 @@ 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 java.util.Collections; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; 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; +import java.util.concurrent.CompletableFuture; + public class DeleteMessageServiceImpl extends MqttService - implements DeleteMessageService, + implements DeleteMessageService, MessageBodyCreator, MessageEncoder, DeleteAllMessagesParameterCreator { - private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + private final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - public DeleteMessageServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - } + public DeleteMessageServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + } - @Override - public String send(DeleteMessageParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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 String send(DeleteMessageParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(DeleteMessageParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - public EncodeMessageService getEncodeMessageService() { - return encodeMessageService; - } + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } - @Override - public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = - createMessageParametersToDeleteAllMessages(onboardingResponse); - return send(deleteMessageParameters); - } + @Override + public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { + final DeleteMessageParameters deleteMessageParameters = + createMessageParametersToDeleteAllMessages(onboardingResponse); + return send(deleteMessageParameters); + } - @Override - public MqttAsyncMessageSendingResult sendMessageToDeleteAllAsync( - OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = - createMessageParametersToDeleteAllMessages(onboardingResponse); - return sendAsync(deleteMessageParameters); - } + @Override + public MqttAsyncMessageSendingResult sendMessageToDeleteAllAsync( + OnboardingResponse onboardingResponse) { + final DeleteMessageParameters deleteMessageParameters = + createMessageParametersToDeleteAllMessages(onboardingResponse); + return sendAsync(deleteMessageParameters); + } } 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 5e737629..71ade8e3 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 @@ -17,105 +17,106 @@ import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; -import java.util.Collections; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; 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; +import java.util.concurrent.CompletableFuture; + public class ListEndpointsServiceImpl extends MqttService - implements ListEndpointsService, + implements ListEndpointsService, MessageBodyCreator, MessageEncoder, MessageDecoder { - private final EncodeMessageService encodeMessageService; + private final EncodeMessageService encodeMessageService; - public ListEndpointsServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public ListEndpointsServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(ListEndpointsParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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 String send(ListEndpointsParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(ListEndpointsParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(ListEndpointsParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } - @Override - public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(false); - return send(listEndpointsParameters); - } + @Override + public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(false); + return send(listEndpointsParameters); + } - @Override - public String sendMessageToListAll(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(true); - return send(listEndpointsParameters); - } + @Override + public String sendMessageToListAll(OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(true); + return send(listEndpointsParameters); + } - @Override - public MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( - OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(false); - return sendAsync(listEndpointsParameters); - } + @Override + public MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( + OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(false); + return sendAsync(listEndpointsParameters); + } - @Override - public MqttAsyncMessageSendingResult sendMessageToListAllAsync( - OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(true); - return sendAsync(listEndpointsParameters); - } + @Override + public MqttAsyncMessageSendingResult sendMessageToListAllAsync( + OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(true); + return sendAsync(listEndpointsParameters); + } - @Override - public agrirouter.response.payload.account.Endpoints.ListEndpointsResponse unsafeDecode( - ByteString message) throws InvalidProtocolBufferException { - return agrirouter.response.payload.account.Endpoints.ListEndpointsResponse.parseFrom(message); - } + @Override + public agrirouter.response.payload.account.Endpoints.ListEndpointsResponse unsafeDecode( + ByteString message) throws InvalidProtocolBufferException { + return agrirouter.response.payload.account.Endpoints.ListEndpointsResponse.parseFrom(message); + } } 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 bbaff0dd..bf33b52e 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 @@ -11,54 +11,56 @@ 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 java.util.Collections; import java.util.Objects; import java.util.concurrent.CompletableFuture; + import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; public class MessageConfirmationServiceImpl extends MqttService - implements MessageConfirmationService, MessageSender, MessageEncoder { + implements MessageConfirmationService, MessageSender, MessageEncoder { - private final EncodeMessageService encodeMessageService; + private final EncodeMessageService encodeMessageService; - public MessageConfirmationServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public MessageConfirmationServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(MessageConfirmationParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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 String send(MessageConfirmationParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(MessageConfirmationParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(MessageConfirmationParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } 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 6fc6c9c1..6ecb0e8f 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 @@ -12,47 +12,49 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; + import java.util.concurrent.CompletableFuture; + import org.eclipse.paho.client.mqttv3.IMqttClient; public class MessageHeaderQueryServiceImpl extends MqttService - implements MessageHeaderQueryService, MessageSender { - - private final MessageQueryHelperService messageQueryHelperService; - - public MessageHeaderQueryServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - messageQueryHelperService = - new MessageQueryHelperService( - mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); - } - - @Override - public String send(MessageQueryParameters parameters) { - return this.messageQueryHelperService.send(parameters); - } - - @Override - public MqttAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } - - @Override - public FeedResponse.HeaderQueryResponse unsafeDecode(ByteString message) - throws InvalidProtocolBufferException { - return FeedResponse.HeaderQueryResponse.parseFrom(message); - } - - @Override - public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - return send(messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse)); - } - - @Override - public MqttAsyncMessageSendingResult sendMessageToQueryAllAsync( - OnboardingResponse onboardingResponse) { - return sendAsync( - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse)); - } + implements MessageHeaderQueryService, MessageSender { + + private final MessageQueryHelperService messageQueryHelperService; + + public MessageHeaderQueryServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + messageQueryHelperService = + new MessageQueryHelperService( + mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); + } + + @Override + public String send(MessageQueryParameters parameters) { + return this.messageQueryHelperService.send(parameters); + } + + @Override + public MqttAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } + + @Override + public FeedResponse.HeaderQueryResponse unsafeDecode(ByteString message) + throws InvalidProtocolBufferException { + return FeedResponse.HeaderQueryResponse.parseFrom(message); + } + + @Override + public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { + return send(messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse)); + } + + @Override + public MqttAsyncMessageSendingResult sendMessageToQueryAllAsync( + OnboardingResponse onboardingResponse) { + return sendAsync( + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse)); + } } 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 13adfbcf..c53eaa1d 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 @@ -13,52 +13,53 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; -import java.util.concurrent.CompletableFuture; import org.eclipse.paho.client.mqttv3.IMqttClient; +import java.util.concurrent.CompletableFuture; + public class MessageQueryServiceImpl extends MqttService - implements MessageQueryService, + implements MessageQueryService, MessageSender, MessageDecoder { - private final MessageQueryHelperService messageQueryHelperService; + private final MessageQueryHelperService messageQueryHelperService; - public MessageQueryServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - this.messageQueryHelperService = - new MessageQueryHelperService( - mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); - } + public MessageQueryServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.messageQueryHelperService = + new MessageQueryHelperService( + mqttClient, new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); + } - @Override - public String send(MessageQueryParameters parameters) { - return this.messageQueryHelperService.send(parameters); - } + @Override + public String send(MessageQueryParameters parameters) { + return this.messageQueryHelperService.send(parameters); + } - @Override - public MqttAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) - throws InvalidProtocolBufferException { - return FeedResponse.MessageQueryResponse.parseFrom(message); - } + @Override + public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) + throws InvalidProtocolBufferException { + return FeedResponse.MessageQueryResponse.parseFrom(message); + } - @Override - public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return send(messageQueryParameters); - } + @Override + public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return send(messageQueryParameters); + } - @Override - public MqttAsyncMessageSendingResult sendMessageToQueryAllAsync( - OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return sendAsync(messageQueryParameters); - } + @Override + public MqttAsyncMessageSendingResult sendMessageToQueryAllAsync( + OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return sendAsync(messageQueryParameters); + } } 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 c5db783a..b31c257c 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 @@ -5,46 +5,47 @@ 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 java.util.Objects; -import java.util.concurrent.CompletableFuture; 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; + /** * Sending messages via MQTT using the given MQTT client. The service itself can not access the * queue because connection handling should not be part of the API. */ public class SendMessageServiceImpl extends MqttService - implements SendMessageService, MessageBodyCreator { + implements SendMessageService, MessageBodyCreator { - public SendMessageServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - } + public SendMessageServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + } - /** - * Send message synchronous. - * - * @param sendMessageParameters Parameters to send the message. - */ - public void send(SendMessageParameters sendMessageParameters) { - sendMessageParameters.validate(); - try { - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); - this.getMqttClient() - .publish( - Objects.requireNonNull(sendMessageParameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - new MqttMessage(payload)); - } catch (MqttException e) { - throw new CouldNotSendMqttMessageException(e); + /** + * Send message synchronous. + * + * @param sendMessageParameters Parameters to send the message. + */ + public void send(SendMessageParameters sendMessageParameters) { + sendMessageParameters.validate(); + try { + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] payload = messageAsJson.getBytes(); + this.getMqttClient() + .publish( + Objects.requireNonNull(sendMessageParameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + new MqttMessage(payload)); + } catch (MqttException e) { + throw new CouldNotSendMqttMessageException(e); + } } - } - @Override - public CompletableFuture sendAsync(SendMessageParameters sendMessageParameters) { - return CompletableFuture.runAsync(() -> this.send(sendMessageParameters)); - } + @Override + public CompletableFuture sendAsync(SendMessageParameters sendMessageParameters) { + return CompletableFuture.runAsync(() -> this.send(sendMessageParameters)); + } } 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 0c438038..2e2ebda8 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 @@ -12,54 +12,55 @@ 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 java.util.Collections; -import java.util.Objects; -import java.util.concurrent.CompletableFuture; 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; +import java.util.concurrent.CompletableFuture; + public class SetCapabilityServiceImpl extends MqttService - implements SetCapabilityService, MessageSender, MessageEncoder, ResponseValidator { + implements SetCapabilityService, MessageSender, MessageEncoder, ResponseValidator { - private final EncodeMessageService encodeMessageService; + private final EncodeMessageService encodeMessageService; - public SetCapabilityServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public SetCapabilityServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(SetCapabilitiesParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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 String send(SetCapabilitiesParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(SetCapabilitiesParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(SetCapabilitiesParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } } 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 7cffa395..98002798 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 @@ -12,53 +12,55 @@ 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 java.util.Collections; import java.util.Objects; import java.util.concurrent.CompletableFuture; + import org.eclipse.paho.client.mqttv3.IMqttClient; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; public class SetSubscriptionServiceImpl extends MqttService - implements SetSubscriptionService, MessageBodyCreator, MessageEncoder, ResponseValidator { - private final EncodeMessageService encodeMessageService; + implements SetSubscriptionService, MessageBodyCreator, MessageEncoder, ResponseValidator { + private final EncodeMessageService encodeMessageService; - public SetSubscriptionServiceImpl(IMqttClient mqttClient) { - super(mqttClient); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public SetSubscriptionServiceImpl(IMqttClient mqttClient) { + super(mqttClient); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(SetSubscriptionParameters parameters) { - parameters.validate(); - try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] 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 String send(SetSubscriptionParameters parameters) { + parameters.validate(); + try { + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + String messageAsJson = this.createMessageBody(sendMessageParameters); + byte[] 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(SetSubscriptionParameters parameters) { - return new MqttAsyncMessageSendingResult( - CompletableFuture.supplyAsync(() -> this.send(parameters))); - } + @Override + public MqttAsyncMessageSendingResult sendAsync(SetSubscriptionParameters parameters) { + return new MqttAsyncMessageSendingResult( + CompletableFuture.supplyAsync(() -> this.send(parameters))); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java index 73fa594f..8588cd67 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java @@ -10,47 +10,50 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; import java.util.concurrent.CompletableFuture; -/** Service implementation. */ +/** + * Service implementation. + */ public class CloudOffboardingServiceImpl - implements CloudOffboardingService, MessageSender, ResponseValidator, MessageEncoder { - - private final EncodeMessageService encodeMessageService; - - public CloudOffboardingServiceImpl() { - this.encodeMessageService = new EncodeMessageServiceImpl(); - } - - @Override - public String send(CloudOffboardingParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(CloudOffboardingParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); - return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); - } - - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + implements CloudOffboardingService, MessageSender, ResponseValidator, MessageEncoder { + + private final EncodeMessageService encodeMessageService; + + public CloudOffboardingServiceImpl() { + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(CloudOffboardingParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(CloudOffboardingParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); + return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java index 7fe38a2a..3868aece 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java @@ -10,46 +10,47 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; import java.util.concurrent.CompletableFuture; public class CloudOnboardingServiceImpl - implements CloudOnboardingService, MessageSender, ResponseValidator, MessageEncoder { - - private final EncodeMessageService encodeMessageService; - - public CloudOnboardingServiceImpl() { - this.encodeMessageService = new EncodeMessageServiceImpl(); - } - - @Override - public String send(CloudOnboardingParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(CloudOnboardingParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); - return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); - } - - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + implements CloudOnboardingService, MessageSender, ResponseValidator, MessageEncoder { + + private final EncodeMessageService encodeMessageService; + + public CloudOnboardingServiceImpl() { + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(CloudOnboardingParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(CloudOnboardingParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); + return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java index afed7ca6..53de8db6 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java @@ -12,65 +12,66 @@ import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.messaging.helper.DeleteAllMessagesParameterCreator; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; import java.util.concurrent.CompletableFuture; public class DeleteMessageServiceImpl - implements DeleteMessageService, + implements DeleteMessageService, MessageSender, ResponseValidator, MessageEncoder, DeleteAllMessagesParameterCreator { - private final EncodeMessageService encodeMessageService; + private final EncodeMessageService encodeMessageService; - public DeleteMessageServiceImpl() { - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public DeleteMessageServiceImpl() { + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(DeleteMessageParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } + @Override + public String send(DeleteMessageParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } - @Override - public HttpAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); - return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); - } + @Override + public HttpAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); + return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } - @Override - public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = - createMessageParametersToDeleteAllMessages(onboardingResponse); - return send(deleteMessageParameters); - } + @Override + public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { + final DeleteMessageParameters deleteMessageParameters = + createMessageParametersToDeleteAllMessages(onboardingResponse); + return send(deleteMessageParameters); + } - @Override - public HttpAsyncMessageSendingResult sendMessageToDeleteAllAsync( - OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = - createMessageParametersToDeleteAllMessages(onboardingResponse); - return sendAsync(deleteMessageParameters); - } + @Override + public HttpAsyncMessageSendingResult sendMessageToDeleteAllAsync( + OnboardingResponse onboardingResponse) { + final DeleteMessageParameters deleteMessageParameters = + createMessageParametersToDeleteAllMessages(onboardingResponse); + return sendAsync(deleteMessageParameters); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java index 52779670..fa69f431 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java @@ -8,53 +8,56 @@ import com.dke.data.agrirouter.api.service.parameters.FetchMessageParameters; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; + import java.lang.reflect.Type; import java.util.List; import java.util.Optional; public class FetchMessageServiceImpl implements FetchMessageService, MessageFetcher { - @Override - public Optional> fetch( - OnboardingResponse onboardingResponse, int maxTries, long interval) { - FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); - fetchMessageParameters.setOnboardingResponse(onboardingResponse); - return fetch(fetchMessageParameters, maxTries, interval); - } - - @Override - public Optional> fetch( - FetchMessageParameters fetchMessageParameters, int maxTries, long interval) { - fetchMessageParameters.validate(); - Optional response = - poll(fetchMessageParameters, new DefaultCancellationToken(maxTries, interval)); - return response.map(this::parseJson); - } - - @Override - public Optional> fetch( - OnboardingResponse onboardingResponse, CancellationToken cancellationToken) { - FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); - fetchMessageParameters.setOnboardingResponse(onboardingResponse); - return fetch(fetchMessageParameters, cancellationToken); - } - - @Override - public Optional> fetch( - FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { - fetchMessageParameters.validate(); - Optional response = poll(fetchMessageParameters, cancellationToken); - return response.map(this::parseJson); - } - - private List parseJson(String json) { - Type type = new TypeToken>() {}.getType(); - return new Gson().fromJson(json, type); - } - - @Override - public FetchMessageResponse parseJson(byte[] json) { - Type type = new TypeToken() {}.getType(); - return new Gson().fromJson(new String(json), type); - } + @Override + public Optional> fetch( + OnboardingResponse onboardingResponse, int maxTries, long interval) { + FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); + fetchMessageParameters.setOnboardingResponse(onboardingResponse); + return fetch(fetchMessageParameters, maxTries, interval); + } + + @Override + public Optional> fetch( + FetchMessageParameters fetchMessageParameters, int maxTries, long interval) { + fetchMessageParameters.validate(); + Optional response = + poll(fetchMessageParameters, new DefaultCancellationToken(maxTries, interval)); + return response.map(this::parseJson); + } + + @Override + public Optional> fetch( + OnboardingResponse onboardingResponse, CancellationToken cancellationToken) { + FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); + fetchMessageParameters.setOnboardingResponse(onboardingResponse); + return fetch(fetchMessageParameters, cancellationToken); + } + + @Override + public Optional> fetch( + FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { + fetchMessageParameters.validate(); + Optional response = poll(fetchMessageParameters, cancellationToken); + return response.map(this::parseJson); + } + + private List parseJson(String json) { + Type type = new TypeToken>() { + }.getType(); + return new Gson().fromJson(json, type); + } + + @Override + public FetchMessageResponse parseJson(byte[] json) { + Type type = new TypeToken() { + }.getType(); + return new Gson().fromJson(new String(json), type); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java index 96055f28..f645a507 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java @@ -18,98 +18,99 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; + import java.util.Collections; import java.util.concurrent.CompletableFuture; public class ListEndpointsServiceImpl extends EnvironmentalService - implements ListEndpointsService, + implements ListEndpointsService, MessageSender, MessageEncoder, ResponseValidator, MessageDecoder { - private final EncodeMessageService encodeMessageService; + private final EncodeMessageService encodeMessageService; - public ListEndpointsServiceImpl(Environment environment) { - super(environment); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } + public ListEndpointsServiceImpl(Environment environment) { + super(environment); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } - @Override - public String send(ListEndpointsParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - this.sendMessage(sendMessageParameters); - return encodedMessage.getApplicationMessageID(); - } + @Override + public String send(ListEndpointsParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + this.sendMessage(sendMessageParameters); + return encodedMessage.getApplicationMessageID(); + } - @Override - public HttpAsyncMessageSendingResult sendAsync(ListEndpointsParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - final CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); - return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); - } + @Override + public HttpAsyncMessageSendingResult sendAsync(ListEndpointsParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + final CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); + return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); + } - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } - @Override - public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(false); - return send(listEndpointsParameters); - } + @Override + public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(false); + return send(listEndpointsParameters); + } - @Override - public String sendMessageToListAll(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(true); - return send(listEndpointsParameters); - } + @Override + public String sendMessageToListAll(OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(true); + return send(listEndpointsParameters); + } - @Override - public HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( - OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(false); - return sendAsync(listEndpointsParameters); - } + @Override + public HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( + OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(false); + return sendAsync(listEndpointsParameters); + } - @Override - public HttpAsyncMessageSendingResult sendMessageToListAllAsync( - OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); - listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); - listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); - listEndpointsParameters.setOnboardingResponse(onboardingResponse); - listEndpointsParameters.setUnfilteredList(true); - return sendAsync(listEndpointsParameters); - } + @Override + public HttpAsyncMessageSendingResult sendMessageToListAllAsync( + OnboardingResponse onboardingResponse) { + ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); + listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); + listEndpointsParameters.setOnboardingResponse(onboardingResponse); + listEndpointsParameters.setUnfilteredList(true); + return sendAsync(listEndpointsParameters); + } - @Override - public agrirouter.response.payload.account.Endpoints.ListEndpointsResponse unsafeDecode( - ByteString message) throws InvalidProtocolBufferException { - return agrirouter.response.payload.account.Endpoints.ListEndpointsResponse.parseFrom(message); - } + @Override + public agrirouter.response.payload.account.Endpoints.ListEndpointsResponse unsafeDecode( + ByteString message) throws InvalidProtocolBufferException { + return agrirouter.response.payload.account.Endpoints.ListEndpointsResponse.parseFrom(message); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java index 4f0a4112..b210e446 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java @@ -12,47 +12,48 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; import java.util.concurrent.CompletableFuture; public class MessageConfirmationServiceImpl extends EnvironmentalService - implements MessageConfirmationService, MessageSender, MessageEncoder, ResponseValidator { - - private final EncodeMessageService encodeMessageService; - - public MessageConfirmationServiceImpl(Environment environment) { - super(environment); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } - - @Override - public String send(MessageConfirmationParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(MessageConfirmationParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = - this.sendMessageAsync(sendMessageParameters); - return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); - } - - @Override - public EncodeMessageService getEncodeMessageService() { - return this.encodeMessageService; - } + implements MessageConfirmationService, MessageSender, MessageEncoder, ResponseValidator { + + private final EncodeMessageService encodeMessageService; + + public MessageConfirmationServiceImpl(Environment environment) { + super(environment); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(MessageConfirmationParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(MessageConfirmationParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + CompletableFuture response = + this.sendMessageAsync(sendMessageParameters); + return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return this.encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java index 8ca092b8..b548e09b 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java @@ -7,55 +7,58 @@ import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.validation.ResponseValidator; import jakarta.ws.rs.core.Response; +import org.apache.commons.lang3.StringUtils; + import java.util.Objects; import java.util.Optional; -import org.apache.commons.lang3.StringUtils; -/** Interface to fetch messages for the HTTP implementation by polling the outbox. */ +/** + * Interface to fetch messages for the HTTP implementation by polling the outbox. + */ public interface MessageFetcher extends ResponseValidator, HasLogger { - int MAX_TRIES_BEFORE_FAILURE = 10; - long DEFAULT_INTERVAL = 500; + int MAX_TRIES_BEFORE_FAILURE = 10; + long DEFAULT_INTERVAL = 500; - String EMPTY_CONTENT = "[]"; + String EMPTY_CONTENT = "[]"; - /** - * Poll for new messages using the given parameters. - * - * @param fetchMessageParameters - - * @param cancellationToken Token to manage the whole polling process. - * @return Response from the outbox, if existing. - */ - default Optional poll( - FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { - fetchMessageParameters.validate(); - int nrOfTries = 1; - while (cancellationToken.isNotCancelled()) { - getNativeLogger() - .debug( - "The cancellation token is not cancelled, we have another try. This is try number {}.", - nrOfTries); - Response response = - RequestFactory.securedRequest( - Objects.requireNonNull(fetchMessageParameters.getOnboardingResponse()) - .getConnectionCriteria() - .getCommands(), - fetchMessageParameters - .getOnboardingResponse() - .getAuthentication() - .getCertificate(), - fetchMessageParameters.getOnboardingResponse().getAuthentication().getSecret(), - CertificationType.valueOf( - fetchMessageParameters.getOnboardingResponse().getAuthentication().getType())) - .get(); - this.assertStatusCodeIsOk(response.getStatus()); - String entityContent = response.readEntity(String.class); - if (!StringUtils.equalsIgnoreCase(entityContent, EMPTY_CONTENT)) { - return Optional.of(entityContent); - } - cancellationToken.nextStep(); - cancellationToken.waitIfNotCancelled(); + /** + * Poll for new messages using the given parameters. + * + * @param fetchMessageParameters - + * @param cancellationToken Token to manage the whole polling process. + * @return Response from the outbox, if existing. + */ + default Optional poll( + FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { + fetchMessageParameters.validate(); + int nrOfTries = 1; + while (cancellationToken.isNotCancelled()) { + getNativeLogger() + .debug( + "The cancellation token is not cancelled, we have another try. This is try number {}.", + nrOfTries); + Response response = + RequestFactory.securedRequest( + Objects.requireNonNull(fetchMessageParameters.getOnboardingResponse()) + .getConnectionCriteria() + .getCommands(), + fetchMessageParameters + .getOnboardingResponse() + .getAuthentication() + .getCertificate(), + fetchMessageParameters.getOnboardingResponse().getAuthentication().getSecret(), + CertificationType.valueOf( + fetchMessageParameters.getOnboardingResponse().getAuthentication().getType())) + .get(); + this.assertStatusCodeIsOk(response.getStatus()); + String entityContent = response.readEntity(String.class); + if (!StringUtils.equalsIgnoreCase(entityContent, EMPTY_CONTENT)) { + return Optional.of(entityContent); + } + cancellationToken.nextStep(); + cancellationToken.waitIfNotCancelled(); + } + return Optional.empty(); } - return Optional.empty(); - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java index 7d532872..12f88c61 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java @@ -14,45 +14,45 @@ import com.google.protobuf.InvalidProtocolBufferException; public class MessageHeaderQueryServiceImpl extends EnvironmentalService - implements MessageHeaderQueryService, MessageSender { - - private final MessageQueryHelperService messageQueryHelperService; - - public MessageHeaderQueryServiceImpl(Environment environment) { - super(environment); - messageQueryHelperService = - new MessageQueryHelperService( - new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); - } - - @Override - public String send(MessageQueryParameters parameters) { - return this.messageQueryHelperService.send(parameters); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { - return messageQueryHelperService.sendAsync(parameters); - } - - @Override - public FeedResponse.HeaderQueryResponse unsafeDecode(ByteString message) - throws InvalidProtocolBufferException { - return FeedResponse.HeaderQueryResponse.parseFrom(message); - } - - @Override - public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return send(messageQueryParameters); - } - - @Override - public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( - OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return sendAsync(messageQueryParameters); - } + implements MessageHeaderQueryService, MessageSender { + + private final MessageQueryHelperService messageQueryHelperService; + + public MessageHeaderQueryServiceImpl(Environment environment) { + super(environment); + messageQueryHelperService = + new MessageQueryHelperService( + new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_HEADER_QUERY); + } + + @Override + public String send(MessageQueryParameters parameters) { + return this.messageQueryHelperService.send(parameters); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { + return messageQueryHelperService.sendAsync(parameters); + } + + @Override + public FeedResponse.HeaderQueryResponse unsafeDecode(ByteString message) + throws InvalidProtocolBufferException { + return FeedResponse.HeaderQueryResponse.parseFrom(message); + } + + @Override + public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return send(messageQueryParameters); + } + + @Override + public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( + OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return sendAsync(messageQueryParameters); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java index c86ff3bf..08fcaf0b 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java @@ -15,47 +15,47 @@ import com.google.protobuf.InvalidProtocolBufferException; public class MessageQueryServiceImpl extends EnvironmentalService - implements MessageQueryService, + implements MessageQueryService, MessageSender, MessageDecoder { - private final MessageQueryHelperService messageQueryHelperService; - - public MessageQueryServiceImpl(Environment environment) { - super(environment); - messageQueryHelperService = - new MessageQueryHelperService( - new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); - } - - @Override - public String send(MessageQueryParameters parameters) { - return messageQueryHelperService.send(parameters); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { - return messageQueryHelperService.sendAsync(parameters); - } - - @Override - public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) - throws InvalidProtocolBufferException { - return FeedResponse.MessageQueryResponse.parseFrom(message); - } - - @Override - public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return send(messageQueryParameters); - } - - @Override - public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( - OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = - messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); - return sendAsync(messageQueryParameters); - } + private final MessageQueryHelperService messageQueryHelperService; + + public MessageQueryServiceImpl(Environment environment) { + super(environment); + messageQueryHelperService = + new MessageQueryHelperService( + new EncodeMessageServiceImpl(), SystemMessageType.DKE_FEED_MESSAGE_QUERY); + } + + @Override + public String send(MessageQueryParameters parameters) { + return messageQueryHelperService.send(parameters); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters) { + return messageQueryHelperService.sendAsync(parameters); + } + + @Override + public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) + throws InvalidProtocolBufferException { + return FeedResponse.MessageQueryResponse.parseFrom(message); + } + + @Override + public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return send(messageQueryParameters); + } + + @Override + public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( + OnboardingResponse onboardingResponse) { + MessageQueryParameters messageQueryParameters = + messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); + return sendAsync(messageQueryParameters); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java index 2faed599..514e3761 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java @@ -7,6 +7,7 @@ import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator; import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.Response; + import java.util.Objects; import java.util.concurrent.CompletableFuture; @@ -16,35 +17,35 @@ */ public interface MessageSender extends MessageBodyCreator { - /** - * Synchronous messages sending. - * - * @param parameters Parameters to send messages. - * @return The actual HTTP response from the AR for this request. This is not the ACK that can be - * fetched afterwards. - */ - default MessageSendingResponse sendMessage(SendMessageParameters parameters) { - Response response = - RequestFactory.securedRequest( - Objects.requireNonNull(parameters.getOnboardingResponse()) - .getConnectionCriteria() - .getMeasures(), - parameters.getOnboardingResponse().getAuthentication().getCertificate(), - parameters.getOnboardingResponse().getAuthentication().getSecret(), - CertificationType.valueOf( - parameters.getOnboardingResponse().getAuthentication().getType())) - .post(Entity.json(this.createSendMessageRequest(parameters))); - return new MessageSendingResponse(response); - } + /** + * Synchronous messages sending. + * + * @param parameters Parameters to send messages. + * @return The actual HTTP response from the AR for this request. This is not the ACK that can be + * fetched afterwards. + */ + default MessageSendingResponse sendMessage(SendMessageParameters parameters) { + Response response = + RequestFactory.securedRequest( + Objects.requireNonNull(parameters.getOnboardingResponse()) + .getConnectionCriteria() + .getMeasures(), + parameters.getOnboardingResponse().getAuthentication().getCertificate(), + parameters.getOnboardingResponse().getAuthentication().getSecret(), + CertificationType.valueOf( + parameters.getOnboardingResponse().getAuthentication().getType())) + .post(Entity.json(this.createSendMessageRequest(parameters))); + return new MessageSendingResponse(response); + } - /** - * Asynchronous messages sending. - * - * @param parameters Parameters to send messages. - * @return Response of the server, wrapped within a completable future. - */ - default CompletableFuture sendMessageAsync( - SendMessageParameters parameters) { - return CompletableFuture.supplyAsync(() -> this.sendMessage(parameters)); - } + /** + * Asynchronous messages sending. + * + * @param parameters Parameters to send messages. + * @return Response of the server, wrapped within a completable future. + */ + default CompletableFuture sendMessageAsync( + SendMessageParameters parameters) { + return CompletableFuture.supplyAsync(() -> this.sendMessage(parameters)); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java index f96a5a05..1e4e18d0 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java @@ -4,23 +4,26 @@ import com.dke.data.agrirouter.api.service.messaging.SendMessageService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.concurrent.CompletableFuture; -/** Base class to send messages. */ +/** + * Base class to send messages. + */ public class SendMessageServiceImpl - implements SendMessageService, ResponseValidator, MessageSender { + implements SendMessageService, ResponseValidator, MessageSender { - @Override - public void send(SendMessageParameters sendMessageParameters) { - sendMessageParameters.validate(); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - } + @Override + public void send(SendMessageParameters sendMessageParameters) { + sendMessageParameters.validate(); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + } - @Override - public CompletableFuture sendAsync( - SendMessageParameters sendMessageParameters) { - sendMessageParameters.validate(); - return this.sendMessageAsync(sendMessageParameters); - } + @Override + public CompletableFuture sendAsync( + SendMessageParameters sendMessageParameters) { + sendMessageParameters.validate(); + return this.sendMessageAsync(sendMessageParameters); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java index 0f0124c9..5dee9837 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java @@ -12,45 +12,46 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; public class SetCapabilityServiceImpl extends EnvironmentalService - implements SetCapabilityService, MessageSender, MessageEncoder, ResponseValidator { - - private final EncodeMessageService encodeMessageService; - - public SetCapabilityServiceImpl(Environment environment) { - super(environment); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } - - @Override - public String send(SetCapabilitiesParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(SetCapabilitiesParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - return new HttpAsyncMessageSendingResult( - this.sendMessageAsync(sendMessageParameters), encodedMessage.getApplicationMessageID()); - } - - @Override - public EncodeMessageService getEncodeMessageService() { - return encodeMessageService; - } + implements SetCapabilityService, MessageSender, MessageEncoder, ResponseValidator { + + private final EncodeMessageService encodeMessageService; + + public SetCapabilityServiceImpl(Environment environment) { + super(environment); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(SetCapabilitiesParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(SetCapabilitiesParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + return new HttpAsyncMessageSendingResult( + this.sendMessageAsync(sendMessageParameters), encodedMessage.getApplicationMessageID()); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java index 3aae0fb1..111714d5 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java @@ -12,45 +12,46 @@ import com.dke.data.agrirouter.impl.messaging.MessageEncoder; import com.dke.data.agrirouter.impl.messaging.encoding.EncodeMessageServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; + import java.util.Collections; public class SetSubscriptionServiceImpl extends EnvironmentalService - implements SetSubscriptionService, MessageSender, ResponseValidator, MessageEncoder { - - private final EncodeMessageService encodeMessageService; - - public SetSubscriptionServiceImpl(Environment environment) { - super(environment); - this.encodeMessageService = new EncodeMessageServiceImpl(); - } - - @Override - public String send(SetSubscriptionParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); - this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); - return encodedMessage.getApplicationMessageID(); - } - - @Override - public HttpAsyncMessageSendingResult sendAsync(SetSubscriptionParameters parameters) { - parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); - sendMessageParameters.setEncodedMessages( - Collections.singletonList(encodedMessage.getEncodedMessage())); - return new HttpAsyncMessageSendingResult( - this.sendMessageAsync(sendMessageParameters), encodedMessage.getApplicationMessageID()); - } - - @Override - public EncodeMessageService getEncodeMessageService() { - return encodeMessageService; - } + implements SetSubscriptionService, MessageSender, ResponseValidator, MessageEncoder { + + private final EncodeMessageService encodeMessageService; + + public SetSubscriptionServiceImpl(Environment environment) { + super(environment); + this.encodeMessageService = new EncodeMessageServiceImpl(); + } + + @Override + public String send(SetSubscriptionParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + MessageSendingResponse response = this.sendMessage(sendMessageParameters); + this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); + return encodedMessage.getApplicationMessageID(); + } + + @Override + public HttpAsyncMessageSendingResult sendAsync(SetSubscriptionParameters parameters) { + parameters.validate(); + EncodedMessage encodedMessage = this.encode(parameters); + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); + sendMessageParameters.setEncodedMessages( + Collections.singletonList(encodedMessage.getEncodedMessage())); + return new HttpAsyncMessageSendingResult( + this.sendMessageAsync(sendMessageParameters), encodedMessage.getApplicationMessageID()); + } + + @Override + public EncodeMessageService getEncodeMessageService() { + return encodeMessageService; + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java index 9c57fbe6..2d25da4d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java @@ -8,75 +8,76 @@ import com.dke.data.agrirouter.impl.EnvironmentalService; import com.dke.data.agrirouter.impl.common.UtcTimeService; import com.google.gson.Gson; -import java.util.Optional; import org.apache.commons.lang3.StringUtils; +import java.util.Optional; + public abstract class AbstractOnboardingService extends EnvironmentalService { - protected AbstractOnboardingService(Environment environment) { - super(environment); - } + protected AbstractOnboardingService(Environment environment) { + super(environment); + } - protected OnboardingRequest getOnboardRequest( - String uuid, - String applicationId, - String certificationVersionId, - String gatewayId, - CertificationType certificationType) { - this.getNativeLogger().info("BEGIN | Creating onboard request."); + protected OnboardingRequest getOnboardRequest( + String uuid, + String applicationId, + String certificationVersionId, + String gatewayId, + CertificationType certificationType) { + this.getNativeLogger().info("BEGIN | Creating onboard request."); - OnboardingRequest onboardingRequest = new OnboardingRequest(); - onboardingRequest.setId(uuid); - onboardingRequest.setApplicationId(applicationId); - onboardingRequest.setCertificationVersionId(certificationVersionId); - onboardingRequest.setGatewayId(gatewayId); - onboardingRequest.setCertificateType(certificationType.getKey()); - onboardingRequest.setUTCTimestamp(UtcTimeService.inThePast(10).toString()); - onboardingRequest.setTimeZone(UtcTimeService.offset()); + OnboardingRequest onboardingRequest = new OnboardingRequest(); + onboardingRequest.setId(uuid); + onboardingRequest.setApplicationId(applicationId); + onboardingRequest.setCertificationVersionId(certificationVersionId); + onboardingRequest.setGatewayId(gatewayId); + onboardingRequest.setCertificateType(certificationType.getKey()); + onboardingRequest.setUTCTimestamp(UtcTimeService.inThePast(10).toString()); + onboardingRequest.setTimeZone(UtcTimeService.offset()); - this.getNativeLogger().info("END | Creating onboard request."); - return onboardingRequest; - } + this.getNativeLogger().info("END | Creating onboard request."); + return onboardingRequest; + } - /** - * Generate authorization URL for secured onboarding. - * - * @param parameters - - * @return - - */ - public String generateAuthorizationUrl(AuthorizationRequestParameters parameters) { - this.getNativeLogger().info("BEGIN | Generating authorization URL. | '{}'.", parameters); - String securedOnboardingAuthorizationUrl = - this.environment.getSecuredOnboardingAuthorizationUrl( - parameters.getApplicationId(), - parameters.getResponseType(), - parameters.getState(), - parameters.getRedirectUri()); - this.getNativeLogger().info("END | Generating authorization URL. | '{}'.", parameters); - return securedOnboardingAuthorizationUrl; - } + /** + * Generate authorization URL for secured onboarding. + * + * @param parameters - + * @return - + */ + public String generateAuthorizationUrl(AuthorizationRequestParameters parameters) { + this.getNativeLogger().info("BEGIN | Generating authorization URL. | '{}'.", parameters); + String securedOnboardingAuthorizationUrl = + this.environment.getSecuredOnboardingAuthorizationUrl( + parameters.getApplicationId(), + parameters.getResponseType(), + parameters.getState(), + parameters.getRedirectUri()); + this.getNativeLogger().info("END | Generating authorization URL. | '{}'.", parameters); + return securedOnboardingAuthorizationUrl; + } - /** - * Decored onboarding error and return dedicated error object for further analysis. - * - * @param error - - * @return - - */ - public Optional getOnboardingError(String error) { - this.getNativeLogger().info("BEGIN | Decoding error response. | '{}'.", error); - Optional result = - StringUtils.isBlank(error) ? Optional.empty() : Optional.of(failSafeGsonParsing(error)); - this.getNativeLogger().info("BEGIN | Decoding error response. | '{}'.", error); - return result; - } + /** + * Decored onboarding error and return dedicated error object for further analysis. + * + * @param error - + * @return - + */ + public Optional getOnboardingError(String error) { + this.getNativeLogger().info("BEGIN | Decoding error response. | '{}'.", error); + Optional result = + StringUtils.isBlank(error) ? Optional.empty() : Optional.of(failSafeGsonParsing(error)); + this.getNativeLogger().info("BEGIN | Decoding error response. | '{}'.", error); + return result; + } - private OnboardingError failSafeGsonParsing(String error) { - Gson gson = new Gson(); - try { - return gson.fromJson(error, OnboardingError.class); - } catch (Exception e) { - this.getNativeLogger().error("Error parsing error response. | '{}'.", error); - return OnboardingError.unknownError(error); + private OnboardingError failSafeGsonParsing(String error) { + Gson gson = new Gson(); + try { + return gson.fromJson(error, OnboardingError.class); + } catch (Exception e) { + this.getNativeLogger().error("Error parsing error response. | '{}'.", error); + return OnboardingError.unknownError(error); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java index 84ea2834..40bab1f4 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java @@ -11,67 +11,70 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.Response; + import java.util.Objects; import java.util.Optional; -/** Internal service implementation. */ +/** + * Internal service implementation. + */ public class OnboardingServiceImpl extends AbstractOnboardingService - implements OnboardingService, ResponseValidator { + implements OnboardingService, ResponseValidator { - public OnboardingServiceImpl(Environment environment) { - super(environment); - } + public OnboardingServiceImpl(Environment environment) { + super(environment); + } - @Override - public OnboardingResponse onboard(OnboardingParameters parameters) { - this.getNativeLogger().info("BEGIN | Onboarding process. | '{}'.", parameters); - parameters.validate(); + @Override + public OnboardingResponse onboard(OnboardingParameters parameters) { + this.getNativeLogger().info("BEGIN | Onboarding process. | '{}'.", parameters); + parameters.validate(); - this.getNativeLogger().debug("Onboard device."); - OnboardingResponse onboardingResponse = - this.onboard( - parameters.getRegistrationCode(), this.createOnboardingRequestBody(parameters)); + this.getNativeLogger().debug("Onboard device."); + OnboardingResponse onboardingResponse = + this.onboard( + parameters.getRegistrationCode(), this.createOnboardingRequestBody(parameters)); - this.getNativeLogger().info("END | Onboarding process. | '{}'.", parameters); - return onboardingResponse; - } + this.getNativeLogger().info("END | Onboarding process. | '{}'.", parameters); + return onboardingResponse; + } - @Override - public Optional getLastOnboardingError(String errorResponse) { - return getOnboardingError(errorResponse); - } + @Override + public Optional getLastOnboardingError(String errorResponse) { + return getOnboardingError(errorResponse); + } - private OnboardingRequest createOnboardingRequestBody(OnboardingParameters parameters) { - this.getNativeLogger().info("BEGIN | Create onboarding request. | '{}'.", parameters); - OnboardingRequest onboardRequest = - this.getOnboardRequest( - parameters.getUuid(), - parameters.getApplicationId(), - parameters.getCertificationVersionId(), - parameters.getGatewayId(), - Objects.requireNonNull(parameters.getCertificationType())); - this.getNativeLogger().info("END | Create onboarding request. | '{}'.", parameters); - return onboardRequest; - } + private OnboardingRequest createOnboardingRequestBody(OnboardingParameters parameters) { + this.getNativeLogger().info("BEGIN | Create onboarding request. | '{}'.", parameters); + OnboardingRequest onboardRequest = + this.getOnboardRequest( + parameters.getUuid(), + parameters.getApplicationId(), + parameters.getCertificationVersionId(), + parameters.getGatewayId(), + Objects.requireNonNull(parameters.getCertificationType())); + this.getNativeLogger().info("END | Create onboarding request. | '{}'.", parameters); + return onboardRequest; + } - private OnboardingResponse onboard(String registrationCode, OnboardingRequest onboardingRequest) { - this.getNativeLogger() - .info("BEGIN | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); - Response response = - RequestFactory.bearerTokenRequest(this.environment.getOnboardUrl(), registrationCode) - .post(Entity.json(onboardingRequest)); - try { - response.bufferEntity(); - this.assertStatusCodeIsCreated(response.getStatus()); - OnboardingResponse onboardingResponse = response.readEntity(OnboardingResponse.class); + private OnboardingResponse onboard(String registrationCode, OnboardingRequest onboardingRequest) { + this.getNativeLogger() + .info("BEGIN | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); + Response response = + RequestFactory.bearerTokenRequest(this.environment.getOnboardUrl(), registrationCode) + .post(Entity.json(onboardingRequest)); + try { + response.bufferEntity(); + this.assertStatusCodeIsCreated(response.getStatus()); + OnboardingResponse onboardingResponse = response.readEntity(OnboardingResponse.class); - this.getNativeLogger() - .info("END | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); - return onboardingResponse; - } catch (Exception e) { - throw new OnboardingException(getOnboardingError(response.readEntity(String.class))); - } finally { - response.close(); + this.getNativeLogger() + .info("END | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); + return onboardingResponse; + } catch (Exception e) { + throw new OnboardingException(getOnboardingError(response.readEntity(String.class))); + } finally { + response.close(); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java index 022fc25d..15a425fe 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java @@ -11,6 +11,9 @@ import com.dke.data.agrirouter.impl.onboard.OnboardingServiceImpl; import com.dke.data.agrirouter.impl.validation.ResponseValidator; import com.google.gson.Gson; +import org.apache.commons.lang3.StringUtils; +import org.jetbrains.annotations.NotNull; + import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URI; @@ -20,90 +23,90 @@ import java.util.Base64; import java.util.HashMap; import java.util.Map; -import org.apache.commons.lang3.StringUtils; -import org.jetbrains.annotations.NotNull; -/** Internal service implementation. */ +/** + * Internal service implementation. + */ public class AuthorizationRequestServiceImpl extends EnvironmentalService - implements AuthorizationRequestService, ResponseValidator { - - private static final String SIGNATURE_KEY = "signature"; - private static final String STATE_KEY = "state"; - private static final String TOKEN_KEY = "token"; - private static final String ERROR_KEY = "error"; + implements AuthorizationRequestService, ResponseValidator { - private final OnboardingService onboardingService; + private static final String SIGNATURE_KEY = "signature"; + private static final String STATE_KEY = "state"; + private static final String TOKEN_KEY = "token"; + private static final String ERROR_KEY = "error"; - public AuthorizationRequestServiceImpl(Environment environment) { - super(environment); - this.onboardingService = new OnboardingServiceImpl(environment); - } + private final OnboardingService onboardingService; - /** - * This function returns a full URL to send to a browser as Redirect or Link to forward a user to - * the Authorization process - * - * @param authorizationRequestParameters Parameters to build URL from - * @return The RegistrationURL - */ - public String getAuthorizationRequestURL( - AuthorizationRequestParameters authorizationRequestParameters) { - authorizationRequestParameters.validate(); - if (StringUtils.isBlank(authorizationRequestParameters.getState())) { - authorizationRequestParameters.setState(StateIdService.generateState()); + public AuthorizationRequestServiceImpl(Environment environment) { + super(environment); + this.onboardingService = new OnboardingServiceImpl(environment); } - authorizationRequestParameters.setState(authorizationRequestParameters.getState()); - return this.onboardingService.generateAuthorizationUrl(authorizationRequestParameters); - } + /** + * This function returns a full URL to send to a browser as Redirect or Link to forward a user to + * the Authorization process + * + * @param authorizationRequestParameters Parameters to build URL from + * @return The RegistrationURL + */ + public String getAuthorizationRequestURL( + AuthorizationRequestParameters authorizationRequestParameters) { + authorizationRequestParameters.validate(); + if (StringUtils.isBlank(authorizationRequestParameters.getState())) { + authorizationRequestParameters.setState(StateIdService.generateState()); + } + authorizationRequestParameters.setState(authorizationRequestParameters.getState()); - /** - * Decode the Base64-encoded Token and Create a TokenObject with RegCode and AccountId - * - * @param token - - * @return - - */ - @Override - public AuthorizationResponseToken decodeToken(String token) { - byte[] decodedBytes = Base64.getDecoder().decode(token); - String decodedToken = new String(decodedBytes); - return new Gson().fromJson(decodedToken, AuthorizationResponseToken.class); - } + return this.onboardingService.generateAuthorizationUrl(authorizationRequestParameters); + } - @NotNull - public AuthorizationResponse extractAuthorizationResponseFromQuery(String query) { - String[] queryParams = query.split("&"); - Map authorizationResults = new HashMap<>(); - Arrays.stream(queryParams) - .forEach( - s -> { - String[] keyValuePair = s.split("="); - try { - authorizationResults.put( - keyValuePair[0], URLDecoder.decode(keyValuePair[1], "UTF-8")); - } catch (UnsupportedEncodingException e) { - // NOP - } - }); - AuthorizationResponse authorizationResponse = new AuthorizationResponse(); - if (authorizationResults.containsKey(SIGNATURE_KEY)) { - authorizationResponse.setSignature(authorizationResults.get(SIGNATURE_KEY)); + /** + * Decode the Base64-encoded Token and Create a TokenObject with RegCode and AccountId + * + * @param token - + * @return - + */ + @Override + public AuthorizationResponseToken decodeToken(String token) { + byte[] decodedBytes = Base64.getDecoder().decode(token); + String decodedToken = new String(decodedBytes); + return new Gson().fromJson(decodedToken, AuthorizationResponseToken.class); } - authorizationResponse.setState(authorizationResults.get(STATE_KEY)); - authorizationResponse.setToken(authorizationResults.get(TOKEN_KEY)); - authorizationResponse.setError(authorizationResults.get(ERROR_KEY)); - return authorizationResponse; - } - @NotNull - public AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl) { - return extractAuthorizationResponseFromQuery(redirectPageUrl.getQuery()); - } + @NotNull + public AuthorizationResponse extractAuthorizationResponseFromQuery(String query) { + String[] queryParams = query.split("&"); + Map authorizationResults = new HashMap<>(); + Arrays.stream(queryParams) + .forEach( + s -> { + String[] keyValuePair = s.split("="); + try { + authorizationResults.put( + keyValuePair[0], URLDecoder.decode(keyValuePair[1], "UTF-8")); + } catch (UnsupportedEncodingException e) { + // NOP + } + }); + AuthorizationResponse authorizationResponse = new AuthorizationResponse(); + if (authorizationResults.containsKey(SIGNATURE_KEY)) { + authorizationResponse.setSignature(authorizationResults.get(SIGNATURE_KEY)); + } + authorizationResponse.setState(authorizationResults.get(STATE_KEY)); + authorizationResponse.setToken(authorizationResults.get(TOKEN_KEY)); + authorizationResponse.setError(authorizationResults.get(ERROR_KEY)); + return authorizationResponse; + } - public AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) - throws MalformedURLException { - URL url = URI.create(redirectPageUrl).toURL(); + @NotNull + public AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl) { + return extractAuthorizationResponseFromQuery(redirectPageUrl.getQuery()); + } - return extractAuthorizationResponse(url); - } + public AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) + throws MalformedURLException { + URL url = URI.create(redirectPageUrl).toURL(); + + return extractAuthorizationResponse(url); + } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java index 43528828..d5a25143 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.impl.onboard.secured; -import static java.nio.charset.StandardCharsets.UTF_8; - import com.dke.data.agrirouter.api.dto.onboard.OnboardingError; import com.dke.data.agrirouter.api.dto.onboard.OnboardingRequest; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; @@ -20,142 +18,147 @@ import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; +import org.apache.commons.codec.DecoderException; +import org.apache.commons.codec.binary.Hex; + import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.Signature; import java.security.SignatureException; import java.util.Objects; import java.util.Optional; -import org.apache.commons.codec.DecoderException; -import org.apache.commons.codec.binary.Hex; -/** Internal service implementation. */ +import static java.nio.charset.StandardCharsets.UTF_8; + +/** + * Internal service implementation. + */ public class OnboardingServiceImpl extends AbstractOnboardingService - implements OnboardingService, ResponseValidator { - - private static final String SIGNATURE_ALGORITHM = "SHA256withRSA"; - - public OnboardingServiceImpl(Environment environment) { - super(environment); - } - - @Override - public OnboardingResponse onboard(SecuredOnboardingParameters securedOnboardingParameters) { - securedOnboardingParameters.validate(); - return this.onboard( - securedOnboardingParameters, this.createOnboardingRequestBody(securedOnboardingParameters)); - } - - @Override - public void verify(SecuredOnboardingParameters securedOnboardingParameters) { - securedOnboardingParameters.validate(); - this.verify( - securedOnboardingParameters, this.createOnboardingRequestBody(securedOnboardingParameters)); - } - - @Override - public Optional getLastOnboardingError(String error) { - return getOnboardingError(error); - } - - private OnboardingRequest createOnboardingRequestBody(SecuredOnboardingParameters parameters) { - return this.getOnboardRequest( - parameters.getUuid(), - parameters.getApplicationId(), - parameters.getCertificationVersionId(), - parameters.getGatewayId(), - Objects.requireNonNull(parameters.getCertificationType())); - } - - private OnboardingResponse onboard( - SecuredOnboardingParameters securedOnboardingParameters, - OnboardingRequest onboardingRequest) { - String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); - String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); - this.verifySignature( - jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); - jakarta.ws.rs.core.Response response = - RequestFactory.bearerTokenRequest( - this.environment.getSecuredOnboardUrl(), - securedOnboardingParameters.getRegistrationCode(), - securedOnboardingParameters.getApplicationId(), - encodedSignature) - .post(Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)); - try { - response.bufferEntity(); - this.assertStatusCodeIsCreated(response.getStatus()); - return response.readEntity(OnboardingResponse.class); - } catch (Exception e) { - throw new OnboardingException(getOnboardingError(response.readEntity(String.class))); - } finally { - response.close(); + implements OnboardingService, ResponseValidator { + + private static final String SIGNATURE_ALGORITHM = "SHA256withRSA"; + + public OnboardingServiceImpl(Environment environment) { + super(environment); + } + + @Override + public OnboardingResponse onboard(SecuredOnboardingParameters securedOnboardingParameters) { + securedOnboardingParameters.validate(); + return this.onboard( + securedOnboardingParameters, this.createOnboardingRequestBody(securedOnboardingParameters)); } - } - - private void verify( - SecuredOnboardingParameters securedOnboardingParameters, - OnboardingRequest onboardingRequest) { - String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); - String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); - this.verifySignature( - jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); - System.out.println( - "Validation of '" + jsonBody + "' against '" + encodedSignature + "' was successful."); - Response response = - RequestFactory.bearerTokenRequest( - this.environment.getVerifyOnboardRequestUrl(), - securedOnboardingParameters.getRegistrationCode(), - securedOnboardingParameters.getApplicationId(), - encodedSignature) - .post(Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)); - try { - this.assertStatusCodeIsOk(response.getStatus()); - } catch (UnexpectedHttpStatusException e) { - throw new CouldNotVerifySecuredOnboardingRequestException(e); + + @Override + public void verify(SecuredOnboardingParameters securedOnboardingParameters) { + securedOnboardingParameters.validate(); + this.verify( + securedOnboardingParameters, this.createOnboardingRequestBody(securedOnboardingParameters)); + } + + @Override + public Optional getLastOnboardingError(String error) { + return getOnboardingError(error); } - } - private byte[] decodeHex(String encodedSignature) { - try { - return Hex.decodeHex(encodedSignature.toCharArray()); - } catch (DecoderException e) { - throw new RuntimeException(e); + private OnboardingRequest createOnboardingRequestBody(SecuredOnboardingParameters parameters) { + return this.getOnboardRequest( + parameters.getUuid(), + parameters.getApplicationId(), + parameters.getCertificationVersionId(), + parameters.getGatewayId(), + Objects.requireNonNull(parameters.getCertificationType())); } - } - - private String createSignature( - SecuredOnboardingParameters securedOnboardingParameters, String jsonBody) { - byte[] signature = this.createSignature(jsonBody, securedOnboardingParameters.getPrivateKey()); - this.verifySignature(jsonBody, signature, securedOnboardingParameters.getPublicKey()); - String encodedSignature = Hex.encodeHexString(signature); - this.verifySignature( - jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); - return encodedSignature; - } - - byte[] createSignature(String requestBody, String privateKey) { - try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); - signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); - signature.update(requestBody.getBytes(UTF_8)); - return signature.sign(); - } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { - throw new RuntimeException(e); + + private OnboardingResponse onboard( + SecuredOnboardingParameters securedOnboardingParameters, + OnboardingRequest onboardingRequest) { + String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); + String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); + this.verifySignature( + jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); + jakarta.ws.rs.core.Response response = + RequestFactory.bearerTokenRequest( + this.environment.getSecuredOnboardUrl(), + securedOnboardingParameters.getRegistrationCode(), + securedOnboardingParameters.getApplicationId(), + encodedSignature) + .post(Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)); + try { + response.bufferEntity(); + this.assertStatusCodeIsCreated(response.getStatus()); + return response.readEntity(OnboardingResponse.class); + } catch (Exception e) { + throw new OnboardingException(getOnboardingError(response.readEntity(String.class))); + } finally { + response.close(); + } } - } - - void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { - try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); - signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); - signature.update(requestBody.getBytes(UTF_8)); - if (!signature.verify(signedBytes)) { - throw new InvalidSignatureException(); - } - } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { - throw new RuntimeException(e); + + private void verify( + SecuredOnboardingParameters securedOnboardingParameters, + OnboardingRequest onboardingRequest) { + String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); + String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); + this.verifySignature( + jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); + System.out.println( + "Validation of '" + jsonBody + "' against '" + encodedSignature + "' was successful."); + Response response = + RequestFactory.bearerTokenRequest( + this.environment.getVerifyOnboardRequestUrl(), + securedOnboardingParameters.getRegistrationCode(), + securedOnboardingParameters.getApplicationId(), + encodedSignature) + .post(Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)); + try { + this.assertStatusCodeIsOk(response.getStatus()); + } catch (UnexpectedHttpStatusException e) { + throw new CouldNotVerifySecuredOnboardingRequestException(e); + } + } + + private byte[] decodeHex(String encodedSignature) { + try { + return Hex.decodeHex(encodedSignature.toCharArray()); + } catch (DecoderException e) { + throw new RuntimeException(e); + } + } + + private String createSignature( + SecuredOnboardingParameters securedOnboardingParameters, String jsonBody) { + byte[] signature = this.createSignature(jsonBody, securedOnboardingParameters.getPrivateKey()); + this.verifySignature(jsonBody, signature, securedOnboardingParameters.getPublicKey()); + String encodedSignature = Hex.encodeHexString(signature); + this.verifySignature( + jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); + return encodedSignature; + } + + byte[] createSignature(String requestBody, String privateKey) { + try { + SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); + Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); + signature.update(requestBody.getBytes(UTF_8)); + return signature.sign(); + } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { + throw new RuntimeException(e); + } + } + + void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { + try { + SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); + Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); + signature.update(requestBody.getBytes(UTF_8)); + if (!signature.verify(signedBytes)) { + throw new InvalidSignatureException(); + } + } catch (NoSuchAlgorithmException | SignatureException | InvalidKeyException e) { + throw new RuntimeException(e); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java index 4f3be794..29637e30 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java @@ -15,79 +15,80 @@ import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.Response; -import java.util.Objects; -import java.util.Optional; import org.apache.commons.codec.binary.Hex; import org.apache.commons.lang3.StringUtils; +import java.util.Objects; +import java.util.Optional; + public class RevokingServiceImpl extends EnvironmentalService - implements RevokingService, SignatureService { + implements RevokingService, SignatureService { - public RevokingServiceImpl(Environment environment) { - super(environment); - } + public RevokingServiceImpl(Environment environment) { + super(environment); + } - @Override - public RevokeResponse revoke(RevokeParameters revokeParameters) { - revokeParameters.validate(); - Response response = null; - RevokeRequest revokeRequest = createRevokeRequestBody(revokeParameters); - Gson gson = new Gson(); - String jsonBody = gson.toJson(revokeRequest).replace("\n", ""); - String encodedSignature = this.createSignature(revokeParameters, jsonBody); - this.verifySignature(jsonBody, decodeHex(encodedSignature), revokeParameters.getPublicKey()); + @Override + public RevokeResponse revoke(RevokeParameters revokeParameters) { + revokeParameters.validate(); + Response response = null; + RevokeRequest revokeRequest = createRevokeRequestBody(revokeParameters); + Gson gson = new Gson(); + String jsonBody = gson.toJson(revokeRequest).replace("\n", ""); + String encodedSignature = this.createSignature(revokeParameters, jsonBody); + this.verifySignature(jsonBody, decodeHex(encodedSignature), revokeParameters.getPublicKey()); - try { - response = - RequestFactory.signedDeleteRequest( - environment.getRevokeUrl(), revokeParameters.getApplicationId(), encodedSignature) - .build("DELETE", Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)) - .invoke(); + try { + response = + RequestFactory.signedDeleteRequest( + environment.getRevokeUrl(), revokeParameters.getApplicationId(), encodedSignature) + .build("DELETE", Entity.entity(jsonBody, MediaType.APPLICATION_JSON_TYPE)) + .invoke(); - response.bufferEntity(); - RevokeResponse result = RevokeResponse.Filter.valueOf(response.getStatus()); - if (Objects.requireNonNull(result).getKey() == RevokeResponse.SUCCESS.getKey()) { - return result; - } else { - throw new RevokingException(getLastRevokingError(response.readEntity(String.class))); - } - } finally { - if (response != null) { - response.close(); - } + response.bufferEntity(); + RevokeResponse result = RevokeResponse.Filter.valueOf(response.getStatus()); + if (Objects.requireNonNull(result).getKey() == RevokeResponse.SUCCESS.getKey()) { + return result; + } else { + throw new RevokingException(getLastRevokingError(response.readEntity(String.class))); + } + } finally { + if (response != null) { + response.close(); + } + } } - } - private String createSignature(RevokeParameters revokeParameters, String jsonBody) { - byte[] signature = this.createSignature(jsonBody, revokeParameters.getPrivateKey()); - return Hex.encodeHexString(signature); - } + private String createSignature(RevokeParameters revokeParameters, String jsonBody) { + byte[] signature = this.createSignature(jsonBody, revokeParameters.getPrivateKey()); + return Hex.encodeHexString(signature); + } - private RevokeRequest createRevokeRequestBody(RevokeParameters parameters) { - this.getNativeLogger().info("BEGIN | Create revoking request. | '{}'.", parameters); - RevokeRequest revokeRequest = new RevokeRequest(); - revokeRequest.setAccountId(Objects.requireNonNull(parameters.getAccountId())); - revokeRequest.setEndpointIds( - Objects.requireNonNull(parameters.getEndpointIds()).toArray(new String[] {})); - revokeRequest.setUTCTimestamp(UtcTimeService.inThePast(10).toString()); - revokeRequest.setTimeZone(UtcTimeService.offset()); - this.getNativeLogger().info("END | Create revoking request. | '{}'.", parameters); - return revokeRequest; - } + private RevokeRequest createRevokeRequestBody(RevokeParameters parameters) { + this.getNativeLogger().info("BEGIN | Create revoking request. | '{}'.", parameters); + RevokeRequest revokeRequest = new RevokeRequest(); + revokeRequest.setAccountId(Objects.requireNonNull(parameters.getAccountId())); + revokeRequest.setEndpointIds( + Objects.requireNonNull(parameters.getEndpointIds()).toArray(new String[]{})); + revokeRequest.setUTCTimestamp(UtcTimeService.inThePast(10).toString()); + revokeRequest.setTimeZone(UtcTimeService.offset()); + this.getNativeLogger().info("END | Create revoking request. | '{}'.", parameters); + return revokeRequest; + } - public Optional getLastRevokingError(String errorResponse) { - return StringUtils.isBlank(errorResponse) - ? Optional.empty() - : Optional.of(failSafeGsonParsing(errorResponse)); - } + public Optional getLastRevokingError(String errorResponse) { + return StringUtils.isBlank(errorResponse) + ? Optional.empty() + : Optional.of(failSafeGsonParsing(errorResponse)); + } - private RevokingError failSafeGsonParsing(String error) { - Gson gson = new Gson(); - try { - return gson.fromJson(error, RevokingError.class); - } catch (Exception e) { - this.getNativeLogger().error("Error parsing error response. | '{}'.", error); - return RevokingError.unknownError(error); + private RevokingError failSafeGsonParsing(String error) { + Gson gson = new Gson(); + try { + return gson.fromJson(error, RevokingError.class); + } catch (Exception e) { + this.getNativeLogger().error("Error parsing error response. | '{}'.", error); + return RevokingError.unknownError(error); + } } - } } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java index 83c8b537..a36a5675 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java @@ -7,94 +7,96 @@ import com.dke.data.agrirouter.api.service.HasLogger; import org.apache.http.HttpStatus; -/** Validation of the response, encapsulated using an interface. */ +/** + * Validation of the response, encapsulated using an interface. + */ public interface ResponseValidator extends HasLogger { - /** - * Asserting that the status code is valid. A valid status is in between 200 and 207 (defined by - * HTTP). - * - * @param statusCode The current status code. - */ - default boolean assertStatusCodeIsValid(int statusCode) { - getNativeLogger().debug("Validating status code."); - getNativeLogger().trace("Status code was '{}'", statusCode); - this.checkIfStatusCodeIsError(statusCode); - if (statusCode != HttpStatus.SC_OK - && statusCode != HttpStatus.SC_CREATED - && statusCode != HttpStatus.SC_ACCEPTED - && statusCode != HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION - && statusCode != HttpStatus.SC_NO_CONTENT - && statusCode != HttpStatus.SC_RESET_CONTENT - && statusCode != HttpStatus.SC_PARTIAL_CONTENT - && statusCode != HttpStatus.SC_MULTI_STATUS) { - throw new InvalidHttpStatusException(statusCode); + /** + * Asserting that the status code is valid. A valid status is in between 200 and 207 (defined by + * HTTP). + * + * @param statusCode The current status code. + */ + default boolean assertStatusCodeIsValid(int statusCode) { + getNativeLogger().debug("Validating status code."); + getNativeLogger().trace("Status code was '{}'", statusCode); + this.checkIfStatusCodeIsError(statusCode); + if (statusCode != HttpStatus.SC_OK + && statusCode != HttpStatus.SC_CREATED + && statusCode != HttpStatus.SC_ACCEPTED + && statusCode != HttpStatus.SC_NON_AUTHORITATIVE_INFORMATION + && statusCode != HttpStatus.SC_NO_CONTENT + && statusCode != HttpStatus.SC_RESET_CONTENT + && statusCode != HttpStatus.SC_PARTIAL_CONTENT + && statusCode != HttpStatus.SC_MULTI_STATUS) { + throw new InvalidHttpStatusException(statusCode); + } + return true; } - return true; - } - /** - * Asserting that the status code is HTTP OK. - * - * @param statusCode The current status code. - */ - @SuppressWarnings("UnusedReturnValue") - default boolean assertStatusCodeIsOk(int statusCode) { - getNativeLogger().debug("Validating status code."); - getNativeLogger().trace("Status code was '{}'", statusCode); - this.checkIfStatusCodeIsError(statusCode); - if (statusCode != HttpStatus.SC_OK) { - throw new InvalidHttpStatusException(statusCode); + /** + * Asserting that the status code is HTTP OK. + * + * @param statusCode The current status code. + */ + @SuppressWarnings("UnusedReturnValue") + default boolean assertStatusCodeIsOk(int statusCode) { + getNativeLogger().debug("Validating status code."); + getNativeLogger().trace("Status code was '{}'", statusCode); + this.checkIfStatusCodeIsError(statusCode); + if (statusCode != HttpStatus.SC_OK) { + throw new InvalidHttpStatusException(statusCode); + } + return true; } - return true; - } - /** - * Asserting that the status code is HTTP CREATED. - * - * @param statusCode The current status code. - */ - default boolean assertStatusCodeIsCreated(int statusCode) { - getNativeLogger().debug("Validating status code."); - getNativeLogger().trace("Status code was '{}'", statusCode); - this.checkIfStatusCodeIsError(statusCode); - if (statusCode != HttpStatus.SC_CREATED) { - throw new InvalidHttpStatusException(statusCode); + /** + * Asserting that the status code is HTTP CREATED. + * + * @param statusCode The current status code. + */ + default boolean assertStatusCodeIsCreated(int statusCode) { + getNativeLogger().debug("Validating status code."); + getNativeLogger().trace("Status code was '{}'", statusCode); + this.checkIfStatusCodeIsError(statusCode); + if (statusCode != HttpStatus.SC_CREATED) { + throw new InvalidHttpStatusException(statusCode); + } + return true; } - return true; - } - /** - * Asserting that the status code is HTTP BAD REQUEST. - * - * @param statusCode The current status code. - */ - default boolean assertStatusCodeIsBadRequest(int statusCode) { - getNativeLogger().debug("Validating status code."); - getNativeLogger().trace("Status code was '{}'", statusCode); - this.checkIfStatusCodeIsError(statusCode); - if (statusCode != HttpStatus.SC_BAD_REQUEST) { - throw new InvalidHttpStatusException(statusCode); + /** + * Asserting that the status code is HTTP BAD REQUEST. + * + * @param statusCode The current status code. + */ + default boolean assertStatusCodeIsBadRequest(int statusCode) { + getNativeLogger().debug("Validating status code."); + getNativeLogger().trace("Status code was '{}'", statusCode); + this.checkIfStatusCodeIsError(statusCode); + if (statusCode != HttpStatus.SC_BAD_REQUEST) { + throw new InvalidHttpStatusException(statusCode); + } + return true; } - return true; - } - /** - * Will check if the status code is an error. If there will an error a business exception will - * rise. - * - * @param statusCode The current response. - */ - default void checkIfStatusCodeIsError(int statusCode) { - getNativeLogger().debug("Checking if the response is an error."); - if (statusCode == HttpStatus.SC_NOT_FOUND) { - throw new InvalidUrlForRequestException(); + /** + * Will check if the status code is an error. If there will an error a business exception will + * rise. + * + * @param statusCode The current response. + */ + default void checkIfStatusCodeIsError(int statusCode) { + getNativeLogger().debug("Checking if the response is an error."); + if (statusCode == HttpStatus.SC_NOT_FOUND) { + throw new InvalidUrlForRequestException(); + } + if (statusCode == HttpStatus.SC_UNAUTHORIZED) { + throw new UnauthorizedRequestException(); + } + if (statusCode == HttpStatus.SC_FORBIDDEN) { + throw new ForbiddenRequestException(); + } } - if (statusCode == HttpStatus.SC_UNAUTHORIZED) { - throw new UnauthorizedRequestException(); - } - if (statusCode == HttpStatus.SC_FORBIDDEN) { - throw new ForbiddenRequestException(); - } - } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java index a4f29939..37057407 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java @@ -9,54 +9,55 @@ class PrivateKeyCreationServiceTest { - @Test - void givenValidPrivateKeyCreatePrivateKeyShouldReturnValidResults() { - String privateKey = - "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDYngadA9rWUDCoNQ/orXTId1W3QRrQ7ufLB8CDDY3g7w5hzBDhgPpavZlNrLaGqCzjDzYmSq5Km2KjAvAoGUwYeIhv7E1mK5LUL96PWujMag/FwHhUC3yXfjcyNLrM/zUPPL8dzITyRbdA7zANU2jYOrY13vlEpkP/AImoKDz9iRB6lJhT/JvdUo8TMH7JHNDW6LE4kuWV5VrUzu3fbpg20FjxK23fvA6lA0P+h+7xhL29/D54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; - SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); - Assertions.assertNotNull(privateKeyCreationService.createPrivateKey(privateKey)); - } - - @Test - void givenInvalidPrivateKeyCreatePrivateKeyShouldThrowException() { - String invalidPrivateKey = - "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxoD54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; - SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); - Assertions.assertThrows( - CouldNotCreatePrivateKeyException.class, - () -> privateKeyCreationService.createPrivateKey(invalidPrivateKey)); - } - - @Test - void checkSignatureCanBeVerified() { - String privateKey = - "-----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMIkcJfcjTUm1wLwbXBcGoEn8vhOA6ew5fsJ+CNgo21BeNTgvOXzhZrwMZYuiAXFpmV4kukWjyLchFE5jKk6yPkmsPQXVnOWqYMQO6d/sutHBMtjQ55vOCwqDTR4rm2dHrs/Qg/PTBoH3Dcr6WKQNNUYMZNXzED2AC/CRkXjME0oMq7YzgkVxdwhftIrgmUUUCRgHngM2PPyNsmZckvXngkqWOr9eUCsbg2NzTet3shHE8eW5yEBXVeAvT3On1WoQvISOe1ULWFOZ6qZ1NDbwwEmZWwUr5Q33fGplaZCnohvPf+5IfEi+M4/pjnOVFC4oSSZCFF5Q7++bHKxsx18LXAgMBAAECggEADdLMaLIh5V2Rl6U3m1wCbzVBc6BV5t/qa0R0qMasDmZyadk9J25/TGNznEZ8ZCTc4k1PNt4V80BybWsUT7OMXfSWV2QhZSoYM9It5HS3h8QkTq2P/9PJ7bLsXSJdH6DkfEelYo5+rJYHrjKZAWYpmRTKAe0DU+uOnuUgOcO/RLY1mp5S15lJuCy2jwQml8g043/A4Hcjql5co2jT2Pxv+t9o6Y2wVbRUNGXgz63wGcny08AUmiGuH3fhB4RDHrOC/TKnJVovxF6nmcoxduC37VLywFRIt5Kgy4sweN9ezHrlRRnxekG6XcRfTzfhbXet0mE1i9nU5FlFZ4bm2Kpa8QKBgQD8dEXFKsZnUCaJNaLzFZpXihr+fmgIPAk558Qm+1dxDqKolfY204ZkuZduHrkSH2MWOD69+Ej1UoygQH6Dzn1MCMxEUQadpY/F8wCkq+30tMVvzsOH647tBSVLGdIpae6GaNOksyLKnzipCX7GCHIh9ej9iXGoph/G1bDPiVTRJQKBgQDPAEOOm5jP0g2dCbcNopupiPl/w4s1JPJdPtYsViUG5gvrYVQcdfOaS5dtO1jwnoThyGqpbRI3Zzs5xZgpTDTqlP1J5ys4e0DyW3x7gm0HZIXVsXa4y0qjL1S2p/LQZR3sBgarEurb5rRepJOHVeqNBmXipAE/j/d7JxsYk1R5SwKBgQC2jt5lViljTHKRhlfvsQ+LfjNHFeHlEoUZeqA+EEOLXioB/2+s9gmZjRwUZeMvV8Mvrjyw43re7HME756NciTpdvM/89f06GSvoKo2ap4I9zBPShXblFwmyjHNvT5c9F2olOV3lJL0M2+lzVf/nNvr8wgpT9sBOiCAiMbzTTwogQKBgGsFTOg/A9t2Uzl8m1p+VpJpUe0/UQqR5ohVA2/6vbv6VfFE6bKpPN/p8wkzZMFKg5MkBhlAXemtAo7U3N2FG9qoWufJj6vs9WAX8pz8ipgG3bbkwGe8GwORZe/llwEtNjIfz3TFHA3DEj/YQLn4roJo62Yoush9C0ttpXGoQkVPAoGBAN3EGJSmnb6vm3Vt6PyL8FfcBWM4m5YiUJxPIH+sVVNfNr3TSGqX3oOIoLTVShMq+guqtnTnLO8Cnmz9h8EkVMTNeHXJyY2WxHysnYaTbJu+pZSJQhuXs9ILFLFXsJnOZWFkrhTmytikNYFfBcBgybYoeGp12DaLiZkKOaKrxCMy-----END PRIVATE KEY-----"; - String publicKey = - "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzCJHCX3I01JtcC8G1wXB\n" - + "qBJ/L4TgOnsOX7CfgjYKNtQXjU4Lzl84Wa8DGWLogFxaZleJLpFo8i3IRROYypOs\n" - + "j5JrD0F1ZzlqmDEDunf7LrRwTLY0OebzgsKg00eK5tnR67P0IPz0waB9w3K+likD\n" - + "TVGDGTV8xA9gAvwkZF4zBNKDKu2M4JFcXcIX7SK4JlFFAkYB54DNjz8jbJmXJL15\n" - + "4JKljq/XlArG4Njc03rd7IRxPHluchAV1XgL09zp9VqELyEjntVC1hTmeqmdTQ28\n" - + "MBJmVsFK+UN93xqZWmQp6Ibz3/uSHxIvjOP6Y5zlRQuKEkmQhReUO/vmxysbMdfC\n" - + "1wIDAQAB\n" - + "-----END PUBLIC KEY-----"; - - RevokeRequest revokeRequest = new RevokeRequest(); - revokeRequest.setAccountId("dflakjfafd"); - revokeRequest.setEndpointIds(new String[] {"adkfjlaf", "afdlakfdlakdfl"}); - revokeRequest.setTimeZone("UTC+5"); - revokeRequest.setUTCTimestamp("2019-05-18T23:03:21"); - - Gson gson = new Gson(); - String input = gson.toJson(revokeRequest); - - class SignatureTester implements SignatureService {} - - SignatureTester signatureTester = new SignatureTester(); - - byte[] signature = signatureTester.createSignature(input, privateKey); - - signatureTester.verifySignature(input, signature, publicKey); - } + @Test + void givenValidPrivateKeyCreatePrivateKeyShouldReturnValidResults() { + String privateKey = + "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDYngadA9rWUDCoNQ/orXTId1W3QRrQ7ufLB8CDDY3g7w5hzBDhgPpavZlNrLaGqCzjDzYmSq5Km2KjAvAoGUwYeIhv7E1mK5LUL96PWujMag/FwHhUC3yXfjcyNLrM/zUPPL8dzITyRbdA7zANU2jYOrY13vlEpkP/AImoKDz9iRB6lJhT/JvdUo8TMH7JHNDW6LE4kuWV5VrUzu3fbpg20FjxK23fvA6lA0P+h+7xhL29/D54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; + SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); + Assertions.assertNotNull(privateKeyCreationService.createPrivateKey(privateKey)); + } + + @Test + void givenInvalidPrivateKeyCreatePrivateKeyShouldThrowException() { + String invalidPrivateKey = + "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxoD54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; + SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); + Assertions.assertThrows( + CouldNotCreatePrivateKeyException.class, + () -> privateKeyCreationService.createPrivateKey(invalidPrivateKey)); + } + + @Test + void checkSignatureCanBeVerified() { + String privateKey = + "-----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMIkcJfcjTUm1wLwbXBcGoEn8vhOA6ew5fsJ+CNgo21BeNTgvOXzhZrwMZYuiAXFpmV4kukWjyLchFE5jKk6yPkmsPQXVnOWqYMQO6d/sutHBMtjQ55vOCwqDTR4rm2dHrs/Qg/PTBoH3Dcr6WKQNNUYMZNXzED2AC/CRkXjME0oMq7YzgkVxdwhftIrgmUUUCRgHngM2PPyNsmZckvXngkqWOr9eUCsbg2NzTet3shHE8eW5yEBXVeAvT3On1WoQvISOe1ULWFOZ6qZ1NDbwwEmZWwUr5Q33fGplaZCnohvPf+5IfEi+M4/pjnOVFC4oSSZCFF5Q7++bHKxsx18LXAgMBAAECggEADdLMaLIh5V2Rl6U3m1wCbzVBc6BV5t/qa0R0qMasDmZyadk9J25/TGNznEZ8ZCTc4k1PNt4V80BybWsUT7OMXfSWV2QhZSoYM9It5HS3h8QkTq2P/9PJ7bLsXSJdH6DkfEelYo5+rJYHrjKZAWYpmRTKAe0DU+uOnuUgOcO/RLY1mp5S15lJuCy2jwQml8g043/A4Hcjql5co2jT2Pxv+t9o6Y2wVbRUNGXgz63wGcny08AUmiGuH3fhB4RDHrOC/TKnJVovxF6nmcoxduC37VLywFRIt5Kgy4sweN9ezHrlRRnxekG6XcRfTzfhbXet0mE1i9nU5FlFZ4bm2Kpa8QKBgQD8dEXFKsZnUCaJNaLzFZpXihr+fmgIPAk558Qm+1dxDqKolfY204ZkuZduHrkSH2MWOD69+Ej1UoygQH6Dzn1MCMxEUQadpY/F8wCkq+30tMVvzsOH647tBSVLGdIpae6GaNOksyLKnzipCX7GCHIh9ej9iXGoph/G1bDPiVTRJQKBgQDPAEOOm5jP0g2dCbcNopupiPl/w4s1JPJdPtYsViUG5gvrYVQcdfOaS5dtO1jwnoThyGqpbRI3Zzs5xZgpTDTqlP1J5ys4e0DyW3x7gm0HZIXVsXa4y0qjL1S2p/LQZR3sBgarEurb5rRepJOHVeqNBmXipAE/j/d7JxsYk1R5SwKBgQC2jt5lViljTHKRhlfvsQ+LfjNHFeHlEoUZeqA+EEOLXioB/2+s9gmZjRwUZeMvV8Mvrjyw43re7HME756NciTpdvM/89f06GSvoKo2ap4I9zBPShXblFwmyjHNvT5c9F2olOV3lJL0M2+lzVf/nNvr8wgpT9sBOiCAiMbzTTwogQKBgGsFTOg/A9t2Uzl8m1p+VpJpUe0/UQqR5ohVA2/6vbv6VfFE6bKpPN/p8wkzZMFKg5MkBhlAXemtAo7U3N2FG9qoWufJj6vs9WAX8pz8ipgG3bbkwGe8GwORZe/llwEtNjIfz3TFHA3DEj/YQLn4roJo62Yoush9C0ttpXGoQkVPAoGBAN3EGJSmnb6vm3Vt6PyL8FfcBWM4m5YiUJxPIH+sVVNfNr3TSGqX3oOIoLTVShMq+guqtnTnLO8Cnmz9h8EkVMTNeHXJyY2WxHysnYaTbJu+pZSJQhuXs9ILFLFXsJnOZWFkrhTmytikNYFfBcBgybYoeGp12DaLiZkKOaKrxCMy-----END PRIVATE KEY-----"; + String publicKey = + "-----BEGIN PUBLIC KEY-----\n" + + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzCJHCX3I01JtcC8G1wXB\n" + + "qBJ/L4TgOnsOX7CfgjYKNtQXjU4Lzl84Wa8DGWLogFxaZleJLpFo8i3IRROYypOs\n" + + "j5JrD0F1ZzlqmDEDunf7LrRwTLY0OebzgsKg00eK5tnR67P0IPz0waB9w3K+likD\n" + + "TVGDGTV8xA9gAvwkZF4zBNKDKu2M4JFcXcIX7SK4JlFFAkYB54DNjz8jbJmXJL15\n" + + "4JKljq/XlArG4Njc03rd7IRxPHluchAV1XgL09zp9VqELyEjntVC1hTmeqmdTQ28\n" + + "MBJmVsFK+UN93xqZWmQp6Ibz3/uSHxIvjOP6Y5zlRQuKEkmQhReUO/vmxysbMdfC\n" + + "1wIDAQAB\n" + + "-----END PUBLIC KEY-----"; + + RevokeRequest revokeRequest = new RevokeRequest(); + revokeRequest.setAccountId("dflakjfafd"); + revokeRequest.setEndpointIds(new String[]{"adkfjlaf", "afdlakfdlakdfl"}); + revokeRequest.setTimeZone("UTC+5"); + revokeRequest.setUTCTimestamp("2019-05-18T23:03:21"); + + Gson gson = new Gson(); + String input = gson.toJson(revokeRequest); + + class SignatureTester implements SignatureService { + } + + SignatureTester signatureTester = new SignatureTester(); + + byte[] signature = signatureTester.createSignature(input, privateKey); + + signatureTester.verifySignature(input, signature, publicKey); + } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java index 3a938958..01f05bba 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java @@ -1,104 +1,105 @@ package com.dke.data.agrirouter.impl.common.ssl; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; - import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; +import org.junit.jupiter.api.Test; + import java.security.KeyStore; import java.security.PrivateKey; import java.security.cert.X509Certificate; -import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; class KeyStoreCreationServiceTest { - @Test - void givenValidPEMCreateAndReturnKeystoreFromPEMShouldReturnKeyStore() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = - "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3\np9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1Ajy\nYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqI\nKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmek\nzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50s\nGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZO\nHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOY\njAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2Ymh\nbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZg\nhtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXl\ndImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6v\nRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf\n2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3G\nLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4\ne9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA\n6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87\neypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzO\noph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC\n3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxF\nz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1o\nUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+m\npQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0Mj\nenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG4\n2nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03My\nms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aS\nJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEu\nbupO8m9l0y/JJWbMu7Ql\n-----END ENCRYPTED PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjEL\nMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJ\nMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIx\nNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNT\nQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNV\nBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2\nNnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9\nCP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh\n1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOx\nZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUh\nIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p\n2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDug\nOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NB\nUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2\naWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvw\nQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUw\nDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGu\ncTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dv\nki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdl\nwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzF\nlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJI\nF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50=\n-----END CERTIFICATE-----\n"; - KeyStore keyStore = - new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret); - assertNotNull(keyStore); - } + @Test + void givenValidPEMCreateAndReturnKeystoreFromPEMShouldReturnKeyStore() { + String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + String certificate = + "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3\np9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1Ajy\nYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqI\nKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmek\nzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50s\nGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZO\nHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOY\njAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2Ymh\nbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZg\nhtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXl\ndImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6v\nRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf\n2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3G\nLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4\ne9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA\n6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87\neypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzO\noph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC\n3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxF\nz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1o\nUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+m\npQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0Mj\nenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG4\n2nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03My\nms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aS\nJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEu\nbupO8m9l0y/JJWbMu7Ql\n-----END ENCRYPTED PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjEL\nMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJ\nMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIx\nNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNT\nQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNV\nBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2\nNnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9\nCP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh\n1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOx\nZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUh\nIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p\n2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDug\nOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NB\nUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2\naWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvw\nQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUw\nDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGu\ncTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dv\nki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdl\nwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzF\nlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJI\nF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50=\n-----END CERTIFICATE-----\n"; + KeyStore keyStore = + new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret); + assertNotNull(keyStore); + } - @Test - void givenInvalidPEMCreateAndReturnKeystoreFromPEMShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = "TOFUWURST"; - assertThrows( - CouldNotCreateDynamicKeyStoreException.class, - () -> new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret)); - } + @Test + void givenInvalidPEMCreateAndReturnKeystoreFromPEMShouldFail() { + String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + String certificate = "TOFUWURST"; + assertThrows( + CouldNotCreateDynamicKeyStoreException.class, + () -> new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret)); + } - @Test - void givenValidP12CreateAndReturnKeystoreFromP12ShouldReturnKeyStore() { - String secret = "iI8rR5lL6fF0wW1yY6zZ1lL"; - String certificate = - "MIIKuwIBAzCCCnUGCSqGSIb3DQEHAaCCCmYEggpiMIIKXjCCBVMGCSqGSIb3DQEHAaCCBUQEggVAMIIFPDCCBTgGCyqGSIb3DQEMCgECoIIE7zCCBOswHQYKKoZIhvcNAQwBAzAPBAjxu58B9xEeVQIDAgAABIIEyFBNhrdpoAXZsll57Lai8Wd7tGQAE4JQ3I6W/E/WqsKP5BSrSPkfu0KYMM8POMdPzVbX2jLoAfyOizru9Ts0rJluZNVB1peYBLZOOOVyxhw67JI7aXW0BPnIoBJeONbIIa2ZG9XeaCniXOpGKgS9nygDJnDy+gahheo6zqf5+DOGcH7yryJwhX3RFQ5j4vdRL2abBAugQ44TrGUtLm8keKUbccJKG7DK5EuT6jveGfw7/9Yq45+QIS1T/CiL8jPpmNGicLm94JFzJfrp5ilwFBGCnGlwFvGVlODQgW1la5D4hdFO7OpEFsOZPw/HEDZJQB3C/teigE9aqz3J1IzzTSuPHTUbYZZpeaW80H04M8Jih+zNJ+mDoGUL8CiaAiPj/uC1xijpcJENuOXHuNiBnozuSj3P4Q1k6gJ3iOKHKmnxgDXfguu+eFaHv1vpGz/PLWQ1ApRX2Woncq8E5BB1+XQzufwaoclY6rD6FqB2bMdfncXew+jQXaWgrDbU6P2vBe7vffwbVO3W8sVwOAjHLlvjb00DsveTbjgyreT5id6FwPU7zmOmYpKWhHMrpIGW7e6CjkODXSAYwfzrFNMMlbNVEDEPg+/6+U9/3X6iJLDfQ/6GzeIZXh8pQXHTYw99rKBTzN8weGFyG37ZNaAt7gpABwvfyN7+6ni9ZIcOUi+OUbG8pcTIgE4+woWMsfRBO5nyQjUDPy4biT0YlLSE30hU+zfiIIEq8p5ddtv/1hT+KskcIcf5+XwzFdtKum2dK59Z8/FdzamC77Fm0cvlCDBAFkFLsZkOlvDNnrz7Q5laYf5HsfwQMkOFGbXHjtAT7OzHgI0oMGkE34ahzJFLEixDe5W2y0Z9SSiGwB0AsuseYnSHxT9Jf2MwYY42fCuj7AOUhTweLJ1IUz8ZiYheuUVG5rDa02TS+L3jVFb8YHwYNUlhW0GpR6pFP0adZMQy1T2RiuBs80JXtI623O4Ls7YuImk4NySq7PUrB9GP21RMai9C9IMDIC9XSBJqaAYjLnJSDGLR1y6EYjI+N6hunp+zQHxvvkeiAAUrl3Z5o75TFR3hRTNrSgkFFkg2M0icmHNk7X2GlAnYY63/u8fv0vBNZE+gh75co1qm0rjl36XiL9BeGJIhOdvRwV0i2nQcmT9JWt+DVeAyvXkZj1frZBUuloEpW2FcIJxOVf35yTSE5MyPevTg0YHx9pSgezvN5nEfNnS1mFa4iI27m2ieBFTXVQLi6/P2BFXKYLfvecEbu1PE7NbPtdNCumQsIAHWWqVhuqk/N++VyVeFqnzMJkjxwfU6xtH24EG7nspGVUlsJbxkvPAnoPG6eOeOJoSywa4OeuYxV9xGUn1/dm9aWApFqz9MC2t3Bm5uv+3GxRwJAwI93J5T1lMovAxeQ6pZMIkw6TKQLHcLHcJGsctrZYVTP3wk4MtUMR2+Zadf4OEWTlgPhfVImgaZ3SYPIfIzXFaFSetvZUsNlLpu9/jWucEE8T8jRxDBjgja3Gzm6O/kFcms9Q0uIoPSeHYlUvUTV5gLyYw5qT4EeDezqSyuXYPLNRTsEZRv+nvYMKnVSa0ziy6iCAJbWmY53JxZmidsaAPhWaqge9h/6Nq3qgoKBqkOYs5S40sq8zE2MBEGCSqGSIb3DQEJFDEEHgIAMTAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNTE1MTk2NjYxOTAxMIIFAwYJKoZIhvcNAQcGoIIE9DCCBPACAQAwggTpBgkqhkiG9w0BBwEwKAYKKoZIhvcNAQwBBjAaBBQkUNeYJOHMh228vuEXjAzKuZ4A3AICBACAggSwnW085+gra4TmzRNQ6sehEAageejRuTu6mIsb/xjw8LkzMKX+wFnIMxW27luvdf1WO5+Do7VEkjlx+SSnYlw5QV5B/igGd4f+6s1zYs6uqTl1Es1/6icoDVQGVjQ9S6D1API1SWDDG1zXY4jQaBruzqI2FZGD5PCERD7xTUxtNacBurRpRMCrzGghpcwGDoNYxKpknIQUsfmXecq/DDocUO+YvnaOOFpg6AcRfKam9WIVbbZCj8fzUNAc0hmqAGdH6sXOlJ2W/e23W06mhM7/3iX+KWOdERWYBQI7OFVWkziUbdVfr8vZASpaprf2GVQfh0A3jsDJ8z+DlRMsnkwbyl7xlmotXwx2CPv48CJEZOigxiV6EoSfl5HFTCFL5Iswmweas3HatepO4jdhIA71URuff8f4kF0lGxI6kQ2rlIfnnRRuvj/aXdJPUyVEVcC8mknOrpmCttXii23g+GyC5K3FYzNTFSgMXz9Ofku1+B1lXD6bmA7o5butxthoSK0C26a/tRxLaur9pOTGyJ1XYtHWGKSzrI/LnmHOpJLicDRN3o8hvdiCPXpJpQGa19ISviEQHuk1GktzPe2iwv2k7EeuPSaM65aZqDfigR9bdlWPhioFo0rAte/XIu/v4nC3vBz0W0b6VWF9aYRCgVMSceKjnrmk2vfepatIHqdjlFZVy06wPBZ0aV/9OhpKj9Zgz/+lJ9yrra0f//2RcwJ4b8lykmr4AEQMBxgNeVAOPmS9cTB2rzcFmraAFPJnqhqjhl+N5ArhSqfjxBidV9GjEjJl2nLL50n4xOeZyeCYXYII54N3oDebxhvOj+M4A0tjPcbwN1EWItCvfyF496GAUkxJ9559HSWP4W9uKF5VGRGoDNrBh7UVAiT3XMr109jgVt7s/hJ3ZK1qHFWIyseVZr67J4EIJyxLiPhg1l+iWJOME65zlcDdHTWx/jjK7U7K/m69selYpsIunZMh4nmiM7kbJ1uYeXjS+utC9CruBgu6IauHIMPXhbxSYn8eNm0OeWKiuS7/e7thrVdNXc7n3HoWOjSooXCDz+IgIIoGCWngzgp2P+L0wmfZUkf6fllLw1J5sigNOn2FB9dI5IfHtzz4Em9sX6OhsqQwkRiGDUs9eFWtKGqNayK2p72qHRJCsLpME7qdANrlm6O6rxRtO4iTkltH7JkkzlRnSPFoaDuqswQ3jIBamo/n2lNDKKdhiDg6sEmfDi6GExPIlmhjF9MHShE5oU2KIplx6Z/COFPwCVdW2odmgv42C1sO1DVV7tjAbokTsW8xe4ip2PqqeGcvE2pZyrTVS89Gm/HL9FxDJvxlmWOr22cKjC660wcpVB5jCsv+f99Zs2X1qSwAYmz9+dqJ6NKU/B4HPSSTTFBBv12wT8177HfY+8gOGEuSSkxDNjC4MYqnDD1FV99ZCPqncLer16t4iZ+17B7Ha3ci3RHeEX8liZ6/EFAxyx792VmbYENkCF6tQ6PCNV7gShNUz0h0gBhAxw0FQQekvz/Pugx642UKphs94Jkc+JFIma4vylPFY5TQXyI3BdakZ75iE7V2h/Ez+oVPjLyrSrG7TXy7Bf3yOcuKwT9d+KRMMD0wITAJBgUrDgMCGgUABBQraxyI9BUwHXgSwXmWjdEnGtSLbgQUbrG79D7Jvs6K9Ubd1J33uQBq3UcCAgQA"; - KeyStore keyStore = - new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret); - assertNotNull(keyStore); - } + @Test + void givenValidP12CreateAndReturnKeystoreFromP12ShouldReturnKeyStore() { + String secret = "iI8rR5lL6fF0wW1yY6zZ1lL"; + String certificate = + "MIIKuwIBAzCCCnUGCSqGSIb3DQEHAaCCCmYEggpiMIIKXjCCBVMGCSqGSIb3DQEHAaCCBUQEggVAMIIFPDCCBTgGCyqGSIb3DQEMCgECoIIE7zCCBOswHQYKKoZIhvcNAQwBAzAPBAjxu58B9xEeVQIDAgAABIIEyFBNhrdpoAXZsll57Lai8Wd7tGQAE4JQ3I6W/E/WqsKP5BSrSPkfu0KYMM8POMdPzVbX2jLoAfyOizru9Ts0rJluZNVB1peYBLZOOOVyxhw67JI7aXW0BPnIoBJeONbIIa2ZG9XeaCniXOpGKgS9nygDJnDy+gahheo6zqf5+DOGcH7yryJwhX3RFQ5j4vdRL2abBAugQ44TrGUtLm8keKUbccJKG7DK5EuT6jveGfw7/9Yq45+QIS1T/CiL8jPpmNGicLm94JFzJfrp5ilwFBGCnGlwFvGVlODQgW1la5D4hdFO7OpEFsOZPw/HEDZJQB3C/teigE9aqz3J1IzzTSuPHTUbYZZpeaW80H04M8Jih+zNJ+mDoGUL8CiaAiPj/uC1xijpcJENuOXHuNiBnozuSj3P4Q1k6gJ3iOKHKmnxgDXfguu+eFaHv1vpGz/PLWQ1ApRX2Woncq8E5BB1+XQzufwaoclY6rD6FqB2bMdfncXew+jQXaWgrDbU6P2vBe7vffwbVO3W8sVwOAjHLlvjb00DsveTbjgyreT5id6FwPU7zmOmYpKWhHMrpIGW7e6CjkODXSAYwfzrFNMMlbNVEDEPg+/6+U9/3X6iJLDfQ/6GzeIZXh8pQXHTYw99rKBTzN8weGFyG37ZNaAt7gpABwvfyN7+6ni9ZIcOUi+OUbG8pcTIgE4+woWMsfRBO5nyQjUDPy4biT0YlLSE30hU+zfiIIEq8p5ddtv/1hT+KskcIcf5+XwzFdtKum2dK59Z8/FdzamC77Fm0cvlCDBAFkFLsZkOlvDNnrz7Q5laYf5HsfwQMkOFGbXHjtAT7OzHgI0oMGkE34ahzJFLEixDe5W2y0Z9SSiGwB0AsuseYnSHxT9Jf2MwYY42fCuj7AOUhTweLJ1IUz8ZiYheuUVG5rDa02TS+L3jVFb8YHwYNUlhW0GpR6pFP0adZMQy1T2RiuBs80JXtI623O4Ls7YuImk4NySq7PUrB9GP21RMai9C9IMDIC9XSBJqaAYjLnJSDGLR1y6EYjI+N6hunp+zQHxvvkeiAAUrl3Z5o75TFR3hRTNrSgkFFkg2M0icmHNk7X2GlAnYY63/u8fv0vBNZE+gh75co1qm0rjl36XiL9BeGJIhOdvRwV0i2nQcmT9JWt+DVeAyvXkZj1frZBUuloEpW2FcIJxOVf35yTSE5MyPevTg0YHx9pSgezvN5nEfNnS1mFa4iI27m2ieBFTXVQLi6/P2BFXKYLfvecEbu1PE7NbPtdNCumQsIAHWWqVhuqk/N++VyVeFqnzMJkjxwfU6xtH24EG7nspGVUlsJbxkvPAnoPG6eOeOJoSywa4OeuYxV9xGUn1/dm9aWApFqz9MC2t3Bm5uv+3GxRwJAwI93J5T1lMovAxeQ6pZMIkw6TKQLHcLHcJGsctrZYVTP3wk4MtUMR2+Zadf4OEWTlgPhfVImgaZ3SYPIfIzXFaFSetvZUsNlLpu9/jWucEE8T8jRxDBjgja3Gzm6O/kFcms9Q0uIoPSeHYlUvUTV5gLyYw5qT4EeDezqSyuXYPLNRTsEZRv+nvYMKnVSa0ziy6iCAJbWmY53JxZmidsaAPhWaqge9h/6Nq3qgoKBqkOYs5S40sq8zE2MBEGCSqGSIb3DQEJFDEEHgIAMTAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNTE1MTk2NjYxOTAxMIIFAwYJKoZIhvcNAQcGoIIE9DCCBPACAQAwggTpBgkqhkiG9w0BBwEwKAYKKoZIhvcNAQwBBjAaBBQkUNeYJOHMh228vuEXjAzKuZ4A3AICBACAggSwnW085+gra4TmzRNQ6sehEAageejRuTu6mIsb/xjw8LkzMKX+wFnIMxW27luvdf1WO5+Do7VEkjlx+SSnYlw5QV5B/igGd4f+6s1zYs6uqTl1Es1/6icoDVQGVjQ9S6D1API1SWDDG1zXY4jQaBruzqI2FZGD5PCERD7xTUxtNacBurRpRMCrzGghpcwGDoNYxKpknIQUsfmXecq/DDocUO+YvnaOOFpg6AcRfKam9WIVbbZCj8fzUNAc0hmqAGdH6sXOlJ2W/e23W06mhM7/3iX+KWOdERWYBQI7OFVWkziUbdVfr8vZASpaprf2GVQfh0A3jsDJ8z+DlRMsnkwbyl7xlmotXwx2CPv48CJEZOigxiV6EoSfl5HFTCFL5Iswmweas3HatepO4jdhIA71URuff8f4kF0lGxI6kQ2rlIfnnRRuvj/aXdJPUyVEVcC8mknOrpmCttXii23g+GyC5K3FYzNTFSgMXz9Ofku1+B1lXD6bmA7o5butxthoSK0C26a/tRxLaur9pOTGyJ1XYtHWGKSzrI/LnmHOpJLicDRN3o8hvdiCPXpJpQGa19ISviEQHuk1GktzPe2iwv2k7EeuPSaM65aZqDfigR9bdlWPhioFo0rAte/XIu/v4nC3vBz0W0b6VWF9aYRCgVMSceKjnrmk2vfepatIHqdjlFZVy06wPBZ0aV/9OhpKj9Zgz/+lJ9yrra0f//2RcwJ4b8lykmr4AEQMBxgNeVAOPmS9cTB2rzcFmraAFPJnqhqjhl+N5ArhSqfjxBidV9GjEjJl2nLL50n4xOeZyeCYXYII54N3oDebxhvOj+M4A0tjPcbwN1EWItCvfyF496GAUkxJ9559HSWP4W9uKF5VGRGoDNrBh7UVAiT3XMr109jgVt7s/hJ3ZK1qHFWIyseVZr67J4EIJyxLiPhg1l+iWJOME65zlcDdHTWx/jjK7U7K/m69selYpsIunZMh4nmiM7kbJ1uYeXjS+utC9CruBgu6IauHIMPXhbxSYn8eNm0OeWKiuS7/e7thrVdNXc7n3HoWOjSooXCDz+IgIIoGCWngzgp2P+L0wmfZUkf6fllLw1J5sigNOn2FB9dI5IfHtzz4Em9sX6OhsqQwkRiGDUs9eFWtKGqNayK2p72qHRJCsLpME7qdANrlm6O6rxRtO4iTkltH7JkkzlRnSPFoaDuqswQ3jIBamo/n2lNDKKdhiDg6sEmfDi6GExPIlmhjF9MHShE5oU2KIplx6Z/COFPwCVdW2odmgv42C1sO1DVV7tjAbokTsW8xe4ip2PqqeGcvE2pZyrTVS89Gm/HL9FxDJvxlmWOr22cKjC660wcpVB5jCsv+f99Zs2X1qSwAYmz9+dqJ6NKU/B4HPSSTTFBBv12wT8177HfY+8gOGEuSSkxDNjC4MYqnDD1FV99ZCPqncLer16t4iZ+17B7Ha3ci3RHeEX8liZ6/EFAxyx792VmbYENkCF6tQ6PCNV7gShNUz0h0gBhAxw0FQQekvz/Pugx642UKphs94Jkc+JFIma4vylPFY5TQXyI3BdakZ75iE7V2h/Ez+oVPjLyrSrG7TXy7Bf3yOcuKwT9d+KRMMD0wITAJBgUrDgMCGgUABBQraxyI9BUwHXgSwXmWjdEnGtSLbgQUbrG79D7Jvs6K9Ubd1J33uQBq3UcCAgQA"; + KeyStore keyStore = + new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret); + assertNotNull(keyStore); + } - @Test - void givenInvalidP12CreateAndReturnKeystoreFromP12ShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = "TOFUWURST"; - assertThrows( - CouldNotCreateDynamicKeyStoreException.class, - () -> new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret)); - } + @Test + void givenInvalidP12CreateAndReturnKeystoreFromP12ShouldFail() { + String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + String certificate = "TOFUWURST"; + assertThrows( + CouldNotCreateDynamicKeyStoreException.class, + () -> new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret)); + } - @Test - void givenValidCertificateAndPrivateKeyCreateKeyStoreInClasspathShouldReturnTmpKeystoreName() - throws Throwable { - X509Certificate certificate = - new KeyStoreCreationService() - .createCertificate( - "MIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIxNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNTQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNVBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2NnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9CP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOxZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUhIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDugOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NBUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2aWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvwQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUwDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGucTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dvki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdlwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzFlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJIF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50="); - PrivateKey privateKey = - new KeyStoreCreationService() - .createPrivateKey( - "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql", - "lL7qQ8lL4iI3zZ7qQ4xX1hH"); - String tmpKeystoreName = - new KeyStoreCreationService().createKeyStoreInClasspath(certificate, privateKey); - assertNotNull(tmpKeystoreName); - } + @Test + void givenValidCertificateAndPrivateKeyCreateKeyStoreInClasspathShouldReturnTmpKeystoreName() + throws Throwable { + X509Certificate certificate = + new KeyStoreCreationService() + .createCertificate( + "MIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIxNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNTQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNVBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2NnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9CP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOxZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUhIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDugOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NBUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2aWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvwQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUwDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGucTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dvki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdlwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzFlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJIF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50="); + PrivateKey privateKey = + new KeyStoreCreationService() + .createPrivateKey( + "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql", + "lL7qQ8lL4iI3zZ7qQ4xX1hH"); + String tmpKeystoreName = + new KeyStoreCreationService().createKeyStoreInClasspath(certificate, privateKey); + assertNotNull(tmpKeystoreName); + } - @Test - void givenValidEncryptedPrivateKeyCreatePrivateKeyShouldReturnPrivateKey() throws Throwable { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String encryptedPrivateKey = - "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql"; - PrivateKey privateKey = - new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret); - assertNotNull(privateKey); - } + @Test + void givenValidEncryptedPrivateKeyCreatePrivateKeyShouldReturnPrivateKey() throws Throwable { + String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + String encryptedPrivateKey = + "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql"; + PrivateKey privateKey = + new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret); + assertNotNull(privateKey); + } - @Test - void givenInvalidEncryptedPrivateKeyCreatePrivateKeyShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String encryptedPrivateKey = "TOFUWURST"; - assertThrows( - IllegalArgumentException.class, - () -> new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret)); - } + @Test + void givenInvalidEncryptedPrivateKeyCreatePrivateKeyShouldFail() { + String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + String encryptedPrivateKey = "TOFUWURST"; + assertThrows( + IllegalArgumentException.class, + () -> new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret)); + } - @Test - void givenValidEncryptedCertificateCreateCertificateShouldReturnCertificate() throws Throwable { - String encryptedCertificate = - "MIIEQDCCAyigAwIBAgIPAMGPhggNbxUUEAECACO7MA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNVBAYTAkRFMSMwIQYDVQQKExpTQVAgSW9UIFRydXN0IENvbW11bml0eSBJSTEiMCAGA1UEAxMZU0FQIEludGVybmV0IG9mIFRoaW5ncyBDQTAeFw0xODAyMTQwNzI2MzJaFw0xOTAyMTQwNzI2MzJaMIGNMQswCQYDVQQGEwJERTEcMBoGA1UEChMTU0FQIFRydXN0IENvbW11bml0eTEVMBMGA1UECxMMSW9UIFNlcnZpY2VzMUkwRwYDVQQDFEBjbGllbnRpZDo0MjIzN2NkZC0wYjFkLTQyNzItODNlYS04MWVmNDgyYjI3ODd8aW5zdGFuY2VpZDpka2UtZGV2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbzz3hdS8sMNyZt/uGzMJeKgY+o9d7RekimomsrF5ve4IPa4RPSz9I6V0BexXbrUrPwZcZT9OAJyW8Ig3U0dy/1bcLrhtI+auLRXg6xS0I23+PCsNxKDGkf3F6IlPd+qG6XriverOQ1XFFiN1rTHmU6fL6bSkDNp/hJCBU9NwieUqoXl1UptAf5qSHyUFlaiWtAuJvCxw0V1kgJthljVhw8kRvdsNpD8lkNqw11/F5LzpJy0klSgGjGvCEDkh4FSGqSwtXK5UqQXy8d9IzYowEC3Kpl2Og64A/h6x+So5sJIVLKLXa1wIKV1KtzRnWZ6YFpuIosbVL2ahJko8O+nUQIDAQABo4HSMIHPMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHBzOi8vdGNzLm15c2FwLmNvbS9jcmwvVHJ1c3RDb21tdW5pdHlJSS9TQVBJb1RDQS5jcmwwDAYDVR0TAQH/BAIwADAlBgNVHRIEHjAchhpodHRwOi8vc2VydmljZS5zYXAuY29tL1RDUzAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFFc7w7CmcPbfin0wwL7jd8Sf2nMfMB8GA1UdIwQYMBaAFJW3s/VY3tW0s1hG4PKmyXhOvS11MA0GCSqGSIb3DQEBCwUAA4IBAQDuqP+HMbENyjsmj7Bbw/TIezUrUylG9SbsknxNhEyBDRRweM4vpRpjYXYQEhzg+uuPCT94pXxAJgCRs6WHsYWYnRiXjtUZ8XRKbbOIH+5ptghMspvi52LEwZDQtjkuhH0t/IzrCIz4+24xcgJbRiAqUjx021PWxlB/gkXOOTaDkc/AZmfabWZCr+K6iec4ITxf0+PwS36fK1fV+bz0CoEt3VhE+cv/X0FdansB9qCDccgCtMLKDBjGkF/wS/zCgv3PFVhxB4WUhYlE831aLUbTTLhaC7l7WX79bAAY6Fy+8d7cnaol32UnnxVMREE+2XN9m5TGCX5n6VPPYgyNMlOt"; - X509Certificate certificate = - new KeyStoreCreationService().createCertificate(encryptedCertificate); - assertNotNull(certificate); - } + @Test + void givenValidEncryptedCertificateCreateCertificateShouldReturnCertificate() throws Throwable { + String encryptedCertificate = + "MIIEQDCCAyigAwIBAgIPAMGPhggNbxUUEAECACO7MA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNVBAYTAkRFMSMwIQYDVQQKExpTQVAgSW9UIFRydXN0IENvbW11bml0eSBJSTEiMCAGA1UEAxMZU0FQIEludGVybmV0IG9mIFRoaW5ncyBDQTAeFw0xODAyMTQwNzI2MzJaFw0xOTAyMTQwNzI2MzJaMIGNMQswCQYDVQQGEwJERTEcMBoGA1UEChMTU0FQIFRydXN0IENvbW11bml0eTEVMBMGA1UECxMMSW9UIFNlcnZpY2VzMUkwRwYDVQQDFEBjbGllbnRpZDo0MjIzN2NkZC0wYjFkLTQyNzItODNlYS04MWVmNDgyYjI3ODd8aW5zdGFuY2VpZDpka2UtZGV2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbzz3hdS8sMNyZt/uGzMJeKgY+o9d7RekimomsrF5ve4IPa4RPSz9I6V0BexXbrUrPwZcZT9OAJyW8Ig3U0dy/1bcLrhtI+auLRXg6xS0I23+PCsNxKDGkf3F6IlPd+qG6XriverOQ1XFFiN1rTHmU6fL6bSkDNp/hJCBU9NwieUqoXl1UptAf5qSHyUFlaiWtAuJvCxw0V1kgJthljVhw8kRvdsNpD8lkNqw11/F5LzpJy0klSgGjGvCEDkh4FSGqSwtXK5UqQXy8d9IzYowEC3Kpl2Og64A/h6x+So5sJIVLKLXa1wIKV1KtzRnWZ6YFpuIosbVL2ahJko8O+nUQIDAQABo4HSMIHPMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHBzOi8vdGNzLm15c2FwLmNvbS9jcmwvVHJ1c3RDb21tdW5pdHlJSS9TQVBJb1RDQS5jcmwwDAYDVR0TAQH/BAIwADAlBgNVHRIEHjAchhpodHRwOi8vc2VydmljZS5zYXAuY29tL1RDUzAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFFc7w7CmcPbfin0wwL7jd8Sf2nMfMB8GA1UdIwQYMBaAFJW3s/VY3tW0s1hG4PKmyXhOvS11MA0GCSqGSIb3DQEBCwUAA4IBAQDuqP+HMbENyjsmj7Bbw/TIezUrUylG9SbsknxNhEyBDRRweM4vpRpjYXYQEhzg+uuPCT94pXxAJgCRs6WHsYWYnRiXjtUZ8XRKbbOIH+5ptghMspvi52LEwZDQtjkuhH0t/IzrCIz4+24xcgJbRiAqUjx021PWxlB/gkXOOTaDkc/AZmfabWZCr+K6iec4ITxf0+PwS36fK1fV+bz0CoEt3VhE+cv/X0FdansB9qCDccgCtMLKDBjGkF/wS/zCgv3PFVhxB4WUhYlE831aLUbTTLhaC7l7WX79bAAY6Fy+8d7cnaol32UnnxVMREE+2XN9m5TGCX5n6VPPYgyNMlOt"; + X509Certificate certificate = + new KeyStoreCreationService().createCertificate(encryptedCertificate); + assertNotNull(certificate); + } - @Test - void givenInvalidEncryptedCertificateCreateCertificateShouldFail() { - String encryptedCertificate = "TOFUWURST"; - assertThrows( - IllegalArgumentException.class, - () -> new KeyStoreCreationService().createCertificate(encryptedCertificate)); - } + @Test + void givenInvalidEncryptedCertificateCreateCertificateShouldFail() { + String encryptedCertificate = "TOFUWURST"; + assertThrows( + IllegalArgumentException.class, + () -> new KeyStoreCreationService().createCertificate(encryptedCertificate)); + } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java index f755ebea..628b398b 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java @@ -6,62 +6,62 @@ class SequenceNumberServiceTest { - @Test - void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); - onboardingResponse.setSensorAlternateId("this-is-my-id"); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - } + @Test + void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1() { + OnboardingResponse onboardingResponse = new OnboardingResponse(); + onboardingResponse.setSensorAlternateId("this-is-my-id"); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); + } - @Test - void - givenOnboardingResponseWhenGeneratingSequenceNumberForTwoTimesInARowThenTheResultShouldBe1And2() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); - onboardingResponse.setSensorAlternateId("this-is-another-id"); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - Assertions.assertEquals( - 2, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - } + @Test + void + givenOnboardingResponseWhenGeneratingSequenceNumberForTwoTimesInARowThenTheResultShouldBe1And2() { + OnboardingResponse onboardingResponse = new OnboardingResponse(); + onboardingResponse.setSensorAlternateId("this-is-another-id"); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); + Assertions.assertEquals( + 2, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); + } - @Test - void - givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1ForBoth() { - OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); - firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id"); - OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); - secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id"); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); - } + @Test + void + givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1ForBoth() { + OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); + firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id"); + OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); + secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id"); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); + } - @Test - void - givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForMultipleTimesThenTheResultShouldBeMatchingTheTimesTheMethodWasCalled() { - OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); - firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id-for-multiple-calls"); - OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); - secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id-multiple-calls"); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - Assertions.assertEquals( - 2, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - Assertions.assertEquals( - 3, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - Assertions.assertEquals( - 4, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + @Test + void + givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForMultipleTimesThenTheResultShouldBeMatchingTheTimesTheMethodWasCalled() { + OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); + firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id-for-multiple-calls"); + OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); + secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id-multiple-calls"); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + Assertions.assertEquals( + 2, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + Assertions.assertEquals( + 3, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + Assertions.assertEquals( + 4, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - Assertions.assertEquals( - 1, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); - Assertions.assertEquals( - 2, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); - Assertions.assertEquals( - 3, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); + Assertions.assertEquals( + 1, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); + Assertions.assertEquals( + 2, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); + Assertions.assertEquals( + 3, SequenceNumberService.generateSequenceNumberForEndpoint(secondOnboardingResponse)); - Assertions.assertEquals( - 5, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); - } + Assertions.assertEquals( + 5, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); + } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java index 2b76e57d..3e7b6969 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java @@ -1,66 +1,66 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import static org.junit.jupiter.api.Assertions.assertThrows; - import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertThrows; + class DecodeMessageServiceImplTest { - private static final String ENCODED_MESSAGE = - "IwoBMRABGhBka2U6Y2FwYWJpbGl0aWVzQgoIsdGL1AUQwIQ9TgpMCjt" - + "hZ3Jpcm91dGVyLnJlcXVlc3QucGF5bG9hZC5lbmRwb2ludC5DYXBhYmlsaXR5U3BlY2lm" - + "aWNhdGlvbhINc2VjcmV0TWVzc2FnZQ=="; + private static final String ENCODED_MESSAGE = + "IwoBMRABGhBka2U6Y2FwYWJpbGl0aWVzQgoIsdGL1AUQwIQ9TgpMCjt" + + "hZ3Jpcm91dGVyLnJlcXVlc3QucGF5bG9hZC5lbmRwb2ludC5DYXBhYmlsaXR5U3BlY2lm" + + "aWNhdGlvbhINc2VjcmV0TWVzc2FnZQ=="; - @Test - @SuppressWarnings("ConstantConditions") - void givenNullDecodeShouldNotFail() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - String message = null; - Assertions.assertThrows( - IllegalArgumentException.class, () -> decodeMessageService.decode(message)); - } + @Test + @SuppressWarnings("ConstantConditions") + void givenNullDecodeShouldNotFail() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + String message = null; + Assertions.assertThrows( + IllegalArgumentException.class, () -> decodeMessageService.decode(message)); + } - @Test - void givenEmptyMessageDecodeShouldNotFail() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - Assertions.assertThrows(IllegalArgumentException.class, () -> decodeMessageService.decode("")); - } + @Test + void givenEmptyMessageDecodeShouldNotFail() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + Assertions.assertThrows(IllegalArgumentException.class, () -> decodeMessageService.decode("")); + } - @Test - void givenWhitespaceMessageDecodeShouldNotFail() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - Assertions.assertThrows( - IllegalArgumentException.class, () -> decodeMessageService.decode(" ")); - } + @Test + void givenWhitespaceMessageDecodeShouldNotFail() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + Assertions.assertThrows( + IllegalArgumentException.class, () -> decodeMessageService.decode(" ")); + } - @Test - void givenValidEncodedPasswordDecodeShouldNotFail() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodedMessage = - decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); - Assertions.assertEquals( - decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), - "secretMessage"); - } + @Test + void givenValidEncodedPasswordDecodeShouldNotFail() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodedMessage = + decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); + Assertions.assertEquals( + decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), + "secretMessage"); + } - @Test - void givenWrongEncodedPasswordDecodeShouldThrowException() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - String wrongEncodedMessage = "Wrong Message"; - assertThrows( - IllegalArgumentException.class, () -> decodeMessageService.decode(wrongEncodedMessage)); - } + @Test + void givenWrongEncodedPasswordDecodeShouldThrowException() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + String wrongEncodedMessage = "Wrong Message"; + assertThrows( + IllegalArgumentException.class, () -> decodeMessageService.decode(wrongEncodedMessage)); + } - @Test - void givenNullEnvironmentDecodeShouldNotFail() { - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodedMessage = - decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); - Assertions.assertEquals( - decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), - "secretMessage"); - } + @Test + void givenNullEnvironmentDecodeShouldNotFail() { + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodedMessage = + decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); + Assertions.assertEquals( + decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), + "secretMessage"); + } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java index f316c7d3..166a63ae 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java @@ -1,79 +1,79 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; - import agrirouter.feed.push.notification.PushNotificationOuterClass; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodePushNotificationService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + class DecodePushNotificationServiceImplTest { - private static final String ENCODED_MESSAGE = - "OAgAEAwiJGY5MzVmZGRkLThkOTItNGZjMi1hMzZmLTBjNzJjZWY3NTE4NyoMCKuxwe" - + "UFEIDrrr0DlgMKkwMKR3R5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIuZmVlZC5wdXNoLm5vdGlmaWNhdGlvbi5QdXNoTm90aW" - + "ZpY2F0aW9uEscCCsQCCp4BCiRiMzhlNWRiYy1iZGJmLTQ5ZGEtOGRjOS1jOGRiMDJhM2VjZjYSCWRrZTpvdGhlchoAKJ0BMgoIrrHB5Q" - + "UQwIQ9OAFCJGRmOTdhYzgwLTA0ZWYtNDUzYS05OTE4LTk1OTMzNjUyOTI2MEoMCKuxweUFEID0qL4DUiQyNDhhOWJjZi0yYjIyLTQ0Nz" - + "YtYTIwMi0wMDgyMTgxNWU5M2YSoAESnQFbcnE1Ml9naXZlblNpbmdsZVB1c2hOb3RpZmljYXRpb25SZWNlaXZlcl9QdXNoTm90aWZpY2" - + "F0aW9uX1Nob3VsZEJlRGVsaXZlcmVkVG9UaGVPdXRib3hdIE1FU1NBR0UgQ09OVEVOVCBGT1IgVEVTVElORywgR0VORVJBVEVEIEFUIF" - + "syMDE5LTA0LTEyVDA5OjIxOjUwLjY0OVpd"; + private static final String ENCODED_MESSAGE = + "OAgAEAwiJGY5MzVmZGRkLThkOTItNGZjMi1hMzZmLTBjNzJjZWY3NTE4NyoMCKuxwe" + + "UFEIDrrr0DlgMKkwMKR3R5cGVzLmFncmlyb3V0ZXIuY29tL2Fncmlyb3V0ZXIuZmVlZC5wdXNoLm5vdGlmaWNhdGlvbi5QdXNoTm90aW" + + "ZpY2F0aW9uEscCCsQCCp4BCiRiMzhlNWRiYy1iZGJmLTQ5ZGEtOGRjOS1jOGRiMDJhM2VjZjYSCWRrZTpvdGhlchoAKJ0BMgoIrrHB5Q" + + "UQwIQ9OAFCJGRmOTdhYzgwLTA0ZWYtNDUzYS05OTE4LTk1OTMzNjUyOTI2MEoMCKuxweUFEID0qL4DUiQyNDhhOWJjZi0yYjIyLTQ0Nz" + + "YtYTIwMi0wMDgyMTgxNWU5M2YSoAESnQFbcnE1Ml9naXZlblNpbmdsZVB1c2hOb3RpZmljYXRpb25SZWNlaXZlcl9QdXNoTm90aWZpY2" + + "F0aW9uX1Nob3VsZEJlRGVsaXZlcmVkVG9UaGVPdXRib3hdIE1FU1NBR0UgQ09OVEVOVCBGT1IgVEVTVElORywgR0VORVJBVEVEIEFUIF" + + "syMDE5LTA0LTEyVDA5OjIxOjUwLjY0OVpd"; - @Test - @SuppressWarnings("ConstantConditions") - void givenNullDecodeShouldNotFail() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - String message = null; - Assertions.assertThrows( - IllegalArgumentException.class, () -> decodePushNotificationService.decode(message)); - } + @Test + @SuppressWarnings("ConstantConditions") + void givenNullDecodeShouldNotFail() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + String message = null; + Assertions.assertThrows( + IllegalArgumentException.class, () -> decodePushNotificationService.decode(message)); + } - @Test - void givenEmptyMessageDecodeShouldNotFail() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - Assertions.assertThrows( - IllegalArgumentException.class, () -> decodePushNotificationService.decode("")); - } + @Test + void givenEmptyMessageDecodeShouldNotFail() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + Assertions.assertThrows( + IllegalArgumentException.class, () -> decodePushNotificationService.decode("")); + } - @Test - void givenWhitespaceMessageDecodeShouldNotFail() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - Assertions.assertThrows( - IllegalArgumentException.class, () -> decodePushNotificationService.decode(" ")); - } + @Test + void givenWhitespaceMessageDecodeShouldNotFail() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + Assertions.assertThrows( + IllegalArgumentException.class, () -> decodePushNotificationService.decode(" ")); + } - @Test - void givenValidEncodedPasswordDecodeShouldNotFail() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - PushNotificationOuterClass.PushNotification pushNotification = - decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); - assertEquals( - "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", - pushNotification.getMessages(0).getContent().getValue().toStringUtf8()); - } + @Test + void givenValidEncodedPasswordDecodeShouldNotFail() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + PushNotificationOuterClass.PushNotification pushNotification = + decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); + assertEquals( + "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", + pushNotification.getMessages(0).getContent().getValue().toStringUtf8()); + } - @Test - void givenWrongEncodedPasswordDecodeShouldThrowException() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - String wrongEncodedMessage = "Wrong Message"; - assertThrows( - IllegalArgumentException.class, - () -> decodePushNotificationService.decode(wrongEncodedMessage)); - } + @Test + void givenWrongEncodedPasswordDecodeShouldThrowException() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + String wrongEncodedMessage = "Wrong Message"; + assertThrows( + IllegalArgumentException.class, + () -> decodePushNotificationService.decode(wrongEncodedMessage)); + } - @Test - void givenNullEnvironmentDecodeShouldNotFail() { - DecodePushNotificationService decodePushNotificationService = - new DecodePushNotificationServiceImpl(); - PushNotificationOuterClass.PushNotification pushNotification = - decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); - assertEquals( - "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", - pushNotification.getMessages(0).getContent().getValue().toStringUtf8()); - } + @Test + void givenNullEnvironmentDecodeShouldNotFail() { + DecodePushNotificationService decodePushNotificationService = + new DecodePushNotificationServiceImpl(); + PushNotificationOuterClass.PushNotification pushNotification = + decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); + assertEquals( + "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", + pushNotification.getMessages(0).getContent().getValue().toStringUtf8()); + } } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java index c5c680ad..c1178e3d 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import static org.junit.jupiter.api.Assertions.assertThrows; - import agrirouter.request.Request; import agrirouter.request.payload.endpoint.Capabilities; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; @@ -14,166 +12,169 @@ import com.dke.data.agrirouter.api.service.parameters.PayloadParameters; import com.dke.data.agrirouter.api.service.parameters.PayloadParametersKt; import com.google.protobuf.ByteString; -import java.util.List; import org.apache.commons.lang3.RandomStringUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertThrows; + class AEncodeEncodeMessageServiceImplTest { - @Test - void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = ByteString.copyFromUtf8(""); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - final List chunks = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); - Assertions.assertEquals(1, chunks.size()); - } - - @Test - void - givenSingleChunkMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - final List chunks = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); - Assertions.assertEquals(1, chunks.size()); - } - - @Test - void - givenSingleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = - ByteString.copyFromUtf8( - RandomStringUtils.randomAlphabetic( - PayloadParametersKt.MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT)); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - final List chunks = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); - Assertions.assertEquals(1, chunks.size()); - } - - @Test - @SuppressWarnings("ConstantConditions") - void - givenMultipleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = ByteString.copyFromUtf8(RandomStringUtils.randomAlphabetic(1024001)); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - final List chunks = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); - Assertions.assertEquals(2, chunks.size()); - - Assertions.assertEquals( - 2, chunks.get(0).getMessageHeaderParameters().getChunkInfo().getTotal()); - Assertions.assertEquals( - 2, chunks.get(1).getMessageHeaderParameters().getChunkInfo().getTotal()); - - Assertions.assertEquals( - 1, chunks.get(0).getMessageHeaderParameters().getChunkInfo().getCurrent()); - Assertions.assertEquals( - 2, chunks.get(1).getMessageHeaderParameters().getChunkInfo().getCurrent()); - - Assertions.assertEquals( - chunks.get(0).getMessageHeaderParameters().getChunkInfo().getContextId(), - chunks.get(1).getMessageHeaderParameters().getChunkInfo().getContextId()); - } - - @Test - void givenValidParametersEncodeAndDecodeBackShouldNotFail() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); - DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); - Assertions.assertEquals( - "secretMessage", - response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); - } - - @Test - void givenWrongPayloadEncodeAndDecodeBackShouldFail() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - ByteString toSendMessage = ByteString.copyFromUtf8("wrong Message"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); - - String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); - DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); - Assertions.assertNotEquals( - "secretMessage", - response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); - } - - @Test - void givenNullPayLoadParametersEncodeShouldThrowException() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - assertThrows( - IllegalArgumentException.class, - () -> encodeMessageService.encode(messageHeaderParameters, null)); - } - - @Test - void givenNullMessageHeaderEncodeShouldThrowException() { - EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - - PayloadParameters payloadParameters = - getPayloadParameters(ByteString.copyFromUtf8("secretMessage")); - assertThrows( - IllegalArgumentException.class, () -> encodeMessageService.encode(null, payloadParameters)); - } - - private MessageHeaderParameters getMessageHeaderParameters() { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - messageHeaderParameters.setApplicationMessageId("1"); - messageHeaderParameters.setApplicationMessageSeqNo(1); - messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - return messageHeaderParameters; - } - - private PayloadParameters getPayloadParameters(ByteString toSendMessage) { - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setTypeUrl( - Capabilities.CapabilitySpecification.getDescriptor().getFullName()); - payloadParameters.setValue(toSendMessage); - return payloadParameters; - } - - private OnboardingResponse fakeOnboardingResponse() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); - onboardingResponse.setSensorAlternateId("THIS_IS_FAKE"); - return onboardingResponse; - } + @Test + void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = ByteString.copyFromUtf8(""); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + final List chunks = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); + Assertions.assertEquals(1, chunks.size()); + } + + @Test + void + givenSingleChunkMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + final List chunks = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); + Assertions.assertEquals(1, chunks.size()); + } + + @Test + void + givenSingleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = + ByteString.copyFromUtf8( + RandomStringUtils.randomAlphabetic( + PayloadParametersKt.MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT)); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + final List chunks = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); + Assertions.assertEquals(1, chunks.size()); + } + + @Test + @SuppressWarnings("ConstantConditions") + void + givenMultipleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = ByteString.copyFromUtf8(RandomStringUtils.randomAlphabetic(1024001)); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + final List chunks = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); + Assertions.assertEquals(2, chunks.size()); + + Assertions.assertEquals( + 2, chunks.get(0).getMessageHeaderParameters().getChunkInfo().getTotal()); + Assertions.assertEquals( + 2, chunks.get(1).getMessageHeaderParameters().getChunkInfo().getTotal()); + + Assertions.assertEquals( + 1, chunks.get(0).getMessageHeaderParameters().getChunkInfo().getCurrent()); + Assertions.assertEquals( + 2, chunks.get(1).getMessageHeaderParameters().getChunkInfo().getCurrent()); + + Assertions.assertEquals( + chunks.get(0).getMessageHeaderParameters().getChunkInfo().getContextId(), + chunks.get(1).getMessageHeaderParameters().getChunkInfo().getContextId()); + } + + @Test + void givenValidParametersEncodeAndDecodeBackShouldNotFail() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); + DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); + Assertions.assertEquals( + "secretMessage", + response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); + } + + @Test + void givenWrongPayloadEncodeAndDecodeBackShouldFail() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + ByteString toSendMessage = ByteString.copyFromUtf8("wrong Message"); + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + + String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); + DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); + Assertions.assertNotEquals( + "secretMessage", + response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); + } + + @Test + void givenNullPayLoadParametersEncodeShouldThrowException() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + assertThrows( + IllegalArgumentException.class, + () -> encodeMessageService.encode(messageHeaderParameters, null)); + } + + @Test + void givenNullMessageHeaderEncodeShouldThrowException() { + EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + + PayloadParameters payloadParameters = + getPayloadParameters(ByteString.copyFromUtf8("secretMessage")); + assertThrows( + IllegalArgumentException.class, () -> encodeMessageService.encode(null, payloadParameters)); + } + + private MessageHeaderParameters getMessageHeaderParameters() { + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setApplicationMessageId("1"); + messageHeaderParameters.setApplicationMessageSeqNo(1); + messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + return messageHeaderParameters; + } + + private PayloadParameters getPayloadParameters(ByteString toSendMessage) { + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setTypeUrl( + Capabilities.CapabilitySpecification.getDescriptor().getFullName()); + payloadParameters.setValue(toSendMessage); + return payloadParameters; + } + + private OnboardingResponse fakeOnboardingResponse() { + OnboardingResponse onboardingResponse = new OnboardingResponse(); + onboardingResponse.setSensorAlternateId("THIS_IS_FAKE"); + return onboardingResponse; + } } 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 d59df475..d97788d5 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 @@ -1,206 +1,217 @@ package com.dke.data.agrirouter.test; -import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.NotImplementedException; -/** Abstract implementation for all integration tests. */ -public abstract class AbstractIntegrationTest { - - /** - * Since there are multiple problems with the stability of the QA env we define dedicated - * constants for message fetching. - */ - protected int MAX_TRIES_BEFORE_FAILURE = 10; - - protected long DEFAULT_INTERVAL = 5000; - - /** - * Wait for the AR to process the messages. Since the QA has some stability problems, we will wait - * up to 30 seconds until the AR has processed the messages. - * - * @throws InterruptedException - - */ - protected void waitForTheAgrirouterToProcessSingleMessage() throws InterruptedException { - Thread.sleep(TimeUnit.SECONDS.toMillis(30)); - } - - /** - * Wait for the AR to process the messages. Since the QA has some stability problems, we will wait - * up to one minute until the AR has processed the messages. - * - * @throws InterruptedException - - */ - protected void waitForTheAgrirouterToProcessMultipleMessages() throws InterruptedException { - Thread.sleep(TimeUnit.SECONDS.toMillis(60)); - } - - /** Communication unit for integration testing. */ - protected Application communicationUnit = - new Application() { - @Override - public String getApplicationId() { - return "434989e2-b4be-4cfd-8e40-f5b89d83458d"; - } - - @Override - public String getCertificationVersionId() { - return "f491d487-f913-4732-8be4-c2eacff21816"; - } - }; - - /** Farming software for integration testing. */ - protected Application farmingSoftware = - new Application() { - - @Override - public String getApplicationId() { - return "905152eb-c526-47a3-b871-aa46d065bb4c"; - } - - @Override - public String getCertificationVersionId() { - return "c8ee0fc3-056c-4d81-8eba-fb4f8208c827"; - } - - @Override - public String getPrivateKey() { - return "-----BEGIN PRIVATE KEY-----\n" - + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDCiSNJmpAbrqF5\n" - + "wOe4kPtavH50OxfjevZjgFhoG/lO+nkJz366655pjKqkwmlxF3GhoXMppAR2K+Dh\n" - + "x3g46dJGA/dG5Ju5TpLnPn3AskHJMcagGE+0Lb29pXUX7ZAdO0MrqIVSh9UZ3j2v\n" - + "+MlF4GOwUkOLPu8IgtKK13vlTu3qYKmFzSss9M3r/t7hZemGyGUq/GVZ8wvYWFTc\n" - + "SdBhOZBzGDpQmRKiL5wcF1HyZfmT8mwbPITzf9Pd+9cDvQT74Ohmu920wwQavS+n\n" - + "hPaOFEW9io9gIsKY3y81Qt4OR+xQ20BdmsRscWwWaSoQpjol0+f3OnTFmLMGvjuw\n" - + "y8keLp+zAgMBAAECggEAGm87MdHEelaBD8PkWQKufTZ28oFjLiCz4XJ70O3YM2C6\n" - + "2NfuzyScWphoSco3PMxkPwPq28IzbwFoZhXOYuF3FteMHwCKnqQsNysZOHmgkd/n\n" - + "LzMOhZvfmCknH7DC8A3xAzo7n6rgjMrT1Bk49HtY4IlVL1NGdQAd7wr4BYFzt/Dc\n" - + "8qXnqXWqWcvgktDQBKEPXc8XAQom6fWFcnx+CALUIx3c4QXaCgdG/EuWeaqqM14j\n" - + "2tM1PwVh3rxiDiwMJSDEQVSxkJtM9M+EEC6oCvBPE4txjaHBjQqsxZJ9po5Va00+\n" - + "Wm6DuPEfkKTxX1J0a/le8SA0JZ+Tlz/VXOySaeMKYQKBgQDpUoPOfpx/FfOIr4Tk\n" - + "311zqcPfY+XiCwq56CTfVYERF8QSDQAMuuW3K53SFLTwjgUEq7BwFshhhcTdRxsh\n" - + "QtKAHg4NpownmGnmQCG681eFTB4IiiGNMlEt6hXh3MQK4QfjDFL/0Y1tXStsM7xB\n" - + "ouwPOZweWmlv7u7kVEDx4kHEUwKBgQDVcYp2pI/SjXtsFF/LRy/0xW/dgRQMortV\n" - + "IPYkYvSO/w2dMV2wX1Ly78wFs4uj4ODDfyeVG2xDjn6svQR67FtHPLyBS+SwNTbY\n" - + "jfzRV1EydHweZgdw9/1yA9zvSPVMvieSgeiR++2YmEEtJYSEoxuBkVSnLAXKFy3/\n" - + "4RCHrhBLIQKBgB6im/XX//pbyn8u9JcMkPun1bUWK8/zPTRNu9GrK2gwI6lvFYuW\n" - + "WqUjT/SOjXdsXlJPrLn689KCOugG9xP17yetSpEWRh7Iz1bRItymKN6ysNrUMDWW\n" - + "3rvVmYvvbboz89InAxrdy+EJM7NgU56WosIZAVum6WMuDyXhvilEWPhLAoGALwnd\n" - + "tPXhSEqr147J6befhvb4Bz3KGFrIpCMme7BfKyBkdK8LcbIgSq+0K9F8xbnqbssY\n" - + "AxFPE7hUjGb/lMN//jwRYwFBvd+MXb8050GyAEeRjvV3UFsmvLjDOOzAOpBxkiUV\n" - + "Bw8ZNpbfTj7FbKGxjyVjHZBjGj1vgsOr6+rdZmECgYEA5gBLtqvsebobo86J4LL7\n" - + "6VaXtgbgShm8GYMfTDPxkmAv4a89Lpec2UQ6EaVt7xHSdk4hMidfZHGambOtd+Zh\n" - + "DTWnVSzxt91ZSEcDc3gTxK3hBltTga+9Y63S+/6vVykWKRtAvqkiEEgLNnNXOFNX\n" - + "lE8ylEsO1whZyzKceV8uaqA=\n" - + "-----END PRIVATE KEY-----\n"; - } - - @Override - public String getPublicKey() { - return "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwokjSZqQG66hecDnuJD7\n" - + "Wrx+dDsX43r2Y4BYaBv5Tvp5Cc9+uuueaYyqpMJpcRdxoaFzKaQEdivg4cd4OOnS\n" - + "RgP3RuSbuU6S5z59wLJByTHGoBhPtC29vaV1F+2QHTtDK6iFUofVGd49r/jJReBj\n" - + "sFJDiz7vCILSitd75U7t6mCphc0rLPTN6/7e4WXphshlKvxlWfML2FhU3EnQYTmQ\n" - + "cxg6UJkSoi+cHBdR8mX5k/JsGzyE83/T3fvXA70E++DoZrvdtMMEGr0vp4T2jhRF\n" - + "vYqPYCLCmN8vNULeDkfsUNtAXZrEbHFsFmkqEKY6JdPn9zp0xZizBr47sMvJHi6f\n" - + "swIDAQAB\n" - + "-----END PUBLIC KEY-----\n"; - } - }; - - /** Farming software for integration testing. */ - protected Application telemetryPlatform = - new Application() { - - @Override - public String getApplicationId() { - return "3c3559c9-7062-4628-a4f7-c9f5aa07265f"; - } - - @Override - public String getCertificationVersionId() { - return "5e488554-d6bb-400c-9632-b3b4b35b07ca"; - } +import java.util.concurrent.TimeUnit; - @Override - public String getPrivateKey() { - return "-----BEGIN PRIVATE KEY-----\n" - + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkAWrcN0FmbWZ+\n" - + "24qE6maNlf46EjH/BOI5f79wFRJAeG6RXrl8KwWdlfeZOlEYRyq+o4AVuP7Mce6R\n" - + "x5PR/AEtn1K4Twr5h1+uG+O5/D2jJ0O/+nFnNcX/WgJfEbriDK9ewV8mEnFgG3n5\n" - + "y6P9RCcu0zMFV9PrKTop419krg2Ij0/to5LLU0DaQXmgvSC7Crx0k9dIhDeZ4jc3\n" - + "rv4SWzOcZT5vPFtA/5G66ZeeTVX+3iJbasWOdatMc7/cGYxUlnzeNSoCAqmyuHzO\n" - + "PKHWcjyVwPXWG64TSzkb+QypynUIZaAy+P8uawD0BivsmFSf0k4pGl8wSHhE2pN8\n" - + "OIIyud/lAgMBAAECgf93UZCtJoYuPumS4aaljOOPntCW7yXwo1zy+D4PDUV6IiRP\n" - + "HttTuvka7UB1+jeFskEm8Uz+gNjfZQRsiwbAftdcmc1Uyizx3ct+oEvNw/YT/T0N\n" - + "LufSbwzd+l4/TGbqjtAH4CeZS1Gw2kyjr8RfPnZDWuSDvqIvNI9cak+8r+SotHEL\n" - + "i1yAZTDvZAqLhbDLbW9Ephxd5QkKfwegybSwxJJcOw+KLPsq0Ibb2YGbkPTL1P6o\n" - + "Ul3/tiyzEMRc2ufyDJgYCAUmvVBjkbHT7hQNkTL8EPAEXfL+vhte8A98aFPnWMhS\n" - + "yiJo3T643fjZ8fzPcv8GWmT+z6IxtlXguC/OmQECgYEAzUbQF5YqJ61n6sQiJ0VQ\n" - + "ZMDDVHzf/oNUCPee4tCVS0ShQ2JURUIbss+lUWbKDfFTXW9mte4VRk+WUh2gQqm6\n" - + "49IdIpRGx6m6/ye2g6EmXRzeSN9GJu/wltS2uQ+8fmOkWiBUFg8bkLWTTxAY1w0n\n" - + "31AYcE8wwLb2FXt6Q2u4OQECgYEAzIfrUejd7GS/eaUx2GFKsXaI3B3CmLQ8TQFu\n" - + "JOh3i2NgcDK5Uwhy5TWozEn4BpwX8UOMciZIGjMr0i5TzpSVca1sv1wyIyWr7+AU\n" - + "2dmxPTXbkQQpEy7GDE1iCMvsi1lC6F+EUwdCKw6H5oa0oU1XMr/JWJSGh8iFRH5v\n" - + "H3ic4uUCgYEAycZYV0boqtWddrtRou5UBqUfmxWgC4nFeYcE64gBp9mO9jBaCzXf\n" - + "ChVnN6tk4u2adxZAjIW47cLfTFoIpF438SYgM1QyeqIQyCueEKa/kfkFWfX1++IP\n" - + "yALQlPmt20JQU7LBVGmHO+fvI2D8Oa6ZybzuOL7ueg+dtiIIXOsuSwECgYEAjqaZ\n" - + "1PYymmamOWSjQESTQPTofYVwLOtAR4Eg3jMY9anpIDfwk94HrJ/hTCKnD40dEdPI\n" - + "B/F1Rni8LorLPwDYvoFzoH/gJC1pHxPN1yeC+6stqZYaQ9vSm8/4+SOppoMqLEI6\n" - + "W2JrnvYyiPEY2IvFroqfFt34eom7kUsRnASWf5UCgYEAxEMOQ0/+hz1APqCGVo3t\n" - + "uePUIdsokCusRpWsxUdwHBGqfDjULqVmDXIJuJekV4YUxzyzktRzVms0pgFbr47L\n" - + "f8IeyJnYFhPn1hgthGlgV7JvFq2TU+EgZYVpVGL6jrw8t78Y4IresceIkz4q/bGV\n" - + "j35jwp22eLOc0FdPo0KgO4s=\n" - + "-----END PRIVATE KEY-----\n"; - } +/** + * Abstract implementation for all integration tests. + */ +public abstract class AbstractIntegrationTest { - @Override - public String getPublicKey() { - return "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApAFq3DdBZm1mftuKhOpm\n" - + "jZX+OhIx/wTiOX+/cBUSQHhukV65fCsFnZX3mTpRGEcqvqOAFbj+zHHukceT0fwB\n" - + "LZ9SuE8K+Ydfrhvjufw9oydDv/pxZzXF/1oCXxG64gyvXsFfJhJxYBt5+cuj/UQn\n" - + "LtMzBVfT6yk6KeNfZK4NiI9P7aOSy1NA2kF5oL0guwq8dJPXSIQ3meI3N67+Elsz\n" - + "nGU+bzxbQP+RuumXnk1V/t4iW2rFjnWrTHO/3BmMVJZ83jUqAgKpsrh8zjyh1nI8\n" - + "lcD11huuE0s5G/kMqcp1CGWgMvj/LmsA9AYr7JhUn9JOKRpfMEh4RNqTfDiCMrnf\n" - + "5QIDAQAB\n" - + "-----END PUBLIC KEY-----\n"; - } - }; + /** + * Since there are multiple problems with the stability of the QA env we define dedicated + * constants for message fetching. + */ + protected int MAX_TRIES_BEFORE_FAILURE = 10; - /** Representation of an application. */ - public abstract static class Application { + protected long DEFAULT_INTERVAL = 5000; /** - * Application for all the test cases. + * Wait for the AR to process the messages. Since the QA has some stability problems, we will wait + * up to 30 seconds until the AR has processed the messages. * - * @return - + * @throws InterruptedException - */ - public abstract String getApplicationId(); + protected void waitForTheAgrirouterToProcessSingleMessage() throws InterruptedException { + Thread.sleep(TimeUnit.SECONDS.toMillis(30)); + } /** - * Version for all the test cases. + * Wait for the AR to process the messages. Since the QA has some stability problems, we will wait + * up to one minute until the AR has processed the messages. * - * @return - + * @throws InterruptedException - */ - public abstract String getCertificationVersionId(); + protected void waitForTheAgrirouterToProcessMultipleMessages() throws InterruptedException { + Thread.sleep(TimeUnit.SECONDS.toMillis(60)); + } /** - * Private key for the application. - * - * @return - + * Communication unit for integration testing. */ - public String getPrivateKey() { - throw new NotImplementedException("This application does not support private keys."); - } + protected Application communicationUnit = + new Application() { + @Override + public String getApplicationId() { + return "434989e2-b4be-4cfd-8e40-f5b89d83458d"; + } + + @Override + public String getCertificationVersionId() { + return "f491d487-f913-4732-8be4-c2eacff21816"; + } + }; /** - * Public key for the application. - * - * @return - + * Farming software for integration testing. */ - public String getPublicKey() { - throw new NotImplementedException("This application does not support private keys."); + protected Application farmingSoftware = + new Application() { + + @Override + public String getApplicationId() { + return "905152eb-c526-47a3-b871-aa46d065bb4c"; + } + + @Override + public String getCertificationVersionId() { + return "c8ee0fc3-056c-4d81-8eba-fb4f8208c827"; + } + + @Override + public String getPrivateKey() { + return "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDCiSNJmpAbrqF5\n" + + "wOe4kPtavH50OxfjevZjgFhoG/lO+nkJz366655pjKqkwmlxF3GhoXMppAR2K+Dh\n" + + "x3g46dJGA/dG5Ju5TpLnPn3AskHJMcagGE+0Lb29pXUX7ZAdO0MrqIVSh9UZ3j2v\n" + + "+MlF4GOwUkOLPu8IgtKK13vlTu3qYKmFzSss9M3r/t7hZemGyGUq/GVZ8wvYWFTc\n" + + "SdBhOZBzGDpQmRKiL5wcF1HyZfmT8mwbPITzf9Pd+9cDvQT74Ohmu920wwQavS+n\n" + + "hPaOFEW9io9gIsKY3y81Qt4OR+xQ20BdmsRscWwWaSoQpjol0+f3OnTFmLMGvjuw\n" + + "y8keLp+zAgMBAAECggEAGm87MdHEelaBD8PkWQKufTZ28oFjLiCz4XJ70O3YM2C6\n" + + "2NfuzyScWphoSco3PMxkPwPq28IzbwFoZhXOYuF3FteMHwCKnqQsNysZOHmgkd/n\n" + + "LzMOhZvfmCknH7DC8A3xAzo7n6rgjMrT1Bk49HtY4IlVL1NGdQAd7wr4BYFzt/Dc\n" + + "8qXnqXWqWcvgktDQBKEPXc8XAQom6fWFcnx+CALUIx3c4QXaCgdG/EuWeaqqM14j\n" + + "2tM1PwVh3rxiDiwMJSDEQVSxkJtM9M+EEC6oCvBPE4txjaHBjQqsxZJ9po5Va00+\n" + + "Wm6DuPEfkKTxX1J0a/le8SA0JZ+Tlz/VXOySaeMKYQKBgQDpUoPOfpx/FfOIr4Tk\n" + + "311zqcPfY+XiCwq56CTfVYERF8QSDQAMuuW3K53SFLTwjgUEq7BwFshhhcTdRxsh\n" + + "QtKAHg4NpownmGnmQCG681eFTB4IiiGNMlEt6hXh3MQK4QfjDFL/0Y1tXStsM7xB\n" + + "ouwPOZweWmlv7u7kVEDx4kHEUwKBgQDVcYp2pI/SjXtsFF/LRy/0xW/dgRQMortV\n" + + "IPYkYvSO/w2dMV2wX1Ly78wFs4uj4ODDfyeVG2xDjn6svQR67FtHPLyBS+SwNTbY\n" + + "jfzRV1EydHweZgdw9/1yA9zvSPVMvieSgeiR++2YmEEtJYSEoxuBkVSnLAXKFy3/\n" + + "4RCHrhBLIQKBgB6im/XX//pbyn8u9JcMkPun1bUWK8/zPTRNu9GrK2gwI6lvFYuW\n" + + "WqUjT/SOjXdsXlJPrLn689KCOugG9xP17yetSpEWRh7Iz1bRItymKN6ysNrUMDWW\n" + + "3rvVmYvvbboz89InAxrdy+EJM7NgU56WosIZAVum6WMuDyXhvilEWPhLAoGALwnd\n" + + "tPXhSEqr147J6befhvb4Bz3KGFrIpCMme7BfKyBkdK8LcbIgSq+0K9F8xbnqbssY\n" + + "AxFPE7hUjGb/lMN//jwRYwFBvd+MXb8050GyAEeRjvV3UFsmvLjDOOzAOpBxkiUV\n" + + "Bw8ZNpbfTj7FbKGxjyVjHZBjGj1vgsOr6+rdZmECgYEA5gBLtqvsebobo86J4LL7\n" + + "6VaXtgbgShm8GYMfTDPxkmAv4a89Lpec2UQ6EaVt7xHSdk4hMidfZHGambOtd+Zh\n" + + "DTWnVSzxt91ZSEcDc3gTxK3hBltTga+9Y63S+/6vVykWKRtAvqkiEEgLNnNXOFNX\n" + + "lE8ylEsO1whZyzKceV8uaqA=\n" + + "-----END PRIVATE KEY-----\n"; + } + + @Override + public String getPublicKey() { + return "-----BEGIN PUBLIC KEY-----\n" + + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwokjSZqQG66hecDnuJD7\n" + + "Wrx+dDsX43r2Y4BYaBv5Tvp5Cc9+uuueaYyqpMJpcRdxoaFzKaQEdivg4cd4OOnS\n" + + "RgP3RuSbuU6S5z59wLJByTHGoBhPtC29vaV1F+2QHTtDK6iFUofVGd49r/jJReBj\n" + + "sFJDiz7vCILSitd75U7t6mCphc0rLPTN6/7e4WXphshlKvxlWfML2FhU3EnQYTmQ\n" + + "cxg6UJkSoi+cHBdR8mX5k/JsGzyE83/T3fvXA70E++DoZrvdtMMEGr0vp4T2jhRF\n" + + "vYqPYCLCmN8vNULeDkfsUNtAXZrEbHFsFmkqEKY6JdPn9zp0xZizBr47sMvJHi6f\n" + + "swIDAQAB\n" + + "-----END PUBLIC KEY-----\n"; + } + }; + + /** + * Farming software for integration testing. + */ + protected Application telemetryPlatform = + new Application() { + + @Override + public String getApplicationId() { + return "3c3559c9-7062-4628-a4f7-c9f5aa07265f"; + } + + @Override + public String getCertificationVersionId() { + return "5e488554-d6bb-400c-9632-b3b4b35b07ca"; + } + + @Override + public String getPrivateKey() { + return "-----BEGIN PRIVATE KEY-----\n" + + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkAWrcN0FmbWZ+\n" + + "24qE6maNlf46EjH/BOI5f79wFRJAeG6RXrl8KwWdlfeZOlEYRyq+o4AVuP7Mce6R\n" + + "x5PR/AEtn1K4Twr5h1+uG+O5/D2jJ0O/+nFnNcX/WgJfEbriDK9ewV8mEnFgG3n5\n" + + "y6P9RCcu0zMFV9PrKTop419krg2Ij0/to5LLU0DaQXmgvSC7Crx0k9dIhDeZ4jc3\n" + + "rv4SWzOcZT5vPFtA/5G66ZeeTVX+3iJbasWOdatMc7/cGYxUlnzeNSoCAqmyuHzO\n" + + "PKHWcjyVwPXWG64TSzkb+QypynUIZaAy+P8uawD0BivsmFSf0k4pGl8wSHhE2pN8\n" + + "OIIyud/lAgMBAAECgf93UZCtJoYuPumS4aaljOOPntCW7yXwo1zy+D4PDUV6IiRP\n" + + "HttTuvka7UB1+jeFskEm8Uz+gNjfZQRsiwbAftdcmc1Uyizx3ct+oEvNw/YT/T0N\n" + + "LufSbwzd+l4/TGbqjtAH4CeZS1Gw2kyjr8RfPnZDWuSDvqIvNI9cak+8r+SotHEL\n" + + "i1yAZTDvZAqLhbDLbW9Ephxd5QkKfwegybSwxJJcOw+KLPsq0Ibb2YGbkPTL1P6o\n" + + "Ul3/tiyzEMRc2ufyDJgYCAUmvVBjkbHT7hQNkTL8EPAEXfL+vhte8A98aFPnWMhS\n" + + "yiJo3T643fjZ8fzPcv8GWmT+z6IxtlXguC/OmQECgYEAzUbQF5YqJ61n6sQiJ0VQ\n" + + "ZMDDVHzf/oNUCPee4tCVS0ShQ2JURUIbss+lUWbKDfFTXW9mte4VRk+WUh2gQqm6\n" + + "49IdIpRGx6m6/ye2g6EmXRzeSN9GJu/wltS2uQ+8fmOkWiBUFg8bkLWTTxAY1w0n\n" + + "31AYcE8wwLb2FXt6Q2u4OQECgYEAzIfrUejd7GS/eaUx2GFKsXaI3B3CmLQ8TQFu\n" + + "JOh3i2NgcDK5Uwhy5TWozEn4BpwX8UOMciZIGjMr0i5TzpSVca1sv1wyIyWr7+AU\n" + + "2dmxPTXbkQQpEy7GDE1iCMvsi1lC6F+EUwdCKw6H5oa0oU1XMr/JWJSGh8iFRH5v\n" + + "H3ic4uUCgYEAycZYV0boqtWddrtRou5UBqUfmxWgC4nFeYcE64gBp9mO9jBaCzXf\n" + + "ChVnN6tk4u2adxZAjIW47cLfTFoIpF438SYgM1QyeqIQyCueEKa/kfkFWfX1++IP\n" + + "yALQlPmt20JQU7LBVGmHO+fvI2D8Oa6ZybzuOL7ueg+dtiIIXOsuSwECgYEAjqaZ\n" + + "1PYymmamOWSjQESTQPTofYVwLOtAR4Eg3jMY9anpIDfwk94HrJ/hTCKnD40dEdPI\n" + + "B/F1Rni8LorLPwDYvoFzoH/gJC1pHxPN1yeC+6stqZYaQ9vSm8/4+SOppoMqLEI6\n" + + "W2JrnvYyiPEY2IvFroqfFt34eom7kUsRnASWf5UCgYEAxEMOQ0/+hz1APqCGVo3t\n" + + "uePUIdsokCusRpWsxUdwHBGqfDjULqVmDXIJuJekV4YUxzyzktRzVms0pgFbr47L\n" + + "f8IeyJnYFhPn1hgthGlgV7JvFq2TU+EgZYVpVGL6jrw8t78Y4IresceIkz4q/bGV\n" + + "j35jwp22eLOc0FdPo0KgO4s=\n" + + "-----END PRIVATE KEY-----\n"; + } + + @Override + public String getPublicKey() { + return "-----BEGIN PUBLIC KEY-----\n" + + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApAFq3DdBZm1mftuKhOpm\n" + + "jZX+OhIx/wTiOX+/cBUSQHhukV65fCsFnZX3mTpRGEcqvqOAFbj+zHHukceT0fwB\n" + + "LZ9SuE8K+Ydfrhvjufw9oydDv/pxZzXF/1oCXxG64gyvXsFfJhJxYBt5+cuj/UQn\n" + + "LtMzBVfT6yk6KeNfZK4NiI9P7aOSy1NA2kF5oL0guwq8dJPXSIQ3meI3N67+Elsz\n" + + "nGU+bzxbQP+RuumXnk1V/t4iW2rFjnWrTHO/3BmMVJZ83jUqAgKpsrh8zjyh1nI8\n" + + "lcD11huuE0s5G/kMqcp1CGWgMvj/LmsA9AYr7JhUn9JOKRpfMEh4RNqTfDiCMrnf\n" + + "5QIDAQAB\n" + + "-----END PUBLIC KEY-----\n"; + } + }; + + /** + * Representation of an application. + */ + public abstract static class Application { + + /** + * Application for all the test cases. + * + * @return - + */ + public abstract String getApplicationId(); + + /** + * Version for all the test cases. + * + * @return - + */ + public abstract String getCertificationVersionId(); + + /** + * Private key for the application. + * + * @return - + */ + public String getPrivateKey() { + throw new NotImplementedException("This application does not support private keys."); + } + + /** + * Public key for the application. + * + * @return - + */ + public String getPublicKey() { + throw new NotImplementedException("This application does not support private keys."); + } } - } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java index fce0b752..e3b551a5 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java @@ -3,27 +3,29 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; -/** Custom assertion adapter. */ +/** + * Custom assertion adapter. + */ public class Assertions extends org.junit.jupiter.api.Assertions { - /** - * Assert that the actual value matches any from the given expected values. - * - * @param expectedValues - - * @param actual - - * @param - - */ - public static void assertMatchesAny(List expectedValues, T actual) { - AtomicBoolean matches = new AtomicBoolean(false); - assertNotNull(expectedValues); - assertNotNull(actual); - expectedValues.forEach( - (expected) -> { - assertNotNull(expected); - if (expected.equals(actual)) { - matches.set(true); - } - }); - assertTrue(matches.get(), "There should be at least a single match in the expected values."); - } + /** + * Assert that the actual value matches any from the given expected values. + * + * @param expectedValues - + * @param actual - + * @param - + */ + public static void assertMatchesAny(List expectedValues, T actual) { + AtomicBoolean matches = new AtomicBoolean(false); + assertNotNull(expectedValues); + assertNotNull(actual); + expectedValues.forEach( + (expected) -> { + assertNotNull(expected); + if (expected.equals(actual)) { + matches.set(true); + } + }); + assertTrue(matches.get(), "There should be at least a single match in the expected values."); + } } 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 7a12d3db..faa0216d 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 @@ -2,63 +2,68 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.google.gson.Gson; + import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -/** Provider for onboarding responses. */ +/** + * Provider for onboarding responses. + */ public class OnboardingResponseRepository { - private static final String FOLDER = "./onboarding-responses/"; - private static final String FILE_SUFFIX = ".json"; + private static final String FOLDER = "./onboarding-responses/"; + private static final String FILE_SUFFIX = ".json"; - /** - * Read the onboarding response from the file system. - * - * @param identifier - - * @return - - * @throws IOException - - */ - public static OnboardingResponse read(Identifier identifier) throws IOException { - Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); - final StringBuilder fileContent = new StringBuilder(); - Files.readAllLines(path).forEach(fileContent::append); - return new Gson().fromJson(fileContent.toString(), OnboardingResponse.class); - } + /** + * Read the onboarding response from the file system. + * + * @param identifier - + * @return - + * @throws IOException - + */ + public static OnboardingResponse read(Identifier identifier) throws IOException { + Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); + final StringBuilder fileContent = new StringBuilder(); + Files.readAllLines(path).forEach(fileContent::append); + return new Gson().fromJson(fileContent.toString(), OnboardingResponse.class); + } - /** - * Save the onboarding response to the file system. - * - * @param identifier - - * @param onboardingResponse - - * @throws IOException - - */ - public static void save(Identifier identifier, OnboardingResponse onboardingResponse) - throws IOException { - String fileContent = new Gson().toJson(onboardingResponse); - Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); - Files.write(path, fileContent.getBytes()); - } + /** + * Save the onboarding response to the file system. + * + * @param identifier - + * @param onboardingResponse - + * @throws IOException - + */ + public static void save(Identifier identifier, OnboardingResponse onboardingResponse) + throws IOException { + String fileContent = new Gson().toJson(onboardingResponse); + Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); + Files.write(path, fileContent.getBytes()); + } - /** Identifier for the onboarding responses. */ - 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"); + /** + * Identifier for the onboarding responses. + */ + 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"); - private final String fileName; + private final String fileName; - Identifier(String fileName) { - this.fileName = fileName; - } + Identifier(String fileName) { + this.fileName = fileName; + } - public String getFileName() { - return fileName; + public String getFileName() { + return 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 1f2366cc..e9b2264d 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 @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.test.fixture; -import static org.junit.jupiter.api.Assertions.assertNotNull; - import agrirouter.request.payload.endpoint.Capabilities; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; @@ -18,62 +16,69 @@ import com.dke.data.agrirouter.impl.onboard.OnboardingServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.OnboardingResponseRepository; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + import java.io.IOException; import java.util.Collections; import java.util.UUID; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; -/** Class to onboard endpoints for different reasons. */ +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * Class to onboard endpoints for different reasons. + */ @SuppressWarnings("ALL") class CommunicationUnitFixture extends AbstractIntegrationTest { - /** - * 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 IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - OnboardingParameters onboardingParameters = new OnboardingParameters(); - onboardingParameters.setRegistrationCode("f50319dc13"); - onboardingParameters.setApplicationId(communicationUnit.getApplicationId()); - onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.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.COMMUNICATION_UNIT, onboardingResponse); - final SetCapabilityServiceImpl setCapabilityService = new SetCapabilityServiceImpl(new QA() {}); - 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); - final FetchMessageServiceImpl fetchMessageService = new FetchMessageServiceImpl(); - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - } + /** + * 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 IOException { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + OnboardingParameters onboardingParameters = new OnboardingParameters(); + onboardingParameters.setRegistrationCode("f50319dc13"); + onboardingParameters.setApplicationId(communicationUnit.getApplicationId()); + onboardingParameters.setCertificationVersionId(communicationUnit.getCertificationVersionId()); + onboardingParameters.setCertificationType(CertificationType.P12); + onboardingParameters.setGatewayId(Gateway.REST.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.COMMUNICATION_UNIT, onboardingResponse); + final SetCapabilityServiceImpl setCapabilityService = new SetCapabilityServiceImpl(new QA() { + }); + 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); + final FetchMessageServiceImpl fetchMessageService = new FetchMessageServiceImpl(); + fetchMessageService.fetch( + onboardingResponse, + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + } } 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 481cce56..4fbec28c 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 @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.test.fixture; -import static org.junit.jupiter.api.Assertions.assertNotNull; - import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.CertificationType; import com.dke.data.agrirouter.api.enums.Gateway; @@ -11,118 +9,126 @@ import com.dke.data.agrirouter.impl.onboard.secured.OnboardingServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.OnboardingResponseRepository; -import java.io.IOException; -import java.util.UUID; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -/** Class to onboard endpoints for different reasons. */ +import java.io.IOException; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * Class to onboard endpoints for different reasons. + */ @SuppressWarnings("ALL") class FarmingSoftwareFixture extends AbstractIntegrationTest { - public static final String FARMING_SOFTWARE_ENDPOINT_ID = "e306d63b-8b57-4956-bde7-43600e78dae4"; - public static final String FARMING_SOFTWARE_DEACTIVATED_ENDPOINT_ID = - "50e0b616-a084-4402-8bf4-cb64f1e59a98"; + public static final String FARMING_SOFTWARE_ENDPOINT_ID = "e306d63b-8b57-4956-bde7-43600e78dae4"; + public static final String FARMING_SOFTWARE_DEACTIVATED_ENDPOINT_ID = + "50e0b616-a084-4402-8bf4-cb64f1e59a98"; - /** - * 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 onboardFarmingSoftwareAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("cf3a08a02f"); - onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); - onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(FARMING_SOFTWARE_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, 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 onboardFarmingSoftwareAndSaveToFile() throws IOException { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("cf3a08a02f"); + onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); + onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); + onboardingParameters.setCertificationType(CertificationType.P12); + onboardingParameters.setGatewayId(Gateway.REST.getKey()); + onboardingParameters.setUuid(FARMING_SOFTWARE_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, 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("528bdeab8a"); - 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 onboardAndDeactivateFarmingSoftwareAndSaveToFile() throws IOException { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("528bdeab8a"); + 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); - } + /** + * 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/TelemetryPlatformFixture.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/fixture/TelemetryPlatformFixture.java index 406715b6..bb3b46b0 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 @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.test.fixture; -import static org.junit.jupiter.api.Assertions.assertNotNull; - import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.CertificationType; import com.dke.data.agrirouter.api.enums.Gateway; @@ -11,114 +9,122 @@ import com.dke.data.agrirouter.impl.onboard.secured.OnboardingServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.OnboardingResponseRepository; -import java.io.IOException; -import java.util.UUID; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -/** Class to onboard endpoints for different reasons. */ +import java.io.IOException; +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +/** + * Class to onboard endpoints for different reasons. + */ @SuppressWarnings("ALL") class TelemetryPlatformFixture extends AbstractIntegrationTest { - /** - * 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 onboardTelemetryPlatformAndSaveToFile() throws IOException { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("3e22929d3f"); - 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, 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 onboardTelemetryPlatformAndSaveToFile() throws IOException { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("3e22929d3f"); + 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, 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 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); - } + /** + * 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/helper/ContentReader.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java index 7feb0459..2407f3e3 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java @@ -5,34 +5,36 @@ import java.nio.file.Paths; import java.util.Base64; -/** Generic content reader for the testcases. */ +/** + * Generic content reader for the testcases. + */ public class ContentReader { - private static final String FOLDER = "./message-content/"; + private static final String FOLDER = "./message-content/"; - public static String readBase64EncodedMessageContent(Identifier identifier) throws Throwable { - Path path = Paths.get(FOLDER.concat(identifier.getFileName())); - final byte[] rawData = Files.readAllBytes(path); - return new String(Base64.getEncoder().encode(rawData)); - } + public static String readBase64EncodedMessageContent(Identifier identifier) throws Throwable { + Path path = Paths.get(FOLDER.concat(identifier.getFileName())); + final byte[] rawData = Files.readAllBytes(path); + return new String(Base64.getEncoder().encode(rawData)); + } - public static byte[] readRawData(Identifier identifier) throws Throwable { - Path path = Paths.get(FOLDER.concat(identifier.getFileName())); - return Files.readAllBytes(path); - } + public static byte[] readRawData(Identifier identifier) throws Throwable { + Path path = Paths.get(FOLDER.concat(identifier.getFileName())); + return Files.readAllBytes(path); + } - public enum Identifier { - BIG_TASK_DATA("big_taskdata.zip"), - SMALL_TASK_DATA("small_taskdata.zip"); + public enum Identifier { + BIG_TASK_DATA("big_taskdata.zip"), + SMALL_TASK_DATA("small_taskdata.zip"); - private final String fileName; + private final String fileName; - Identifier(String fileName) { - this.fileName = fileName; - } + Identifier(String fileName) { + this.fileName = fileName; + } - public String getFileName() { - return fileName; + public String getFileName() { + return fileName; + } } - } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java index 9029826f..68795bd3 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java @@ -8,89 +8,92 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageFetcher; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.OnboardingResponseRepository; -import java.io.IOException; -import java.util.List; -import java.util.Optional; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Timeout; -/** Testing the behavior of the cancellation token. */ +import java.io.IOException; +import java.util.List; +import java.util.Optional; + +/** + * Testing the behavior of the cancellation token. + */ class CancellationTokenPollingTest extends AbstractIntegrationTest { - @Test - @Timeout(15) - @SuppressWarnings("deprecation") - void - givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheDefaultParametersShouldStillInfluenceTheBehavior() - throws IOException { - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = - fetchMessageService.fetch( - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), - MessageFetcher.MAX_TRIES_BEFORE_FAILURE, - MessageFetcher.DEFAULT_INTERVAL); - Assertions.assertFalse(fetchMessageResponses.isPresent()); - } + @Test + @Timeout(15) + @SuppressWarnings("deprecation") + void + givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheDefaultParametersShouldStillInfluenceTheBehavior() + throws IOException { + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> fetchMessageResponses = + fetchMessageService.fetch( + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), + MessageFetcher.MAX_TRIES_BEFORE_FAILURE, + MessageFetcher.DEFAULT_INTERVAL); + Assertions.assertFalse(fetchMessageResponses.isPresent()); + } - @Test - @Timeout(1) - @SuppressWarnings("deprecation") - void - givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCustomParametersShouldStillInfluenceTheBehavior() - throws IOException { - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = - fetchMessageService.fetch( - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), - 0, - 0); - Assertions.assertFalse(fetchMessageResponses.isPresent()); - } + @Test + @Timeout(1) + @SuppressWarnings("deprecation") + void + givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCustomParametersShouldStillInfluenceTheBehavior() + throws IOException { + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> fetchMessageResponses = + fetchMessageService.fetch( + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), + 0, + 0); + Assertions.assertFalse(fetchMessageResponses.isPresent()); + } - @Test - @Timeout(60) - void - givenDefaultImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() - throws IOException { - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = - fetchMessageService.fetch( - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - Assertions.assertFalse(fetchMessageResponses.isPresent()); - } + @Test + @Timeout(60) + void + givenDefaultImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() + throws IOException { + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> fetchMessageResponses = + fetchMessageService.fetch( + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + Assertions.assertFalse(fetchMessageResponses.isPresent()); + } - @Test - @Timeout(1) - void - givenCustomImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() - throws IOException { - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = - fetchMessageService.fetch( - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), - new CancellationToken() { + @Test + @Timeout(1) + void + givenCustomImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() + throws IOException { + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> fetchMessageResponses = + fetchMessageService.fetch( + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), + new CancellationToken() { - @Override - public boolean isNotCancelled() { - return false; - } + @Override + public boolean isNotCancelled() { + return false; + } - @Override - public void nextStep() { - // NOP - } + @Override + public void nextStep() { + // NOP + } - @Override - public void waitIfNotCancelled() { - // NOP - } - }); - Assertions.assertFalse(fetchMessageResponses.isPresent()); - } + @Override + public void waitIfNotCancelled() { + // NOP + } + }); + Assertions.assertFalse(fetchMessageResponses.isPresent()); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java index e8bd978a..1e8ccae6 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java @@ -1,8 +1,5 @@ package com.dke.data.agrirouter.test.messaging.rest; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; - import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; @@ -21,132 +18,136 @@ import com.dke.data.agrirouter.impl.messaging.rest.FetchMessageServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.Assertions; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; import org.apache.http.HttpStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; + class CloudOffboardingServiceTest extends AbstractIntegrationTest { - public static final String EXTERNAL_ID = "8c31e156-3c29-4b46-863c-5e49b405b344"; - public static final String ENDPOINT_NAME = "CLOUD-OFFBOARDING-SERVICE-TEST"; - - /** - * The endpoint ID for a former test run. If the endpoint is still available, then there could be - * a chance to remove it. This has to be set manually. - */ - public static final String VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN = - "bbfdcaed-9228-42a9-ab51-9e226cb314d1"; - - private OnboardingResponse virtualCommunicationUnit; - - @BeforeEach - void onboardVirtualCu() throws Throwable { - offboardExistingVirtualCUFromFormerTestRun(); - - CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); - CloudOnboardingParameters parameters = new CloudOnboardingParameters(); - CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = - new CloudOnboardingParameters.EndpointDetailsParameters(); - endpointDetails.setEndpointId(EXTERNAL_ID); - endpointDetails.setEndpointName(ENDPOINT_NAME); - parameters.setEndpointDetails(Collections.singletonList(endpointDetails)); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOnboardingService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - - DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = - new DecodeCloudOnboardingResponsesService(); - List onboardingResponses = - decodeCloudOnboardingResponsesService.decode( - fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); - - Assertions.assertEquals(1, onboardingResponses.size()); - - virtualCommunicationUnit = onboardingResponses.get(0); - - Assertions.assertNotNull(virtualCommunicationUnit); - Assertions.assertNotNull(virtualCommunicationUnit.getCapabilityAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getDeviceAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getSensorAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getAuthentication()); - Assertions.assertNotNull(virtualCommunicationUnit.getConnectionCriteria()); - } - - private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { - CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); - parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOffboardingService.send(parameters); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - waitForTheAgrirouterToProcessSingleMessage(); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - } - - @Test - @Disabled( - "Since there are multiple problems with the environment, the test is currently disabled.") - void givenValidSensorIdWhenOffboardingVirtualCuThenTheOffbardingShouldBeSuccessful() - throws Throwable { - CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); - parameters.setEndpointIds( - Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOffboardingService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - } + public static final String EXTERNAL_ID = "8c31e156-3c29-4b46-863c-5e49b405b344"; + public static final String ENDPOINT_NAME = "CLOUD-OFFBOARDING-SERVICE-TEST"; + + /** + * The endpoint ID for a former test run. If the endpoint is still available, then there could be + * a chance to remove it. This has to be set manually. + */ + public static final String VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN = + "bbfdcaed-9228-42a9-ab51-9e226cb314d1"; + + private OnboardingResponse virtualCommunicationUnit; + + @BeforeEach + void onboardVirtualCu() throws Throwable { + offboardExistingVirtualCUFromFormerTestRun(); + + CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); + CloudOnboardingParameters parameters = new CloudOnboardingParameters(); + CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = + new CloudOnboardingParameters.EndpointDetailsParameters(); + endpointDetails.setEndpointId(EXTERNAL_ID); + endpointDetails.setEndpointName(ENDPOINT_NAME); + parameters.setEndpointDetails(Collections.singletonList(endpointDetails)); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOnboardingService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + + DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = + new DecodeCloudOnboardingResponsesService(); + List onboardingResponses = + decodeCloudOnboardingResponsesService.decode( + fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); + + Assertions.assertEquals(1, onboardingResponses.size()); + + virtualCommunicationUnit = onboardingResponses.get(0); + + Assertions.assertNotNull(virtualCommunicationUnit); + Assertions.assertNotNull(virtualCommunicationUnit.getCapabilityAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getDeviceAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getSensorAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getAuthentication()); + Assertions.assertNotNull(virtualCommunicationUnit.getConnectionCriteria()); + } + + private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { + CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); + CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOffboardingService.send(parameters); + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + waitForTheAgrirouterToProcessSingleMessage(); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + } + + @Test + @Disabled( + "Since there are multiple problems with the environment, the test is currently disabled.") + void givenValidSensorIdWhenOffboardingVirtualCuThenTheOffbardingShouldBeSuccessful() + throws Throwable { + CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); + CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + parameters.setEndpointIds( + Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOffboardingService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java index fafe984f..5ae86549 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java @@ -1,8 +1,5 @@ package com.dke.data.agrirouter.test.messaging.rest; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; - import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; @@ -21,132 +18,136 @@ import com.dke.data.agrirouter.impl.messaging.rest.FetchMessageServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.Assertions; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Optional; import org.apache.http.HttpStatus; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; + +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; + class CloudOnboardingServiceTest extends AbstractIntegrationTest { - public static final String EXTERNAL_ID = "8c31e156-3c29-4b46-863c-5e49b405b343"; - public static final String ENDPOINT_NAME = "CLOUD-ONBOARDING-SERVICE-TEST"; - - /** - * The endpoint ID for a former test run. If the endpoint is still available, then there could be - * a chance to remove it. This has to be set manually. - */ - public static final String VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN = - "4e3af0ec-efb1-4109-8d3d-1910094c09d9"; - - private OnboardingResponse virtualCommunicationUnit; - - @AfterEach - void offboardVirtualCu() throws Throwable { - offboardExistingVirtualCUFromFormerTestRun(); - - CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); - parameters.setEndpointIds( - Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOffboardingService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - } - - private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { - CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); - parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOffboardingService.send(parameters); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - waitForTheAgrirouterToProcessSingleMessage(); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - } - - @Test - @Disabled( - "Since there are multiple problems with the environment, the test is currently disabled.") - void givenValidIdAndNameWhenOnboardingVirtualCuThenTheOnbardingShouldBePossible() - throws Throwable { - CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); - CloudOnboardingParameters parameters = new CloudOnboardingParameters(); - CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = - new CloudOnboardingParameters.EndpointDetailsParameters(); - endpointDetails.setEndpointId(EXTERNAL_ID); - endpointDetails.setEndpointName(ENDPOINT_NAME); - parameters.setEndpointDetails(Collections.singletonList(endpointDetails)); - parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); - cloudOnboardingService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.TELEMETRY_PLATFORM), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - - DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = - new DecodeCloudOnboardingResponsesService(); - List onboardingResponses = - decodeCloudOnboardingResponsesService.decode( - fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); - - Assertions.assertEquals(1, onboardingResponses.size()); - - virtualCommunicationUnit = onboardingResponses.get(0); - - Assertions.assertNotNull(virtualCommunicationUnit); - Assertions.assertNotNull(virtualCommunicationUnit.getCapabilityAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getDeviceAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getSensorAlternateId()); - Assertions.assertNotNull(virtualCommunicationUnit.getAuthentication()); - Assertions.assertNotNull(virtualCommunicationUnit.getConnectionCriteria()); - } + public static final String EXTERNAL_ID = "8c31e156-3c29-4b46-863c-5e49b405b343"; + public static final String ENDPOINT_NAME = "CLOUD-ONBOARDING-SERVICE-TEST"; + + /** + * The endpoint ID for a former test run. If the endpoint is still available, then there could be + * a chance to remove it. This has to be set manually. + */ + public static final String VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN = + "4e3af0ec-efb1-4109-8d3d-1910094c09d9"; + + private OnboardingResponse virtualCommunicationUnit; + + @AfterEach + void offboardVirtualCu() throws Throwable { + offboardExistingVirtualCUFromFormerTestRun(); + + CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); + CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + parameters.setEndpointIds( + Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOffboardingService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + } + + private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { + CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); + CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOffboardingService.send(parameters); + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + waitForTheAgrirouterToProcessSingleMessage(); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + } + + @Test + @Disabled( + "Since there are multiple problems with the environment, the test is currently disabled.") + void givenValidIdAndNameWhenOnboardingVirtualCuThenTheOnbardingShouldBePossible() + throws Throwable { + CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); + CloudOnboardingParameters parameters = new CloudOnboardingParameters(); + CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = + new CloudOnboardingParameters.EndpointDetailsParameters(); + endpointDetails.setEndpointId(EXTERNAL_ID); + endpointDetails.setEndpointName(ENDPOINT_NAME); + parameters.setEndpointDetails(Collections.singletonList(endpointDetails)); + parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); + cloudOnboardingService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.TELEMETRY_PLATFORM), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + + DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = + new DecodeCloudOnboardingResponsesService(); + List onboardingResponses = + decodeCloudOnboardingResponsesService.decode( + fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); + + Assertions.assertEquals(1, onboardingResponses.size()); + + virtualCommunicationUnit = onboardingResponses.get(0); + + Assertions.assertNotNull(virtualCommunicationUnit); + Assertions.assertNotNull(virtualCommunicationUnit.getCapabilityAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getDeviceAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getSensorAlternateId()); + Assertions.assertNotNull(virtualCommunicationUnit.getAuthentication()); + Assertions.assertNotNull(virtualCommunicationUnit.getConnectionCriteria()); + } } 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 1dad42fb..7f451ddc 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 @@ -9,59 +9,62 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageFetcher; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.OnboardingResponseRepository; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + import java.io.IOException; import java.util.List; import java.util.Optional; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -/** Class to show how health checking via polling can be implemented. */ +/** + * Class to show how health checking via polling can be implemented. + */ class HealthCheckForEndpointsByPollingTest extends AbstractIntegrationTest { - @Test - void - givenExistingAndActivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() - throws IOException { - final OnboardingResponse onboardingResponse = - OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> optionalMessageResponses = - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken( - MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL)); - Assertions.assertFalse(optionalMessageResponses.isPresent()); - } + @Test + void + givenExistingAndActivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() + throws IOException { + final OnboardingResponse onboardingResponse = + OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> optionalMessageResponses = + fetchMessageService.fetch( + onboardingResponse, + new DefaultCancellationToken( + MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL)); + Assertions.assertFalse(optionalMessageResponses.isPresent()); + } - @Test - void - givenExistingAndDeactivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() - throws IOException { - final OnboardingResponse onboardingResponse = - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_DEACTIVATED); - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> optionalMessageResponses = - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken( - MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL)); - Assertions.assertFalse(optionalMessageResponses.isPresent()); - } + @Test + void + givenExistingAndDeactivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() + throws IOException { + final OnboardingResponse onboardingResponse = + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_DEACTIVATED); + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final Optional> optionalMessageResponses = + fetchMessageService.fetch( + onboardingResponse, + new DefaultCancellationToken( + MessageFetcher.MAX_TRIES_BEFORE_FAILURE, MessageFetcher.DEFAULT_INTERVAL)); + Assertions.assertFalse(optionalMessageResponses.isPresent()); + } - @Test - void givenRemovedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldDenyAccessToTheApi() - throws IOException { - final OnboardingResponse 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))); - } + @Test + void givenRemovedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldDenyAccessToTheApi() + throws IOException { + final OnboardingResponse 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/messaging/rest/SendChunkedMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java index 0619109a..d97326c6 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java @@ -10,7 +10,10 @@ import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.FetchMessageService; -import com.dke.data.agrirouter.api.service.parameters.*; +import com.dke.data.agrirouter.api.service.parameters.MessageHeaderParameters; +import com.dke.data.agrirouter.api.service.parameters.MessageParameterTuple; +import com.dke.data.agrirouter.api.service.parameters.PayloadParameters; +import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; import com.dke.data.agrirouter.impl.common.MessageIdService; import com.dke.data.agrirouter.impl.messaging.SequenceNumberService; import com.dke.data.agrirouter.impl.messaging.encoding.DecodeMessageServiceImpl; @@ -22,84 +25,87 @@ import com.dke.data.agrirouter.test.OnboardingResponseRepository; import com.dke.data.agrirouter.test.helper.ContentReader; import com.google.protobuf.ByteString; -import java.util.*; -import java.util.concurrent.atomic.AtomicReference; import org.apache.http.HttpStatus; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -/** Test case to show the behavior for chunked message sending. */ +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; + +/** + * Test case to show the behavior for chunked message sending. + */ class SendChunkedMessageTest extends AbstractIntegrationTest { - private static final int MAX_CHUNK_SIZE = 1024000; - - @Disabled("Currently there is a mismatch between the chunks and the messages.") - @Test - void - givenLargeContentMessageWhenSendingTheMessageToTheAgrirouterTheSdkShouldHelpToSendTheFileInMultipleChunks() - throws Throwable { - - final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); - final OnboardingResponse onboardingResponse = - OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); - - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); - messageHeaderParameters.setApplicationMessageSeqNo( - SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - messageHeaderParameters.setRecipients( - Collections.singletonList("797b7f4b-79ec-4247-9fba-e726a55c4c7f")); - - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setValue( - ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA))); - payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); - - List tuples = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, onboardingResponse); - - tuples.forEach( - messageParameterTuple -> - Assertions.assertTrue( - Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue()) - .toStringUtf8() - .length() - <= MAX_CHUNK_SIZE)); - - List encodedMessages = encodeMessageService.encode(tuples); - - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setEncodedMessages(encodedMessages); - sendMessageParameters.setOnboardingResponse(onboardingResponse); - sendMessageService.send(sendMessageParameters); - - waitForTheAgrirouterToProcessMultipleMessages(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(3, fetchMessageResponses.get().size()); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - AtomicReference decodeMessageResponse = new AtomicReference<>(); - fetchMessageResponses.get().stream() - .map(FetchMessageResponse::getCommand) - .forEach( - message -> { - Assertions.assertNotNull(message); - decodeMessageResponse.set(decodeMessageService.decode(message.getMessage())); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.get().getResponseEnvelope().getResponseCode()); - }); - } + private static final int MAX_CHUNK_SIZE = 1024000; + + @Disabled("Currently there is a mismatch between the chunks and the messages.") + @Test + void + givenLargeContentMessageWhenSendingTheMessageToTheAgrirouterTheSdkShouldHelpToSendTheFileInMultipleChunks() + throws Throwable { + + final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); + final OnboardingResponse onboardingResponse = + OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); + + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); + messageHeaderParameters.setApplicationMessageSeqNo( + SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + messageHeaderParameters.setRecipients( + Collections.singletonList("797b7f4b-79ec-4247-9fba-e726a55c4c7f")); + + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setValue( + ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA))); + payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); + + List tuples = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, onboardingResponse); + + tuples.forEach( + messageParameterTuple -> + Assertions.assertTrue( + Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue()) + .toStringUtf8() + .length() + <= MAX_CHUNK_SIZE)); + + List encodedMessages = encodeMessageService.encode(tuples); + + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setEncodedMessages(encodedMessages); + sendMessageParameters.setOnboardingResponse(onboardingResponse); + sendMessageService.send(sendMessageParameters); + + waitForTheAgrirouterToProcessMultipleMessages(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + onboardingResponse, + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(3, fetchMessageResponses.get().size()); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + AtomicReference decodeMessageResponse = new AtomicReference<>(); + fetchMessageResponses.get().stream() + .map(FetchMessageResponse::getCommand) + .forEach( + message -> { + Assertions.assertNotNull(message); + decodeMessageResponse.set(decodeMessageService.decode(message.getMessage())); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.get().getResponseEnvelope().getResponseCode()); + }); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java index befabfee..76879f96 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java @@ -1,8 +1,5 @@ package com.dke.data.agrirouter.test.messaging.rest; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; - import agrirouter.commons.MessageOuterClass; import agrirouter.request.payload.endpoint.Capabilities; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; @@ -21,105 +18,113 @@ import com.dke.data.agrirouter.impl.messaging.rest.SetCapabilityServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.Assertions; +import org.apache.http.HttpStatus; +import org.junit.jupiter.api.Test; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; -import org.apache.http.HttpStatus; -import org.junit.jupiter.api.Test; -/** Demonstration how to use the service class. */ +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; + +/** + * Demonstration how to use the service class. + */ class SetCapabilityServiceTest extends AbstractIntegrationTest { - @Test - void givenValidEndpointWhenSendingCapabilitiesTheCapabilityMessageShouldBeAccepted() - throws Throwable { - SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() {}); - - SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); - parameters.setApplicationId(farmingSoftware.getApplicationId()); - parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - parameters.setEnablePushNotifications( - Capabilities.CapabilitySpecification.PushNotification.DISABLED); - parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); - List capabilities = new ArrayList<>(); - SetCapabilitiesParameters.CapabilityParameters capability = - new SetCapabilitiesParameters.CapabilityParameters(); - capability.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); - capabilities.add(capability); - parameters.setCapabilitiesParameters(capabilities); - setCapabilityService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.FARMING_SOFTWARE), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - } - - @Test - void givenValidEndpointWhenSendingInvalidCapabilitiesTheCapabilityMessageShouldNotBeAccepted() - throws Throwable { - SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() {}); - - SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); - parameters.setApplicationId(farmingSoftware.getApplicationId()); - parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - parameters.setEnablePushNotifications( - Capabilities.CapabilitySpecification.PushNotification.DISABLED); - parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); - List capabilities = new ArrayList<>(); - SetCapabilitiesParameters.CapabilityParameters capability = - new SetCapabilitiesParameters.CapabilityParameters(); - capability.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); - capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); - capabilities.add(capability); - parameters.setCapabilitiesParameters(capabilities); - setCapabilityService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.FARMING_SOFTWARE), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String encodedMessage = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); - - Assertions.assertEquals( - HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); - - MessageOuterClass.Messages messages = - decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); - Assertions.assertEquals(1, messages.getMessagesCount()); - - MessageOuterClass.Message message = messages.getMessages(0); - Assertions.assertEquals("VAL_000007", message.getMessageCode()); - } + @Test + void givenValidEndpointWhenSendingCapabilitiesTheCapabilityMessageShouldBeAccepted() + throws Throwable { + SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() { + }); + + SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); + parameters.setApplicationId(farmingSoftware.getApplicationId()); + parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); + parameters.setEnablePushNotifications( + Capabilities.CapabilitySpecification.PushNotification.DISABLED); + parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); + List capabilities = new ArrayList<>(); + SetCapabilitiesParameters.CapabilityParameters capability = + new SetCapabilitiesParameters.CapabilityParameters(); + capability.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); + capabilities.add(capability); + parameters.setCapabilitiesParameters(capabilities); + setCapabilityService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.FARMING_SOFTWARE), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + } + + @Test + void givenValidEndpointWhenSendingInvalidCapabilitiesTheCapabilityMessageShouldNotBeAccepted() + throws Throwable { + SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() { + }); + + SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); + parameters.setApplicationId(farmingSoftware.getApplicationId()); + parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); + parameters.setEnablePushNotifications( + Capabilities.CapabilitySpecification.PushNotification.DISABLED); + parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); + List capabilities = new ArrayList<>(); + SetCapabilitiesParameters.CapabilityParameters capability = + new SetCapabilitiesParameters.CapabilityParameters(); + capability.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); + capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); + capabilities.add(capability); + parameters.setCapabilitiesParameters(capabilities); + setCapabilityService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.FARMING_SOFTWARE), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String encodedMessage = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); + + Assertions.assertEquals( + HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); + + MessageOuterClass.Messages messages = + decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); + Assertions.assertEquals(1, messages.getMessagesCount()); + + MessageOuterClass.Message message = messages.getMessages(0); + Assertions.assertEquals("VAL_000007", message.getMessageCode()); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java index bba8e7d0..99822063 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java @@ -1,8 +1,5 @@ package com.dke.data.agrirouter.test.messaging.rest; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; -import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; - import agrirouter.commons.MessageOuterClass; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; @@ -20,95 +17,103 @@ import com.dke.data.agrirouter.impl.messaging.rest.SetSubscriptionServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; import com.dke.data.agrirouter.test.Assertions; +import org.apache.http.HttpStatus; +import org.junit.jupiter.api.Test; + import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; -import org.apache.http.HttpStatus; -import org.junit.jupiter.api.Test; -/** Demonstration how to use the service class. */ +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; +import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; + +/** + * Demonstration how to use the service class. + */ class SetSubscriptionServiceTest extends AbstractIntegrationTest { - @Test - void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAccepted() - throws Throwable { - SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() {}); - - SetSubscriptionParameters parameters = new SetSubscriptionParameters(); - parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); - List subscriptions = new ArrayList<>(); - SetSubscriptionParameters.Subscription subscription = - new SetSubscriptionParameters.Subscription(); - subscription.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - subscriptions.add(subscription); - parameters.setSubscriptions(subscriptions); - setSubscriptionService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.FARMING_SOFTWARE), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); - - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.getResponseEnvelope().getResponseCode()); - } - - @Test - void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShouldNotBeAccepted() - throws Throwable { - SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() {}); - - SetSubscriptionParameters parameters = new SetSubscriptionParameters(); - parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); - List subscriptions = new ArrayList<>(); - SetSubscriptionParameters.Subscription subscription = - new SetSubscriptionParameters.Subscription(); - subscription.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); - subscriptions.add(subscription); - parameters.setSubscriptions(subscriptions); - setSubscriptionService.send(parameters); - - waitForTheAgrirouterToProcessSingleMessage(); - - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - read(Identifier.FARMING_SOFTWARE), - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(1, fetchMessageResponses.get().size()); - Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - - Message command = fetchMessageResponses.get().get(0).getCommand(); - String encodedMessage = command.getMessage(); - - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); - - Assertions.assertEquals( - HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); - - MessageOuterClass.Messages messages = - decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); - Assertions.assertEquals(1, messages.getMessagesCount()); - - MessageOuterClass.Message message = messages.getMessages(0); - Assertions.assertEquals("VAL_000006", message.getMessageCode()); - } + @Test + void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAccepted() + throws Throwable { + SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() { + }); + + SetSubscriptionParameters parameters = new SetSubscriptionParameters(); + parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); + List subscriptions = new ArrayList<>(); + SetSubscriptionParameters.Subscription subscription = + new SetSubscriptionParameters.Subscription(); + subscription.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + subscriptions.add(subscription); + parameters.setSubscriptions(subscriptions); + setSubscriptionService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.FARMING_SOFTWARE), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String message = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.getResponseEnvelope().getResponseCode()); + } + + @Test + void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShouldNotBeAccepted() + throws Throwable { + SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() { + }); + + SetSubscriptionParameters parameters = new SetSubscriptionParameters(); + parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); + List subscriptions = new ArrayList<>(); + SetSubscriptionParameters.Subscription subscription = + new SetSubscriptionParameters.Subscription(); + subscription.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); + subscriptions.add(subscription); + parameters.setSubscriptions(subscriptions); + setSubscriptionService.send(parameters); + + waitForTheAgrirouterToProcessSingleMessage(); + + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + read(Identifier.FARMING_SOFTWARE), + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(1, fetchMessageResponses.get().size()); + Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); + + Message command = fetchMessageResponses.get().get(0).getCommand(); + String encodedMessage = command.getMessage(); + + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); + + Assertions.assertEquals( + HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); + + MessageOuterClass.Messages messages = + decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); + Assertions.assertEquals(1, messages.getMessagesCount()); + + MessageOuterClass.Message message = messages.getMessages(0); + Assertions.assertEquals("VAL_000006", message.getMessageCode()); + } } 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 9b208685..1933ac90 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 @@ -1,7 +1,5 @@ package com.dke.data.agrirouter.test.onboarding; -import static org.junit.jupiter.api.Assertions.*; - import com.dke.data.agrirouter.api.enums.SecuredOnboardingResponseType; import com.dke.data.agrirouter.api.env.QA; import com.dke.data.agrirouter.api.exception.IllegalParameterDefinitionException; @@ -13,55 +11,62 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -/** Demonstration how to use the authorization request service. */ +import static org.junit.jupiter.api.Assertions.*; + +/** + * Demonstration how to use the authorization request service. + */ public class AuthorizationRequestServiceTest extends AbstractIntegrationTest { - @Test - void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingSoftware() { - AuthorizationRequestService authorizationRequestService = - new AuthorizationRequestServiceImpl(new QA() {}); - AuthorizationRequestParameters authorizationRequestParameters = - new AuthorizationRequestParameters(); - authorizationRequestParameters.setApplicationId(farmingSoftware.getApplicationId()); - authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); - authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); - final String authorizationRequestURL = - authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); - 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=", - authorizationRequestURL); - } + @Test + void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingSoftware() { + AuthorizationRequestService authorizationRequestService = + new AuthorizationRequestServiceImpl(new QA() { + }); + AuthorizationRequestParameters authorizationRequestParameters = + new AuthorizationRequestParameters(); + authorizationRequestParameters.setApplicationId(farmingSoftware.getApplicationId()); + authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); + authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); + final String authorizationRequestURL = + authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); + 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=", + authorizationRequestURL); + } - @Test - void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetryPlatform() { - AuthorizationRequestService authorizationRequestService = - new AuthorizationRequestServiceImpl(new QA() {}); - AuthorizationRequestParameters authorizationRequestParameters = - new AuthorizationRequestParameters(); - authorizationRequestParameters.setApplicationId(telemetryPlatform.getApplicationId()); - authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); - authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); - final String authorizationRequestURL = - authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); - 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=", - authorizationRequestURL); - } + @Test + void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetryPlatform() { + AuthorizationRequestService authorizationRequestService = + new AuthorizationRequestServiceImpl(new QA() { + }); + AuthorizationRequestParameters authorizationRequestParameters = + new AuthorizationRequestParameters(); + authorizationRequestParameters.setApplicationId(telemetryPlatform.getApplicationId()); + authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); + authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); + final String authorizationRequestURL = + authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); + 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=", + authorizationRequestURL); + } - @Test - void givenInvalidParameterWhenCreatingTheUrlThenTheUrlShouldBeGenerated() { - AuthorizationRequestService authorizationRequestService = - new AuthorizationRequestServiceImpl(new QA() {}); - AuthorizationRequestParameters authorizationRequestParameters = - new AuthorizationRequestParameters(); - authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); - Assertions.assertThrows( - IllegalParameterDefinitionException.class, - () -> - authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters)); - } + @Test + void givenInvalidParameterWhenCreatingTheUrlThenTheUrlShouldBeGenerated() { + AuthorizationRequestService authorizationRequestService = + new AuthorizationRequestServiceImpl(new QA() { + }); + AuthorizationRequestParameters authorizationRequestParameters = + new AuthorizationRequestParameters(); + authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); + Assertions.assertThrows( + IllegalParameterDefinitionException.class, + () -> + authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters)); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java index 9aee1f91..f4c25476 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java @@ -11,36 +11,38 @@ import com.dke.data.agrirouter.impl.common.MessageIdService; import com.dke.data.agrirouter.impl.onboard.OnboardingServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; -import java.util.UUID; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.util.UUID; + class OnboardingWithErrorMessageTest extends AbstractIntegrationTest { - @Test - void - givenInvalidRegistrationCodeWhenSendingTheOnboardingRequestThenThereShouldBeAnOnboardingExceptionWithFilledErrorMessage() { - OnboardingService onboardingService = new OnboardingServiceImpl(getEnv()); - OnboardingParameters onboardingParameters = new OnboardingParameters(); - onboardingParameters.setApplicationMessageId(MessageIdService.generateMessageId()); - onboardingParameters.setApplicationType(ApplicationType.APPLICATION); - onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); - onboardingParameters.setCertificationType(CertificationType.P12); - onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); - onboardingParameters.setGatewayId(Gateway.REST.getKey()); - onboardingParameters.setUuid(UUID.randomUUID().toString()); - onboardingParameters.setRegistrationCode("INVALID_REGISTRATION_TOKEN"); - OnboardingException onboardingException = - Assertions.assertThrows( - OnboardingException.class, () -> onboardingService.onboard(onboardingParameters)); - Assertions.assertNotNull(onboardingException.getOnboardingError()); - Assertions.assertNotNull(onboardingException.getOnboardingError().getError()); - Assertions.assertEquals("0401", onboardingException.getOnboardingError().getError().getCode()); - Assertions.assertEquals( - "Bearer not found.", onboardingException.getOnboardingError().getError().getMessage()); - } + @Test + void + givenInvalidRegistrationCodeWhenSendingTheOnboardingRequestThenThereShouldBeAnOnboardingExceptionWithFilledErrorMessage() { + OnboardingService onboardingService = new OnboardingServiceImpl(getEnv()); + OnboardingParameters onboardingParameters = new OnboardingParameters(); + onboardingParameters.setApplicationMessageId(MessageIdService.generateMessageId()); + onboardingParameters.setApplicationType(ApplicationType.APPLICATION); + onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); + onboardingParameters.setCertificationType(CertificationType.P12); + onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); + onboardingParameters.setGatewayId(Gateway.REST.getKey()); + onboardingParameters.setUuid(UUID.randomUUID().toString()); + onboardingParameters.setRegistrationCode("INVALID_REGISTRATION_TOKEN"); + OnboardingException onboardingException = + Assertions.assertThrows( + OnboardingException.class, () -> onboardingService.onboard(onboardingParameters)); + Assertions.assertNotNull(onboardingException.getOnboardingError()); + Assertions.assertNotNull(onboardingException.getOnboardingError().getError()); + Assertions.assertEquals("0401", onboardingException.getOnboardingError().getError().getCode()); + Assertions.assertEquals( + "Bearer not found.", onboardingException.getOnboardingError().getError().getMessage()); + } - private Environment getEnv() { - return new QA() {}; - } + private Environment getEnv() { + return new QA() { + }; + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java index cc3055a8..7026ae5d 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java @@ -1,8 +1,5 @@ package com.dke.data.agrirouter.test.onboarding; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertThrows; - import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.CertificationType; import com.dke.data.agrirouter.api.enums.Gateway; @@ -12,82 +9,91 @@ import com.dke.data.agrirouter.api.service.parameters.SecuredOnboardingParameters; import com.dke.data.agrirouter.impl.onboard.secured.OnboardingServiceImpl; import com.dke.data.agrirouter.test.AbstractIntegrationTest; -import java.util.UUID; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -/** Demonstration how to use the service for onboarding. */ +import java.util.UUID; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +/** + * Demonstration how to use the service for onboarding. + */ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { - @Test - void - givenInvalidRegistrationCodeThereShouldBeAnOnboardingExceptionWhenSendingAnOnboardingRequest() { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("SOME_INVALID_REGISTRATION_CODE"); - 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()); - assertThrows(OnboardingException.class, () -> onboardingService.onboard(onboardingParameters)); - } + @Test + void + givenInvalidRegistrationCodeThereShouldBeAnOnboardingExceptionWhenSendingAnOnboardingRequest() { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("SOME_INVALID_REGISTRATION_CODE"); + 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()); + assertThrows(OnboardingException.class, () -> onboardingService.onboard(onboardingParameters)); + } - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void - givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForFarmingSoftware() { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); - 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()); - } + @Test + @Disabled("Please replace the placeholder for the registration code to run the test case.") + void + givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForFarmingSoftware() { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); + 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()); + } - @Test - @Disabled("Please replace the placeholder for the registration code to run the test case.") - void - givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForTelemetryPlatform() { - OnboardingService onboardingService = new OnboardingServiceImpl(new QA() {}); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); - onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); - 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()); - } + @Test + @Disabled("Please replace the placeholder for the registration code to run the test case.") + void + givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForTelemetryPlatform() { + OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { + }); + SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); + 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()); + } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java index 7c1ae7e7..be87edd1 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java @@ -25,11 +25,6 @@ import com.dke.data.agrirouter.test.OnboardingResponseRepository; import com.dke.data.agrirouter.test.helper.ContentReader; import com.google.protobuf.ByteString; -import java.io.IOException; -import java.util.*; -import java.util.concurrent.atomic.AtomicReference; -import java.util.stream.Collectors; -import java.util.stream.Stream; import org.apache.http.HttpStatus; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.AfterEach; @@ -39,275 +34,286 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; -/** Test case to show the behavior for chunked message sending. */ -class SendAndReceiveChunkedMessagesTest extends AbstractIntegrationTest { +import java.io.IOException; +import java.util.*; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; +import java.util.stream.Stream; - private static final int MAX_CHUNK_SIZE = 1024000; +/** + * Test case to show the behavior for chunked message sending. + */ +class SendAndReceiveChunkedMessagesTest extends AbstractIntegrationTest { - @Disabled("Takes to much during a normal run.") - @ParameterizedTest - @MethodSource - void givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt( - ByteString messageContent, int expectedNrOfChunks) throws Throwable { - actionsForSender(messageContent, expectedNrOfChunks); - actionsForTheRecipient(messageContent, expectedNrOfChunks); - } + private static final int MAX_CHUNK_SIZE = 1024000; - /** - * These are the actions for the recipient. The recipient is already set up and declared the - * capabilities. The actions for the recipient are documented inline. - * - * @param messageContent - - * @param expectedNrOfChunks - - */ - private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfChunks) - throws Throwable { - // [1] Fetch all the messages within the feed. The number of headers should match the number of - // chunks sent. - final MessageQueryServiceImpl messageQueryService = new MessageQueryServiceImpl(new QA() {}); - final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); - final OnboardingResponse recipient = - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); - messageQueryParameters.setOnboardingResponse(recipient); - messageQueryParameters.setSentToInSeconds(UtcTimeService.inTheFuture(5).toEpochSecond()); - messageQueryParameters.setSentFromInSeconds( - UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); - messageQueryService.send(messageQueryParameters); + @Disabled("Takes to much during a normal run.") + @ParameterizedTest + @MethodSource + void givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt( + ByteString messageContent, int expectedNrOfChunks) throws Throwable { + actionsForSender(messageContent, expectedNrOfChunks); + actionsForTheRecipient(messageContent, expectedNrOfChunks); + } - // [2] Wait for the agrirouter to process the message. - waitForTheAgrirouterToProcessSingleMessage(); + /** + * These are the actions for the recipient. The recipient is already set up and declared the + * capabilities. The actions for the recipient are documented inline. + * + * @param messageContent - + * @param expectedNrOfChunks - + */ + private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfChunks) + throws Throwable { + // [1] Fetch all the messages within the feed. The number of headers should match the number of + // chunks sent. + final MessageQueryServiceImpl messageQueryService = new MessageQueryServiceImpl(new QA() { + }); + final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); + final OnboardingResponse recipient = + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); + messageQueryParameters.setOnboardingResponse(recipient); + messageQueryParameters.setSentToInSeconds(UtcTimeService.inTheFuture(5).toEpochSecond()); + messageQueryParameters.setSentFromInSeconds( + UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); + messageQueryService.send(messageQueryParameters); - // [3] Fetch the chunks from the outbox. Since we have the same restrictions while receiving, - // this has to be the same number of messages as it is chunks. - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(expectedNrOfChunks, fetchMessageResponses.get().size()); + // [2] Wait for the agrirouter to process the message. + waitForTheAgrirouterToProcessSingleMessage(); - // [4] Check if the response from the AR only contains valid results. - final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - fetchMessageResponses.get().stream() - .map( - fetchMessageResponse -> - decodeMessageService.decode(fetchMessageResponse.getCommand().getMessage())) - .forEach( - decodeMessageResponse -> - Assertions.assertEquals( - Response.ResponseEnvelope.ResponseBodyType.ACK_FOR_FEED_MESSAGE, - decodeMessageResponse.getResponseEnvelope().getType())); + // [3] Fetch the chunks from the outbox. Since we have the same restrictions while receiving, + // this has to be the same number of messages as it is chunks. + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(expectedNrOfChunks, fetchMessageResponses.get().size()); - // [5] Map the results from the query to 'real' messages within the feed and perform some - // assertions. - final List feedMessages = + // [4] Check if the response from the AR only contains valid results. + final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); fetchMessageResponses.get().stream() - .map( - fetchMessageResponse -> - decodeMessageService.decode(fetchMessageResponse.getCommand().getMessage())) - .map( - decodeMessageResponse -> - messageQueryService.decode( - decodeMessageResponse.getResponsePayloadWrapper().getDetails().getValue())) - .map(messageQueryResponse -> messageQueryResponse.getMessages(0)) - .collect(Collectors.toList()); - Assertions.assertEquals(expectedNrOfChunks, feedMessages.size()); - feedMessages.forEach( - feedMessage -> Assertions.assertNotNull(feedMessage.getHeader().getChunkContext())); - Assertions.assertEquals( - feedMessages.get(0).getHeader().getChunkContext().getTotal(), expectedNrOfChunks); - final Set chunkContextIds = - feedMessages.stream() - .map(feedMessage -> feedMessage.getHeader().getChunkContext().getContextId()) - .collect(Collectors.toSet()); - Assertions.assertEquals( - 1, chunkContextIds.size(), "There should be only one chunk context ID."); + .map( + fetchMessageResponse -> + decodeMessageService.decode(fetchMessageResponse.getCommand().getMessage())) + .forEach( + decodeMessageResponse -> + Assertions.assertEquals( + Response.ResponseEnvelope.ResponseBodyType.ACK_FOR_FEED_MESSAGE, + decodeMessageResponse.getResponseEnvelope().getType())); - // [6] Confirm the chunks to remove them from the feed. - final List messageIdsToConfirm = - feedMessages.stream() - .map(feedMessage -> feedMessage.getHeader().getMessageId()) - .collect(Collectors.toList()); - final MessageConfirmationServiceImpl messageConfirmationService = - new MessageConfirmationServiceImpl(new QA() {}); - final MessageConfirmationParameters messageConfirmationParameters = - new MessageConfirmationParameters(); - messageConfirmationParameters.setOnboardingResponse(recipient); - messageConfirmationParameters.setMessageIds(messageIdsToConfirm); - messageConfirmationService.send(messageConfirmationParameters); + // [5] Map the results from the query to 'real' messages within the feed and perform some + // assertions. + final List feedMessages = + fetchMessageResponses.get().stream() + .map( + fetchMessageResponse -> + decodeMessageService.decode(fetchMessageResponse.getCommand().getMessage())) + .map( + decodeMessageResponse -> + messageQueryService.decode( + decodeMessageResponse.getResponsePayloadWrapper().getDetails().getValue())) + .map(messageQueryResponse -> messageQueryResponse.getMessages(0)) + .collect(Collectors.toList()); + Assertions.assertEquals(expectedNrOfChunks, feedMessages.size()); + feedMessages.forEach( + feedMessage -> Assertions.assertNotNull(feedMessage.getHeader().getChunkContext())); + Assertions.assertEquals( + feedMessages.get(0).getHeader().getChunkContext().getTotal(), expectedNrOfChunks); + final Set chunkContextIds = + feedMessages.stream() + .map(feedMessage -> feedMessage.getHeader().getChunkContext().getContextId()) + .collect(Collectors.toSet()); + Assertions.assertEquals( + 1, chunkContextIds.size(), "There should be only one chunk context ID."); - // [7] Fetch the response from the agrirouter after confirming the messages. - waitForTheAgrirouterToProcessSingleMessage(); - fetchMessageResponses = - fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals( - 1, fetchMessageResponses.get().size(), "This should be a single response."); - } + // [6] Confirm the chunks to remove them from the feed. + final List messageIdsToConfirm = + feedMessages.stream() + .map(feedMessage -> feedMessage.getHeader().getMessageId()) + .collect(Collectors.toList()); + final MessageConfirmationServiceImpl messageConfirmationService = + new MessageConfirmationServiceImpl(new QA() { + }); + final MessageConfirmationParameters messageConfirmationParameters = + new MessageConfirmationParameters(); + messageConfirmationParameters.setOnboardingResponse(recipient); + messageConfirmationParameters.setMessageIds(messageIdsToConfirm); + messageConfirmationService.send(messageConfirmationParameters); - /** - * These are the actions for the sender. The sender is already set up and declared the - * capabilities. The actions for the sender are documented inline. - * - * @param messageContent - - * @param expectedNrOfChunks - - * @throws IOException - - * @throws InterruptedException - - */ - private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) - throws IOException, InterruptedException { - final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); - final OnboardingResponse onboardingResponse = - OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); + // [7] Fetch the response from the agrirouter after confirming the messages. + waitForTheAgrirouterToProcessSingleMessage(); + fetchMessageResponses = + fetchMessageService.fetch( + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals( + 1, fetchMessageResponses.get().size(), "This should be a single response."); + } - // [1] Define the raw message, in this case this is the Base64 encoded message content, no - // chunking needed. - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); - messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); - messageHeaderParameters.setApplicationMessageSeqNo( - SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); - messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - messageHeaderParameters.setRecipients( - Collections.singletonList( - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT) - .getSensorAlternateId())); + /** + * These are the actions for the sender. The sender is already set up and declared the + * capabilities. The actions for the sender are documented inline. + * + * @param messageContent - + * @param expectedNrOfChunks - + * @throws IOException - + * @throws InterruptedException - + */ + private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) + throws IOException, InterruptedException { + final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); + final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); + final OnboardingResponse onboardingResponse = + OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); - PayloadParameters payloadParameters = new PayloadParameters(); - payloadParameters.setValue(messageContent); - payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); + // [1] Define the raw message, in this case this is the Base64 encoded message content, no + // chunking needed. + MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); + messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); + messageHeaderParameters.setApplicationMessageSeqNo( + SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); + messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); + messageHeaderParameters.setRecipients( + Collections.singletonList( + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT) + .getSensorAlternateId())); - // [2] Chunk the message content using the SDK specific methods ('chunkAndEncode'). - List tuples = - encodeMessageService.chunkAndBase64EncodeEachChunk( - messageHeaderParameters, payloadParameters, onboardingResponse); + PayloadParameters payloadParameters = new PayloadParameters(); + payloadParameters.setValue(messageContent); + payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); - tuples.forEach( - messageParameterTuple -> - Assertions.assertTrue( - Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue()) - .toStringUtf8() - .length() - <= MAX_CHUNK_SIZE)); + // [2] Chunk the message content using the SDK specific methods ('chunkAndEncode'). + List tuples = + encodeMessageService.chunkAndBase64EncodeEachChunk( + messageHeaderParameters, payloadParameters, onboardingResponse); - List encodedMessages = encodeMessageService.encode(tuples); + tuples.forEach( + messageParameterTuple -> + Assertions.assertTrue( + Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue()) + .toStringUtf8() + .length() + <= MAX_CHUNK_SIZE)); - // [3] Send the chunks to the agrirouter. - SendMessageParameters sendMessageParameters = new SendMessageParameters(); - sendMessageParameters.setEncodedMessages(encodedMessages); - sendMessageParameters.setOnboardingResponse(onboardingResponse); - sendMessageService.send(sendMessageParameters); + List encodedMessages = encodeMessageService.encode(tuples); - // [4] Wait for the AR to process the chunks. - waitForTheAgrirouterToProcessMultipleMessages(); + // [3] Send the chunks to the agrirouter. + SendMessageParameters sendMessageParameters = new SendMessageParameters(); + sendMessageParameters.setEncodedMessages(encodedMessages); + sendMessageParameters.setOnboardingResponse(onboardingResponse); + sendMessageService.send(sendMessageParameters); - // [5] Check if the chunks were processed successfully. - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = - fetchMessageService.fetch( - onboardingResponse, - new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + // [4] Wait for the AR to process the chunks. + waitForTheAgrirouterToProcessMultipleMessages(); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals(expectedNrOfChunks, fetchMessageResponses.get().size()); + // [5] Check if the chunks were processed successfully. + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + onboardingResponse, + new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - AtomicReference decodeMessageResponse = new AtomicReference<>(); - fetchMessageResponses.get().stream() - .map(FetchMessageResponse::getCommand) - .forEach( - message -> { - Assertions.assertNotNull(message); - decodeMessageResponse.set(decodeMessageService.decode(message.getMessage())); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals(expectedNrOfChunks, fetchMessageResponses.get().size()); - Assertions.assertMatchesAny( - Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), - decodeMessageResponse.get().getResponseEnvelope().getResponseCode()); - }); - } + DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + AtomicReference decodeMessageResponse = new AtomicReference<>(); + fetchMessageResponses.get().stream() + .map(FetchMessageResponse::getCommand) + .forEach( + message -> { + Assertions.assertNotNull(message); + decodeMessageResponse.set(decodeMessageService.decode(message.getMessage())); - /** - * Delivers fake message content for multiple test cases. - * - * @return - - */ - @SuppressWarnings("unused") - private static @NotNull Stream - givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt() - throws Throwable { - return Stream.of( - Arguments.of( - ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA)), - 3)); - } + Assertions.assertMatchesAny( + Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), + decodeMessageResponse.get().getResponseEnvelope().getResponseCode()); + }); + } - /** - * Cleanup before and after each test case. These actions are necessary because it could be the - * case, that there are dangling messages from former tests. - */ - @BeforeEach - @AfterEach - public void prepareTestEnvironment() throws Throwable { - FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final OnboardingResponse recipient = - OnboardingResponseRepository.read( - OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); - final MessageHeaderQueryServiceImpl messageHeaderQueryService = - new MessageHeaderQueryServiceImpl(new QA() {}); + /** + * Delivers fake message content for multiple test cases. + * + * @return - + */ + @SuppressWarnings("unused") + private static @NotNull Stream + givenRealMessageContentWhenSendingMessagesTheContentShouldMatchAfterReceivingAndMergingIt() + throws Throwable { + return Stream.of( + Arguments.of( + ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA)), + 3)); + } - // [1] Clean the outbox of the endpoint. - fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + /** + * Cleanup before and after each test case. These actions are necessary because it could be the + * case, that there are dangling messages from former tests. + */ + @BeforeEach + @AfterEach + public void prepareTestEnvironment() throws Throwable { + FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); + final OnboardingResponse recipient = + OnboardingResponseRepository.read( + OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); + final MessageHeaderQueryServiceImpl messageHeaderQueryService = + new MessageHeaderQueryServiceImpl(new QA() { + }); - // [2] Fetch all message headers for the last 4 weeks (maximum retention time within the - // agrirouter). - final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); - messageQueryParameters.setOnboardingResponse(recipient); - messageQueryParameters.setSentToInSeconds(UtcTimeService.inTheFuture(5).toEpochSecond()); - messageQueryParameters.setSentFromInSeconds( - UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); - messageHeaderQueryService.send(messageQueryParameters); - waitForTheAgrirouterToProcessSingleMessage(); - Optional> fetchMessageResponses = + // [1] Clean the outbox of the endpoint. fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - Assertions.assertTrue(fetchMessageResponses.isPresent()); - Assertions.assertEquals( - 1, fetchMessageResponses.get().size(), "This should be a single response."); - final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - final DecodeMessageResponse decodeMessageResponse = - decodeMessageService.decode(fetchMessageResponses.get().get(0).getCommand().getMessage()); - Assertions.assertEquals( - Response.ResponseEnvelope.ResponseBodyType.ACK_FOR_FEED_HEADER_LIST, - decodeMessageResponse.getResponseEnvelope().getType()); - final FeedResponse.HeaderQueryResponse headerQueryResponse = - messageHeaderQueryService.decode( - decodeMessageResponse.getResponsePayloadWrapper().getDetails().getValue()); + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - // [3] Delete the dangling messages from the feed of the endpoint if necessary. - if (headerQueryResponse.getQueryMetrics().getTotalMessagesInQuery() > 0) { - final DeleteMessageServiceImpl deleteMessageService = new DeleteMessageServiceImpl(); - final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); - deleteMessageParameters.setOnboardingResponse(recipient); - final List messageIds = - headerQueryResponse.getFeedList().stream() - .map(FeedResponse.HeaderQueryResponse.Feed::getHeadersList) - .flatMap(Collection::stream) - .map(FeedResponse.HeaderQueryResponse.Header::getMessageId) - .collect(Collectors.toList()); - deleteMessageParameters.setMessageIds(messageIds); - deleteMessageService.send(deleteMessageParameters); - waitForTheAgrirouterToProcessSingleMessage(); - fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - } + // [2] Fetch all message headers for the last 4 weeks (maximum retention time within the + // agrirouter). + final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); + messageQueryParameters.setOnboardingResponse(recipient); + messageQueryParameters.setSentToInSeconds(UtcTimeService.inTheFuture(5).toEpochSecond()); + messageQueryParameters.setSentFromInSeconds( + UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); + messageHeaderQueryService.send(messageQueryParameters); + waitForTheAgrirouterToProcessSingleMessage(); + Optional> fetchMessageResponses = + fetchMessageService.fetch( + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + Assertions.assertTrue(fetchMessageResponses.isPresent()); + Assertions.assertEquals( + 1, fetchMessageResponses.get().size(), "This should be a single response."); + final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); + final DecodeMessageResponse decodeMessageResponse = + decodeMessageService.decode(fetchMessageResponses.get().get(0).getCommand().getMessage()); + Assertions.assertEquals( + Response.ResponseEnvelope.ResponseBodyType.ACK_FOR_FEED_HEADER_LIST, + decodeMessageResponse.getResponseEnvelope().getType()); + final FeedResponse.HeaderQueryResponse headerQueryResponse = + messageHeaderQueryService.decode( + decodeMessageResponse.getResponsePayloadWrapper().getDetails().getValue()); - // [4] Clean the outbox of the endpoint. - fetchMessageService.fetch( - recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); - } + // [3] Delete the dangling messages from the feed of the endpoint if necessary. + if (headerQueryResponse.getQueryMetrics().getTotalMessagesInQuery() > 0) { + final DeleteMessageServiceImpl deleteMessageService = new DeleteMessageServiceImpl(); + final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); + deleteMessageParameters.setOnboardingResponse(recipient); + final List messageIds = + headerQueryResponse.getFeedList().stream() + .map(FeedResponse.HeaderQueryResponse.Feed::getHeadersList) + .flatMap(Collection::stream) + .map(FeedResponse.HeaderQueryResponse.Header::getMessageId) + .collect(Collectors.toList()); + deleteMessageParameters.setMessageIds(messageIds); + deleteMessageService.send(deleteMessageParameters); + waitForTheAgrirouterToProcessSingleMessage(); + fetchMessageService.fetch( + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + } + + // [4] Clean the outbox of the endpoint. + fetchMessageService.fetch( + recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); + } } From 69a1671bce38cc9eb2fcec788225fff7c61e6938 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:24:50 +0100 Subject: [PATCH 09/37] Remove unused files MessageConfirmationRequest and MessageSendingResult Deleted two unused Kotlin files "MessageConfirmationRequest.kt" and "MessageSendingResult.kt" from the codebase. These files are no longer needed as part of the agrirouter API and their removal simplifies the codebase structure. --- .../api/dto/messaging/MessageConfirmationRequest.kt | 7 ------- .../data/agrirouter/api/messaging/MessageSendingResult.kt | 3 --- 2 files changed, 10 deletions(-) delete mode 100644 agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt delete mode 100644 agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt deleted file mode 100644 index 482775b0..00000000 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/messaging/MessageConfirmationRequest.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.dke.data.agrirouter.api.dto.messaging - -class MessageConfirmationRequest { - - lateinit var messageIds: List - -} \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt deleted file mode 100644 index bf06e2ab..00000000 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/messaging/MessageSendingResult.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.dke.data.agrirouter.api.messaging - -class MessageSendingResult(val messageSendingResponse: MessageSendingResponse, val messageId: String) \ No newline at end of file From 745185f1898a39d7a705fa1b64b95091057d784f Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:27:29 +0100 Subject: [PATCH 10/37] Remove specific exception classes The CouldNotFetchCookiesException, CouldNotGetRegistrationCodeException, and CouldNotOffboardVirtualCommunicationUnitException classes have been removed. These specific exception handling classes were no longer needed or used in the codebase. --- .../exception/CouldNotFetchCookiesException.java | 9 --------- .../CouldNotGetRegistrationCodeException.java | 15 --------------- ...OffboardVirtualCommunicationUnitException.java | 7 ------- 3 files changed, 31 deletions(-) delete mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java delete mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java delete mode 100644 agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java deleted file mode 100644 index 61ce1ee5..00000000 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotFetchCookiesException.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.dke.data.agrirouter.api.exception; - -public class CouldNotFetchCookiesException extends RuntimeException { - - public CouldNotFetchCookiesException(Throwable cause) { - - super(cause); - } -} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java deleted file mode 100644 index cce43c45..00000000 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotGetRegistrationCodeException.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.dke.data.agrirouter.api.exception; - -/** - * Will be thrown if the registration code could not be obtained. - */ -public class CouldNotGetRegistrationCodeException extends RuntimeException { - - public CouldNotGetRegistrationCodeException(Throwable cause) { - super(cause); - } - - public CouldNotGetRegistrationCodeException(String message, Throwable cause) { - super(message, cause); - } -} diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java deleted file mode 100644 index 39646c3c..00000000 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotOffboardVirtualCommunicationUnitException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.dke.data.agrirouter.api.exception; - -public class CouldNotOffboardVirtualCommunicationUnitException extends RuntimeException { - public CouldNotOffboardVirtualCommunicationUnitException(String message) { - super(message); - } -} From 10b4d265a0bb0953fdd64db93d2eacec29533ca1 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:28:26 +0100 Subject: [PATCH 11/37] Remove RegistrationCodeResponse class and make minor updates Removed the RegistrationCodeResponse class in the agrirouter-sdk-java-api package, as it has become obsolete. Also, removed an unnecessary semicolon in the RevokeRequest class and added a "SuppressWarnings" annotation to the Production class. --- .../com/dke/data/agrirouter/api/env/Production.java | 1 + .../registrationrequest/RegistrationCodeResponse.kt | 12 ------------ .../data/agrirouter/api/dto/revoke/RevokeRequest.kt | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) delete mode 100644 agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java index 16a75bf5..16a76218 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Production.java @@ -4,6 +4,7 @@ * Abstraction of the production environment, currently no overrides because the default is * production already. */ +@SuppressWarnings("unused") public abstract class Production implements Environment { private static final String ENV_BASE_URL = "https://goto.my-agrirouter.com"; diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt deleted file mode 100644 index cba8c693..00000000 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/RegistrationCodeResponse.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.dke.data.agrirouter.api.dto.registrationrequest - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties - -@JsonIgnoreProperties(ignoreUnknown = true) -class RegistrationCodeResponse { - - lateinit var registrationCode: String - - lateinit var validTo: String - -} \ No newline at end of file diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt index d41a17d3..d369e50b 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/revoke/RevokeRequest.kt @@ -5,7 +5,7 @@ class RevokeRequest { lateinit var accountId: String - lateinit var endpointIds: Array; + lateinit var endpointIds: Array lateinit var UTCTimestamp: String From 556a0518215a9cb5d463a0e9af5ce66523f7fce8 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:28:42 +0100 Subject: [PATCH 12/37] Remove redundant constructor in CouldNotCreateMqttOptionException class Removed the redundant constructor from the CouldNotCreateMqttOptionException class in the agrirouter-sdk-java-api package. This simplifies error handling as it was unnecessary to have two ways of constructing these exceptions. --- .../api/exception/CouldNotCreateMqttOptionException.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java index 0bdb65c6..c6684bb7 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/CouldNotCreateMqttOptionException.java @@ -5,10 +5,6 @@ */ public class CouldNotCreateMqttOptionException extends RuntimeException { - public CouldNotCreateMqttOptionException(String message) { - super(message); - } - public CouldNotCreateMqttOptionException(String message, Throwable cause) { super(message, cause); } From 0253994e8ecc2e349d40a33bb540326fe21c6a12 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:28:57 +0100 Subject: [PATCH 13/37] Refactor IllegalParameterDefinitionException class Removed the unnecessary default constructor in the IllegalParameterDefinitionException class within the agrirouter-sdk-java-api package. This change streamlines the creation of --- .../api/exception/IllegalParameterDefinitionException.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java index 943391bd..3fc903f6 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/IllegalParameterDefinitionException.java @@ -5,11 +5,7 @@ */ public class IllegalParameterDefinitionException extends RuntimeException { - private String message; - - public IllegalParameterDefinitionException() { - this(""); - } + private final String message; public IllegalParameterDefinitionException(String message) { this.message = message; From 0b55b5445e9abc7fb570cc047cacc748731cbec3 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:29:20 +0100 Subject: [PATCH 14/37] improves code readability and ensures the correct use of the class, by using a more appropriate function (`entries.find` instead of `RevokeResponse.values().find`) to find values within the RevokeResponse enumeration. --- .../kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt index 09cae220..b167ae22 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/enums/RevokeResponse.kt @@ -6,6 +6,6 @@ enum class RevokeResponse(val key: Int) { UNAUTHORIZED(401); companion object Filter { - fun valueOf(value: Int): RevokeResponse? = RevokeResponse.values().find { it.key == value } + fun valueOf(value: Int): RevokeResponse? = entries.find { it.key == value } } } \ No newline at end of file From 52f8ac1158c67ad5bd8fabdf43b7382e5a6983de Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:30:42 +0100 Subject: [PATCH 15/37] Fixed client ID assignment in MqttClientService The client ID now correctly retrieves the value from the connection criteria's getClientId method, instead of using the deviceAlternateId. This ensures that the correct client ID is used when creating a new MqttClient, improving the accuracy and consistency of the application's behavior. --- .../agrirouter/convenience/mqtt/client/MqttClientService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java index c4b5730d..74abbd17 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java @@ -53,7 +53,7 @@ public IMqttClient create(RouterDevice routerDevice) { return this.createMqttClient( routerDevice.getConnectionCriteria().getHost(), String.valueOf(routerDevice.getConnectionCriteria().getPort()), - routerDevice.getDeviceAlternateId()); + routerDevice.getConnectionCriteria().getClientId()); } private IMqttClient createMqttClient(String host, String port, String clientId) { From 6127ed04a86d67c9563e719b23f6d4ec3095018c Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:31:22 +0100 Subject: [PATCH 16/37] Remove unnecessary semicolons in RouterDevice Removed unnecessary semicolons after the instantiation of Authentication and ConnectionCriteria in RouterDevice. Also, added a suppress warning annotation for an unused variable, improving the cleanliness of the code. --- .../com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt index 8643392e..591482d5 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/onboard/RouterDevice.kt @@ -23,10 +23,11 @@ class RouterDevice { var port: Int = 0 } - var authentication: Authentication = Authentication(); + var authentication: Authentication = Authentication() - var connectionCriteria: ConnectionCriteria = ConnectionCriteria(); + var connectionCriteria: ConnectionCriteria = ConnectionCriteria() + @Suppress("unused") lateinit var deviceAlternateId: String } \ No newline at end of file From 439f03db9f6dd80c46131e0af9b4ff7ad0f2de8a Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:32:20 +0100 Subject: [PATCH 17/37] Add @SuppressWarnings annotation to UtcTimeService class Added @SuppressWarnings("unused") annotation to UtcTimeService class to mark variables that are declared but not used. This helps in improving the tidiness and readability of the code. --- .../java/com/dke/data/agrirouter/impl/common/UtcTimeService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java index 03e56c90..0bb35068 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java @@ -8,6 +8,7 @@ import java.util.Optional; import java.util.TimeZone; +@SuppressWarnings("unused") public class UtcTimeService { public static final long ONE_DAY_AGO = 60 * 60 * 24; From 59754adda6d86e447a1861c6293c5749cf6fbe82 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:33:16 +0100 Subject: [PATCH 18/37] Refactor ContentReader and RevokingService classes Added @SuppressWarnings("unused") annotation in the RevokingService class and refactored the ContentReader class by modifying readRawData method. These changes enhance the code readability and maintainability. --- .../dke/data/agrirouter/api/service/RevokingService.java | 1 + .../dke/data/agrirouter/test/helper/ContentReader.java | 8 +------- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java index e885f147..d4f58ab0 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/RevokingService.java @@ -8,6 +8,7 @@ public interface RevokingService { + @SuppressWarnings("unused") RevokeResponse revoke(RevokeParameters revokeParameters); /** diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java index 2407f3e3..7569d409 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java @@ -12,14 +12,8 @@ public class ContentReader { private static final String FOLDER = "./message-content/"; - public static String readBase64EncodedMessageContent(Identifier identifier) throws Throwable { - Path path = Paths.get(FOLDER.concat(identifier.getFileName())); - final byte[] rawData = Files.readAllBytes(path); - return new String(Base64.getEncoder().encode(rawData)); - } - public static byte[] readRawData(Identifier identifier) throws Throwable { - Path path = Paths.get(FOLDER.concat(identifier.getFileName())); + var path = Paths.get(FOLDER.concat(identifier.getFileName())); return Files.readAllBytes(path); } From f58f1ba8f2224e21903914cdcb2af12f7064a9fd Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:33:47 +0100 Subject: [PATCH 19/37] Add suppression annotation to AuthorizationResponse Added @Suppress("unused") to the hasError method in AuthorizationResponse class. This change mitigates warning messages in the development environment about the function not being used. --- .../api/dto/registrationrequest/secured/AuthorizationResponse.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt index e8339d3a..962b5a13 100644 --- a/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt +++ b/agrirouter-sdk-java-api/src/main/kotlin/com/dke/data/agrirouter/api/dto/registrationrequest/secured/AuthorizationResponse.kt @@ -13,6 +13,7 @@ class AuthorizationResponse { /** * Returns true, if an error accoured while generating token serverside */ + @Suppress("unused") fun hasError(): Boolean { return !error.isNullOrBlank() } From e5d762f5d25345203aa2b5bfb1ed8c142c7b4e09 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:41:42 +0100 Subject: [PATCH 20/37] Add suppression annotations for unused elements Several "unused" warnings across the project are addressed by adding @SuppressWarnings("unused") annotations. This change aims to achieve a cleaner and less noisy console during development, making it easier to spot relevant issues. --- .../dke/data/agrirouter/api/exception/RevokingException.java | 1 + .../api/service/messaging/http/DeleteMessageService.java | 1 + .../api/service/messaging/http/ListEndpointsService.java | 1 + .../api/service/messaging/mqtt/DeleteMessageService.java | 1 + .../api/service/messaging/mqtt/ListEndpointsService.java | 1 + .../service/onboard/secured/AuthorizationRequestService.java | 1 + .../agrirouter/convenience/mqtt/client/MqttClientService.java | 1 + .../dke/data/agrirouter/impl/validation/ResponseValidator.java | 2 ++ 8 files changed, 9 insertions(+) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java index 80125363..453ce38a 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/exception/RevokingException.java @@ -12,6 +12,7 @@ public RevokingException(Optional lastError) { this.revokingError = lastError.orElse(null); } + @SuppressWarnings("unused") public RevokingError getRevokingError() { return revokingError; } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java index eba66bfc..4021d8a2 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/DeleteMessageService.java @@ -4,6 +4,7 @@ import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters; +@SuppressWarnings("unused") public interface DeleteMessageService extends MessagingService { /** diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java index f5c21399..749709d3 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/ListEndpointsService.java @@ -4,6 +4,7 @@ import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters; +@SuppressWarnings("unused") public interface ListEndpointsService extends MessagingService { /** diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java index 00599e27..e5a0975e 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/DeleteMessageService.java @@ -4,6 +4,7 @@ import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters; +@SuppressWarnings("unused") public interface DeleteMessageService extends MessagingService { /** diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java index 00562de6..508e91e8 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/ListEndpointsService.java @@ -4,6 +4,7 @@ import com.dke.data.agrirouter.api.messaging.MqttAsyncMessageSendingResult; import com.dke.data.agrirouter.api.service.parameters.ListEndpointsParameters; +@SuppressWarnings("unused") public interface ListEndpointsService extends MessagingService { /** diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java index fe5f8d47..1749d805 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/AuthorizationRequestService.java @@ -10,6 +10,7 @@ /** * Service for the registration request. */ +@SuppressWarnings("unused") public interface AuthorizationRequestService { String getAuthorizationRequestURL(AuthorizationRequestParameters authorizationRequestParameters); diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java index 74abbd17..7991f6fa 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttClientService.java @@ -15,6 +15,7 @@ /** * Service to create a MQTT client using the given onboarding response. */ +@SuppressWarnings("unused") public class MqttClientService extends EnvironmentalService { /** diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java index a36a5675..8efcb10e 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/validation/ResponseValidator.java @@ -18,6 +18,7 @@ public interface ResponseValidator extends HasLogger { * * @param statusCode The current status code. */ + @SuppressWarnings("UnusedReturnValue") default boolean assertStatusCodeIsValid(int statusCode) { getNativeLogger().debug("Validating status code."); getNativeLogger().trace("Status code was '{}'", statusCode); @@ -71,6 +72,7 @@ default boolean assertStatusCodeIsCreated(int statusCode) { * * @param statusCode The current status code. */ + @SuppressWarnings("unused") default boolean assertStatusCodeIsBadRequest(int statusCode) { getNativeLogger().debug("Validating status code."); getNativeLogger().trace("Status code was '{}'", statusCode); From 09498e7612508a1686008e34596283d5c74516f3 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:43:09 +0100 Subject: [PATCH 21/37] Suppress unused warnings across project Added '@SuppressWarnings("unused")' annotations to several classes and interfaces throughout the project. These additions help reduce console noise during development, facilitating easier identification of significant warnings or issues. --- .../service/messaging/http/MessageHeaderQueryService.java | 1 + .../api/service/messaging/http/MessageQueryService.java | 1 + .../api/service/messaging/mqtt/MessageQueryService.java | 1 + .../api/service/onboard/secured/OnboardingService.java | 1 + .../impl/messaging/mqtt/SendMessageServiceImpl.java | 5 +++-- 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java index e134b160..ed68c18f 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageHeaderQueryService.java @@ -6,6 +6,7 @@ import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; +@SuppressWarnings("unused") public interface MessageHeaderQueryService extends MessagingService, MessageDecoder { diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java index edd3388e..00b81c25 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/http/MessageQueryService.java @@ -6,6 +6,7 @@ import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; +@SuppressWarnings("unused") public interface MessageQueryService extends MessagingService, MessageDecoder { diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java index 03b8dd00..86af1c92 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageQueryService.java @@ -6,6 +6,7 @@ import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; +@SuppressWarnings("unused") public interface MessageQueryService extends MessagingService, MessageDecoder { diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java index 6657e968..adf9da12 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/secured/OnboardingService.java @@ -10,6 +10,7 @@ /** * Service for the onboarding process. */ +@SuppressWarnings("unused") public interface OnboardingService { /** 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 b31c257c..9999085a 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 @@ -16,6 +16,7 @@ * Sending messages via MQTT using the given MQTT client. The service itself can not access the * queue because connection handling should not be part of the API. */ +@SuppressWarnings("unused") public class SendMessageServiceImpl extends MqttService implements SendMessageService, MessageBodyCreator { @@ -31,8 +32,8 @@ public SendMessageServiceImpl(IMqttClient mqttClient) { public void send(SendMessageParameters sendMessageParameters) { sendMessageParameters.validate(); try { - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(sendMessageParameters.getOnboardingResponse()) From 31da0bfb0ec8d08239ce21b6a7e1495f36716891 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:46:03 +0100 Subject: [PATCH 22/37] Refactor code for better readability and suppression warnings Added '@SuppressWarnings("unused")' to various classes and interfaces to reduce console clutter during development. The refactor also included switching from explicit to implicit type declaration (using 'var') in the MqttOptionService class for improved code readability. --- .../messaging/mqtt/MessageHeaderQueryService.java | 1 + .../api/service/onboard/OnboardingService.java | 1 + .../convenience/mqtt/client/MqttOptionService.java | 13 +++++++------ .../mqtt/MessageHeaderQueryServiceImpl.java | 1 + 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java index 6c508a0a..6fe0e8f9 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/messaging/mqtt/MessageHeaderQueryService.java @@ -6,6 +6,7 @@ import com.dke.data.agrirouter.api.service.messaging.encoding.MessageDecoder; import com.dke.data.agrirouter.api.service.parameters.MessageQueryParameters; +@SuppressWarnings("unused") public interface MessageHeaderQueryService extends MessagingService, MessageDecoder { diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java index c48b26aa..1647c5d3 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/onboard/OnboardingService.java @@ -10,6 +10,7 @@ /** * Service for the onboarding process. */ +@SuppressWarnings("unused") public interface OnboardingService { /** diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java index 8dc25bf4..fa7a13b8 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java @@ -21,6 +21,7 @@ /** * Creating MQTT options for the MQTT client. */ +@SuppressWarnings("unused") public class MqttOptionService extends EnvironmentalService { private final KeyStoreCreationService keyStoreCreationService = new KeyStoreCreationService(); @@ -42,8 +43,8 @@ public MqttOptionService(Environment environment) { * @return - */ public MqttConnectOptions createMqttConnectOptions(OnboardingResponse onboardingResponse) { - MqttConnectOptions options = new MqttConnectOptions(); - CertificationType certificationType = + var options = new MqttConnectOptions(); + var certificationType = CertificationType.valueOf(onboardingResponse.getAuthentication().getType()); options.setSocketFactory( this.getSocketFactory( @@ -64,8 +65,8 @@ public MqttConnectOptions createMqttConnectOptions(OnboardingResponse onboarding * @return - */ public MqttConnectOptions createMqttConnectOptions(RouterDevice routerDevice) { - MqttConnectOptions options = new MqttConnectOptions(); - CertificationType certificationType = + var options = new MqttConnectOptions(); + var certificationType = CertificationType.valueOf(routerDevice.getAuthentication().getType()); options.setSocketFactory( this.getSocketFactory( @@ -89,7 +90,7 @@ public MqttConnectOptions createMqttConnectOptions(RouterDevice routerDevice) { private SocketFactory getSocketFactory( String certificate, String password, CertificationType certificationType) { try { - KeyManagerFactory kmf = + var kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); if (certificationType == CertificationType.PEM) { kmf.init( @@ -102,7 +103,7 @@ private SocketFactory getSocketFactory( password.toCharArray()); } } - SSLContext context = SSLContext.getInstance(Constants.PROTOCOL); + var context = SSLContext.getInstance(Constants.PROTOCOL); context.init(kmf.getKeyManagers(), null, null); return context.getSocketFactory(); } catch (NoSuchAlgorithmException e) { 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 6ecb0e8f..f7567bac 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 @@ -17,6 +17,7 @@ import org.eclipse.paho.client.mqttv3.IMqttClient; +@SuppressWarnings("unused") public class MessageHeaderQueryServiceImpl extends MqttService implements MessageHeaderQueryService, MessageSender { From 3f2f0055ddd051376fc61e6298d3221a1201dc85 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:46:57 +0100 Subject: [PATCH 23/37] Implement changes in MessageQueryServiceImpl Reduced warning messages by adding '@SuppressWarnings("unused")' on class MessageQueryServiceImpl. Also improved code readability by switching to implicit type declaration using 'var' for MessageQueryParameters. --- .../impl/messaging/mqtt/MessageQueryServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 c53eaa1d..dcea98b8 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 @@ -17,6 +17,7 @@ import java.util.concurrent.CompletableFuture; +@SuppressWarnings("unused") public class MessageQueryServiceImpl extends MqttService implements MessageQueryService, MessageSender, @@ -50,7 +51,7 @@ public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) @Override public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return send(messageQueryParameters); } @@ -58,7 +59,7 @@ public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { @Override public MqttAsyncMessageSendingResult sendMessageToQueryAllAsync( OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return sendAsync(messageQueryParameters); } From 039e11f8a08e5e635841f9bd9c57f0d693973ad9 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:48:19 +0100 Subject: [PATCH 24/37] Refactor CloudOnboardingServiceImpl for less warnings and better readability Added '@SuppressWarnings("unused")' annotation to CloudOnboardingServiceImpl class to reduce warning messages. Further enhanced code readability by adopting 'var' for implicit type declarations, especially for encodedMessage, sendMessageParameters, messageAsJson, and payload. --- .../impl/messaging/mqtt/CloudOnboardingServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 3ce6a995..dba667b6 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 @@ -19,6 +19,7 @@ import java.util.Objects; import java.util.concurrent.CompletableFuture; +@SuppressWarnings("unused") public class CloudOnboardingServiceImpl extends MqttService implements CloudOnboardingService, MessageBodyCreator, MessageEncoder { @@ -38,13 +39,13 @@ public CloudOnboardingServiceImpl(IMqttClient mqttClient) { public String send(CloudOnboardingParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) From 1b90e6f734e7d7e5b171016ef34f267373cfbf4c Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:48:56 +0100 Subject: [PATCH 25/37] Refactor CloudOffboardingServiceImpl for warning reduction and readability Added '@SuppressWarnings("unused")' to suppress unnecessary warnings in the CloudOffboardingServiceImpl class. Also implemented the use of 'var' for a more clear and concise representation of variable types. This helps in both reducing verbosity and enhancing code readability. --- .../impl/messaging/mqtt/CloudOffboardingServiceImpl.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) 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 6dafdc91..58613e41 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 @@ -23,6 +23,7 @@ /** * Service implementation. */ +@SuppressWarnings("unused") public class CloudOffboardingServiceImpl extends MqttService implements CloudOffboardingService, MessageBodyCreator, MessageEncoder { @@ -42,13 +43,13 @@ public CloudOffboardingServiceImpl(IMqttClient mqttClient) { public String send(CloudOffboardingParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) From 85cf6e7923e314ad2f0ca09e98e4d1077a36ad24 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:49:48 +0100 Subject: [PATCH 26/37] Refactor SetSubscriptionServiceImpl and SetCapabilityServiceImpl for readability Added '@SuppressWarnings("unused")' to suppress superfluous warnings in the SetSubscriptionServiceImpl and SetCapabilityServiceImpl classes. Also, shifted to 'var' keyword for declaring variables to enhance readability. These modifications decrease verbosity and improve code comprehension. --- .../impl/messaging/mqtt/SetCapabilityServiceImpl.java | 9 +++++---- .../impl/messaging/mqtt/SetSubscriptionServiceImpl.java | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) 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 2e2ebda8..e533fb90 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 @@ -20,6 +20,7 @@ import java.util.Objects; import java.util.concurrent.CompletableFuture; +@SuppressWarnings("unused") public class SetCapabilityServiceImpl extends MqttService implements SetCapabilityService, MessageSender, MessageEncoder, ResponseValidator { @@ -34,13 +35,13 @@ public SetCapabilityServiceImpl(IMqttClient mqttClient) { public String send(SetCapabilitiesParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) 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 98002798..861606bd 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 @@ -21,6 +21,7 @@ import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; +@SuppressWarnings("unused") public class SetSubscriptionServiceImpl extends MqttService implements SetSubscriptionService, MessageBodyCreator, MessageEncoder, ResponseValidator { private final EncodeMessageService encodeMessageService; @@ -34,13 +35,13 @@ public SetSubscriptionServiceImpl(IMqttClient mqttClient) { public String send(SetSubscriptionParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) From 6075ff4a7983842f524ac8353183e34bf6a0eeca Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:51:22 +0100 Subject: [PATCH 27/37] Refactor ListEndpointsServiceImpl for readability Implemented the '@SuppressWarnings("unused")' annotation and switched to the 'var' keyword for variable declaration in the ListEndpointsServiceImpl class. These changes aim to suppress unneeded warnings and streamline --- .../rest/ListEndpointsServiceImpl.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java index f645a507..9b03f4f1 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java @@ -22,6 +22,7 @@ import java.util.Collections; import java.util.concurrent.CompletableFuture; +@SuppressWarnings("unused") public class ListEndpointsServiceImpl extends EnvironmentalService implements ListEndpointsService, MessageSender, @@ -39,8 +40,8 @@ public ListEndpointsServiceImpl(Environment environment) { @Override public String send(ListEndpointsParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); @@ -51,12 +52,12 @@ public String send(ListEndpointsParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(ListEndpointsParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - final CompletableFuture response = + final var response = this.sendMessageAsync(sendMessageParameters); return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); } @@ -68,7 +69,7 @@ public EncodeMessageService getEncodeMessageService() { @Override public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -78,7 +79,7 @@ public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardin @Override public String sendMessageToListAll(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -89,7 +90,7 @@ public String sendMessageToListAll(OnboardingResponse onboardingResponse) { @Override public HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -100,7 +101,7 @@ public HttpAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( @Override public HttpAsyncMessageSendingResult sendMessageToListAllAsync( OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); From 9b0a8c56f503bcab3003627f3d8268911e627834 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:52:01 +0100 Subject: [PATCH 28/37] Remove unused imports across multiple files Unused imports have been removed from several classes and tests. This cleanup is intended to improve code readability and maintainability by eliminating unnecessary lines of code. --- .../impl/messaging/mqtt/CloudOffboardingServiceImpl.java | 8 +++----- .../impl/messaging/mqtt/CloudOnboardingServiceImpl.java | 1 - .../impl/messaging/mqtt/SetCapabilityServiceImpl.java | 1 - .../impl/messaging/mqtt/SetSubscriptionServiceImpl.java | 8 +++----- .../impl/messaging/rest/ListEndpointsServiceImpl.java | 3 --- .../dke/data/agrirouter/test/helper/ContentReader.java | 2 -- 6 files changed, 6 insertions(+), 17 deletions(-) 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 58613e41..a3c8ca19 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; @@ -11,15 +10,14 @@ 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; import java.util.concurrent.CompletableFuture; -import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; - /** * Service implementation. */ 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 dba667b6..96d2b897 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; 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 e533fb90..ec381a5e 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; 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 861606bd..6e882790 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; @@ -12,15 +11,14 @@ 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 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; import java.util.concurrent.CompletableFuture; -import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; - @SuppressWarnings("unused") public class SetSubscriptionServiceImpl extends MqttService implements SetSubscriptionService, MessageBodyCreator, MessageEncoder, ResponseValidator { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java index 9b03f4f1..3692ed89 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/ListEndpointsServiceImpl.java @@ -1,12 +1,10 @@ package com.dke.data.agrirouter.impl.messaging.rest; import agrirouter.request.payload.account.Endpoints; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; 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.http.ListEndpointsService; @@ -20,7 +18,6 @@ import com.google.protobuf.InvalidProtocolBufferException; import java.util.Collections; -import java.util.concurrent.CompletableFuture; @SuppressWarnings("unused") public class ListEndpointsServiceImpl extends EnvironmentalService diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java index 7569d409..252fffb4 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/helper/ContentReader.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.test.helper; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; -import java.util.Base64; /** * Generic content reader for the testcases. From 69f6216d35ca8c85f3b52751c54b1cd1c695fbc7 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:54:56 +0100 Subject: [PATCH 29/37] Updated code to improve readability and maintainability The code has been revised to use the `var` keyword to enhance code legibility in various Java classes. Additionally, several fields in `AbstractIntegrationTest.java` have been marked as `final` to enhance code immutability and reduce the chance of unexpected mutation. --- .../onboard/AbstractOnboardingService.java | 6 +++--- .../AuthorizationRequestServiceImpl.java | 21 ++++++++----------- .../test/AbstractIntegrationTest.java | 10 ++++----- 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java index 2d25da4d..97231a65 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/AbstractOnboardingService.java @@ -26,7 +26,7 @@ protected OnboardingRequest getOnboardRequest( CertificationType certificationType) { this.getNativeLogger().info("BEGIN | Creating onboard request."); - OnboardingRequest onboardingRequest = new OnboardingRequest(); + var onboardingRequest = new OnboardingRequest(); onboardingRequest.setId(uuid); onboardingRequest.setApplicationId(applicationId); onboardingRequest.setCertificationVersionId(certificationVersionId); @@ -47,7 +47,7 @@ protected OnboardingRequest getOnboardRequest( */ public String generateAuthorizationUrl(AuthorizationRequestParameters parameters) { this.getNativeLogger().info("BEGIN | Generating authorization URL. | '{}'.", parameters); - String securedOnboardingAuthorizationUrl = + var securedOnboardingAuthorizationUrl = this.environment.getSecuredOnboardingAuthorizationUrl( parameters.getApplicationId(), parameters.getResponseType(), @@ -72,7 +72,7 @@ public Optional getOnboardingError(String error) { } private OnboardingError failSafeGsonParsing(String error) { - Gson gson = new Gson(); + var gson = new Gson(); try { return gson.fromJson(error, OnboardingError.class); } catch (Exception e) { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java index 15a425fe..02ea929c 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java @@ -19,6 +19,7 @@ import java.net.URI; import java.net.URL; import java.net.URLDecoder; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Base64; import java.util.HashMap; @@ -68,27 +69,23 @@ public String getAuthorizationRequestURL( */ @Override public AuthorizationResponseToken decodeToken(String token) { - byte[] decodedBytes = Base64.getDecoder().decode(token); - String decodedToken = new String(decodedBytes); + var decodedBytes = Base64.getDecoder().decode(token); + var decodedToken = new String(decodedBytes); return new Gson().fromJson(decodedToken, AuthorizationResponseToken.class); } @NotNull public AuthorizationResponse extractAuthorizationResponseFromQuery(String query) { - String[] queryParams = query.split("&"); + var queryParams = query.split("&"); Map authorizationResults = new HashMap<>(); Arrays.stream(queryParams) .forEach( s -> { - String[] keyValuePair = s.split("="); - try { - authorizationResults.put( - keyValuePair[0], URLDecoder.decode(keyValuePair[1], "UTF-8")); - } catch (UnsupportedEncodingException e) { - // NOP - } + var keyValuePair = s.split("="); + authorizationResults.put( + keyValuePair[0], URLDecoder.decode(keyValuePair[1], StandardCharsets.UTF_8)); }); - AuthorizationResponse authorizationResponse = new AuthorizationResponse(); + var authorizationResponse = new AuthorizationResponse(); if (authorizationResults.containsKey(SIGNATURE_KEY)) { authorizationResponse.setSignature(authorizationResults.get(SIGNATURE_KEY)); } @@ -105,7 +102,7 @@ public AuthorizationResponse extractAuthorizationResponse(URL redirectPageUrl) { public AuthorizationResponse extractAuthorizationResults(String redirectPageUrl) throws MalformedURLException { - URL url = URI.create(redirectPageUrl).toURL(); + var url = URI.create(redirectPageUrl).toURL(); return extractAuthorizationResponse(url); } 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 d97788d5..70073b15 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 @@ -13,9 +13,9 @@ public abstract class AbstractIntegrationTest { * Since there are multiple problems with the stability of the QA env we define dedicated * constants for message fetching. */ - protected int MAX_TRIES_BEFORE_FAILURE = 10; + protected final int MAX_TRIES_BEFORE_FAILURE = 10; - protected long DEFAULT_INTERVAL = 5000; + protected final long DEFAULT_INTERVAL = 5000; /** * Wait for the AR to process the messages. Since the QA has some stability problems, we will wait @@ -40,7 +40,7 @@ protected void waitForTheAgrirouterToProcessMultipleMessages() throws Interrupte /** * Communication unit for integration testing. */ - protected Application communicationUnit = + protected final Application communicationUnit = new Application() { @Override public String getApplicationId() { @@ -56,7 +56,7 @@ public String getCertificationVersionId() { /** * Farming software for integration testing. */ - protected Application farmingSoftware = + protected final Application farmingSoftware = new Application() { @Override @@ -118,7 +118,7 @@ public String getPublicKey() { /** * Farming software for integration testing. */ - protected Application telemetryPlatform = + protected final Application telemetryPlatform = new Application() { @Override From 477935ad1e716ec13b4cea1ae2823804ffa5810d Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:56:08 +0100 Subject: [PATCH 30/37] Refactor codebase to use 'var' keyword for better readability The code updates involve the use of 'var' keyword to declare local variables in multiple Java files. This change increases the readability of the code and ensures type inference for local variables, reducing unnecessary verbosity. Furthermore, fields in `AbstractIntegrationTest.java` were finalized to limit mutation. --- .../data/agrirouter/api/env/Environment.java | 2 +- .../agrirouter/api/service/HasLogger.java | 2 +- .../api/service/ParameterValidation.java | 2 +- ...DecodeCloudOnboardingResponsesService.java | 8 +- .../data/agrirouter/impl/RequestFactory.java | 13 +- .../agrirouter/impl/SignatureService.java | 8 +- .../impl/common/UtcTimeService.java | 10 +- .../signing/SecurityKeyCreationService.java | 16 +- .../impl/messaging/MessageBodyCreator.java | 6 +- .../impl/messaging/MessageEncoder.java | 106 ++++++------ .../impl/messaging/SequenceNumberService.java | 2 +- .../encoding/DecodeMessageServiceImpl.java | 14 +- .../DecodePushNotificationServiceImpl.java | 2 +- .../encoding/EncodeMessageServiceImpl.java | 38 ++--- .../DeleteAllMessagesParameterCreator.java | 2 +- .../helper/MessageQueryHelperService.java | 12 +- .../QueryAllMessagesParameterCreator.java | 2 +- .../mqtt/MessageQueryHelperService.java | 8 +- .../mqtt/DeleteMessageServiceImpl.java | 12 +- .../mqtt/ListEndpointsServiceImpl.java | 16 +- .../mqtt/MessageConfirmationServiceImpl.java | 8 +- .../rest/CloudOffboardingServiceImpl.java | 12 +- .../rest/CloudOnboardingServiceImpl.java | 12 +- .../rest/DeleteMessageServiceImpl.java | 16 +- .../rest/FetchMessageServiceImpl.java | 12 +- .../rest/MessageConfirmationServiceImpl.java | 12 +- .../impl/messaging/rest/MessageFetcher.java | 6 +- .../rest/MessageHeaderQueryServiceImpl.java | 4 +- .../rest/MessageQueryServiceImpl.java | 4 +- .../impl/messaging/rest/MessageSender.java | 2 +- .../rest/SendMessageServiceImpl.java | 2 +- .../rest/SetCapabilityServiceImpl.java | 10 +- .../rest/SetSubscriptionServiceImpl.java | 10 +- .../impl/onboard/OnboardingServiceImpl.java | 8 +- .../secured/OnboardingServiceImpl.java | 24 +-- .../impl/revoke/RevokingServiceImpl.java | 16 +- .../PrivateKeyCreationServiceTest.java | 43 ++--- .../ssl/KeyStoreCreationServiceTest.java | 42 ++--- .../messaging/SequenceNumberServiceTest.java | 12 +- .../DecodeMessageServiceImplTest.java | 6 +- ...DecodePushNotificationServiceImplTest.java | 6 +- .../EncodeMessageServiceImplTest.java | 66 ++++---- .../test/AbstractIntegrationTest.java | 156 +++++++++--------- .../dke/data/agrirouter/test/Assertions.java | 2 +- .../test/OnboardingResponseRepository.java | 8 +- .../rest/CancellationTokenPollingTest.java | 8 +- .../rest/CloudOffboardingServiceTest.java | 30 ++-- .../rest/CloudOnboardingServiceTest.java | 30 ++-- .../HealthCheckForEndpointsByPollingTest.java | 10 +- .../rest/SendChunkedMessageTest.java | 18 +- .../rest/SetCapabilityServiceTest.java | 28 ++-- .../rest/SetSubscriptionServiceTest.java | 28 ++-- .../AuthorizationRequestServiceTest.java | 10 +- .../OnboardingWithErrorMessageTest.java | 4 +- .../SecuredOnboardingServiceTest.java | 10 +- .../SendAndReceiveChunkedMessagesTest.java | 54 +++--- 56 files changed, 508 insertions(+), 502 deletions(-) diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java index 80d79e87..1c5b610f 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Environment.java @@ -30,7 +30,7 @@ public interface Environment { * @return - */ static boolean httpRequestLoggingEnabled() { - final String httpRequestLoggingEnabled = System.getProperty(ENABLE_HTTP_REQUEST_LOGGING); + final var httpRequestLoggingEnabled = System.getProperty(ENABLE_HTTP_REQUEST_LOGGING); return BooleanUtils.toBoolean(httpRequestLoggingEnabled); } diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java index 45e7b2e5..fc57875e 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/HasLogger.java @@ -38,7 +38,7 @@ public interface HasLogger { */ default Logger getNativeLogger() { if (null == loggerCache.get(this.getClass().getName())) { - final Logger logger = LoggerFactory.getLogger(this.getClass()); + final var logger = LoggerFactory.getLogger(this.getClass()); loggerCache.put(this.getClass().getName(), logger); } return loggerCache.get(this.getClass().getName()); diff --git a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java index 089d4e36..7dd39827 100644 --- a/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/service/ParameterValidation.java @@ -44,7 +44,7 @@ default void businessValidation() { * @param message - */ default void rise(String message, String... parameterNames) { - final String joinedParametersNames = String.join(",", parameterNames); + final var joinedParametersNames = String.join(",", parameterNames); throw new IllegalParameterDefinitionException( String.format( "At least one of the following parameters has to be defined [%s] was not defined correctly, please check the values. '%s'.", diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java index 2b46de93..5849e9e4 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java @@ -40,13 +40,13 @@ public DecodeCloudOnboardingResponsesService() { public List decode( List fetchMessageResponses, OnboardingResponse onboardingResponse) { List responses = new ArrayList<>(); - DecodeMessageResponse decodedMessageQueryResponse = + var decodedMessageQueryResponse = this.decodeMessageService.decode(fetchMessageResponses.get(0).getCommand().getMessage()); try { this.assertStatusCodeIsValid( decodedMessageQueryResponse.getResponseEnvelope().getResponseCode()); } catch (Exception e) { - MessageOuterClass.Messages message = + var message = this.decodeMessageService.decode( decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails()); throw new CouldNotOnboardVirtualCommunicationUnitException( @@ -56,14 +56,14 @@ public List decode( == Response.ResponseEnvelope.ResponseBodyType.CLOUD_REGISTRATIONS && this.assertStatusCodeIsCreated( decodedMessageQueryResponse.getResponseEnvelope().getResponseCode())) { - CloudVirtualizedAppRegistration.OnboardingResponse cloudOnboardingResponse = + var cloudOnboardingResponse = this.decode( decodedMessageQueryResponse.getResponsePayloadWrapper().getDetails().getValue()); cloudOnboardingResponse .getOnboardedEndpointsList() .forEach( endpointRegistrationDetails -> { - OnboardingResponse internalOnboardingResponse = new OnboardingResponse(); + var internalOnboardingResponse = new OnboardingResponse(); internalOnboardingResponse.setSensorAlternateId( endpointRegistrationDetails.getSensorAlternateId()); internalOnboardingResponse.setCapabilityAlternateId( diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index f450642f..1b090022 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java @@ -84,14 +84,11 @@ private static KeyStore createKeyStore( String x509Certificate, String password, CertificationType certificationType) { var keyStoreCreationService = new KeyStoreCreationService(); try { - switch (certificationType) { - case PEM: - return keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); - case P12: - return keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); - default: - throw new CertificationTypeNotSupportedException(certificationType); - } + return switch (certificationType) { + case PEM -> keyStoreCreationService.createAndReturnKeystoreFromPEM(x509Certificate, password); + case P12 -> keyStoreCreationService.createAndReturnKeystoreFromP12(x509Certificate, password); + default -> throw new CertificationTypeNotSupportedException(certificationType); + }; } catch (Exception e) { throw new CouldNotCreateDynamicKeyStoreException(e); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java index 6d730d24..5249dc10 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/SignatureService.java @@ -20,8 +20,8 @@ public interface SignatureService { default byte[] createSignature(String requestBody, String privateKey) { try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + var securityKeyCreationService = new SecurityKeyCreationService(); + var signature = Signature.getInstance(SIGNATURE_ALGORITHM); signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); signature.update(requestBody.getBytes(UTF_8)); return signature.sign(); @@ -32,8 +32,8 @@ default byte[] createSignature(String requestBody, String privateKey) { default void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + var securityKeyCreationService = new SecurityKeyCreationService(); + var signature = Signature.getInstance(SIGNATURE_ALGORITHM); signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); signature.update(requestBody.getBytes(UTF_8)); if (!signature.verify(signedBytes)) { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java index 0bb35068..547eb85e 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java @@ -44,9 +44,9 @@ public static OffsetDateTime max() { } public static String offset() { - Optional currentTimeZone = timeZone(); + var currentTimeZone = timeZone(); if (currentTimeZone.isPresent()) { - ZonedDateTime zdt = Instant.now().atZone(ZoneId.of(currentTimeZone.get())); + var zdt = Instant.now().atZone(ZoneId.of(currentTimeZone.get())); return zdt.getOffset().getId().replaceAll("Z", "+00:00"); } else { throw new CouldNotFindTimeZoneException(); @@ -54,13 +54,13 @@ public static String offset() { } private static Optional timeZone() { - Calendar calendar = Calendar.getInstance(); + var calendar = Calendar.getInstance(); long zoneOffset = calendar.get(Calendar.ZONE_OFFSET); - String[] ids = TimeZone.getAvailableIDs(); + var ids = TimeZone.getAvailableIDs(); return Arrays.stream(ids) .filter( (id) -> { - TimeZone tz = TimeZone.getTimeZone(id); + var tz = TimeZone.getTimeZone(id); return tz.getRawOffset() == zoneOffset; }) .findFirst(); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java index 4792e9c5..571863fe 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/signing/SecurityKeyCreationService.java @@ -21,16 +21,16 @@ public PrivateKey createPrivateKey(String privateKey) { PrivateKey result; try { this.getNativeLogger().trace("Replacing comments within file."); - String pkcs8Pem = privateKey.replace("-----BEGIN PRIVATE KEY-----", ""); + var pkcs8Pem = privateKey.replace("-----BEGIN PRIVATE KEY-----", ""); pkcs8Pem = pkcs8Pem.replace("-----END PRIVATE KEY-----", ""); pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); this.getNativeLogger().trace("Decode base 64 values."); - byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); + var pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); this.getNativeLogger().trace("Generate private key."); - PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + var keySpec = new PKCS8EncodedKeySpec(pkcs8EncodedBytes); + var keyFactory = KeyFactory.getInstance("RSA"); result = keyFactory.generatePrivate(keySpec); } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { throw new CouldNotCreatePrivateKeyException(e); @@ -46,16 +46,16 @@ public PublicKey createPublicKey(String publicKey) { PublicKey result; try { this.getNativeLogger().trace("Replacing comments within file."); - String pkcs8Pem = publicKey.replace("-----BEGIN PUBLIC KEY-----", ""); + var pkcs8Pem = publicKey.replace("-----BEGIN PUBLIC KEY-----", ""); pkcs8Pem = pkcs8Pem.replace("-----END PUBLIC KEY-----", ""); pkcs8Pem = pkcs8Pem.replaceAll("\\s+", ""); this.getNativeLogger().trace("Decode base 64 values."); - byte[] pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); + var pkcs8EncodedBytes = Base64.getDecoder().decode(pkcs8Pem); this.getNativeLogger().trace("Generate public key."); - X509EncodedKeySpec keySpec = new X509EncodedKeySpec(pkcs8EncodedBytes); - KeyFactory keyFactory = KeyFactory.getInstance("RSA"); + var keySpec = new X509EncodedKeySpec(pkcs8EncodedBytes); + var keyFactory = KeyFactory.getInstance("RSA"); result = keyFactory.generatePublic(keySpec); } catch (IllegalArgumentException | InvalidKeySpecException | NoSuchAlgorithmException e) { throw new CouldNotCreatePublicKeyException(e); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java index b8b4f411..858cbcaf 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/MessageBodyCreator.java @@ -15,14 +15,14 @@ public interface MessageBodyCreator { default String createMessageBody(SendMessageParameters parameters) { parameters.validate(); - GsonBuilder gsonBuilder = new GsonBuilder(); + var gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(Message.class, new MessageTypeAdapter()); return gsonBuilder.create().toJson(this.createSendMessageRequest(parameters)); } default SendMessageRequest createSendMessageRequest(SendMessageParameters parameters) { parameters.validate(); - SendMessageRequest sendMessageRequest = new SendMessageRequest(); + var sendMessageRequest = new SendMessageRequest(); sendMessageRequest.setSensorAlternateId( Objects.requireNonNull(parameters.getOnboardingResponse()).getSensorAlternateId()); sendMessageRequest.setCapabilityAlternateId( @@ -31,7 +31,7 @@ default SendMessageRequest createSendMessageRequest(SendMessageParameters parame Objects.requireNonNull(parameters.getEncodedMessages()) .forEach( messageToSend -> { - Message message = new Message(); + var message = new Message(); message.setMessage(messageToSend); message.setTimestamp("" + UtcTimeService.now().toEpochSecond()); messages.add(message); 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 adf1ab0f..ed034713 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 @@ -28,15 +28,15 @@ public interface MessageEncoder extends HasLogger { * @return - */ default EncodedMessage encode(DeleteMessageParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -49,7 +49,7 @@ default EncodedMessage encode(DeleteMessageParameters parameters) { messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - FeedRequests.MessageDelete.Builder messageContent = FeedRequests.MessageDelete.newBuilder(); + var messageContent = FeedRequests.MessageDelete.newBuilder(); if (parameters.getMessageIds() != null) { messageContent.addAllMessageIds(parameters.getMessageIds()); } @@ -57,7 +57,7 @@ default EncodedMessage encode(DeleteMessageParameters parameters) { messageContent.addAllSenders(parameters.getSenderIds()); } if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { - FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); + var validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); if (null != parameters.getSentFromInSeconds()) { validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); } @@ -67,11 +67,11 @@ default EncodedMessage encode(DeleteMessageParameters parameters) { messageContent.setValidityPeriod(validityPeriod); } - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_DELETE.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } @@ -83,16 +83,16 @@ default EncodedMessage encode(DeleteMessageParameters parameters) { * @return - */ default EncodedMessage encode(ListEndpointsParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -108,16 +108,16 @@ default EncodedMessage encode(ListEndpointsParameters parameters) { } messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - Endpoints.ListEndpointsQuery.Builder messageContent = Endpoints.ListEndpointsQuery.newBuilder(); + var messageContent = Endpoints.ListEndpointsQuery.newBuilder(); messageContent.setDirection(Objects.requireNonNull(parameters.getDirection())); messageContent.setTechnicalMessageType( Objects.requireNonNull(parameters.getTechnicalMessageType()).getKey()); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_LIST_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); @@ -130,9 +130,9 @@ default EncodedMessage encode(ListEndpointsParameters parameters) { * @return - */ default EncodedMessage encode(MessageConfirmationParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); @@ -140,7 +140,7 @@ default EncodedMessage encode(MessageConfirmationParameters parameters) { messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -151,14 +151,14 @@ default EncodedMessage encode(MessageConfirmationParameters parameters) { messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_FEED_CONFIRM); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - FeedRequests.MessageConfirm.Builder messageContent = FeedRequests.MessageConfirm.newBuilder(); + var messageContent = FeedRequests.MessageConfirm.newBuilder(); messageContent.addAllMessageIds(Objects.requireNonNull(parameters.getMessageIds())); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_FEED_CONFIRM.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } @@ -170,9 +170,9 @@ default EncodedMessage encode(MessageConfirmationParameters parameters) { * @return - */ default EncodedMessage encode(SetCapabilitiesParameters parameters) { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); @@ -180,7 +180,7 @@ default EncodedMessage encode(SetCapabilitiesParameters parameters) { messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -191,7 +191,7 @@ default EncodedMessage encode(SetCapabilitiesParameters parameters) { messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - Capabilities.CapabilitySpecification.Builder builder = + var builder = Capabilities.CapabilitySpecification.newBuilder(); builder.setAppCertificationId(Objects.requireNonNull(parameters.getApplicationId())); builder.setAppCertificationVersionId( @@ -202,21 +202,21 @@ default EncodedMessage encode(SetCapabilitiesParameters parameters) { Objects.requireNonNull(parameters.getCapabilitiesParameters()) .forEach( p -> { - Capabilities.CapabilitySpecification.Capability.Builder capabilityBuilder = + var capabilityBuilder = Capabilities.CapabilitySpecification.Capability.newBuilder(); capabilityBuilder.setTechnicalMessageType( Objects.requireNonNull(p.getTechnicalMessageType()).getKey()); capabilityBuilder.setDirection(Objects.requireNonNull(p.getDirection())); - Capabilities.CapabilitySpecification.Capability capability = + var capability = capabilityBuilder.build(); builder.addCapabilities(capability); }); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_CAPABILITIES.getTypeUrl()); payloadParameters.setValue(builder.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } @@ -255,9 +255,9 @@ default EncodedMessage encodeMessage(SetSubscriptionParameters parameters) { */ default EncodedMessage encode(SetSubscriptionParameters parameters) { assert parameters.getOnboardingResponse() != null; - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); @@ -265,7 +265,7 @@ default EncodedMessage encode(SetSubscriptionParameters parameters) { messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -276,13 +276,13 @@ default EncodedMessage encode(SetSubscriptionParameters parameters) { messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_SUBSCRIPTION); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - SubscriptionOuterClass.Subscription.Builder messageContent = + var messageContent = SubscriptionOuterClass.Subscription.newBuilder(); parameters .getSubscriptions() .forEach( parameter -> { - SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.Builder + var technicalMessageType = SubscriptionOuterClass.Subscription.MessageTypeSubscriptionItem.newBuilder(); technicalMessageType.setTechnicalMessageType( @@ -292,11 +292,11 @@ default EncodedMessage encode(SetSubscriptionParameters parameters) { messageContent.addTechnicalMessageTypes(technicalMessageType); }); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_SUBSCRIPTION.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } @@ -311,9 +311,9 @@ default EncodedMessage encode( TechnicalMessageType technicalMessageType, MessageQueryParameters parameters) { this.logMethodBegin(parameters); this.getNativeLogger().trace("Build message header parameters."); - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); @@ -321,7 +321,7 @@ default EncodedMessage encode( messageHeaderParameters.setApplicationMessageId(Objects.requireNonNull(applicationMessageID)); messageHeaderParameters.setMetadata(MessageOuterClass.Metadata.newBuilder().build()); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); messageHeaderParameters.setTeamSetContextId(Objects.requireNonNull(teamsetContextId)); @@ -333,7 +333,7 @@ default EncodedMessage encode( messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); this.getNativeLogger().trace("Build message query parameters."); - FeedRequests.MessageQuery.Builder messageContent = FeedRequests.MessageQuery.newBuilder(); + var messageContent = FeedRequests.MessageQuery.newBuilder(); if (parameters.getMessageIds() != null) { messageContent.addAllMessageIds(parameters.getMessageIds()); } @@ -341,7 +341,7 @@ default EncodedMessage encode( messageContent.addAllSenders(parameters.getSenderIds()); } if (null != parameters.getSentFromInSeconds() || null != parameters.getSentToInSeconds()) { - FeedRequests.ValidityPeriod.Builder validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); + var validityPeriod = FeedRequests.ValidityPeriod.newBuilder(); if (null != parameters.getSentFromInSeconds()) { validityPeriod.setSentFrom(new TimestampUtil().seconds(parameters.getSentFromInSeconds())); } @@ -352,12 +352,12 @@ default EncodedMessage encode( } this.getNativeLogger().trace("Build message payload parameters."); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(technicalMessageType.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); this.getNativeLogger().trace("Encode message."); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); this.logMethodEnd(encodedMessage); @@ -371,15 +371,15 @@ default EncodedMessage encode( * @return - */ default EncodedMessage encode(CloudOnboardingParameters parameters) { - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); - final String teamsetContextId = + final var teamsetContextId = parameters.getTeamsetContextId() == null ? "" : parameters.getTeamsetContextId(); - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); messageHeaderParameters.setApplicationMessageId(applicationMessageID); messageHeaderParameters.setTeamSetContextId(teamsetContextId); @@ -391,12 +391,12 @@ default EncodedMessage encode(CloudOnboardingParameters parameters) { messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); - CloudVirtualizedAppRegistration.OnboardingRequest.Builder messageContent = + var messageContent = CloudVirtualizedAppRegistration.OnboardingRequest.newBuilder(); Objects.requireNonNull(parameters.getEndpointDetails()) .forEach( p -> { - CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails.Builder + var builder = CloudVirtualizedAppRegistration.OnboardingRequest.EndpointRegistrationDetails .newBuilder(); @@ -405,11 +405,11 @@ default EncodedMessage encode(CloudOnboardingParameters parameters) { messageContent.addOnboardingRequests(builder.build()); }); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_ONBOARD_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } @@ -421,16 +421,16 @@ default EncodedMessage encode(CloudOnboardingParameters parameters) { * @return - */ default EncodedMessage encode(CloudOffboardingParameters parameters) { - final String applicationMessageID = + final var applicationMessageID = parameters.getApplicationMessageId() == null ? MessageIdService.generateMessageId() : parameters.getApplicationMessageId(); - CloudVirtualizedAppRegistration.OffboardingRequest.Builder messageContent = + var messageContent = CloudVirtualizedAppRegistration.OffboardingRequest.newBuilder(); messageContent.addAllEndpoints(Objects.requireNonNull(parameters.getEndpointIds())); - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); messageHeaderParameters.setApplicationMessageId(applicationMessageID); messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS); messageHeaderParameters.setMode(Request.RequestEnvelope.Mode.DIRECT); @@ -440,12 +440,12 @@ default EncodedMessage encode(CloudOffboardingParameters parameters) { messageHeaderParameters, parameters.getSequenceNumber(), parameters.getOnboardingResponse()); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl(SystemMessageType.DKE_CLOUD_OFFBOARD_ENDPOINTS.getTypeUrl()); payloadParameters.setValue(messageContent.build().toByteString()); - String encodedMessage = + var encodedMessage = this.getEncodeMessageService().encode(messageHeaderParameters, payloadParameters); return new EncodedMessage(applicationMessageID, encodedMessage); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java index 7a3db3c5..27919aed 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberService.java @@ -23,7 +23,7 @@ public class SequenceNumberService { public static synchronized long generateSequenceNumberForEndpoint( OnboardingResponse onboardingResponse) { sequenceNumbersForEndpoints.putIfAbsent(onboardingResponse.getSensorAlternateId(), 1L); - Long currentSequenceNumber = + var currentSequenceNumber = sequenceNumbersForEndpoints.get(onboardingResponse.getSensorAlternateId()); sequenceNumbersForEndpoints.put( onboardingResponse.getSensorAlternateId(), currentSequenceNumber + 1); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java index 1534a5b8..74e6b166 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImpl.java @@ -30,17 +30,17 @@ public DecodeMessageResponse decode(String encodedResponse) { try { this.getNativeLogger().trace("Decoding byte array."); - byte[] decodedBytes = Base64.getDecoder().decode(encodedResponse); - ByteArrayInputStream inputStream = new ByteArrayInputStream(decodedBytes); + var decodedBytes = Base64.getDecoder().decode(encodedResponse); + var inputStream = new ByteArrayInputStream(decodedBytes); this.getNativeLogger().trace("Parse response envelope."); - agrirouter.response.Response.ResponseEnvelope responseEnvelope = + var responseEnvelope = agrirouter.response.Response.ResponseEnvelope.parseDelimitedFrom(inputStream); this.getNativeLogger().trace("Parse response payload wrapper."); - agrirouter.response.Response.ResponsePayloadWrapper responsePayloadWrapper = + var responsePayloadWrapper = agrirouter.response.Response.ResponsePayloadWrapper.parseDelimitedFrom(inputStream); - DecodeMessageResponse decodeMessageResponse = new DecodeMessageResponse(); + var decodeMessageResponse = new DecodeMessageResponse(); decodeMessageResponse.setResponseEnvelope(responseEnvelope); decodeMessageResponse.setResponsePayloadWrapper(responsePayloadWrapper); @@ -57,7 +57,7 @@ public MessageOuterClass.Message decode(ByteString message) { this.logMethodBegin(message); this.getNativeLogger().trace("Decoding byte string."); - MessageOuterClass.Message decodedMessage = MessageOuterClass.Message.parseFrom(message); + var decodedMessage = MessageOuterClass.Message.parseFrom(message); this.logMethodEnd(decodedMessage); return decodedMessage; @@ -70,7 +70,7 @@ public MessageOuterClass.Message decode(ByteString message) { public MessageOuterClass.Messages decode(Any any) { try { this.logMethodBegin(any); - MessageOuterClass.Messages messages = + var messages = any.unpack(agrirouter.commons.MessageOuterClass.Messages.class); this.logMethodEnd(); return messages; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java index 07fc944f..6c487173 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java @@ -26,7 +26,7 @@ public PushNotificationOuterClass.PushNotification decode(String encodedResponse throw new IllegalArgumentException("Please provide a valid encoded response."); } try { - DecodeMessageResponse decodedMessagesResponse = + var decodedMessagesResponse = this.decodeMessageService.decode(encodedResponse); if (decodedMessagesResponse.getResponseEnvelope().getType() == Response.ResponseEnvelope.ResponseBodyType.PUSH_NOTIFICATION) { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java index b74d35f9..7fb36229 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImpl.java @@ -50,7 +50,7 @@ public String encode( messageHeaderParameters.validate(); payloadParameters.validate(); - try (ByteArrayOutputStream streamedMessage = new ByteArrayOutputStream()) { + try (var streamedMessage = new ByteArrayOutputStream()) { getNativeLogger().trace("Encode header."); header(messageHeaderParameters).writeDelimitedTo(streamedMessage); @@ -59,7 +59,7 @@ public String encode( payload(payloadParameters).writeDelimitedTo(streamedMessage); getNativeLogger().trace("Encoding message."); - String encodedMessage = Base64.getEncoder().encodeToString(streamedMessage.toByteArray()); + var encodedMessage = Base64.getEncoder().encodeToString(streamedMessage.toByteArray()); logMethodEnd(encodedMessage); return encodedMessage; @@ -115,29 +115,29 @@ public List chunkAndBase64EncodeEachChunk( .debug( "The message should be chunked, current size of the payload ({}) is above the limitation.", payloadParameters.getValue().toStringUtf8().length()); - byte[] wholeMessage = payloadParameters.getValue().toByteArray(); - final List messageChunks = splitIntoChunks(wholeMessage); + var wholeMessage = payloadParameters.getValue().toByteArray(); + final var messageChunks = splitIntoChunks(wholeMessage); List tuples = new ArrayList<>(); - AtomicInteger chunkNr = new AtomicInteger(1); - final String chunkContextId = ChunkContextIdService.generateChunkContextId(); + var chunkNr = new AtomicInteger(1); + final var chunkContextId = ChunkContextIdService.generateChunkContextId(); messageChunks.forEach( chunk -> { - final String messageIdForChunk = MessageIdService.generateMessageId(); - final long sequenceNumberForChunk = + final var messageIdForChunk = MessageIdService.generateMessageId(); + final var sequenceNumberForChunk = SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse); - final MessageHeaderParameters header = new MessageHeaderParameters(); + final var header = new MessageHeaderParameters(); header.copy(messageHeaderParameters); header.setApplicationMessageId(messageIdForChunk); header.setApplicationMessageSeqNo(sequenceNumberForChunk); - Chunk.ChunkComponent.Builder chunkInfo = Chunk.ChunkComponent.newBuilder(); + var chunkInfo = Chunk.ChunkComponent.newBuilder(); chunkInfo.setContextId(chunkContextId); chunkInfo.setCurrent(chunkNr.getAndIncrement()); chunkInfo.setTotal(messageChunks.size()); chunkInfo.setTotalSize(wholeMessage.length); header.setChunkInfo(chunkInfo.build()); - final PayloadParameters payload = new PayloadParameters(); + final var payload = new PayloadParameters(); payload.copyFrom(payloadParameters); payload.setValue(ByteString.copyFromUtf8(Base64.getEncoder().encodeToString(chunk))); @@ -152,7 +152,7 @@ public List chunkAndBase64EncodeEachChunk( messageHeaderParameters.getTechnicalMessageType().getKey()); getNativeLogger() .debug("The content is encoded, since in other cases the content is encoded as well."); - final PayloadParameters payload = new PayloadParameters(); + final var payload = new PayloadParameters(); payload.copyFrom(payloadParameters); payload.setValue( ByteString.copyFromUtf8( @@ -176,9 +176,9 @@ public List chunkAndBase64EncodeEachChunk( private List splitIntoChunks(byte[] wholeMessage) { List chunks = new ArrayList<>(); - byte[] remainingBytes = wholeMessage; + var remainingBytes = wholeMessage; do { - final byte[] chunk = + final var chunk = Arrays.copyOfRange(remainingBytes, 0, MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT); chunks.add(chunk); remainingBytes = @@ -195,7 +195,7 @@ private Request.RequestEnvelope header(MessageHeaderParameters parameters) { logMethodBegin(parameters); getNativeLogger().trace("Create message header."); - agrirouter.request.Request.RequestEnvelope.Builder messageHeader = + var messageHeader = Request.RequestEnvelope.newBuilder(); messageHeader.setApplicationMessageId(parameters.getApplicationMessageId()); messageHeader.setApplicationMessageSeqNo(parameters.getApplicationMessageSeqNo()); @@ -216,7 +216,7 @@ private Request.RequestEnvelope header(MessageHeaderParameters parameters) { messageHeader.setTimestamp(new TimestampUtil().current()); getNativeLogger().trace("Build message envelope."); - Request.RequestEnvelope requestEnvelope = messageHeader.build(); + var requestEnvelope = messageHeader.build(); logMethodEnd(requestEnvelope); return requestEnvelope; @@ -226,15 +226,15 @@ private Request.RequestPayloadWrapper payload(PayloadParameters parameters) { logMethodBegin(parameters); getNativeLogger().trace("Create message payload."); - Request.RequestPayloadWrapper.Builder messagePayload = + var messagePayload = Request.RequestPayloadWrapper.newBuilder(); - Any.Builder builder = Any.newBuilder(); + var builder = Any.newBuilder(); builder.setTypeUrl(parameters.getTypeUrl()); builder.setValue(parameters.getValue()); messagePayload.setDetails(builder.build()); getNativeLogger().trace("Message message payload wrapper."); - Request.RequestPayloadWrapper requestPayloadWrapper = messagePayload.build(); + var requestPayloadWrapper = messagePayload.build(); logMethodEnd(requestPayloadWrapper); return requestPayloadWrapper; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java index a02ce0ea..a9f9c98d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/DeleteAllMessagesParameterCreator.java @@ -21,7 +21,7 @@ public interface DeleteAllMessagesParameterCreator { @NotNull default DeleteMessageParameters createMessageParametersToDeleteAllMessages( OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); + final var deleteMessageParameters = new DeleteMessageParameters(); deleteMessageParameters.setOnboardingResponse(onboardingResponse); deleteMessageParameters.setMessageIds(Collections.emptyList()); deleteMessageParameters.setSenderIds(Collections.emptyList()); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java index 3250838d..86bdf41c 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java @@ -36,16 +36,16 @@ public String send(MessageQueryParameters parameters) { parameters.validate(); this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); + var encodedMessageResponse = this.encode(this.technicalMessageType, parameters); this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessageResponse.getEncodedMessage())); this.getNativeLogger().trace("Send and fetch message response."); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.getNativeLogger().trace("Validate message response."); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); @@ -61,16 +61,16 @@ public HttpAsyncMessageSendingResult sendAsync(MessageQueryParameters parameters parameters.validate(); this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessageResponse = this.encode(this.technicalMessageType, parameters); + var encodedMessageResponse = this.encode(this.technicalMessageType, parameters); this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessageResponse.getEncodedMessage())); this.getNativeLogger().trace("Send and fetch message response."); - CompletableFuture response = + var response = this.sendMessageAsync(sendMessageParameters); this.logMethodEnd(); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java index 2ef520b0..b88e375f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/QueryAllMessagesParameterCreator.java @@ -21,7 +21,7 @@ public interface QueryAllMessagesParameterCreator { @NotNull default MessageQueryParameters createMessageParametersToQueryAll( OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); + var messageQueryParameters = new MessageQueryParameters(); messageQueryParameters.setOnboardingResponse(onboardingResponse); messageQueryParameters.setMessageIds(Collections.emptyList()); messageQueryParameters.setSenderIds(Collections.emptyList()); 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 7be87413..100c8601 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 @@ -41,17 +41,17 @@ public String send(MessageQueryParameters parameters) { parameters.validate(); try { this.getNativeLogger().trace("Encode message."); - EncodedMessage encodedMessage = this.encode(this.technicalMessageType, parameters); + var encodedMessage = this.encode(this.technicalMessageType, parameters); this.getNativeLogger().trace("Build message parameters."); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); this.getNativeLogger().trace("Send and fetch message response."); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) 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 d2edd0a0..87f81e7e 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 @@ -37,13 +37,13 @@ public DeleteMessageServiceImpl(IMqttClient mqttClient) { public String send(DeleteMessageParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) @@ -68,7 +68,7 @@ public EncodeMessageService getEncodeMessageService() { @Override public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = + final var deleteMessageParameters = createMessageParametersToDeleteAllMessages(onboardingResponse); return send(deleteMessageParameters); } @@ -76,7 +76,7 @@ public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { @Override public MqttAsyncMessageSendingResult sendMessageToDeleteAllAsync( OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = + final var deleteMessageParameters = createMessageParametersToDeleteAllMessages(onboardingResponse); return sendAsync(deleteMessageParameters); } 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 71ade8e3..d234678a 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 @@ -42,13 +42,13 @@ public ListEndpointsServiceImpl(IMqttClient mqttClient) { public String send(ListEndpointsParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) @@ -74,7 +74,7 @@ public EncodeMessageService getEncodeMessageService() { @Override public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -84,7 +84,7 @@ public String sendMessageToListAllWithExistingRoute(OnboardingResponse onboardin @Override public String sendMessageToListAll(OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -95,7 +95,7 @@ public String sendMessageToListAll(OnboardingResponse onboardingResponse) { @Override public MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); @@ -106,7 +106,7 @@ public MqttAsyncMessageSendingResult sendMessageToListAllWithExistingRouteAsync( @Override public MqttAsyncMessageSendingResult sendMessageToListAllAsync( OnboardingResponse onboardingResponse) { - ListEndpointsParameters listEndpointsParameters = new ListEndpointsParameters(); + var listEndpointsParameters = new ListEndpointsParameters(); listEndpointsParameters.setDirection(Endpoints.ListEndpointsQuery.Direction.SEND_RECEIVE); listEndpointsParameters.setTechnicalMessageType(SystemMessageType.EMPTY); listEndpointsParameters.setOnboardingResponse(onboardingResponse); 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 bf33b52e..0c1b6c3b 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 @@ -34,13 +34,13 @@ public MessageConfirmationServiceImpl(IMqttClient mqttClient) { public String send(MessageConfirmationParameters parameters) { parameters.validate(); try { - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - String messageAsJson = this.createMessageBody(sendMessageParameters); - byte[] payload = messageAsJson.getBytes(); + var messageAsJson = this.createMessageBody(sendMessageParameters); + var payload = messageAsJson.getBytes(); this.getMqttClient() .publish( Objects.requireNonNull(parameters.getOnboardingResponse()) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java index 8588cd67..fdd6be1e 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java @@ -29,12 +29,12 @@ public CloudOffboardingServiceImpl() { @Override public String send(CloudOffboardingParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -42,12 +42,12 @@ public String send(CloudOffboardingParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(CloudOffboardingParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = + var response = this.sendMessageAsync(sendMessageParameters); return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java index 3868aece..8ece24e6 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java @@ -26,12 +26,12 @@ public CloudOnboardingServiceImpl() { @Override public String send(CloudOnboardingParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsValid(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -39,12 +39,12 @@ public String send(CloudOnboardingParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(CloudOnboardingParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = + var response = this.sendMessageAsync(sendMessageParameters); return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java index 53de8db6..db3a888f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java @@ -32,12 +32,12 @@ public DeleteMessageServiceImpl() { @Override public String send(DeleteMessageParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -45,12 +45,12 @@ public String send(DeleteMessageParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(DeleteMessageParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = + var response = this.sendMessageAsync(sendMessageParameters); return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); } @@ -62,7 +62,7 @@ public EncodeMessageService getEncodeMessageService() { @Override public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = + final var deleteMessageParameters = createMessageParametersToDeleteAllMessages(onboardingResponse); return send(deleteMessageParameters); } @@ -70,7 +70,7 @@ public String sendMessageToDeleteAll(OnboardingResponse onboardingResponse) { @Override public HttpAsyncMessageSendingResult sendMessageToDeleteAllAsync( OnboardingResponse onboardingResponse) { - final DeleteMessageParameters deleteMessageParameters = + final var deleteMessageParameters = createMessageParametersToDeleteAllMessages(onboardingResponse); return sendAsync(deleteMessageParameters); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java index fa69f431..ce5512e2 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java @@ -18,7 +18,7 @@ public class FetchMessageServiceImpl implements FetchMessageService, MessageFetc @Override public Optional> fetch( OnboardingResponse onboardingResponse, int maxTries, long interval) { - FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); + var fetchMessageParameters = new FetchMessageParameters(); fetchMessageParameters.setOnboardingResponse(onboardingResponse); return fetch(fetchMessageParameters, maxTries, interval); } @@ -27,7 +27,7 @@ public Optional> fetch( public Optional> fetch( FetchMessageParameters fetchMessageParameters, int maxTries, long interval) { fetchMessageParameters.validate(); - Optional response = + var response = poll(fetchMessageParameters, new DefaultCancellationToken(maxTries, interval)); return response.map(this::parseJson); } @@ -35,7 +35,7 @@ public Optional> fetch( @Override public Optional> fetch( OnboardingResponse onboardingResponse, CancellationToken cancellationToken) { - FetchMessageParameters fetchMessageParameters = new FetchMessageParameters(); + var fetchMessageParameters = new FetchMessageParameters(); fetchMessageParameters.setOnboardingResponse(onboardingResponse); return fetch(fetchMessageParameters, cancellationToken); } @@ -44,19 +44,19 @@ public Optional> fetch( public Optional> fetch( FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { fetchMessageParameters.validate(); - Optional response = poll(fetchMessageParameters, cancellationToken); + var response = poll(fetchMessageParameters, cancellationToken); return response.map(this::parseJson); } private List parseJson(String json) { - Type type = new TypeToken>() { + var type = new TypeToken>() { }.getType(); return new Gson().fromJson(json, type); } @Override public FetchMessageResponse parseJson(byte[] json) { - Type type = new TypeToken() { + var type = new TypeToken() { }.getType(); return new Gson().fromJson(new String(json), type); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java index b210e446..d0b970db 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java @@ -29,12 +29,12 @@ public MessageConfirmationServiceImpl(Environment environment) { @Override public String send(MessageConfirmationParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -42,12 +42,12 @@ public String send(MessageConfirmationParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(MessageConfirmationParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - CompletableFuture response = + var response = this.sendMessageAsync(sendMessageParameters); return new HttpAsyncMessageSendingResult(response, encodedMessage.getApplicationMessageID()); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java index b548e09b..1c7a3508 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java @@ -32,13 +32,13 @@ public interface MessageFetcher extends ResponseValidator, HasLogger { default Optional poll( FetchMessageParameters fetchMessageParameters, CancellationToken cancellationToken) { fetchMessageParameters.validate(); - int nrOfTries = 1; + var nrOfTries = 1; while (cancellationToken.isNotCancelled()) { getNativeLogger() .debug( "The cancellation token is not cancelled, we have another try. This is try number {}.", nrOfTries); - Response response = + var response = RequestFactory.securedRequest( Objects.requireNonNull(fetchMessageParameters.getOnboardingResponse()) .getConnectionCriteria() @@ -52,7 +52,7 @@ default Optional poll( fetchMessageParameters.getOnboardingResponse().getAuthentication().getType())) .get(); this.assertStatusCodeIsOk(response.getStatus()); - String entityContent = response.readEntity(String.class); + var entityContent = response.readEntity(String.class); if (!StringUtils.equalsIgnoreCase(entityContent, EMPTY_CONTENT)) { return Optional.of(entityContent); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java index 12f88c61..d45c22e7 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageHeaderQueryServiceImpl.java @@ -43,7 +43,7 @@ public FeedResponse.HeaderQueryResponse unsafeDecode(ByteString message) @Override public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return send(messageQueryParameters); } @@ -51,7 +51,7 @@ public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { @Override public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return sendAsync(messageQueryParameters); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java index 08fcaf0b..dcad60bb 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageQueryServiceImpl.java @@ -46,7 +46,7 @@ public FeedResponse.MessageQueryResponse unsafeDecode(ByteString message) @Override public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return send(messageQueryParameters); } @@ -54,7 +54,7 @@ public String sendMessageToQueryAll(OnboardingResponse onboardingResponse) { @Override public HttpAsyncMessageSendingResult sendMessageToQueryAllAsync( OnboardingResponse onboardingResponse) { - MessageQueryParameters messageQueryParameters = + var messageQueryParameters = messageQueryHelperService.createMessageParametersToQueryAll(onboardingResponse); return sendAsync(messageQueryParameters); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java index 514e3761..76412e8b 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java @@ -25,7 +25,7 @@ public interface MessageSender extends MessageBodyCreator { * fetched afterwards. */ default MessageSendingResponse sendMessage(SendMessageParameters parameters) { - Response response = + var response = RequestFactory.securedRequest( Objects.requireNonNull(parameters.getOnboardingResponse()) .getConnectionCriteria() diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java index 1e4e18d0..871a2982 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SendMessageServiceImpl.java @@ -16,7 +16,7 @@ public class SendMessageServiceImpl @Override public void send(SendMessageParameters sendMessageParameters) { sendMessageParameters.validate(); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); } diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java index 5dee9837..94a2e742 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java @@ -28,12 +28,12 @@ public SetCapabilityServiceImpl(Environment environment) { @Override public String send(SetCapabilitiesParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -41,8 +41,8 @@ public String send(SetCapabilitiesParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(SetCapabilitiesParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java index 111714d5..ef0109c7 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java @@ -28,12 +28,12 @@ public SetSubscriptionServiceImpl(Environment environment) { @Override public String send(SetSubscriptionParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); - MessageSendingResponse response = this.sendMessage(sendMessageParameters); + var response = this.sendMessage(sendMessageParameters); this.assertStatusCodeIsOk(response.getNativeResponse().getStatus()); return encodedMessage.getApplicationMessageID(); } @@ -41,8 +41,8 @@ public String send(SetSubscriptionParameters parameters) { @Override public HttpAsyncMessageSendingResult sendAsync(SetSubscriptionParameters parameters) { parameters.validate(); - EncodedMessage encodedMessage = this.encode(parameters); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var encodedMessage = this.encode(parameters); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setOnboardingResponse(parameters.getOnboardingResponse()); sendMessageParameters.setEncodedMessages( Collections.singletonList(encodedMessage.getEncodedMessage())); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java index 40bab1f4..b0d3f09d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java @@ -31,7 +31,7 @@ public OnboardingResponse onboard(OnboardingParameters parameters) { parameters.validate(); this.getNativeLogger().debug("Onboard device."); - OnboardingResponse onboardingResponse = + var onboardingResponse = this.onboard( parameters.getRegistrationCode(), this.createOnboardingRequestBody(parameters)); @@ -46,7 +46,7 @@ public Optional getLastOnboardingError(String errorResponse) { private OnboardingRequest createOnboardingRequestBody(OnboardingParameters parameters) { this.getNativeLogger().info("BEGIN | Create onboarding request. | '{}'.", parameters); - OnboardingRequest onboardRequest = + var onboardRequest = this.getOnboardRequest( parameters.getUuid(), parameters.getApplicationId(), @@ -60,13 +60,13 @@ private OnboardingRequest createOnboardingRequestBody(OnboardingParameters param private OnboardingResponse onboard(String registrationCode, OnboardingRequest onboardingRequest) { this.getNativeLogger() .info("BEGIN | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); - Response response = + var response = RequestFactory.bearerTokenRequest(this.environment.getOnboardUrl(), registrationCode) .post(Entity.json(onboardingRequest)); try { response.bufferEntity(); this.assertStatusCodeIsCreated(response.getStatus()); - OnboardingResponse onboardingResponse = response.readEntity(OnboardingResponse.class); + var onboardingResponse = response.readEntity(OnboardingResponse.class); this.getNativeLogger() .info("END | Onboarding process. | '{}', '{}'.", registrationCode, onboardingRequest); diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java index d5a25143..b3290691 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java @@ -73,11 +73,11 @@ private OnboardingRequest createOnboardingRequestBody(SecuredOnboardingParameter private OnboardingResponse onboard( SecuredOnboardingParameters securedOnboardingParameters, OnboardingRequest onboardingRequest) { - String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); - String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); + var jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); + var encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); this.verifySignature( jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); - jakarta.ws.rs.core.Response response = + var response = RequestFactory.bearerTokenRequest( this.environment.getSecuredOnboardUrl(), securedOnboardingParameters.getRegistrationCode(), @@ -98,13 +98,13 @@ private OnboardingResponse onboard( private void verify( SecuredOnboardingParameters securedOnboardingParameters, OnboardingRequest onboardingRequest) { - String jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); - String encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); + var jsonBody = new Gson().toJson(onboardingRequest).replace("\n", ""); + var encodedSignature = this.createSignature(securedOnboardingParameters, jsonBody); this.verifySignature( jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); System.out.println( "Validation of '" + jsonBody + "' against '" + encodedSignature + "' was successful."); - Response response = + var response = RequestFactory.bearerTokenRequest( this.environment.getVerifyOnboardRequestUrl(), securedOnboardingParameters.getRegistrationCode(), @@ -128,9 +128,9 @@ private byte[] decodeHex(String encodedSignature) { private String createSignature( SecuredOnboardingParameters securedOnboardingParameters, String jsonBody) { - byte[] signature = this.createSignature(jsonBody, securedOnboardingParameters.getPrivateKey()); + var signature = this.createSignature(jsonBody, securedOnboardingParameters.getPrivateKey()); this.verifySignature(jsonBody, signature, securedOnboardingParameters.getPublicKey()); - String encodedSignature = Hex.encodeHexString(signature); + var encodedSignature = Hex.encodeHexString(signature); this.verifySignature( jsonBody, decodeHex(encodedSignature), securedOnboardingParameters.getPublicKey()); return encodedSignature; @@ -138,8 +138,8 @@ private String createSignature( byte[] createSignature(String requestBody, String privateKey) { try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + var securityKeyCreationService = new SecurityKeyCreationService(); + var signature = Signature.getInstance(SIGNATURE_ALGORITHM); signature.initSign(securityKeyCreationService.createPrivateKey(privateKey)); signature.update(requestBody.getBytes(UTF_8)); return signature.sign(); @@ -150,8 +150,8 @@ byte[] createSignature(String requestBody, String privateKey) { void verifySignature(String requestBody, byte[] signedBytes, String publicKey) { try { - SecurityKeyCreationService securityKeyCreationService = new SecurityKeyCreationService(); - Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM); + var securityKeyCreationService = new SecurityKeyCreationService(); + var signature = Signature.getInstance(SIGNATURE_ALGORITHM); signature.initVerify(securityKeyCreationService.createPublicKey(publicKey)); signature.update(requestBody.getBytes(UTF_8)); if (!signature.verify(signedBytes)) { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java index 29637e30..692b0ec7 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/revoke/RevokingServiceImpl.java @@ -32,10 +32,10 @@ public RevokingServiceImpl(Environment environment) { public RevokeResponse revoke(RevokeParameters revokeParameters) { revokeParameters.validate(); Response response = null; - RevokeRequest revokeRequest = createRevokeRequestBody(revokeParameters); - Gson gson = new Gson(); - String jsonBody = gson.toJson(revokeRequest).replace("\n", ""); - String encodedSignature = this.createSignature(revokeParameters, jsonBody); + var revokeRequest = createRevokeRequestBody(revokeParameters); + var gson = new Gson(); + var jsonBody = gson.toJson(revokeRequest).replace("\n", ""); + var encodedSignature = this.createSignature(revokeParameters, jsonBody); this.verifySignature(jsonBody, decodeHex(encodedSignature), revokeParameters.getPublicKey()); try { @@ -46,7 +46,7 @@ public RevokeResponse revoke(RevokeParameters revokeParameters) { .invoke(); response.bufferEntity(); - RevokeResponse result = RevokeResponse.Filter.valueOf(response.getStatus()); + var result = RevokeResponse.Filter.valueOf(response.getStatus()); if (Objects.requireNonNull(result).getKey() == RevokeResponse.SUCCESS.getKey()) { return result; } else { @@ -60,13 +60,13 @@ public RevokeResponse revoke(RevokeParameters revokeParameters) { } private String createSignature(RevokeParameters revokeParameters, String jsonBody) { - byte[] signature = this.createSignature(jsonBody, revokeParameters.getPrivateKey()); + var signature = this.createSignature(jsonBody, revokeParameters.getPrivateKey()); return Hex.encodeHexString(signature); } private RevokeRequest createRevokeRequestBody(RevokeParameters parameters) { this.getNativeLogger().info("BEGIN | Create revoking request. | '{}'.", parameters); - RevokeRequest revokeRequest = new RevokeRequest(); + var revokeRequest = new RevokeRequest(); revokeRequest.setAccountId(Objects.requireNonNull(parameters.getAccountId())); revokeRequest.setEndpointIds( Objects.requireNonNull(parameters.getEndpointIds()).toArray(new String[]{})); @@ -83,7 +83,7 @@ public Optional getLastRevokingError(String errorResponse) { } private RevokingError failSafeGsonParsing(String error) { - Gson gson = new Gson(); + var gson = new Gson(); try { return gson.fromJson(error, RevokingError.class); } catch (Exception e) { diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java index 37057407..a1110fab 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/signing/PrivateKeyCreationServiceTest.java @@ -11,17 +11,17 @@ class PrivateKeyCreationServiceTest { @Test void givenValidPrivateKeyCreatePrivateKeyShouldReturnValidResults() { - String privateKey = + var privateKey = "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDYngadA9rWUDCoNQ/orXTId1W3QRrQ7ufLB8CDDY3g7w5hzBDhgPpavZlNrLaGqCzjDzYmSq5Km2KjAvAoGUwYeIhv7E1mK5LUL96PWujMag/FwHhUC3yXfjcyNLrM/zUPPL8dzITyRbdA7zANU2jYOrY13vlEpkP/AImoKDz9iRB6lJhT/JvdUo8TMH7JHNDW6LE4kuWV5VrUzu3fbpg20FjxK23fvA6lA0P+h+7xhL29/D54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; - SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); + var privateKeyCreationService = new SecurityKeyCreationService(); Assertions.assertNotNull(privateKeyCreationService.createPrivateKey(privateKey)); } @Test void givenInvalidPrivateKeyCreatePrivateKeyShouldThrowException() { - String invalidPrivateKey = + var invalidPrivateKey = "-----BEGIN PRIVATE KEY-----MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxxxxxxxxoD54PfSnlK7jSu7c55L2EwxmtqMLn+ZEuV2bGsO5t7wmo3A9kB40atZJj/3+gFO2kuu/gXEgMQV2tRLU5pu0VhWz9HaJCGd23aGcZeYNAgMBAAECggEALLf24oxMraixWtBVf/HrJYVpRyMkH5TqekIX7pYqP5DqdasUoxEm3fu9PclVhxgJ6DgYNDB/qbxJUSDGpmiOipC7jeuJEPoW3kIhnpOkcqrEpcz1qlgSuQ2f5Hf5Rl+7OvGN/N9fZMqaqceXMnEROG5qdlWZPSBb8jVQtcvUx3wWaFsOOkHqZ4py0bTRLsZiUA3fmbdmNs2dE5CRutCkhZtnHRPZMvb2bxdxQlPm+NlpndCT63mThnry4ohC2bWNOqaaOkeQTwKYTzvu+rej5cGMni/6z/WxnhjID8eisB5ucPwKvWc2IOXBTjlKYB95jQkkQTeCmT/jLn4ZpmP3kQKBgQD6HD/cWB9Fl9ULbvtTBTtJxbFHZNO/j32Qlhw4fPd2b2eEleqMTb22xAeF20vq4xgVcsAr4tvG+boVAy+uZNs5mRVztEtP9WCdOryF/gEVfCG9J77RrkFXSA+puB40nY0IKfQ0ey4g9pY2ZMko9vNTsxKU/J9UONJjromemcETeQKBgQDdt95oCqiZcapjtVHZSLp2V3p1jozic7zfk16bGGFT73fNQt+oGXNH4SzH6j1Oad2GhiJMAnd5hnzsNpNSN80/JL1l0ac/ZcbOKk+Gkc1F4V9X52P7FAOs+epXbKg5iCKA3ztpN110W4WraaGAnf0WvggS74PpaT6bQwUiYe5ONQKBgQCKTbTCk7g3M46LlANGFU6DrN4rLIYrF53HpjpUwkXVKCWGG6BnlVWjCyNd0bZZXNqkgZ/ipMADd3R+yhRDy2GuqAhEwx4iSP3z89bsAVl4F/xQLPpH2KQpL5/5qeaKEdU6/ngbzUHk2HaX/YN/M4+6aPuNh2RTnlg45vsSyNMLgQKBgQDOgSK05LiDskpw88B4EDUbY/663zp48DNKSYgkDGEaPD/o/hAyEQI+QIvk51aSYifh06y9/s4ocgqIN4yfVznjReThoJOViMXR37aSL9pw66hRx0Jn6AxEX8DUDG/ipdj9Du3W4ao5ZcTqEkhJ8tx3Aiei+1JxY4TcN1/g1jWOwQKBgQCSqsUdmttSgb+9Jvp2ciyi+HwPEmuHGRyNSWHXZ6G4zwPDlDJ3s6Tbed5ChqBdFuB+jL9tezfxtJzvfaPmsouZi0h3epXWlG0FxB0D9CLQNO5IAvmJTZft4tF7AD1fXNIvPACqrV23rISFpIhmlQFBB/hpvp02eUuDwkdQcGSKag==-----END PRIVATE KEY-----"; - SecurityKeyCreationService privateKeyCreationService = new SecurityKeyCreationService(); + var privateKeyCreationService = new SecurityKeyCreationService(); Assertions.assertThrows( CouldNotCreatePrivateKeyException.class, () -> privateKeyCreationService.createPrivateKey(invalidPrivateKey)); @@ -29,34 +29,35 @@ void givenInvalidPrivateKeyCreatePrivateKeyShouldThrowException() { @Test void checkSignatureCanBeVerified() { - String privateKey = + var privateKey = "-----BEGIN PRIVATE KEY-----MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMIkcJfcjTUm1wLwbXBcGoEn8vhOA6ew5fsJ+CNgo21BeNTgvOXzhZrwMZYuiAXFpmV4kukWjyLchFE5jKk6yPkmsPQXVnOWqYMQO6d/sutHBMtjQ55vOCwqDTR4rm2dHrs/Qg/PTBoH3Dcr6WKQNNUYMZNXzED2AC/CRkXjME0oMq7YzgkVxdwhftIrgmUUUCRgHngM2PPyNsmZckvXngkqWOr9eUCsbg2NzTet3shHE8eW5yEBXVeAvT3On1WoQvISOe1ULWFOZ6qZ1NDbwwEmZWwUr5Q33fGplaZCnohvPf+5IfEi+M4/pjnOVFC4oSSZCFF5Q7++bHKxsx18LXAgMBAAECggEADdLMaLIh5V2Rl6U3m1wCbzVBc6BV5t/qa0R0qMasDmZyadk9J25/TGNznEZ8ZCTc4k1PNt4V80BybWsUT7OMXfSWV2QhZSoYM9It5HS3h8QkTq2P/9PJ7bLsXSJdH6DkfEelYo5+rJYHrjKZAWYpmRTKAe0DU+uOnuUgOcO/RLY1mp5S15lJuCy2jwQml8g043/A4Hcjql5co2jT2Pxv+t9o6Y2wVbRUNGXgz63wGcny08AUmiGuH3fhB4RDHrOC/TKnJVovxF6nmcoxduC37VLywFRIt5Kgy4sweN9ezHrlRRnxekG6XcRfTzfhbXet0mE1i9nU5FlFZ4bm2Kpa8QKBgQD8dEXFKsZnUCaJNaLzFZpXihr+fmgIPAk558Qm+1dxDqKolfY204ZkuZduHrkSH2MWOD69+Ej1UoygQH6Dzn1MCMxEUQadpY/F8wCkq+30tMVvzsOH647tBSVLGdIpae6GaNOksyLKnzipCX7GCHIh9ej9iXGoph/G1bDPiVTRJQKBgQDPAEOOm5jP0g2dCbcNopupiPl/w4s1JPJdPtYsViUG5gvrYVQcdfOaS5dtO1jwnoThyGqpbRI3Zzs5xZgpTDTqlP1J5ys4e0DyW3x7gm0HZIXVsXa4y0qjL1S2p/LQZR3sBgarEurb5rRepJOHVeqNBmXipAE/j/d7JxsYk1R5SwKBgQC2jt5lViljTHKRhlfvsQ+LfjNHFeHlEoUZeqA+EEOLXioB/2+s9gmZjRwUZeMvV8Mvrjyw43re7HME756NciTpdvM/89f06GSvoKo2ap4I9zBPShXblFwmyjHNvT5c9F2olOV3lJL0M2+lzVf/nNvr8wgpT9sBOiCAiMbzTTwogQKBgGsFTOg/A9t2Uzl8m1p+VpJpUe0/UQqR5ohVA2/6vbv6VfFE6bKpPN/p8wkzZMFKg5MkBhlAXemtAo7U3N2FG9qoWufJj6vs9WAX8pz8ipgG3bbkwGe8GwORZe/llwEtNjIfz3TFHA3DEj/YQLn4roJo62Yoush9C0ttpXGoQkVPAoGBAN3EGJSmnb6vm3Vt6PyL8FfcBWM4m5YiUJxPIH+sVVNfNr3TSGqX3oOIoLTVShMq+guqtnTnLO8Cnmz9h8EkVMTNeHXJyY2WxHysnYaTbJu+pZSJQhuXs9ILFLFXsJnOZWFkrhTmytikNYFfBcBgybYoeGp12DaLiZkKOaKrxCMy-----END PRIVATE KEY-----"; - String publicKey = - "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzCJHCX3I01JtcC8G1wXB\n" - + "qBJ/L4TgOnsOX7CfgjYKNtQXjU4Lzl84Wa8DGWLogFxaZleJLpFo8i3IRROYypOs\n" - + "j5JrD0F1ZzlqmDEDunf7LrRwTLY0OebzgsKg00eK5tnR67P0IPz0waB9w3K+likD\n" - + "TVGDGTV8xA9gAvwkZF4zBNKDKu2M4JFcXcIX7SK4JlFFAkYB54DNjz8jbJmXJL15\n" - + "4JKljq/XlArG4Njc03rd7IRxPHluchAV1XgL09zp9VqELyEjntVC1hTmeqmdTQ28\n" - + "MBJmVsFK+UN93xqZWmQp6Ibz3/uSHxIvjOP6Y5zlRQuKEkmQhReUO/vmxysbMdfC\n" - + "1wIDAQAB\n" - + "-----END PUBLIC KEY-----"; - - RevokeRequest revokeRequest = new RevokeRequest(); + var publicKey = + """ + -----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzCJHCX3I01JtcC8G1wXB + qBJ/L4TgOnsOX7CfgjYKNtQXjU4Lzl84Wa8DGWLogFxaZleJLpFo8i3IRROYypOs + j5JrD0F1ZzlqmDEDunf7LrRwTLY0OebzgsKg00eK5tnR67P0IPz0waB9w3K+likD + TVGDGTV8xA9gAvwkZF4zBNKDKu2M4JFcXcIX7SK4JlFFAkYB54DNjz8jbJmXJL15 + 4JKljq/XlArG4Njc03rd7IRxPHluchAV1XgL09zp9VqELyEjntVC1hTmeqmdTQ28 + MBJmVsFK+UN93xqZWmQp6Ibz3/uSHxIvjOP6Y5zlRQuKEkmQhReUO/vmxysbMdfC + 1wIDAQAB + -----END PUBLIC KEY-----"""; + + var revokeRequest = new RevokeRequest(); revokeRequest.setAccountId("dflakjfafd"); revokeRequest.setEndpointIds(new String[]{"adkfjlaf", "afdlakfdlakdfl"}); revokeRequest.setTimeZone("UTC+5"); revokeRequest.setUTCTimestamp("2019-05-18T23:03:21"); - Gson gson = new Gson(); - String input = gson.toJson(revokeRequest); + var gson = new Gson(); + var input = gson.toJson(revokeRequest); class SignatureTester implements SignatureService { } - SignatureTester signatureTester = new SignatureTester(); + var signatureTester = new SignatureTester(); - byte[] signature = signatureTester.createSignature(input, privateKey); + var signature = signatureTester.createSignature(input, privateKey); signatureTester.verifySignature(input, signature, publicKey); } diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java index 01f05bba..cd8ddcf1 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java @@ -14,18 +14,18 @@ class KeyStoreCreationServiceTest { @Test void givenValidPEMCreateAndReturnKeystoreFromPEMShouldReturnKeyStore() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = + var secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + var certificate = "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3\np9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1Ajy\nYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqI\nKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmek\nzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50s\nGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZO\nHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOY\njAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2Ymh\nbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZg\nhtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXl\ndImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6v\nRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf\n2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3G\nLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4\ne9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA\n6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87\neypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzO\noph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC\n3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxF\nz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1o\nUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+m\npQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0Mj\nenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG4\n2nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03My\nms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aS\nJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEu\nbupO8m9l0y/JJWbMu7Ql\n-----END ENCRYPTED PRIVATE KEY-----\n-----BEGIN CERTIFICATE-----\nMIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjEL\nMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJ\nMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIx\nNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNT\nQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNV\nBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2\nNnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK\nAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9\nCP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh\n1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOx\nZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUh\nIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p\n2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDug\nOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NB\nUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2\naWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvw\nQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUw\nDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGu\ncTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dv\nki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdl\nwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzF\nlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJI\nF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50=\n-----END CERTIFICATE-----\n"; - KeyStore keyStore = + var keyStore = new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret); assertNotNull(keyStore); } @Test void givenInvalidPEMCreateAndReturnKeystoreFromPEMShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = "TOFUWURST"; + var secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + var certificate = "TOFUWURST"; assertThrows( CouldNotCreateDynamicKeyStoreException.class, () -> new KeyStoreCreationService().createAndReturnKeystoreFromPEM(certificate, secret)); @@ -33,18 +33,18 @@ void givenInvalidPEMCreateAndReturnKeystoreFromPEMShouldFail() { @Test void givenValidP12CreateAndReturnKeystoreFromP12ShouldReturnKeyStore() { - String secret = "iI8rR5lL6fF0wW1yY6zZ1lL"; - String certificate = + var secret = "iI8rR5lL6fF0wW1yY6zZ1lL"; + var certificate = "MIIKuwIBAzCCCnUGCSqGSIb3DQEHAaCCCmYEggpiMIIKXjCCBVMGCSqGSIb3DQEHAaCCBUQEggVAMIIFPDCCBTgGCyqGSIb3DQEMCgECoIIE7zCCBOswHQYKKoZIhvcNAQwBAzAPBAjxu58B9xEeVQIDAgAABIIEyFBNhrdpoAXZsll57Lai8Wd7tGQAE4JQ3I6W/E/WqsKP5BSrSPkfu0KYMM8POMdPzVbX2jLoAfyOizru9Ts0rJluZNVB1peYBLZOOOVyxhw67JI7aXW0BPnIoBJeONbIIa2ZG9XeaCniXOpGKgS9nygDJnDy+gahheo6zqf5+DOGcH7yryJwhX3RFQ5j4vdRL2abBAugQ44TrGUtLm8keKUbccJKG7DK5EuT6jveGfw7/9Yq45+QIS1T/CiL8jPpmNGicLm94JFzJfrp5ilwFBGCnGlwFvGVlODQgW1la5D4hdFO7OpEFsOZPw/HEDZJQB3C/teigE9aqz3J1IzzTSuPHTUbYZZpeaW80H04M8Jih+zNJ+mDoGUL8CiaAiPj/uC1xijpcJENuOXHuNiBnozuSj3P4Q1k6gJ3iOKHKmnxgDXfguu+eFaHv1vpGz/PLWQ1ApRX2Woncq8E5BB1+XQzufwaoclY6rD6FqB2bMdfncXew+jQXaWgrDbU6P2vBe7vffwbVO3W8sVwOAjHLlvjb00DsveTbjgyreT5id6FwPU7zmOmYpKWhHMrpIGW7e6CjkODXSAYwfzrFNMMlbNVEDEPg+/6+U9/3X6iJLDfQ/6GzeIZXh8pQXHTYw99rKBTzN8weGFyG37ZNaAt7gpABwvfyN7+6ni9ZIcOUi+OUbG8pcTIgE4+woWMsfRBO5nyQjUDPy4biT0YlLSE30hU+zfiIIEq8p5ddtv/1hT+KskcIcf5+XwzFdtKum2dK59Z8/FdzamC77Fm0cvlCDBAFkFLsZkOlvDNnrz7Q5laYf5HsfwQMkOFGbXHjtAT7OzHgI0oMGkE34ahzJFLEixDe5W2y0Z9SSiGwB0AsuseYnSHxT9Jf2MwYY42fCuj7AOUhTweLJ1IUz8ZiYheuUVG5rDa02TS+L3jVFb8YHwYNUlhW0GpR6pFP0adZMQy1T2RiuBs80JXtI623O4Ls7YuImk4NySq7PUrB9GP21RMai9C9IMDIC9XSBJqaAYjLnJSDGLR1y6EYjI+N6hunp+zQHxvvkeiAAUrl3Z5o75TFR3hRTNrSgkFFkg2M0icmHNk7X2GlAnYY63/u8fv0vBNZE+gh75co1qm0rjl36XiL9BeGJIhOdvRwV0i2nQcmT9JWt+DVeAyvXkZj1frZBUuloEpW2FcIJxOVf35yTSE5MyPevTg0YHx9pSgezvN5nEfNnS1mFa4iI27m2ieBFTXVQLi6/P2BFXKYLfvecEbu1PE7NbPtdNCumQsIAHWWqVhuqk/N++VyVeFqnzMJkjxwfU6xtH24EG7nspGVUlsJbxkvPAnoPG6eOeOJoSywa4OeuYxV9xGUn1/dm9aWApFqz9MC2t3Bm5uv+3GxRwJAwI93J5T1lMovAxeQ6pZMIkw6TKQLHcLHcJGsctrZYVTP3wk4MtUMR2+Zadf4OEWTlgPhfVImgaZ3SYPIfIzXFaFSetvZUsNlLpu9/jWucEE8T8jRxDBjgja3Gzm6O/kFcms9Q0uIoPSeHYlUvUTV5gLyYw5qT4EeDezqSyuXYPLNRTsEZRv+nvYMKnVSa0ziy6iCAJbWmY53JxZmidsaAPhWaqge9h/6Nq3qgoKBqkOYs5S40sq8zE2MBEGCSqGSIb3DQEJFDEEHgIAMTAhBgkqhkiG9w0BCRUxFAQSVGltZSAxNTE1MTk2NjYxOTAxMIIFAwYJKoZIhvcNAQcGoIIE9DCCBPACAQAwggTpBgkqhkiG9w0BBwEwKAYKKoZIhvcNAQwBBjAaBBQkUNeYJOHMh228vuEXjAzKuZ4A3AICBACAggSwnW085+gra4TmzRNQ6sehEAageejRuTu6mIsb/xjw8LkzMKX+wFnIMxW27luvdf1WO5+Do7VEkjlx+SSnYlw5QV5B/igGd4f+6s1zYs6uqTl1Es1/6icoDVQGVjQ9S6D1API1SWDDG1zXY4jQaBruzqI2FZGD5PCERD7xTUxtNacBurRpRMCrzGghpcwGDoNYxKpknIQUsfmXecq/DDocUO+YvnaOOFpg6AcRfKam9WIVbbZCj8fzUNAc0hmqAGdH6sXOlJ2W/e23W06mhM7/3iX+KWOdERWYBQI7OFVWkziUbdVfr8vZASpaprf2GVQfh0A3jsDJ8z+DlRMsnkwbyl7xlmotXwx2CPv48CJEZOigxiV6EoSfl5HFTCFL5Iswmweas3HatepO4jdhIA71URuff8f4kF0lGxI6kQ2rlIfnnRRuvj/aXdJPUyVEVcC8mknOrpmCttXii23g+GyC5K3FYzNTFSgMXz9Ofku1+B1lXD6bmA7o5butxthoSK0C26a/tRxLaur9pOTGyJ1XYtHWGKSzrI/LnmHOpJLicDRN3o8hvdiCPXpJpQGa19ISviEQHuk1GktzPe2iwv2k7EeuPSaM65aZqDfigR9bdlWPhioFo0rAte/XIu/v4nC3vBz0W0b6VWF9aYRCgVMSceKjnrmk2vfepatIHqdjlFZVy06wPBZ0aV/9OhpKj9Zgz/+lJ9yrra0f//2RcwJ4b8lykmr4AEQMBxgNeVAOPmS9cTB2rzcFmraAFPJnqhqjhl+N5ArhSqfjxBidV9GjEjJl2nLL50n4xOeZyeCYXYII54N3oDebxhvOj+M4A0tjPcbwN1EWItCvfyF496GAUkxJ9559HSWP4W9uKF5VGRGoDNrBh7UVAiT3XMr109jgVt7s/hJ3ZK1qHFWIyseVZr67J4EIJyxLiPhg1l+iWJOME65zlcDdHTWx/jjK7U7K/m69selYpsIunZMh4nmiM7kbJ1uYeXjS+utC9CruBgu6IauHIMPXhbxSYn8eNm0OeWKiuS7/e7thrVdNXc7n3HoWOjSooXCDz+IgIIoGCWngzgp2P+L0wmfZUkf6fllLw1J5sigNOn2FB9dI5IfHtzz4Em9sX6OhsqQwkRiGDUs9eFWtKGqNayK2p72qHRJCsLpME7qdANrlm6O6rxRtO4iTkltH7JkkzlRnSPFoaDuqswQ3jIBamo/n2lNDKKdhiDg6sEmfDi6GExPIlmhjF9MHShE5oU2KIplx6Z/COFPwCVdW2odmgv42C1sO1DVV7tjAbokTsW8xe4ip2PqqeGcvE2pZyrTVS89Gm/HL9FxDJvxlmWOr22cKjC660wcpVB5jCsv+f99Zs2X1qSwAYmz9+dqJ6NKU/B4HPSSTTFBBv12wT8177HfY+8gOGEuSSkxDNjC4MYqnDD1FV99ZCPqncLer16t4iZ+17B7Ha3ci3RHeEX8liZ6/EFAxyx792VmbYENkCF6tQ6PCNV7gShNUz0h0gBhAxw0FQQekvz/Pugx642UKphs94Jkc+JFIma4vylPFY5TQXyI3BdakZ75iE7V2h/Ez+oVPjLyrSrG7TXy7Bf3yOcuKwT9d+KRMMD0wITAJBgUrDgMCGgUABBQraxyI9BUwHXgSwXmWjdEnGtSLbgQUbrG79D7Jvs6K9Ubd1J33uQBq3UcCAgQA"; - KeyStore keyStore = + var keyStore = new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret); assertNotNull(keyStore); } @Test void givenInvalidP12CreateAndReturnKeystoreFromP12ShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String certificate = "TOFUWURST"; + var secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + var certificate = "TOFUWURST"; assertThrows( CouldNotCreateDynamicKeyStoreException.class, () -> new KeyStoreCreationService().createAndReturnKeystoreFromP12(certificate, secret)); @@ -53,34 +53,34 @@ void givenInvalidP12CreateAndReturnKeystoreFromP12ShouldFail() { @Test void givenValidCertificateAndPrivateKeyCreateKeyStoreInClasspathShouldReturnTmpKeystoreName() throws Throwable { - X509Certificate certificate = + var certificate = new KeyStoreCreationService() .createCertificate( "MIIEPzCCAyegAwIBAgIOAJeZtIjQZANnEAEC/JwwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCREUxIzAhBgNVBAoTGlNBUCBJb1QgVHJ1c3QgQ29tbXVuaXR5IElJMSIwIAYDVQQDExlTQVAgSW50ZXJuZXQgb2YgVGhpbmdzIENBMB4XDTE4MDEwNTIxNTEwMVoXDTE5MDEwNTIxNTEwMVowgY0xCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNTQVAgVHJ1c3QgQ29tbXVuaXR5MRUwEwYDVQQLEwxJb1QgU2VydmljZXMxSTBHBgNVBAMUQGNsaWVudGlkOjFlMWNkYTUwLTM3Y2UtNDMzZS1hNjU2LTFhOThmM2RkMDU2NnxpbnN0YW5jZWlkOmRrZS1kZXYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6Jmw4dFIhbtZavc8YYwAyfrlZUS6+GVtluN4OTLwOC2ROARwXExUgzau9CP+B48EWSDxyU+CZeVKDOVhp/KlDIP2wgELs2pzMjPr8M3Rz8wg/BGnrJmTY5UGh1BhClHKj7Pv4VLcWW7BXqsFQh/orTRZDhsedOTv4+4oXXe/ORJx6r+A1BBcRRYOxZkoHrI16DPgcLIku1aFGnWXwu3kfbbXSg/NPa0Z9fTPJhqeNLU5ple4pHqm5crUhIGo7d9Xr/aoyP6SJtfXyTBxeoZS1vf5RIQKw/s3bKKWPn34LHIKzLP+6zgUQAk7p2V69WtrUSFs1jFTQUTEi0VPiqZ2NAgMBAAGjgdIwgc8wSAYDVR0fBEEwPzA9oDugOYY3aHR0cHM6Ly90Y3MubXlzYXAuY29tL2NybC9UcnVzdENvbW11bml0eUlJL1NBUElvVENBLmNybDAMBgNVHRMBAf8EAjAAMCUGA1UdEgQeMByGGmh0dHA6Ly9zZXJ2aWNlLnNhcC5jb20vVENTMA4GA1UdDwEB/wQEAwIGwDAdBgNVHQ4EFgQU3IYJevvwQMxj3qxT8km6ogbQB2cwHwYDVR0jBBgwFoAUlbez9Vje1bSzWEbg8qbJeE69LXUwDQYJKoZIhvcNAQELBQADggEBADnGIY81ngPJOuF3qL9wRHAYiXLlHMT5J54qfRGucTAdDEC8DCjlXUAg+c6HNvBJbMV4oPfziN0f53Z3f0WpumTk/J6lQy0dByGtt+Dvki4+WjrooMdG7bPsHt1aZLIAa/TWY8B62G0r7zILAne5xgvuy+K1MH0dENR7KOdlwovrXg8fePWX/ejRhk4iXyf7mDS0t+0zRNTlOIYpPrU+h8bc03Afn7xJ/F5khxzFlPLIxyS1wrFj2V3FSrJqU0XR686u6E7Zjyh8Jjzvh5xazQcbuhC5ZVUL08xkZYJIF/ocLSZ++H2dacM9GTSB/5+ShM6aNxMeWWMrN4AYA9tmA50="); - PrivateKey privateKey = + var privateKey = new KeyStoreCreationService() .createPrivateKey( "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql", "lL7qQ8lL4iI3zZ7qQ4xX1hH"); - String tmpKeystoreName = + var tmpKeystoreName = new KeyStoreCreationService().createKeyStoreInClasspath(certificate, privateKey); assertNotNull(tmpKeystoreName); } @Test void givenValidEncryptedPrivateKeyCreatePrivateKeyShouldReturnPrivateKey() throws Throwable { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String encryptedPrivateKey = + var secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + var encryptedPrivateKey = "MIIE6zAdBgoqhkiG9w0BDAEDMA8ECKjNsB97Jcn1AgMCAAAEggTIskb9BXQ3w6u3p9cxwMnDVm6QJWeQw+kjOnGn3qhZr+1vYdiCeDJHeKBX80PzAqBa+iX2P3Xo1AjyYvrIuU0nVGtI9ZH3buyjNfN41XSLj7sffp1NHPJMeHLMa62EVgpjcrRFrLmlumqIKy03YMlaYiCF7VU6miJEo6TDORLIPc3dPnbNTT8EeQVIP3co5J5H9akwVfLIOmekzP2oFx5dQ7uny/Nm9Od57/V+abkWB2PNbQtKA16/4Fz7plqAyoFw4HOFK+FKJ50sGAIAmDBnV4Y6d1dwVRUNjQoZ41LbFQAILtn/W0IceA5B9PrXzSmVIcXeBE39EGZOHJPt/YREtTRZkBdK5+V91+yi/zqtWF6rjHOMxUQtiEiur3U0fs/LN8rwTOMrgCOYjAIuAla06k11HoBc3jpIPBxaJTNuN+W2XWqJgB02ZS6iGkRHYlWr+qtK473Q2YmhbKQqSfMM5TJUMzsUS8QMuKrnUc0eIINNdWIuFrF5T7Owm9viF9UdqPg8DYP03fZghtY8dvVzieQtjpWMCEOHrgI42Zp/hV9Er7LeE86DUvgVRHqgJtROA6OtP5p/mtXldImm7EXjor217/AADbTPokyzVNfFa8W0beCx77Fub13oaATLQAxouGG/GWLqSY6vRS48nnnbPdka6Z++FUSUrIdzAJ2ssQvluBsZS9PdWMFuu5tlOGdlEjhCcXPcSrzf2HPepqR/sDwxqSt3L6HcjsQCTcj24ebDBdsJyhfLaraW77P9a8Uc+VmyUzGF+r3GLtqo8W3UZozw6/xLlUROuTfrWewOEfMxFQFkQFEJADN5UdGvGsY1aiUgBxtNG5i4e9gRIDpbaJcE4am/tDqTD8ofTCYCP9UX4xWEwDvDQlBkshr0yDxgt+mVEyaJv7hA6o2tEW/d/pQ0uqFOcirUcMmoQmye+FJi7YMUTxmIw3Q+Y19MRmVyvwePU1dKIr87eypeEU5HFd1DUlPDHMQMw9uYkwTaJ8C8LPvxKi3VD5SLqFKDYl5JLBf7FU5LEjzOoph/1rkUKktsfye0RF6AOooD1SwfnsfWDprdwibIDbNBumE9nONESrbqlKJp5/OC3gwL7v8x9Xp+r3J1k01flSojRYQO+2XC5ABjChc7mbD1ROrb8SWTcmyUanJGzNxFz+AgX0B0RxLPZPBafNjtktjT9IeK0UrfmlhpIrBTSd65Vzb+dg1DsmRWq2L/+L1oUM1lo9KBya+p9wv1Qtu5vO7oP4jJJUfr+RW0jAOsxF6H5mrSCq5ww0vWdiDiu6+mpQ15Wp3vxiAXtnej1T5B/j97uzD2Wpn13AGemJuzR9NBZ7E/oa10CTf00nG+D0MjenS0iJYvd2VQmm8QUOg5uDBjEqgGlCMxEUBdENyG73kbO8zqU9vCfqRnwuzBzuG42nKci9UgqnDJ9cwOLIheD/YO8lMeZoR0aoeJOMoMMF3YM0NmS5FLLb4NP8Fc03Myms0Lawg8os3nDtLG/xREu7AEiuk5n8N1Qu/UMrllSC1W5FpNkyNLTK4FuOKdN/aSJ5/f9MH0gI4zWtNgKoQH93fU1v9Xrr/fFpDTBOfuoe9dQvRLpa5Mw55ftHAvweEubupO8m9l0y/JJWbMu7Ql"; - PrivateKey privateKey = + var privateKey = new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret); assertNotNull(privateKey); } @Test void givenInvalidEncryptedPrivateKeyCreatePrivateKeyShouldFail() { - String secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; - String encryptedPrivateKey = "TOFUWURST"; + var secret = "lL7qQ8lL4iI3zZ7qQ4xX1hH"; + var encryptedPrivateKey = "TOFUWURST"; assertThrows( IllegalArgumentException.class, () -> new KeyStoreCreationService().createPrivateKey(encryptedPrivateKey, secret)); @@ -88,16 +88,16 @@ void givenInvalidEncryptedPrivateKeyCreatePrivateKeyShouldFail() { @Test void givenValidEncryptedCertificateCreateCertificateShouldReturnCertificate() throws Throwable { - String encryptedCertificate = + var encryptedCertificate = "MIIEQDCCAyigAwIBAgIPAMGPhggNbxUUEAECACO7MA0GCSqGSIb3DQEBCwUAMFYxCzAJBgNVBAYTAkRFMSMwIQYDVQQKExpTQVAgSW9UIFRydXN0IENvbW11bml0eSBJSTEiMCAGA1UEAxMZU0FQIEludGVybmV0IG9mIFRoaW5ncyBDQTAeFw0xODAyMTQwNzI2MzJaFw0xOTAyMTQwNzI2MzJaMIGNMQswCQYDVQQGEwJERTEcMBoGA1UEChMTU0FQIFRydXN0IENvbW11bml0eTEVMBMGA1UECxMMSW9UIFNlcnZpY2VzMUkwRwYDVQQDFEBjbGllbnRpZDo0MjIzN2NkZC0wYjFkLTQyNzItODNlYS04MWVmNDgyYjI3ODd8aW5zdGFuY2VpZDpka2UtZGV2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbzz3hdS8sMNyZt/uGzMJeKgY+o9d7RekimomsrF5ve4IPa4RPSz9I6V0BexXbrUrPwZcZT9OAJyW8Ig3U0dy/1bcLrhtI+auLRXg6xS0I23+PCsNxKDGkf3F6IlPd+qG6XriverOQ1XFFiN1rTHmU6fL6bSkDNp/hJCBU9NwieUqoXl1UptAf5qSHyUFlaiWtAuJvCxw0V1kgJthljVhw8kRvdsNpD8lkNqw11/F5LzpJy0klSgGjGvCEDkh4FSGqSwtXK5UqQXy8d9IzYowEC3Kpl2Og64A/h6x+So5sJIVLKLXa1wIKV1KtzRnWZ6YFpuIosbVL2ahJko8O+nUQIDAQABo4HSMIHPMEgGA1UdHwRBMD8wPaA7oDmGN2h0dHBzOi8vdGNzLm15c2FwLmNvbS9jcmwvVHJ1c3RDb21tdW5pdHlJSS9TQVBJb1RDQS5jcmwwDAYDVR0TAQH/BAIwADAlBgNVHRIEHjAchhpodHRwOi8vc2VydmljZS5zYXAuY29tL1RDUzAOBgNVHQ8BAf8EBAMCBsAwHQYDVR0OBBYEFFc7w7CmcPbfin0wwL7jd8Sf2nMfMB8GA1UdIwQYMBaAFJW3s/VY3tW0s1hG4PKmyXhOvS11MA0GCSqGSIb3DQEBCwUAA4IBAQDuqP+HMbENyjsmj7Bbw/TIezUrUylG9SbsknxNhEyBDRRweM4vpRpjYXYQEhzg+uuPCT94pXxAJgCRs6WHsYWYnRiXjtUZ8XRKbbOIH+5ptghMspvi52LEwZDQtjkuhH0t/IzrCIz4+24xcgJbRiAqUjx021PWxlB/gkXOOTaDkc/AZmfabWZCr+K6iec4ITxf0+PwS36fK1fV+bz0CoEt3VhE+cv/X0FdansB9qCDccgCtMLKDBjGkF/wS/zCgv3PFVhxB4WUhYlE831aLUbTTLhaC7l7WX79bAAY6Fy+8d7cnaol32UnnxVMREE+2XN9m5TGCX5n6VPPYgyNMlOt"; - X509Certificate certificate = + var certificate = new KeyStoreCreationService().createCertificate(encryptedCertificate); assertNotNull(certificate); } @Test void givenInvalidEncryptedCertificateCreateCertificateShouldFail() { - String encryptedCertificate = "TOFUWURST"; + var encryptedCertificate = "TOFUWURST"; assertThrows( IllegalArgumentException.class, () -> new KeyStoreCreationService().createCertificate(encryptedCertificate)); diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java index 628b398b..2272e00c 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/SequenceNumberServiceTest.java @@ -8,7 +8,7 @@ class SequenceNumberServiceTest { @Test void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); + var onboardingResponse = new OnboardingResponse(); onboardingResponse.setSensorAlternateId("this-is-my-id"); Assertions.assertEquals( 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); @@ -17,7 +17,7 @@ void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheRe @Test void givenOnboardingResponseWhenGeneratingSequenceNumberForTwoTimesInARowThenTheResultShouldBe1And2() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); + var onboardingResponse = new OnboardingResponse(); onboardingResponse.setSensorAlternateId("this-is-another-id"); Assertions.assertEquals( 1, SequenceNumberService.generateSequenceNumberForEndpoint(onboardingResponse)); @@ -28,9 +28,9 @@ void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheRe @Test void givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForTheFirstTimeThenTheResultShouldBe1ForBoth() { - OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); + var firstOnboardingResponse = new OnboardingResponse(); firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id"); - OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); + var secondOnboardingResponse = new OnboardingResponse(); secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id"); Assertions.assertEquals( 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); @@ -41,9 +41,9 @@ void givenOnboardingResponseWhenGeneratingSequenceNumberForTheFirstTimeThenTheRe @Test void givenTwoOnboardingResponsesWhenGeneratingSequenceNumberForMultipleTimesThenTheResultShouldBeMatchingTheTimesTheMethodWasCalled() { - OnboardingResponse firstOnboardingResponse = new OnboardingResponse(); + var firstOnboardingResponse = new OnboardingResponse(); firstOnboardingResponse.setSensorAlternateId("this-is-the-first-id-for-multiple-calls"); - OnboardingResponse secondOnboardingResponse = new OnboardingResponse(); + var secondOnboardingResponse = new OnboardingResponse(); secondOnboardingResponse.setSensorAlternateId("this-is-the-second-id-multiple-calls"); Assertions.assertEquals( 1, SequenceNumberService.generateSequenceNumberForEndpoint(firstOnboardingResponse)); diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java index 3e7b6969..36e176d5 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java @@ -39,7 +39,7 @@ void givenWhitespaceMessageDecodeShouldNotFail() { @Test void givenValidEncodedPasswordDecodeShouldNotFail() { DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodedMessage = + var decodedMessage = decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); Assertions.assertEquals( decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), @@ -49,7 +49,7 @@ void givenValidEncodedPasswordDecodeShouldNotFail() { @Test void givenWrongEncodedPasswordDecodeShouldThrowException() { DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - String wrongEncodedMessage = "Wrong Message"; + var wrongEncodedMessage = "Wrong Message"; assertThrows( IllegalArgumentException.class, () -> decodeMessageService.decode(wrongEncodedMessage)); } @@ -57,7 +57,7 @@ void givenWrongEncodedPasswordDecodeShouldThrowException() { @Test void givenNullEnvironmentDecodeShouldNotFail() { DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodedMessage = + var decodedMessage = decodeMessageService.decode(DecodeMessageServiceImplTest.ENCODED_MESSAGE); Assertions.assertEquals( decodedMessage.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8(), diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java index 166a63ae..43949a74 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java @@ -49,7 +49,7 @@ void givenWhitespaceMessageDecodeShouldNotFail() { void givenValidEncodedPasswordDecodeShouldNotFail() { DecodePushNotificationService decodePushNotificationService = new DecodePushNotificationServiceImpl(); - PushNotificationOuterClass.PushNotification pushNotification = + var pushNotification = decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); assertEquals( "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", @@ -60,7 +60,7 @@ void givenValidEncodedPasswordDecodeShouldNotFail() { void givenWrongEncodedPasswordDecodeShouldThrowException() { DecodePushNotificationService decodePushNotificationService = new DecodePushNotificationServiceImpl(); - String wrongEncodedMessage = "Wrong Message"; + var wrongEncodedMessage = "Wrong Message"; assertThrows( IllegalArgumentException.class, () -> decodePushNotificationService.decode(wrongEncodedMessage)); @@ -70,7 +70,7 @@ void givenWrongEncodedPasswordDecodeShouldThrowException() { void givenNullEnvironmentDecodeShouldNotFail() { DecodePushNotificationService decodePushNotificationService = new DecodePushNotificationServiceImpl(); - PushNotificationOuterClass.PushNotification pushNotification = + var pushNotification = decodePushNotificationService.decode(DecodePushNotificationServiceImplTest.ENCODED_MESSAGE); assertEquals( "[rq52_givenSinglePushNotificationReceiver_PushNotification_ShouldBeDeliveredToTheOutbox] MESSAGE CONTENT FOR TESTING, GENERATED AT [2019-04-12T09:21:50.649Z]", diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java index c1178e3d..277cb589 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java @@ -26,12 +26,12 @@ class AEncodeEncodeMessageServiceImplTest { void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = ByteString.copyFromUtf8(""); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + var toSendMessage = ByteString.copyFromUtf8(""); + var messageHeaderParameters = getMessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var payloadParameters = getPayloadParameters(toSendMessage); - final List chunks = + final var chunks = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); Assertions.assertEquals(1, chunks.size()); @@ -42,12 +42,12 @@ void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumbe givenSingleChunkMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + var toSendMessage = ByteString.copyFromUtf8("secretMessage"); + var messageHeaderParameters = getMessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var payloadParameters = getPayloadParameters(toSendMessage); - final List chunks = + final var chunks = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); Assertions.assertEquals(1, chunks.size()); @@ -58,15 +58,15 @@ void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumbe givenSingleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = + var toSendMessage = ByteString.copyFromUtf8( RandomStringUtils.randomAlphabetic( PayloadParametersKt.MAX_LENGTH_FOR_RAW_MESSAGE_CONTENT)); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + var messageHeaderParameters = getMessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var payloadParameters = getPayloadParameters(toSendMessage); - final List chunks = + final var chunks = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); Assertions.assertEquals(1, chunks.size()); @@ -78,12 +78,12 @@ void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumbe givenMultipleChunkMessageWithMaxSizeWhenChunkingThenTheImplementationShouldReturnTheRightNumberOfChunks() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = ByteString.copyFromUtf8(RandomStringUtils.randomAlphabetic(1024001)); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + var toSendMessage = ByteString.copyFromUtf8(RandomStringUtils.randomAlphabetic(1024001)); + var messageHeaderParameters = getMessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var payloadParameters = getPayloadParameters(toSendMessage); - final List chunks = + final var chunks = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, fakeOnboardingResponse()); Assertions.assertEquals(2, chunks.size()); @@ -107,13 +107,13 @@ void givenEmptyMessageWhenChunkingThenTheImplementationShouldReturnTheRightNumbe void givenValidParametersEncodeAndDecodeBackShouldNotFail() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = ByteString.copyFromUtf8("secretMessage"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var toSendMessage = ByteString.copyFromUtf8("secretMessage"); + var messageHeaderParameters = getMessageHeaderParameters(); + var payloadParameters = getPayloadParameters(toSendMessage); - String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); - DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); + var encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); + var decodeMessageService = new DecodeMessageServiceImpl(); + var response = decodeMessageService.decode(encodedMessage); Assertions.assertEquals( "secretMessage", response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); @@ -123,13 +123,13 @@ void givenValidParametersEncodeAndDecodeBackShouldNotFail() { void givenWrongPayloadEncodeAndDecodeBackShouldFail() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - ByteString toSendMessage = ByteString.copyFromUtf8("wrong Message"); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); - PayloadParameters payloadParameters = getPayloadParameters(toSendMessage); + var toSendMessage = ByteString.copyFromUtf8("wrong Message"); + var messageHeaderParameters = getMessageHeaderParameters(); + var payloadParameters = getPayloadParameters(toSendMessage); - String encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); - DecodeMessageServiceImpl decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse response = decodeMessageService.decode(encodedMessage); + var encodedMessage = encodeMessageService.encode(messageHeaderParameters, payloadParameters); + var decodeMessageService = new DecodeMessageServiceImpl(); + var response = decodeMessageService.decode(encodedMessage); Assertions.assertNotEquals( "secretMessage", response.getResponsePayloadWrapper().getDetails().getValue().toStringUtf8()); @@ -139,7 +139,7 @@ void givenWrongPayloadEncodeAndDecodeBackShouldFail() { void givenNullPayLoadParametersEncodeShouldThrowException() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - MessageHeaderParameters messageHeaderParameters = getMessageHeaderParameters(); + var messageHeaderParameters = getMessageHeaderParameters(); assertThrows( IllegalArgumentException.class, () -> encodeMessageService.encode(messageHeaderParameters, null)); @@ -149,14 +149,14 @@ void givenNullPayLoadParametersEncodeShouldThrowException() { void givenNullMessageHeaderEncodeShouldThrowException() { EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - PayloadParameters payloadParameters = + var payloadParameters = getPayloadParameters(ByteString.copyFromUtf8("secretMessage")); assertThrows( IllegalArgumentException.class, () -> encodeMessageService.encode(null, payloadParameters)); } private MessageHeaderParameters getMessageHeaderParameters() { - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); messageHeaderParameters.setApplicationMessageId("1"); messageHeaderParameters.setApplicationMessageSeqNo(1); messageHeaderParameters.setTechnicalMessageType(SystemMessageType.DKE_CAPABILITIES); @@ -165,7 +165,7 @@ private MessageHeaderParameters getMessageHeaderParameters() { } private PayloadParameters getPayloadParameters(ByteString toSendMessage) { - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setTypeUrl( Capabilities.CapabilitySpecification.getDescriptor().getFullName()); payloadParameters.setValue(toSendMessage); @@ -173,7 +173,7 @@ private PayloadParameters getPayloadParameters(ByteString toSendMessage) { } private OnboardingResponse fakeOnboardingResponse() { - OnboardingResponse onboardingResponse = new OnboardingResponse(); + var onboardingResponse = new OnboardingResponse(); onboardingResponse.setSensorAlternateId("THIS_IS_FAKE"); return onboardingResponse; } 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 70073b15..04f00bd5 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 @@ -71,47 +71,51 @@ public String getCertificationVersionId() { @Override public String getPrivateKey() { - return "-----BEGIN PRIVATE KEY-----\n" - + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDCiSNJmpAbrqF5\n" - + "wOe4kPtavH50OxfjevZjgFhoG/lO+nkJz366655pjKqkwmlxF3GhoXMppAR2K+Dh\n" - + "x3g46dJGA/dG5Ju5TpLnPn3AskHJMcagGE+0Lb29pXUX7ZAdO0MrqIVSh9UZ3j2v\n" - + "+MlF4GOwUkOLPu8IgtKK13vlTu3qYKmFzSss9M3r/t7hZemGyGUq/GVZ8wvYWFTc\n" - + "SdBhOZBzGDpQmRKiL5wcF1HyZfmT8mwbPITzf9Pd+9cDvQT74Ohmu920wwQavS+n\n" - + "hPaOFEW9io9gIsKY3y81Qt4OR+xQ20BdmsRscWwWaSoQpjol0+f3OnTFmLMGvjuw\n" - + "y8keLp+zAgMBAAECggEAGm87MdHEelaBD8PkWQKufTZ28oFjLiCz4XJ70O3YM2C6\n" - + "2NfuzyScWphoSco3PMxkPwPq28IzbwFoZhXOYuF3FteMHwCKnqQsNysZOHmgkd/n\n" - + "LzMOhZvfmCknH7DC8A3xAzo7n6rgjMrT1Bk49HtY4IlVL1NGdQAd7wr4BYFzt/Dc\n" - + "8qXnqXWqWcvgktDQBKEPXc8XAQom6fWFcnx+CALUIx3c4QXaCgdG/EuWeaqqM14j\n" - + "2tM1PwVh3rxiDiwMJSDEQVSxkJtM9M+EEC6oCvBPE4txjaHBjQqsxZJ9po5Va00+\n" - + "Wm6DuPEfkKTxX1J0a/le8SA0JZ+Tlz/VXOySaeMKYQKBgQDpUoPOfpx/FfOIr4Tk\n" - + "311zqcPfY+XiCwq56CTfVYERF8QSDQAMuuW3K53SFLTwjgUEq7BwFshhhcTdRxsh\n" - + "QtKAHg4NpownmGnmQCG681eFTB4IiiGNMlEt6hXh3MQK4QfjDFL/0Y1tXStsM7xB\n" - + "ouwPOZweWmlv7u7kVEDx4kHEUwKBgQDVcYp2pI/SjXtsFF/LRy/0xW/dgRQMortV\n" - + "IPYkYvSO/w2dMV2wX1Ly78wFs4uj4ODDfyeVG2xDjn6svQR67FtHPLyBS+SwNTbY\n" - + "jfzRV1EydHweZgdw9/1yA9zvSPVMvieSgeiR++2YmEEtJYSEoxuBkVSnLAXKFy3/\n" - + "4RCHrhBLIQKBgB6im/XX//pbyn8u9JcMkPun1bUWK8/zPTRNu9GrK2gwI6lvFYuW\n" - + "WqUjT/SOjXdsXlJPrLn689KCOugG9xP17yetSpEWRh7Iz1bRItymKN6ysNrUMDWW\n" - + "3rvVmYvvbboz89InAxrdy+EJM7NgU56WosIZAVum6WMuDyXhvilEWPhLAoGALwnd\n" - + "tPXhSEqr147J6befhvb4Bz3KGFrIpCMme7BfKyBkdK8LcbIgSq+0K9F8xbnqbssY\n" - + "AxFPE7hUjGb/lMN//jwRYwFBvd+MXb8050GyAEeRjvV3UFsmvLjDOOzAOpBxkiUV\n" - + "Bw8ZNpbfTj7FbKGxjyVjHZBjGj1vgsOr6+rdZmECgYEA5gBLtqvsebobo86J4LL7\n" - + "6VaXtgbgShm8GYMfTDPxkmAv4a89Lpec2UQ6EaVt7xHSdk4hMidfZHGambOtd+Zh\n" - + "DTWnVSzxt91ZSEcDc3gTxK3hBltTga+9Y63S+/6vVykWKRtAvqkiEEgLNnNXOFNX\n" - + "lE8ylEsO1whZyzKceV8uaqA=\n" - + "-----END PRIVATE KEY-----\n"; + 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= + -----END PRIVATE KEY----- + """; } @Override public String getPublicKey() { - return "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwokjSZqQG66hecDnuJD7\n" - + "Wrx+dDsX43r2Y4BYaBv5Tvp5Cc9+uuueaYyqpMJpcRdxoaFzKaQEdivg4cd4OOnS\n" - + "RgP3RuSbuU6S5z59wLJByTHGoBhPtC29vaV1F+2QHTtDK6iFUofVGd49r/jJReBj\n" - + "sFJDiz7vCILSitd75U7t6mCphc0rLPTN6/7e4WXphshlKvxlWfML2FhU3EnQYTmQ\n" - + "cxg6UJkSoi+cHBdR8mX5k/JsGzyE83/T3fvXA70E++DoZrvdtMMEGr0vp4T2jhRF\n" - + "vYqPYCLCmN8vNULeDkfsUNtAXZrEbHFsFmkqEKY6JdPn9zp0xZizBr47sMvJHi6f\n" - + "swIDAQAB\n" - + "-----END PUBLIC KEY-----\n"; + return """ + -----BEGIN PUBLIC KEY----- + MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwokjSZqQG66hecDnuJD7 + Wrx+dDsX43r2Y4BYaBv5Tvp5Cc9+uuueaYyqpMJpcRdxoaFzKaQEdivg4cd4OOnS + RgP3RuSbuU6S5z59wLJByTHGoBhPtC29vaV1F+2QHTtDK6iFUofVGd49r/jJReBj + sFJDiz7vCILSitd75U7t6mCphc0rLPTN6/7e4WXphshlKvxlWfML2FhU3EnQYTmQ + cxg6UJkSoi+cHBdR8mX5k/JsGzyE83/T3fvXA70E++DoZrvdtMMEGr0vp4T2jhRF + vYqPYCLCmN8vNULeDkfsUNtAXZrEbHFsFmkqEKY6JdPn9zp0xZizBr47sMvJHi6f + swIDAQAB + -----END PUBLIC KEY----- + """; } }; @@ -133,47 +137,51 @@ public String getCertificationVersionId() { @Override public String getPrivateKey() { - return "-----BEGIN PRIVATE KEY-----\n" - + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCkAWrcN0FmbWZ+\n" - + "24qE6maNlf46EjH/BOI5f79wFRJAeG6RXrl8KwWdlfeZOlEYRyq+o4AVuP7Mce6R\n" - + "x5PR/AEtn1K4Twr5h1+uG+O5/D2jJ0O/+nFnNcX/WgJfEbriDK9ewV8mEnFgG3n5\n" - + "y6P9RCcu0zMFV9PrKTop419krg2Ij0/to5LLU0DaQXmgvSC7Crx0k9dIhDeZ4jc3\n" - + "rv4SWzOcZT5vPFtA/5G66ZeeTVX+3iJbasWOdatMc7/cGYxUlnzeNSoCAqmyuHzO\n" - + "PKHWcjyVwPXWG64TSzkb+QypynUIZaAy+P8uawD0BivsmFSf0k4pGl8wSHhE2pN8\n" - + "OIIyud/lAgMBAAECgf93UZCtJoYuPumS4aaljOOPntCW7yXwo1zy+D4PDUV6IiRP\n" - + "HttTuvka7UB1+jeFskEm8Uz+gNjfZQRsiwbAftdcmc1Uyizx3ct+oEvNw/YT/T0N\n" - + "LufSbwzd+l4/TGbqjtAH4CeZS1Gw2kyjr8RfPnZDWuSDvqIvNI9cak+8r+SotHEL\n" - + "i1yAZTDvZAqLhbDLbW9Ephxd5QkKfwegybSwxJJcOw+KLPsq0Ibb2YGbkPTL1P6o\n" - + "Ul3/tiyzEMRc2ufyDJgYCAUmvVBjkbHT7hQNkTL8EPAEXfL+vhte8A98aFPnWMhS\n" - + "yiJo3T643fjZ8fzPcv8GWmT+z6IxtlXguC/OmQECgYEAzUbQF5YqJ61n6sQiJ0VQ\n" - + "ZMDDVHzf/oNUCPee4tCVS0ShQ2JURUIbss+lUWbKDfFTXW9mte4VRk+WUh2gQqm6\n" - + "49IdIpRGx6m6/ye2g6EmXRzeSN9GJu/wltS2uQ+8fmOkWiBUFg8bkLWTTxAY1w0n\n" - + "31AYcE8wwLb2FXt6Q2u4OQECgYEAzIfrUejd7GS/eaUx2GFKsXaI3B3CmLQ8TQFu\n" - + "JOh3i2NgcDK5Uwhy5TWozEn4BpwX8UOMciZIGjMr0i5TzpSVca1sv1wyIyWr7+AU\n" - + "2dmxPTXbkQQpEy7GDE1iCMvsi1lC6F+EUwdCKw6H5oa0oU1XMr/JWJSGh8iFRH5v\n" - + "H3ic4uUCgYEAycZYV0boqtWddrtRou5UBqUfmxWgC4nFeYcE64gBp9mO9jBaCzXf\n" - + "ChVnN6tk4u2adxZAjIW47cLfTFoIpF438SYgM1QyeqIQyCueEKa/kfkFWfX1++IP\n" - + "yALQlPmt20JQU7LBVGmHO+fvI2D8Oa6ZybzuOL7ueg+dtiIIXOsuSwECgYEAjqaZ\n" - + "1PYymmamOWSjQESTQPTofYVwLOtAR4Eg3jMY9anpIDfwk94HrJ/hTCKnD40dEdPI\n" - + "B/F1Rni8LorLPwDYvoFzoH/gJC1pHxPN1yeC+6stqZYaQ9vSm8/4+SOppoMqLEI6\n" - + "W2JrnvYyiPEY2IvFroqfFt34eom7kUsRnASWf5UCgYEAxEMOQ0/+hz1APqCGVo3t\n" - + "uePUIdsokCusRpWsxUdwHBGqfDjULqVmDXIJuJekV4YUxzyzktRzVms0pgFbr47L\n" - + "f8IeyJnYFhPn1hgthGlgV7JvFq2TU+EgZYVpVGL6jrw8t78Y4IresceIkz4q/bGV\n" - + "j35jwp22eLOc0FdPo0KgO4s=\n" - + "-----END PRIVATE KEY-----\n"; + 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----- + """; } @Override public String getPublicKey() { - return "-----BEGIN PUBLIC KEY-----\n" - + "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApAFq3DdBZm1mftuKhOpm\n" - + "jZX+OhIx/wTiOX+/cBUSQHhukV65fCsFnZX3mTpRGEcqvqOAFbj+zHHukceT0fwB\n" - + "LZ9SuE8K+Ydfrhvjufw9oydDv/pxZzXF/1oCXxG64gyvXsFfJhJxYBt5+cuj/UQn\n" - + "LtMzBVfT6yk6KeNfZK4NiI9P7aOSy1NA2kF5oL0guwq8dJPXSIQ3meI3N67+Elsz\n" - + "nGU+bzxbQP+RuumXnk1V/t4iW2rFjnWrTHO/3BmMVJZ83jUqAgKpsrh8zjyh1nI8\n" - + "lcD11huuE0s5G/kMqcp1CGWgMvj/LmsA9AYr7JhUn9JOKRpfMEh4RNqTfDiCMrnf\n" - + "5QIDAQAB\n" - + "-----END PUBLIC KEY-----\n"; + 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 + -----END PUBLIC KEY----- + """; } }; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java index e3b551a5..a59ebf10 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/Assertions.java @@ -16,7 +16,7 @@ public class Assertions extends org.junit.jupiter.api.Assertions { * @param - */ public static void assertMatchesAny(List expectedValues, T actual) { - AtomicBoolean matches = new AtomicBoolean(false); + var matches = new AtomicBoolean(false); assertNotNull(expectedValues); assertNotNull(actual); expectedValues.forEach( 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 faa0216d..6491a239 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 @@ -24,8 +24,8 @@ public class OnboardingResponseRepository { * @throws IOException - */ public static OnboardingResponse read(Identifier identifier) throws IOException { - Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); - final StringBuilder fileContent = new StringBuilder(); + var path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); + final var fileContent = new StringBuilder(); Files.readAllLines(path).forEach(fileContent::append); return new Gson().fromJson(fileContent.toString(), OnboardingResponse.class); } @@ -39,8 +39,8 @@ public static OnboardingResponse read(Identifier identifier) throws IOException */ public static void save(Identifier identifier, OnboardingResponse onboardingResponse) throws IOException { - String fileContent = new Gson().toJson(onboardingResponse); - Path path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); + var fileContent = new Gson().toJson(onboardingResponse); + var path = Paths.get(FOLDER.concat(identifier.getFileName()).concat(FILE_SUFFIX)); Files.write(path, fileContent.getBytes()); } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java index 68795bd3..3a8a6aa6 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java @@ -28,7 +28,7 @@ class CancellationTokenPollingTest extends AbstractIntegrationTest { givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheDefaultParametersShouldStillInfluenceTheBehavior() throws IOException { FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = + final var fetchMessageResponses = fetchMessageService.fetch( OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), @@ -44,7 +44,7 @@ class CancellationTokenPollingTest extends AbstractIntegrationTest { givenExistingImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCustomParametersShouldStillInfluenceTheBehavior() throws IOException { FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = + final var fetchMessageResponses = fetchMessageService.fetch( OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), @@ -59,7 +59,7 @@ class CancellationTokenPollingTest extends AbstractIntegrationTest { givenDefaultImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() throws IOException { FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = + final var fetchMessageResponses = fetchMessageService.fetch( OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), @@ -73,7 +73,7 @@ class CancellationTokenPollingTest extends AbstractIntegrationTest { givenCustomImplementationOfTheCancellationTokenWhenPollingMessagesThenTheCancellationTokenShouldInfluenceTheBehavior() throws IOException { FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> fetchMessageResponses = + final var fetchMessageResponses = fetchMessageService.fetch( OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE), diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java index 1e8ccae6..e1522802 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java @@ -50,8 +50,8 @@ void onboardVirtualCu() throws Throwable { offboardExistingVirtualCUFromFormerTestRun(); CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); - CloudOnboardingParameters parameters = new CloudOnboardingParameters(); - CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = + var parameters = new CloudOnboardingParameters(); + var endpointDetails = new CloudOnboardingParameters.EndpointDetailsParameters(); endpointDetails.setEndpointId(EXTERNAL_ID); endpointDetails.setEndpointName(ENDPOINT_NAME); @@ -62,7 +62,7 @@ void onboardVirtualCu() throws Throwable { waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -71,19 +71,19 @@ void onboardVirtualCu() throws Throwable { Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), decodeMessageResponse.getResponseEnvelope().getResponseCode()); - DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = + var decodeCloudOnboardingResponsesService = new DecodeCloudOnboardingResponsesService(); - List onboardingResponses = + var onboardingResponses = decodeCloudOnboardingResponsesService.decode( fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); @@ -101,12 +101,12 @@ void onboardVirtualCu() throws Throwable { private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + var parameters = new CloudOffboardingParameters(); parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); cloudOffboardingService.send(parameters); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -122,7 +122,7 @@ private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { void givenValidSensorIdWhenOffboardingVirtualCuThenTheOffbardingShouldBeSuccessful() throws Throwable { CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + var parameters = new CloudOffboardingParameters(); parameters.setEndpointIds( Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); @@ -131,7 +131,7 @@ void givenValidSensorIdWhenOffboardingVirtualCuThenTheOffbardingShouldBeSuccessf waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -140,11 +140,11 @@ void givenValidSensorIdWhenOffboardingVirtualCuThenTheOffbardingShouldBeSuccessf Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java index 5ae86549..ec41891c 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java @@ -50,7 +50,7 @@ void offboardVirtualCu() throws Throwable { offboardExistingVirtualCUFromFormerTestRun(); CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + var parameters = new CloudOffboardingParameters(); parameters.setEndpointIds( Collections.singletonList(virtualCommunicationUnit.getSensorAlternateId())); parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); @@ -59,7 +59,7 @@ void offboardVirtualCu() throws Throwable { waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -68,11 +68,11 @@ void offboardVirtualCu() throws Throwable { Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), @@ -81,12 +81,12 @@ void offboardVirtualCu() throws Throwable { private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { CloudOffboardingService cloudOffboardingService = new CloudOffboardingServiceImpl(); - CloudOffboardingParameters parameters = new CloudOffboardingParameters(); + var parameters = new CloudOffboardingParameters(); parameters.setEndpointIds(Collections.singletonList(VCU_ENDPOINT_ID_FOR_FORMER_TEST_RUN)); parameters.setOnboardingResponse(read(Identifier.TELEMETRY_PLATFORM)); cloudOffboardingService.send(parameters); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -102,8 +102,8 @@ private void offboardExistingVirtualCUFromFormerTestRun() throws Throwable { void givenValidIdAndNameWhenOnboardingVirtualCuThenTheOnbardingShouldBePossible() throws Throwable { CloudOnboardingService cloudOnboardingService = new CloudOnboardingServiceImpl(); - CloudOnboardingParameters parameters = new CloudOnboardingParameters(); - CloudOnboardingParameters.EndpointDetailsParameters endpointDetails = + var parameters = new CloudOnboardingParameters(); + var endpointDetails = new CloudOnboardingParameters.EndpointDetailsParameters(); endpointDetails.setEndpointId(EXTERNAL_ID); endpointDetails.setEndpointName(ENDPOINT_NAME); @@ -114,7 +114,7 @@ void givenValidIdAndNameWhenOnboardingVirtualCuThenTheOnbardingShouldBePossible( waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.TELEMETRY_PLATFORM), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -123,19 +123,19 @@ void givenValidIdAndNameWhenOnboardingVirtualCuThenTheOnbardingShouldBePossible( Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), decodeMessageResponse.getResponseEnvelope().getResponseCode()); - DecodeCloudOnboardingResponsesService decodeCloudOnboardingResponsesService = + var decodeCloudOnboardingResponsesService = new DecodeCloudOnboardingResponsesService(); - List onboardingResponses = + var onboardingResponses = decodeCloudOnboardingResponsesService.decode( fetchMessageResponses.get(), read(Identifier.TELEMETRY_PLATFORM)); 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 7f451ddc..3cfd58ea 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 @@ -25,10 +25,10 @@ class HealthCheckForEndpointsByPollingTest extends AbstractIntegrationTest { void givenExistingAndActivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() throws IOException { - final OnboardingResponse onboardingResponse = + final var onboardingResponse = OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> optionalMessageResponses = + final var optionalMessageResponses = fetchMessageService.fetch( onboardingResponse, new DefaultCancellationToken( @@ -40,11 +40,11 @@ class HealthCheckForEndpointsByPollingTest extends AbstractIntegrationTest { void givenExistingAndDeactivatedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldReturnAnEmptyResult() throws IOException { - final OnboardingResponse onboardingResponse = + final var onboardingResponse = OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_DEACTIVATED); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final Optional> optionalMessageResponses = + final var optionalMessageResponses = fetchMessageService.fetch( onboardingResponse, new DefaultCancellationToken( @@ -55,7 +55,7 @@ class HealthCheckForEndpointsByPollingTest extends AbstractIntegrationTest { @Test void givenRemovedEndpointWhenPollingTheOutboxThenTheAgrirouterShouldDenyAccessToTheApi() throws IOException { - final OnboardingResponse onboardingResponse = + final var onboardingResponse = OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.FARMING_SOFTWARE_REMOVED); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java index d97326c6..104a538c 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java @@ -46,11 +46,11 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { throws Throwable { final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); - final OnboardingResponse onboardingResponse = + final var sendMessageService = new SendMessageServiceImpl(); + final var onboardingResponse = OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); messageHeaderParameters.setApplicationMessageSeqNo( @@ -59,12 +59,12 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { messageHeaderParameters.setRecipients( Collections.singletonList("797b7f4b-79ec-4247-9fba-e726a55c4c7f")); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setValue( ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA))); payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); - List tuples = + var tuples = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, onboardingResponse); @@ -76,9 +76,9 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { .length() <= MAX_CHUNK_SIZE)); - List encodedMessages = encodeMessageService.encode(tuples); + var encodedMessages = encodeMessageService.encode(tuples); - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setEncodedMessages(encodedMessages); sendMessageParameters.setOnboardingResponse(onboardingResponse); sendMessageService.send(sendMessageParameters); @@ -86,7 +86,7 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { waitForTheAgrirouterToProcessMultipleMessages(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( onboardingResponse, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -95,7 +95,7 @@ class SendChunkedMessageTest extends AbstractIntegrationTest { Assertions.assertEquals(3, fetchMessageResponses.get().size()); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - AtomicReference decodeMessageResponse = new AtomicReference<>(); + var decodeMessageResponse = new AtomicReference(); fetchMessageResponses.get().stream() .map(FetchMessageResponse::getCommand) .forEach( diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java index 76879f96..2528a4f3 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java @@ -40,14 +40,14 @@ void givenValidEndpointWhenSendingCapabilitiesTheCapabilityMessageShouldBeAccept SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() { }); - SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); + var parameters = new SetCapabilitiesParameters(); parameters.setApplicationId(farmingSoftware.getApplicationId()); parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); parameters.setEnablePushNotifications( Capabilities.CapabilitySpecification.PushNotification.DISABLED); parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); List capabilities = new ArrayList<>(); - SetCapabilitiesParameters.CapabilityParameters capability = + var capability = new SetCapabilitiesParameters.CapabilityParameters(); capability.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); @@ -58,7 +58,7 @@ void givenValidEndpointWhenSendingCapabilitiesTheCapabilityMessageShouldBeAccept waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.FARMING_SOFTWARE), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -67,11 +67,11 @@ void givenValidEndpointWhenSendingCapabilitiesTheCapabilityMessageShouldBeAccept Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), @@ -84,14 +84,14 @@ void givenValidEndpointWhenSendingInvalidCapabilitiesTheCapabilityMessageShouldN SetCapabilityService setCapabilityService = new SetCapabilityServiceImpl(new QA() { }); - SetCapabilitiesParameters parameters = new SetCapabilitiesParameters(); + var parameters = new SetCapabilitiesParameters(); parameters.setApplicationId(farmingSoftware.getApplicationId()); parameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); parameters.setEnablePushNotifications( Capabilities.CapabilitySpecification.PushNotification.DISABLED); parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); List capabilities = new ArrayList<>(); - SetCapabilitiesParameters.CapabilityParameters capability = + var capability = new SetCapabilitiesParameters.CapabilityParameters(); capability.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); capability.setDirection(Capabilities.CapabilitySpecification.Direction.SEND_RECEIVE); @@ -102,7 +102,7 @@ void givenValidEndpointWhenSendingInvalidCapabilitiesTheCapabilityMessageShouldN waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.FARMING_SOFTWARE), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -111,20 +111,20 @@ void givenValidEndpointWhenSendingInvalidCapabilitiesTheCapabilityMessageShouldN Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String encodedMessage = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var encodedMessage = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); + var decodeMessageResponse = decodeMessageService.decode(encodedMessage); Assertions.assertEquals( HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); - MessageOuterClass.Messages messages = + var messages = decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); Assertions.assertEquals(1, messages.getMessagesCount()); - MessageOuterClass.Message message = messages.getMessages(0); + var message = messages.getMessages(0); Assertions.assertEquals("VAL_000007", message.getMessageCode()); } } diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java index 99822063..ce59348c 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java @@ -39,10 +39,10 @@ void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAcc SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() { }); - SetSubscriptionParameters parameters = new SetSubscriptionParameters(); + var parameters = new SetSubscriptionParameters(); parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); List subscriptions = new ArrayList<>(); - SetSubscriptionParameters.Subscription subscription = + var subscription = new SetSubscriptionParameters.Subscription(); subscription.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); subscriptions.add(subscription); @@ -52,7 +52,7 @@ void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAcc waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.FARMING_SOFTWARE), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -61,11 +61,11 @@ void givenValidEndpointWhenSendingSubscriptionsTheSubscriptionMessageShouldBeAcc Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String message = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var message = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(message); + var decodeMessageResponse = decodeMessageService.decode(message); Assertions.assertMatchesAny( Arrays.asList(HttpStatus.SC_OK, HttpStatus.SC_CREATED, HttpStatus.SC_NO_CONTENT), @@ -78,10 +78,10 @@ void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShou SetSubscriptionService setSubscriptionService = new SetSubscriptionServiceImpl(new QA() { }); - SetSubscriptionParameters parameters = new SetSubscriptionParameters(); + var parameters = new SetSubscriptionParameters(); parameters.setOnboardingResponse(read(Identifier.FARMING_SOFTWARE)); List subscriptions = new ArrayList<>(); - SetSubscriptionParameters.Subscription subscription = + var subscription = new SetSubscriptionParameters.Subscription(); subscription.setTechnicalMessageType(SystemMessageType.DKE_FEED_DELETE); subscriptions.add(subscription); @@ -91,7 +91,7 @@ void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShou waitForTheAgrirouterToProcessSingleMessage(); FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( read(Identifier.FARMING_SOFTWARE), new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -100,20 +100,20 @@ void givenValidEndpointWhenSendingInvalidSubscriptionsTheSubscriptionMessageShou Assertions.assertEquals(1, fetchMessageResponses.get().size()); Assertions.assertNotNull(fetchMessageResponses.get().get(0).getCommand()); - Message command = fetchMessageResponses.get().get(0).getCommand(); - String encodedMessage = command.getMessage(); + var command = fetchMessageResponses.get().get(0).getCommand(); + var encodedMessage = command.getMessage(); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - DecodeMessageResponse decodeMessageResponse = decodeMessageService.decode(encodedMessage); + var decodeMessageResponse = decodeMessageService.decode(encodedMessage); Assertions.assertEquals( HttpStatus.SC_BAD_REQUEST, decodeMessageResponse.getResponseEnvelope().getResponseCode()); - MessageOuterClass.Messages messages = + var messages = decodeMessageService.decode(decodeMessageResponse.getResponsePayloadWrapper().getDetails()); Assertions.assertEquals(1, messages.getMessagesCount()); - MessageOuterClass.Message message = messages.getMessages(0); + var message = messages.getMessages(0); Assertions.assertEquals("VAL_000006", message.getMessageCode()); } } 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 1933ac90..acb32f43 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 @@ -23,12 +23,12 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForFarmingS AuthorizationRequestService authorizationRequestService = new AuthorizationRequestServiceImpl(new QA() { }); - AuthorizationRequestParameters authorizationRequestParameters = + var authorizationRequestParameters = new AuthorizationRequestParameters(); authorizationRequestParameters.setApplicationId(farmingSoftware.getApplicationId()); authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); - final String authorizationRequestURL = + final var authorizationRequestURL = authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); assertNotNull(authorizationRequestURL); assertTrue(StringUtils.isNotBlank(authorizationRequestURL)); @@ -42,12 +42,12 @@ void givenValidParameterWhenCreatingTheUrlThenTheUrlShouldBeGeneratedForTelemetr AuthorizationRequestService authorizationRequestService = new AuthorizationRequestServiceImpl(new QA() { }); - AuthorizationRequestParameters authorizationRequestParameters = + var authorizationRequestParameters = new AuthorizationRequestParameters(); authorizationRequestParameters.setApplicationId(telemetryPlatform.getApplicationId()); authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); authorizationRequestParameters.setState("my-custom-state-to-identify-the-request"); - final String authorizationRequestURL = + final var authorizationRequestURL = authorizationRequestService.getAuthorizationRequestURL(authorizationRequestParameters); assertNotNull(authorizationRequestURL); assertTrue(StringUtils.isNotBlank(authorizationRequestURL)); @@ -61,7 +61,7 @@ void givenInvalidParameterWhenCreatingTheUrlThenTheUrlShouldBeGenerated() { AuthorizationRequestService authorizationRequestService = new AuthorizationRequestServiceImpl(new QA() { }); - AuthorizationRequestParameters authorizationRequestParameters = + var authorizationRequestParameters = new AuthorizationRequestParameters(); authorizationRequestParameters.setResponseType(SecuredOnboardingResponseType.ONBOARD); Assertions.assertThrows( diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java index f4c25476..85b6ee95 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/OnboardingWithErrorMessageTest.java @@ -22,7 +22,7 @@ class OnboardingWithErrorMessageTest extends AbstractIntegrationTest { void givenInvalidRegistrationCodeWhenSendingTheOnboardingRequestThenThereShouldBeAnOnboardingExceptionWithFilledErrorMessage() { OnboardingService onboardingService = new OnboardingServiceImpl(getEnv()); - OnboardingParameters onboardingParameters = new OnboardingParameters(); + var onboardingParameters = new OnboardingParameters(); onboardingParameters.setApplicationMessageId(MessageIdService.generateMessageId()); onboardingParameters.setApplicationType(ApplicationType.APPLICATION); onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); @@ -31,7 +31,7 @@ class OnboardingWithErrorMessageTest extends AbstractIntegrationTest { onboardingParameters.setGatewayId(Gateway.REST.getKey()); onboardingParameters.setUuid(UUID.randomUUID().toString()); onboardingParameters.setRegistrationCode("INVALID_REGISTRATION_TOKEN"); - OnboardingException onboardingException = + var onboardingException = Assertions.assertThrows( OnboardingException.class, () -> onboardingService.onboard(onboardingParameters)); Assertions.assertNotNull(onboardingException.getOnboardingError()); diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java index 7026ae5d..53ac0799 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java @@ -27,7 +27,7 @@ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { givenInvalidRegistrationCodeThereShouldBeAnOnboardingExceptionWhenSendingAnOnboardingRequest() { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + var onboardingParameters = new SecuredOnboardingParameters(); onboardingParameters.setRegistrationCode("SOME_INVALID_REGISTRATION_CODE"); onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); @@ -45,7 +45,7 @@ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForFarmingSoftware() { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + var onboardingParameters = new SecuredOnboardingParameters(); onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); onboardingParameters.setApplicationId(farmingSoftware.getApplicationId()); onboardingParameters.setCertificationVersionId(farmingSoftware.getCertificationVersionId()); @@ -54,7 +54,7 @@ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { onboardingParameters.setUuid(UUID.randomUUID().toString()); onboardingParameters.setPrivateKey(farmingSoftware.getPrivateKey()); onboardingParameters.setPublicKey(farmingSoftware.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); + final var onboardingResponse = onboardingService.onboard(onboardingParameters); assertNotNull(onboardingResponse); assertNotNull(onboardingResponse.getCapabilityAlternateId()); assertNotNull(onboardingResponse.getDeviceAlternateId()); @@ -74,7 +74,7 @@ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { givenValidRegistrationCodeThereShouldBeAnOnboardingResponseWhenSendingAnOnboardingRequestForTelemetryPlatform() { OnboardingService onboardingService = new OnboardingServiceImpl(new QA() { }); - SecuredOnboardingParameters onboardingParameters = new SecuredOnboardingParameters(); + var onboardingParameters = new SecuredOnboardingParameters(); onboardingParameters.setRegistrationCode("PLEASE_REPLACE_ME"); onboardingParameters.setApplicationId(telemetryPlatform.getApplicationId()); onboardingParameters.setCertificationVersionId(telemetryPlatform.getCertificationVersionId()); @@ -83,7 +83,7 @@ class SecuredOnboardingServiceTest extends AbstractIntegrationTest { onboardingParameters.setUuid(UUID.randomUUID().toString()); onboardingParameters.setPrivateKey(telemetryPlatform.getPrivateKey()); onboardingParameters.setPublicKey(telemetryPlatform.getPublicKey()); - final OnboardingResponse onboardingResponse = onboardingService.onboard(onboardingParameters); + final var onboardingResponse = onboardingService.onboard(onboardingParameters); assertNotNull(onboardingResponse); assertNotNull(onboardingResponse.getCapabilityAlternateId()); assertNotNull(onboardingResponse.getDeviceAlternateId()); diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java index be87edd1..02f076fe 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java @@ -67,10 +67,10 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC throws Throwable { // [1] Fetch all the messages within the feed. The number of headers should match the number of // chunks sent. - final MessageQueryServiceImpl messageQueryService = new MessageQueryServiceImpl(new QA() { + final var messageQueryService = new MessageQueryServiceImpl(new QA() { }); - final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); - final OnboardingResponse recipient = + final var messageQueryParameters = new MessageQueryParameters(); + final var recipient = OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); messageQueryParameters.setOnboardingResponse(recipient); @@ -85,7 +85,7 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC // [3] Fetch the chunks from the outbox. Since we have the same restrictions while receiving, // this has to be the same number of messages as it is chunks. FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); Assertions.assertTrue(fetchMessageResponses.isPresent()); @@ -105,7 +105,7 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC // [5] Map the results from the query to 'real' messages within the feed and perform some // assertions. - final List feedMessages = + final var feedMessages = fetchMessageResponses.get().stream() .map( fetchMessageResponse -> @@ -121,7 +121,7 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC feedMessage -> Assertions.assertNotNull(feedMessage.getHeader().getChunkContext())); Assertions.assertEquals( feedMessages.get(0).getHeader().getChunkContext().getTotal(), expectedNrOfChunks); - final Set chunkContextIds = + final var chunkContextIds = feedMessages.stream() .map(feedMessage -> feedMessage.getHeader().getChunkContext().getContextId()) .collect(Collectors.toSet()); @@ -129,14 +129,14 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC 1, chunkContextIds.size(), "There should be only one chunk context ID."); // [6] Confirm the chunks to remove them from the feed. - final List messageIdsToConfirm = + final var messageIdsToConfirm = feedMessages.stream() .map(feedMessage -> feedMessage.getHeader().getMessageId()) .collect(Collectors.toList()); - final MessageConfirmationServiceImpl messageConfirmationService = + final var messageConfirmationService = new MessageConfirmationServiceImpl(new QA() { }); - final MessageConfirmationParameters messageConfirmationParameters = + final var messageConfirmationParameters = new MessageConfirmationParameters(); messageConfirmationParameters.setOnboardingResponse(recipient); messageConfirmationParameters.setMessageIds(messageIdsToConfirm); @@ -164,13 +164,13 @@ private void actionsForTheRecipient(ByteString messageContent, int expectedNrOfC private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) throws IOException, InterruptedException { final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl(); - final SendMessageServiceImpl sendMessageService = new SendMessageServiceImpl(); - final OnboardingResponse onboardingResponse = + final var sendMessageService = new SendMessageServiceImpl(); + final var onboardingResponse = OnboardingResponseRepository.read(OnboardingResponseRepository.Identifier.FARMING_SOFTWARE); // [1] Define the raw message, in this case this is the Base64 encoded message content, no // chunking needed. - MessageHeaderParameters messageHeaderParameters = new MessageHeaderParameters(); + var messageHeaderParameters = new MessageHeaderParameters(); messageHeaderParameters.setTechnicalMessageType(ContentMessageType.ISO_11783_TASKDATA_ZIP); messageHeaderParameters.setApplicationMessageId(MessageIdService.generateMessageId()); messageHeaderParameters.setApplicationMessageSeqNo( @@ -182,12 +182,12 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT) .getSensorAlternateId())); - PayloadParameters payloadParameters = new PayloadParameters(); + var payloadParameters = new PayloadParameters(); payloadParameters.setValue(messageContent); payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey()); // [2] Chunk the message content using the SDK specific methods ('chunkAndEncode'). - List tuples = + var tuples = encodeMessageService.chunkAndBase64EncodeEachChunk( messageHeaderParameters, payloadParameters, onboardingResponse); @@ -199,10 +199,10 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) .length() <= MAX_CHUNK_SIZE)); - List encodedMessages = encodeMessageService.encode(tuples); + var encodedMessages = encodeMessageService.encode(tuples); // [3] Send the chunks to the agrirouter. - SendMessageParameters sendMessageParameters = new SendMessageParameters(); + var sendMessageParameters = new SendMessageParameters(); sendMessageParameters.setEncodedMessages(encodedMessages); sendMessageParameters.setOnboardingResponse(onboardingResponse); sendMessageService.send(sendMessageParameters); @@ -212,7 +212,7 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) // [5] Check if the chunks were processed successfully. FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( onboardingResponse, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); @@ -221,7 +221,7 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) Assertions.assertEquals(expectedNrOfChunks, fetchMessageResponses.get().size()); DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - AtomicReference decodeMessageResponse = new AtomicReference<>(); + var decodeMessageResponse = new AtomicReference(); fetchMessageResponses.get().stream() .map(FetchMessageResponse::getCommand) .forEach( @@ -258,10 +258,10 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks) @AfterEach public void prepareTestEnvironment() throws Throwable { FetchMessageService fetchMessageService = new FetchMessageServiceImpl(); - final OnboardingResponse recipient = + final var recipient = OnboardingResponseRepository.read( OnboardingResponseRepository.Identifier.COMMUNICATION_UNIT); - final MessageHeaderQueryServiceImpl messageHeaderQueryService = + final var messageHeaderQueryService = new MessageHeaderQueryServiceImpl(new QA() { }); @@ -271,35 +271,35 @@ public void prepareTestEnvironment() throws Throwable { // [2] Fetch all message headers for the last 4 weeks (maximum retention time within the // agrirouter). - final MessageQueryParameters messageQueryParameters = new MessageQueryParameters(); + final var messageQueryParameters = new MessageQueryParameters(); messageQueryParameters.setOnboardingResponse(recipient); messageQueryParameters.setSentToInSeconds(UtcTimeService.inTheFuture(5).toEpochSecond()); messageQueryParameters.setSentFromInSeconds( UtcTimeService.inThePast(UtcTimeService.FOUR_WEEKS_AGO).toEpochSecond()); messageHeaderQueryService.send(messageQueryParameters); waitForTheAgrirouterToProcessSingleMessage(); - Optional> fetchMessageResponses = + var fetchMessageResponses = fetchMessageService.fetch( recipient, new DefaultCancellationToken(MAX_TRIES_BEFORE_FAILURE, DEFAULT_INTERVAL)); Assertions.assertTrue(fetchMessageResponses.isPresent()); Assertions.assertEquals( 1, fetchMessageResponses.get().size(), "This should be a single response."); final DecodeMessageService decodeMessageService = new DecodeMessageServiceImpl(); - final DecodeMessageResponse decodeMessageResponse = + final var decodeMessageResponse = decodeMessageService.decode(fetchMessageResponses.get().get(0).getCommand().getMessage()); Assertions.assertEquals( Response.ResponseEnvelope.ResponseBodyType.ACK_FOR_FEED_HEADER_LIST, decodeMessageResponse.getResponseEnvelope().getType()); - final FeedResponse.HeaderQueryResponse headerQueryResponse = + final var headerQueryResponse = messageHeaderQueryService.decode( decodeMessageResponse.getResponsePayloadWrapper().getDetails().getValue()); // [3] Delete the dangling messages from the feed of the endpoint if necessary. if (headerQueryResponse.getQueryMetrics().getTotalMessagesInQuery() > 0) { - final DeleteMessageServiceImpl deleteMessageService = new DeleteMessageServiceImpl(); - final DeleteMessageParameters deleteMessageParameters = new DeleteMessageParameters(); + final var deleteMessageService = new DeleteMessageServiceImpl(); + final var deleteMessageParameters = new DeleteMessageParameters(); deleteMessageParameters.setOnboardingResponse(recipient); - final List messageIds = + final var messageIds = headerQueryResponse.getFeedList().stream() .map(FeedResponse.HeaderQueryResponse.Feed::getHeadersList) .flatMap(Collection::stream) From 0da1983a5e33dd3988ea77066e0c23161b501b52 Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:56:20 +0100 Subject: [PATCH 31/37] Remove unused import in AuthorizationRequestServiceImpl.java Deleted the unused import java.io.UnsupportedEncodingException in AuthorizationRequestServiceImpl.java file. It keeps the code clean and readable by avoiding unnecessary classes or packages. --- .../impl/onboard/secured/AuthorizationRequestServiceImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java index 02ea929c..09f22a2d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/AuthorizationRequestServiceImpl.java @@ -14,7 +14,6 @@ import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; -import java.io.UnsupportedEncodingException; import java.net.MalformedURLException; import java.net.URI; import java.net.URL; From 784577b4535761f0871b96979ac5099bdbbe62ac Mon Sep 17 00:00:00 2001 From: Sascha Doemer Date: Wed, 13 Dec 2023 11:57:35 +0100 Subject: [PATCH 32/37] Clean up unused imports in multiple files Multiple unused imports across various files in the application have been removed. This enhances code readability and decreases the possibility of potential conflicts from unnecessary classes or packages. Files affected include encoding classes, messaging classes, test classes, and others. --- .../decode/DecodeCloudOnboardingResponsesService.java | 2 -- .../dke/data/agrirouter/impl/common/UtcTimeService.java | 5 ++++- .../encoding/DecodePushNotificationServiceImpl.java | 1 - .../impl/messaging/helper/MessageQueryHelperService.java | 3 --- .../messaging/helper/mqtt/MessageQueryHelperService.java | 1 - .../impl/messaging/mqtt/DeleteMessageServiceImpl.java | 2 +- .../impl/messaging/mqtt/ListEndpointsServiceImpl.java | 1 - .../messaging/mqtt/MessageConfirmationServiceImpl.java | 8 +++----- .../messaging/mqtt/MessageHeaderQueryServiceImpl.java | 3 +-- .../impl/messaging/rest/CloudOffboardingServiceImpl.java | 3 --- .../impl/messaging/rest/CloudOnboardingServiceImpl.java | 3 --- .../impl/messaging/rest/DeleteMessageServiceImpl.java | 3 --- .../impl/messaging/rest/FetchMessageServiceImpl.java | 1 - .../messaging/rest/MessageConfirmationServiceImpl.java | 3 --- .../agrirouter/impl/messaging/rest/MessageFetcher.java | 1 - .../agrirouter/impl/messaging/rest/MessageSender.java | 1 - .../impl/messaging/rest/SetCapabilityServiceImpl.java | 2 -- .../impl/messaging/rest/SetSubscriptionServiceImpl.java | 2 -- .../agrirouter/impl/onboard/OnboardingServiceImpl.java | 1 - .../impl/onboard/secured/OnboardingServiceImpl.java | 1 - .../impl/common/ssl/KeyStoreCreationServiceTest.java | 4 ---- .../messaging/encoding/DecodeMessageServiceImplTest.java | 1 - .../encoding/DecodePushNotificationServiceImplTest.java | 1 - .../messaging/encoding/EncodeMessageServiceImplTest.java | 4 ---- .../agrirouter/test/OnboardingResponseRepository.java | 1 - .../test/messaging/rest/CancellationTokenPollingTest.java | 3 --- .../test/messaging/rest/CloudOffboardingServiceTest.java | 5 ----- .../test/messaging/rest/CloudOnboardingServiceTest.java | 5 ----- .../rest/HealthCheckForEndpointsByPollingTest.java | 4 ---- .../test/messaging/rest/SendChunkedMessageTest.java | 6 +++--- .../test/messaging/rest/SetCapabilityServiceTest.java | 5 ----- .../test/messaging/rest/SetSubscriptionServiceTest.java | 5 ----- .../test/onboarding/SecuredOnboardingServiceTest.java | 1 - .../test/usecase/SendAndReceiveChunkedMessagesTest.java | 6 ++++-- assets/images/agrirouter.svg | 4 ++-- assets/images/lmis.svg | 4 ++-- 36 files changed, 20 insertions(+), 86 deletions(-) diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java index 5849e9e4..56b2ddb6 100644 --- a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java +++ b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/decode/DecodeCloudOnboardingResponsesService.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.convenience.decode; import agrirouter.cloud.registration.CloudVirtualizedAppRegistration; -import agrirouter.commons.MessageOuterClass; import agrirouter.response.Response; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.exception.CouldNotOnboardVirtualCommunicationUnitException; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java index 547eb85e..84e06c4f 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/common/UtcTimeService.java @@ -2,7 +2,10 @@ import com.dke.data.agrirouter.api.exception.CouldNotFindTimeZoneException; -import java.time.*; +import java.time.Instant; +import java.time.OffsetDateTime; +import java.time.ZoneId; +import java.time.ZoneOffset; import java.util.Arrays; import java.util.Calendar; import java.util.Optional; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java index 6c487173..6895d411 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImpl.java @@ -2,7 +2,6 @@ import agrirouter.feed.push.notification.PushNotificationOuterClass; import agrirouter.response.Response; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.exception.CouldNotDecodePushNotificationException; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodePushNotificationService; import com.dke.data.agrirouter.impl.NonEnvironmentalService; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java index 86bdf41c..ebee9cae 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/helper/MessageQueryHelperService.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.impl.messaging.helper; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.enums.TechnicalMessageType; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; 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; @@ -13,7 +11,6 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import java.util.Collections; -import java.util.concurrent.CompletableFuture; public class MessageQueryHelperService extends NonEnvironmentalService implements MessageSender, MessageEncoder, ResponseValidator, QueryAllMessagesParameterCreator { 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 100c8601..fef5faaf 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.helper.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.enums.TechnicalMessageType; import com.dke.data.agrirouter.api.exception.CouldNotSendMqttMessageException; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; 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 87f81e7e..eee3006c 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; @@ -21,6 +20,7 @@ import java.util.Objects; import java.util.concurrent.CompletableFuture; +@SuppressWarnings("unused") public class DeleteMessageServiceImpl extends MqttService implements DeleteMessageService, MessageBodyCreator, 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 d234678a..4266b30c 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 @@ -1,7 +1,6 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; import agrirouter.request.payload.account.Endpoints; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; 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 0c1b6c3b..7c1d8ccf 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,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.mqtt; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; 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; @@ -11,15 +10,14 @@ 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 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; import java.util.concurrent.CompletableFuture; -import org.eclipse.paho.client.mqttv3.IMqttClient; -import org.eclipse.paho.client.mqttv3.MqttException; -import org.eclipse.paho.client.mqttv3.MqttMessage; - public class MessageConfirmationServiceImpl extends MqttService implements MessageConfirmationService, MessageSender, MessageEncoder { 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 f7567bac..94d20b3e 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 @@ -12,11 +12,10 @@ import com.dke.data.agrirouter.impl.messaging.rest.MessageSender; import com.google.protobuf.ByteString; import com.google.protobuf.InvalidProtocolBufferException; +import org.eclipse.paho.client.mqttv3.IMqttClient; import java.util.concurrent.CompletableFuture; -import org.eclipse.paho.client.mqttv3.IMqttClient; - @SuppressWarnings("unused") public class MessageHeaderQueryServiceImpl extends MqttService implements MessageHeaderQueryService, MessageSender { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java index fdd6be1e..770a9d0e 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOffboardingServiceImpl.java @@ -1,8 +1,6 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.CloudOffboardingService; import com.dke.data.agrirouter.api.service.parameters.CloudOffboardingParameters; @@ -12,7 +10,6 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import java.util.Collections; -import java.util.concurrent.CompletableFuture; /** * Service implementation. diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java index 8ece24e6..87936465 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/CloudOnboardingServiceImpl.java @@ -1,8 +1,6 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.CloudOnboardingService; import com.dke.data.agrirouter.api.service.parameters.CloudOnboardingParameters; @@ -12,7 +10,6 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import java.util.Collections; -import java.util.concurrent.CompletableFuture; public class CloudOnboardingServiceImpl implements CloudOnboardingService, MessageSender, ResponseValidator, MessageEncoder { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java index db3a888f..0b9f9ba0 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/DeleteMessageServiceImpl.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.DeleteMessageService; import com.dke.data.agrirouter.api.service.parameters.DeleteMessageParameters; @@ -14,7 +12,6 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import java.util.Collections; -import java.util.concurrent.CompletableFuture; public class DeleteMessageServiceImpl implements DeleteMessageService, diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java index ce5512e2..e0f180ee 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/FetchMessageServiceImpl.java @@ -9,7 +9,6 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; -import java.lang.reflect.Type; import java.util.List; import java.util.Optional; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java index d0b970db..a7814e2d 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageConfirmationServiceImpl.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.MessageConfirmationService; import com.dke.data.agrirouter.api.service.parameters.MessageConfirmationParameters; @@ -14,7 +12,6 @@ import com.dke.data.agrirouter.impl.validation.ResponseValidator; import java.util.Collections; -import java.util.concurrent.CompletableFuture; public class MessageConfirmationServiceImpl extends EnvironmentalService implements MessageConfirmationService, MessageSender, MessageEncoder, ResponseValidator { diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java index 1c7a3508..ca87c5ee 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageFetcher.java @@ -6,7 +6,6 @@ import com.dke.data.agrirouter.api.service.parameters.FetchMessageParameters; import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.validation.ResponseValidator; -import jakarta.ws.rs.core.Response; import org.apache.commons.lang3.StringUtils; import java.util.Objects; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java index 76412e8b..e06ec91b 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/MessageSender.java @@ -6,7 +6,6 @@ import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.messaging.MessageBodyCreator; import jakarta.ws.rs.client.Entity; -import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.concurrent.CompletableFuture; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java index 94a2e742..3deab657 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetCapabilityServiceImpl.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.SetCapabilityService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java index ef0109c7..2ef532e3 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/messaging/rest/SetSubscriptionServiceImpl.java @@ -1,9 +1,7 @@ package com.dke.data.agrirouter.impl.messaging.rest; -import com.dke.data.agrirouter.api.dto.encoding.EncodedMessage; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.messaging.HttpAsyncMessageSendingResult; -import com.dke.data.agrirouter.api.messaging.MessageSendingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.SetSubscriptionService; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java index b0d3f09d..8865ef83 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/OnboardingServiceImpl.java @@ -10,7 +10,6 @@ import com.dke.data.agrirouter.impl.RequestFactory; import com.dke.data.agrirouter.impl.validation.ResponseValidator; import jakarta.ws.rs.client.Entity; -import jakarta.ws.rs.core.Response; import java.util.Objects; import java.util.Optional; diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java index b3290691..9ad31158 100644 --- a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java +++ b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/onboard/secured/OnboardingServiceImpl.java @@ -17,7 +17,6 @@ import com.google.gson.Gson; import jakarta.ws.rs.client.Entity; import jakarta.ws.rs.core.MediaType; -import jakarta.ws.rs.core.Response; import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java index cd8ddcf1..b14954a1 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/common/ssl/KeyStoreCreationServiceTest.java @@ -3,10 +3,6 @@ import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; import org.junit.jupiter.api.Test; -import java.security.KeyStore; -import java.security.PrivateKey; -import java.security.cert.X509Certificate; - import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java index 36e176d5..bc79111f 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodeMessageServiceImplTest.java @@ -1,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java index 43949a74..d96a01ec 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/DecodePushNotificationServiceImplTest.java @@ -1,6 +1,5 @@ package com.dke.data.agrirouter.impl.messaging.encoding; -import agrirouter.feed.push.notification.PushNotificationOuterClass; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodePushNotificationService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java index 277cb589..650f909c 100644 --- a/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java +++ b/agrirouter-sdk-java-impl/src/test/java/com/dke/data/agrirouter/impl/messaging/encoding/EncodeMessageServiceImplTest.java @@ -2,13 +2,11 @@ import agrirouter.request.Request; import agrirouter.request.payload.endpoint.Capabilities; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.ContentMessageType; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.parameters.MessageHeaderParameters; -import com.dke.data.agrirouter.api.service.parameters.MessageParameterTuple; import com.dke.data.agrirouter.api.service.parameters.PayloadParameters; import com.dke.data.agrirouter.api.service.parameters.PayloadParametersKt; import com.google.protobuf.ByteString; @@ -16,8 +14,6 @@ import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import java.util.List; - import static org.junit.jupiter.api.Assertions.assertThrows; class AEncodeEncodeMessageServiceImplTest { 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 6491a239..d6c92be1 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 @@ -5,7 +5,6 @@ import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; /** diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java index 3a8a6aa6..3e23b43b 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CancellationTokenPollingTest.java @@ -2,7 +2,6 @@ import com.dke.data.agrirouter.api.cancellation.CancellationToken; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; 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; @@ -13,8 +12,6 @@ import org.junit.jupiter.api.Timeout; import java.io.IOException; -import java.util.List; -import java.util.Optional; /** * Testing the behavior of the cancellation token. diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java index e1522802..5ca362f5 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOffboardingServiceTest.java @@ -1,9 +1,6 @@ package com.dke.data.agrirouter.test.messaging.rest; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.inner.Message; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.CloudOffboardingService; @@ -25,8 +22,6 @@ import java.util.Arrays; import java.util.Collections; -import java.util.List; -import java.util.Optional; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java index ec41891c..d557f8ef 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/CloudOnboardingServiceTest.java @@ -1,9 +1,6 @@ package com.dke.data.agrirouter.test.messaging.rest; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.inner.Message; import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.CloudOffboardingService; @@ -25,8 +22,6 @@ import java.util.Arrays; import java.util.Collections; -import java.util.List; -import java.util.Optional; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; 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 3cfd58ea..53e4196a 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,8 +1,6 @@ package com.dke.data.agrirouter.test.messaging.rest; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; 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; @@ -13,8 +11,6 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.util.List; -import java.util.Optional; /** * Class to show how health checking via polling can be implemented. diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java index 104a538c..012c9b16 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java @@ -4,14 +4,12 @@ import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.ContentMessageType; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.service.messaging.encoding.DecodeMessageService; import com.dke.data.agrirouter.api.service.messaging.encoding.EncodeMessageService; import com.dke.data.agrirouter.api.service.messaging.http.FetchMessageService; import com.dke.data.agrirouter.api.service.parameters.MessageHeaderParameters; -import com.dke.data.agrirouter.api.service.parameters.MessageParameterTuple; import com.dke.data.agrirouter.api.service.parameters.PayloadParameters; import com.dke.data.agrirouter.api.service.parameters.SendMessageParameters; import com.dke.data.agrirouter.impl.common.MessageIdService; @@ -29,7 +27,9 @@ import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import java.util.*; +import java.util.Arrays; +import java.util.Collections; +import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; /** diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java index 2528a4f3..8f5820f5 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetCapabilityServiceTest.java @@ -1,11 +1,7 @@ package com.dke.data.agrirouter.test.messaging.rest; -import agrirouter.commons.MessageOuterClass; import agrirouter.request.payload.endpoint.Capabilities; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.inner.Message; import com.dke.data.agrirouter.api.enums.ContentMessageType; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.env.QA; @@ -24,7 +20,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Optional; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java index ce59348c..00f5b493 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SetSubscriptionServiceTest.java @@ -1,10 +1,6 @@ package com.dke.data.agrirouter.test.messaging.rest; -import agrirouter.commons.MessageOuterClass; import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; -import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.messaging.inner.Message; import com.dke.data.agrirouter.api.enums.ContentMessageType; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.env.QA; @@ -23,7 +19,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Optional; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.Identifier; import static com.dke.data.agrirouter.test.OnboardingResponseRepository.read; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java index 53ac0799..39f47a6d 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/onboarding/SecuredOnboardingServiceTest.java @@ -1,6 +1,5 @@ package com.dke.data.agrirouter.test.onboarding; -import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.CertificationType; import com.dke.data.agrirouter.api.enums.Gateway; import com.dke.data.agrirouter.api.env.QA; diff --git a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java index 02f076fe..74a43fcf 100644 --- a/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java +++ b/agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java @@ -6,7 +6,6 @@ import com.dke.data.agrirouter.api.cancellation.DefaultCancellationToken; import com.dke.data.agrirouter.api.dto.encoding.DecodeMessageResponse; import com.dke.data.agrirouter.api.dto.messaging.FetchMessageResponse; -import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.enums.ContentMessageType; import com.dke.data.agrirouter.api.enums.SystemMessageType; import com.dke.data.agrirouter.api.env.QA; @@ -35,7 +34,10 @@ import org.junit.jupiter.params.provider.MethodSource; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; import java.util.stream.Stream; diff --git a/assets/images/agrirouter.svg b/assets/images/agrirouter.svg index c3d214b6..34f2a095 100755 --- a/assets/images/agrirouter.svg +++ b/assets/images/agrirouter.svg @@ -1,7 +1,7 @@ - +