diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 69ad51b4..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: "CodeQL" - -on: - push: - branches: - - "main" - - "releases/**" - pull_request: - branches: - - "main" - - "releases/**" - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - language: ['java'] - - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - fetch-depth: 2 - - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} - - - name: Initialize CodeQL - uses: github/codeql-action/init@v1 - with: - languages: ${{ matrix.language }} - - - name: Build project - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B clean package --file pom.xml --settings ci/settings.xml -DskipTests=true - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 06a83aa9..a64ca821 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -4,45 +4,20 @@ on: push: branches: - "main" - - "releases/**" pull_request: branches: - "main" - - "releases/**" jobs: build_jdk8: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 8 - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: - java-version: 1.8 - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk9: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 9 - uses: actions/setup-java@v1 - with: - java-version: 9 - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk10: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 10 - uses: actions/setup-java@v1 - with: - java-version: 10 + java-version: 8 + distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -50,59 +25,25 @@ jobs: build_jdk11: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 11 - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: java-version: 11 + 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_jdk12: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 12 - uses: actions/setup-java@v1 - with: - java-version: 12 - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk13: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 13 - uses: actions/setup-java@v1 - with: - java-version: 13 - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk14: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - name: Set up JDK 14 - uses: actions/setup-java@v1 - with: - java-version: 14 - - name: Build with Maven - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: mvn -B package --file pom.xml --settings ci/settings.xml -DskipTests=true - build_jdk15: + build_jdk17: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up JDK 15 - uses: actions/setup-java@v1 + - uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 15 + java-version: 17 + distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -110,11 +51,12 @@ jobs: integration_test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 11 - uses: actions/setup-java@v1 + 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 35c7278c..85946b40 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -10,11 +10,12 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK - uses: actions/setup-java@v1 + uses: actions/setup-java@v3 with: - java-version: 1.8 + java-version: 8 + distribution: zulu - name: Build with Maven env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/agrirouter-sdk-java-api/pom.xml b/agrirouter-sdk-java-api/pom.xml index 281c7bc8..52838434 100644 --- a/agrirouter-sdk-java-api/pom.xml +++ b/agrirouter-sdk-java-api/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.0.0-SNAPSHOT + 2.3.0 AGRIROUTER SDK JAVA - API agrirouter-sdk-java-api 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 new file mode 100644 index 00000000..a877157d --- /dev/null +++ b/agrirouter-sdk-java-api/src/main/java/com/dke/data/agrirouter/api/env/Constants.java @@ -0,0 +1,9 @@ +package com.dke.data.agrirouter.api.env; + +/** 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"; +} diff --git a/agrirouter-sdk-java-convenience/pom.xml b/agrirouter-sdk-java-convenience/pom.xml index d1b341de..d2ade9b1 100644 --- a/agrirouter-sdk-java-convenience/pom.xml +++ b/agrirouter-sdk-java-convenience/pom.xml @@ -5,7 +5,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.0.0-SNAPSHOT + 2.3.0 AGRIROUTER SDK JAVA - CONVENIENCE agrirouter-sdk-java-convenience diff --git a/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java b/agrirouter-sdk-java-convenience/src/main/java/com/dke/data/agrirouter/convenience/mqtt/client/MqttOptionService.java index f52b88cc..216b7376 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 @@ -3,6 +3,7 @@ import com.dke.data.agrirouter.api.dto.onboard.OnboardingResponse; import com.dke.data.agrirouter.api.dto.onboard.RouterDevice; import com.dke.data.agrirouter.api.enums.CertificationType; +import com.dke.data.agrirouter.api.env.Constants; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.exception.CouldNotCreateMqttOptionException; import com.dke.data.agrirouter.impl.EnvironmentalService; @@ -90,7 +91,7 @@ private SocketFactory getSocketFactory( if (certificationType == CertificationType.PEM) { kmf.init( this.keyStoreCreationService.createAndReturnKeystoreFromPEM(certificate, password), - "changeit".toCharArray()); + Constants.DEFAULT_PASSWORD.toCharArray()); } else { if (certificationType == CertificationType.P12) { kmf.init( @@ -98,7 +99,7 @@ private SocketFactory getSocketFactory( password.toCharArray()); } } - SSLContext context = SSLContext.getInstance("TLSv1.2"); + SSLContext context = SSLContext.getInstance(Constants.PROTOCOL); context.init(kmf.getKeyManagers(), null, null); return context.getSocketFactory(); } catch (NoSuchAlgorithmException e) { diff --git a/agrirouter-sdk-java-impl/pom.xml b/agrirouter-sdk-java-impl/pom.xml index e72ac42c..60e3fd1c 100644 --- a/agrirouter-sdk-java-impl/pom.xml +++ b/agrirouter-sdk-java-impl/pom.xml @@ -6,7 +6,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.0.0-SNAPSHOT + 2.3.0 AGRIROUTER SDK JAVA - IMPL agrirouter-sdk-java-impl diff --git a/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java b/agrirouter-sdk-java-impl/src/main/java/com/dke/data/agrirouter/impl/RequestFactory.java index ffba1af0..5c0c1075 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 @@ -1,6 +1,7 @@ package com.dke.data.agrirouter.impl; import com.dke.data.agrirouter.api.enums.CertificationType; +import com.dke.data.agrirouter.api.env.Constants; import com.dke.data.agrirouter.api.env.Environment; import com.dke.data.agrirouter.api.exception.CertificationTypeNotSupportedException; import com.dke.data.agrirouter.api.exception.CouldNotCreateDynamicKeyStoreException; @@ -64,7 +65,7 @@ private static Client createClient( case PEM: return ClientBuilder.newBuilder() .withConfig(clientConfig) - .keyStore(keyStore, KeyStoreCreationService.TEMPORARY_KEY_PASSWORD) + .keyStore(keyStore, Constants.DEFAULT_PASSWORD) .build(); case P12: return ClientBuilder.newBuilder() 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 b27703ea..a9461869 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 @@ -1,11 +1,13 @@ package com.dke.data.agrirouter.impl.common.ssl; +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 java.io.ByteArrayInputStream; -import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import java.security.*; import java.security.cert.Certificate; import java.security.cert.CertificateException; @@ -21,16 +23,12 @@ public class KeyStoreCreationService implements HasLogger { - public static final String TEMPORARY_KEY_PASSWORD = "changeit"; - 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 DEFAULT_PASSWORD = "changeit"; - public SocketFactory getSocketFactory( List rootCertificates, String certificate, String password) throws Exception { this.logMethodBegin(rootCertificates, certificate, password); @@ -154,8 +152,8 @@ String createKeyStoreInClasspath(X509Certificate cert, PrivateKey key) this.getNativeLogger().trace("Store keystore within temporary folder."); keystore.store( - new FileOutputStream("./target/test-classes/" + tmpKeystoreName + ".jks"), - TEMPORARY_KEY_PASSWORD.toCharArray()); + Files.newOutputStream(Paths.get("./target/test-classes/" + tmpKeystoreName + ".jks")), + Constants.DEFAULT_PASSWORD.toCharArray()); this.logMethodEnd(tmpKeystoreName); return tmpKeystoreName; @@ -226,17 +224,17 @@ private KeyStore createKeyStore(X509Certificate x509Certificate, PrivateKey key) this.getNativeLogger().trace("Create JKS keystore."); KeyStore keystore = KeyStore.getInstance("JKS"); keystore.load(null); - keystore.setCertificateEntry("cert-alias", x509Certificate); + keystore.setCertificateEntry(Constants.CERT_ALIAS, x509Certificate); this.getNativeLogger().trace("Add certificate to the key store."); keystore.setKeyEntry( - "key-alias", key, getDefaultPassword(), new Certificate[] {x509Certificate}); + Constants.KEY_ALIAS, key, getDefaultPassword(), new Certificate[] {x509Certificate}); this.logMethodEnd(keystore); return keystore; } private static char[] getDefaultPassword() { - return DEFAULT_PASSWORD.toCharArray(); + return Constants.DEFAULT_PASSWORD.toCharArray(); } } diff --git a/agrirouter-sdk-java-tests/pom.xml b/agrirouter-sdk-java-tests/pom.xml index 080d0a9b..6f34fdac 100644 --- a/agrirouter-sdk-java-tests/pom.xml +++ b/agrirouter-sdk-java-tests/pom.xml @@ -5,7 +5,7 @@ agrirouter-sdk-java com.agrirouter.api - 2.0.0-SNAPSHOT + 2.3.0 4.0.0 AGRIROUTER SDK JAVA - TESTS diff --git a/pom.xml b/pom.xml index 8c185a92..78dc2922 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.agrirouter.api agrirouter-sdk-java - 2.0.0-SNAPSHOT + 2.3.0 pom AGRIROUTER SDK JAVA