diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2631adff7392aad3efb19e737f5c976fabb7d844..54fbb6f47dbbc1bf7a0035d7fafdca51064a1bce 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -60,6 +60,7 @@ child-lib: variables: COMPONENT: $COMPONENT MODE: $MODE + DISABLE_DEP_CHECK: "true" trigger: include: "services/common/.gitlab-ci-library.yml" strategy: depend diff --git a/CHANGELOG.md b/CHANGELOG.md index dbe3dd08cbee0507db1827e83f95e68d0ffd3c26..776dbefb8ea25f27c7ae82d373cc6219b4110276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Tous les changements de ce projet seront documentés dans ce document. ## [Non livré] +- Mise à jour de Java 17 vers 21 et des dépendances - Defect: Libellé erreur erroné quand donnée de référence manquante - Ajout du mode d'utilisation et taux d'utilisation - Ajout d'une API /version pour récupérer la version courante de NumEcoEval dans le composant référentiel diff --git a/services/.workspace/.idea/compiler.xml b/services/.workspace/.idea/compiler.xml index f846159834d25b6c569ec6503c8ee672b8e3994e..84cc240af38dc7893a3d41b3e62e4c328bf1f58f 100644 --- a/services/.workspace/.idea/compiler.xml +++ b/services/.workspace/.idea/compiler.xml @@ -8,14 +8,14 @@ <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <outputRelativeToContentRoot value="true" /> </profile> - <profile name="Annotation profile for api-expositiondonneesentrees" enabled="true"> + <profile name="Annotation profile for common" enabled="true"> <sourceOutputDir name="target/generated-sources/annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <outputRelativeToContentRoot value="true" /> <processorPath useClasspath="false"> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.3.Final/mapstruct-processor-1.5.3.Final.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.5.3.Final/mapstruct-1.5.3.Final.jar" /> - <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.26/lombok-1.18.26.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct-processor/1.5.5.Final/mapstruct-processor-1.5.5.Final.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/mapstruct/mapstruct/1.5.5.Final/mapstruct-1.5.5.Final.jar" /> + <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok/1.18.30/lombok-1.18.30.jar" /> <entry name="$MAVEN_REPOSITORY$/org/projectlombok/lombok-mapstruct-binding/0.2.0/lombok-mapstruct-binding-0.2.0.jar" /> <entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc-scribe/0.15.0/therapi-runtime-javadoc-scribe-0.15.0.jar" /> <entry name="$MAVEN_REPOSITORY$/com/github/therapi/therapi-runtime-javadoc/0.15.0/therapi-runtime-javadoc-0.15.0.jar" /> @@ -30,8 +30,8 @@ <module name="api-rest-caculs" /> <module name="calculs" /> <module name="api-expositiondonneesentrees" /> - <module name="api-event-calculs" /> <module name="api-event-donneesEntrees" /> + <module name="api-event-calculs" /> </profile> </annotationProcessing> <bytecodeTargetLevel> diff --git a/services/.workspace/.idea/misc.xml b/services/.workspace/.idea/misc.xml index 7363f2addc2ae079b7a7bae6dc57cb306cd08ee4..0ab13561ffaa90122bac87600be511be4b057512 100644 --- a/services/.workspace/.idea/misc.xml +++ b/services/.workspace/.idea/misc.xml @@ -15,7 +15,7 @@ </option> <option name="workspaceImportForciblyTurnedOn" value="true" /> </component> - <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="temurin-17" project-jdk-type="JavaSDK"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="openjdk-21" project-jdk-type="JavaSDK"> <output url="file://$PROJECT_DIR$/out" /> </component> </project> \ No newline at end of file diff --git a/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml b/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml index af7bfa9f7ac6f008811d8da85534a6f465b76adf..b1f2a817f444a2201a3f550402eba1168a41991c 100644 --- a/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml +++ b/services/.workspace/.idea/runConfigurations/api_event_calculs__gen_sources_.xml @@ -8,7 +8,7 @@ <option name="environmentProperties"> <map /> </option> - <option name="jreName" value="temurin-17" /> + <option name="jreName" value="openjdk-21" /> <option name="mavenProperties"> <map /> </option> diff --git a/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml b/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml index 89a394ebdd0c2167359695ce572b55d7013e2f4e..07aaa566e4aac35ababe6d361b1142468ea2a48d 100644 --- a/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml +++ b/services/.workspace/.idea/runConfigurations/api_expositiondonneesentrees__gen_sources_.xml @@ -8,7 +8,7 @@ <option name="environmentProperties"> <map /> </option> - <option name="jreName" value="temurin-17" /> + <option name="jreName" value="openjdk-21" /> <option name="mavenProperties"> <map /> </option> diff --git a/services/.workspace/.idea/runConfigurations/install_calculs.xml b/services/.workspace/.idea/runConfigurations/install_calculs.xml index d8b53028f2762392a24a01911a7bb5555cd6d5cf..29e0955b302000d0470af31efc9759613d32f046 100644 --- a/services/.workspace/.idea/runConfigurations/install_calculs.xml +++ b/services/.workspace/.idea/runConfigurations/install_calculs.xml @@ -8,7 +8,7 @@ <option name="environmentProperties"> <map /> </option> - <option name="jreName" value="temurin-17" /> + <option name="jreName" value="openjdk-21" /> <option name="mavenProperties"> <map /> </option> diff --git a/services/.workspace/.idea/runConfigurations/install_common.xml b/services/.workspace/.idea/runConfigurations/install_common.xml index 86ce6c8478833e04599599b7cf14b495f23f70ce..01d1be23dcf27f0317306d366e11144598da179f 100644 --- a/services/.workspace/.idea/runConfigurations/install_common.xml +++ b/services/.workspace/.idea/runConfigurations/install_common.xml @@ -8,7 +8,7 @@ <option name="environmentProperties"> <map /> </option> - <option name="jreName" value="temurin-17" /> + <option name="jreName" value="openjdk-21" /> <option name="mavenProperties"> <map /> </option> diff --git a/services/.workspace/.idea/runConfigurations/install_core.xml b/services/.workspace/.idea/runConfigurations/install_core.xml index 104f7ef69e0b2a705a3034cce45e074cd9d0864f..63ea27ee0ba053ae6d247b4097bc2b01a9114dc1 100644 --- a/services/.workspace/.idea/runConfigurations/install_core.xml +++ b/services/.workspace/.idea/runConfigurations/install_core.xml @@ -8,7 +8,7 @@ <option name="environmentProperties"> <map /> </option> - <option name="jreName" value="temurin-17" /> + <option name="jreName" value="openjdk-21" /> <option name="mavenProperties"> <map /> </option> diff --git a/services/api-event-calculs/dependency_check_suppressions.xml b/services/api-event-calculs/dependency_check_suppressions.xml deleted file mode 100644 index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000 --- a/services/api-event-calculs/dependency_check_suppressions.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd"> - - <suppress> - <notes><![CDATA[ - file name: spring-security-crypto-5.7.3.jar - La librairie Spring Security est en version 5.7.3. - Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus) - https://nvd.nist.gov/vuln/detail/CVE-2020-5408 - ]]></notes> - <cve>CVE-2020-5408</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: spring-web-5.3.22.jar - Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java - Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525 - ]]></notes> - <cve>CVE-2016-1000027</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: snakeyaml-1.33.jar - Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32 - https://nvd.nist.gov/vuln/detail/CVE-2022-38752 - ]]></notes> - <cve>CVE-2022-38752</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213 - Concerne : software.amazon.awssdk:utils qui n'est pas utilisé - ]]></notes> - <cve>CVE-2021-4277</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132 - ]]></notes> - <cve>CVE-2021-37533</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-1471</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-3064</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2021-4235</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés. - Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart. - cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2022-45688</cve> - </suppress> - - - <suppress> - <notes><![CDATA[ - Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité. - cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2023-20862</cve> - </suppress> -</suppressions> diff --git a/services/api-event-calculs/pom.xml b/services/api-event-calculs/pom.xml index 094c07ff991d91fe3b4086197fd1d41bb6f7e8f9..05bf8fa1512398aa19cf76ebc6a1a876b054280e 100644 --- a/services/api-event-calculs/pom.xml +++ b/services/api-event-calculs/pom.xml @@ -42,11 +42,12 @@ <dependency> <groupId>org.mte.numecoeval</groupId> <artifactId>common</artifactId> + <version>${project.version}</version> </dependency> <dependency> <groupId>org.mte.numecoeval</groupId> <artifactId>calculs</artifactId> - <version>1.2.3-SNAPSHOT</version> + <version>${project.version}</version> </dependency> <dependency> @@ -230,7 +231,7 @@ <serviceImplementation>false</serviceImplementation> <booleanGetterPrefix>is</booleanGetterPrefix> <additionalModelTypeAnnotations> - @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor + @lombok.experimental.SuperBuilder </additionalModelTypeAnnotations> </configOptions> </configuration> @@ -274,7 +275,7 @@ <serviceImplementation>false</serviceImplementation> <booleanGetterPrefix>is</booleanGetterPrefix> <additionalModelTypeAnnotations> - @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor + @lombok.experimental.SuperBuilder </additionalModelTypeAnnotations> </configOptions> </configuration> diff --git a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java index 7afd35344fd1abee4707a2d308cf521b332fc464..b70ac8b57e6541c79364019039743c2cd987e142 100644 --- a/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java +++ b/services/api-event-calculs/src/main/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculService.java @@ -24,7 +24,7 @@ public class SyncCalculService { public ReponseCalculRest calcul(SyncCalculRest syncCalculRest) { - var result = new ReponseCalculRest(); + var result = ReponseCalculRest.builder().build(); if (syncCalculRest.getEquipementPhysiqueIds() != null && !syncCalculRest.getEquipementPhysiqueIds().isEmpty()) { List<CalculSizes> calculSizesList = equipementPhysiqueRepository.findEquipementPhysiqueDTOs(syncCalculRest.getEquipementPhysiqueIds()).stream() diff --git a/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java b/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java index ee05e985989cad00d2cf384551e943618da73567..0d15cf801d133dfa250dc96e7fa7fab1211740af 100644 --- a/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java +++ b/services/api-event-calculs/src/test/java/org/mte/numecoeval/calculs/infrastructure/service/sync/calculs/SyncCalculServiceTest.java @@ -56,14 +56,10 @@ class SyncCalculServiceTest { Mockito.when(mainEquipementPhysiqueService.calcul(any())).thenReturn(calculSizes); - var syncCalculRest = mapper.readValue(""" - { - "equipementPhysiqueIds": [1,2] - } - """, SyncCalculRest.class); - /* EXECUTE */ - var actual = syncCalculService.calcul(syncCalculRest); + var actual = syncCalculService.calcul(SyncCalculRest.builder() + .equipementPhysiqueIds(List.of(1L, 2L)) + .build()); /* ASSERT */ Assertions.assertEquals(2, actual.getNbrEquipementPhysique()); @@ -85,14 +81,10 @@ class SyncCalculServiceTest { Mockito.when(mainMessagerieService.calcul(any())).thenReturn(calculSizes); - var syncCalculRest = mapper.readValue(""" - { - "messagerieIds": [10,20,30] - } - """, SyncCalculRest.class); - /* EXECUTE */ - var actual = syncCalculService.calcul(syncCalculRest); + var actual = syncCalculService.calcul(SyncCalculRest.builder() + .messagerieIds(List.of(10L, 20L, 30L)) + .build()); /* ASSERT */ Assertions.assertEquals(3, actual.getNbrMessagerie()); diff --git a/services/api-event-donneesentrees/dependency_check_suppressions.xml b/services/api-event-donneesentrees/dependency_check_suppressions.xml deleted file mode 100644 index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000 --- a/services/api-event-donneesentrees/dependency_check_suppressions.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd"> - - <suppress> - <notes><![CDATA[ - file name: spring-security-crypto-5.7.3.jar - La librairie Spring Security est en version 5.7.3. - Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus) - https://nvd.nist.gov/vuln/detail/CVE-2020-5408 - ]]></notes> - <cve>CVE-2020-5408</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: spring-web-5.3.22.jar - Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java - Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525 - ]]></notes> - <cve>CVE-2016-1000027</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: snakeyaml-1.33.jar - Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32 - https://nvd.nist.gov/vuln/detail/CVE-2022-38752 - ]]></notes> - <cve>CVE-2022-38752</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213 - Concerne : software.amazon.awssdk:utils qui n'est pas utilisé - ]]></notes> - <cve>CVE-2021-4277</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132 - ]]></notes> - <cve>CVE-2021-37533</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-1471</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-3064</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2021-4235</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés. - Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart. - cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2022-45688</cve> - </suppress> - - - <suppress> - <notes><![CDATA[ - Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité. - cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2023-20862</cve> - </suppress> -</suppressions> diff --git a/services/api-event-donneesentrees/pom.xml b/services/api-event-donneesentrees/pom.xml index c484db9f9cecabc20c243e5dea756ef5a60392fd..9e0f64f4b8f28040b5173f10560eb2eb2259b41e 100644 --- a/services/api-event-donneesentrees/pom.xml +++ b/services/api-event-donneesentrees/pom.xml @@ -36,6 +36,7 @@ <dependency> <groupId>org.mte.numecoeval</groupId> <artifactId>common</artifactId> + <version>${project.version}</version> </dependency> <dependency> diff --git a/services/api-expositiondonneesentrees/README.md b/services/api-expositiondonneesentrees/README.md index 628853ac3b5589c2ed8a7d691bbda05c25a89473..ffbe1ffee0604b89eed4a406bc653ad4091a2567 100644 --- a/services/api-expositiondonneesentrees/README.md +++ b/services/api-expositiondonneesentrees/README.md @@ -6,11 +6,11 @@ Le contrat d'interface est disponible au format [OpenAPI 3](src/main/resources/s ## Pré-requis -- JDK 17 - - [Open JDK](https://jdk.java.net/java-se-ri/17) +- JDK 21 + - [Open JDK](https://jdk.java.net/java-se-ri/21) - [Coretto](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html) - [Maven 3](https://maven.apache.org/download.cgi) -- Un IDE compatible avec Maven 3 et JDK 17 +- Un IDE compatible avec Maven 3 et JDK 21 ## Build diff --git a/services/api-expositiondonneesentrees/dependency_check_suppressions.xml b/services/api-expositiondonneesentrees/dependency_check_suppressions.xml deleted file mode 100644 index 7937ced36578ad474a7a2d84af4a487d30b95bf1..0000000000000000000000000000000000000000 --- a/services/api-expositiondonneesentrees/dependency_check_suppressions.xml +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd"> - - <suppress> - <notes><![CDATA[ - file name: spring-security-crypto-5.7.3.jar - La librairie Spring Security est en version 5.7.3. - Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus) - https://nvd.nist.gov/vuln/detail/CVE-2020-5408 - ]]></notes> - <cve>CVE-2020-5408</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: spring-web-5.3.22.jar - Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java - Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525 - ]]></notes> - <cve>CVE-2016-1000027</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: snakeyaml-1.33.jar - Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32 - https://nvd.nist.gov/vuln/detail/CVE-2022-38752 - ]]></notes> - <cve>CVE-2022-38752</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213 - Concerne : software.amazon.awssdk:utils qui n'est pas utilisé - ]]></notes> - <cve>CVE-2021-4277</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132 - ]]></notes> - <cve>CVE-2021-37533</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-1471</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-3064</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2021-4235</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés. - Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart. - cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2022-45688</cve> - </suppress> - - - <suppress> - <notes><![CDATA[ - Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité. - cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2023-20862</cve> - </suppress> - - -</suppressions> diff --git a/services/api-expositiondonneesentrees/pom.xml b/services/api-expositiondonneesentrees/pom.xml index 336f9edef16edef8312557f68a28cea1a3f47f4a..30692296b67596377c2f925b5070e5f4f09b1fb8 100644 --- a/services/api-expositiondonneesentrees/pom.xml +++ b/services/api-expositiondonneesentrees/pom.xml @@ -39,6 +39,7 @@ <dependency> <groupId>org.mte.numecoeval</groupId> <artifactId>common</artifactId> + <version>${project.version}</version> </dependency> <!-- REST --> @@ -297,7 +298,7 @@ <serviceImplementation>false</serviceImplementation> <booleanGetterPrefix>is</booleanGetterPrefix> <additionalModelTypeAnnotations> - @lombok.AllArgsConstructor;@lombok.Builder;@lombok.NoArgsConstructor + @lombok.experimental.SuperBuilder </additionalModelTypeAnnotations> </configOptions> </configuration> diff --git a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java index 6832764f3900b454f45278a346a71f2a5ba7cc95..39da64041253166f03d96ff6a093bcfd01f3632d 100644 --- a/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java +++ b/services/api-expositiondonneesentrees/src/main/java/org/mte/numecoeval/expositiondonneesentrees/domain/ports/input/impl/StatutPourCalculPortImpl.java @@ -51,11 +51,11 @@ public class StatutPourCalculPortImpl implements StatutPourCalculPort { var statut = StatutCalculRest.StatutEnum.EN_COURS; if (etat == 100) statut = StatutCalculRest.StatutEnum.TERMINE; - var result = new StatutCalculRest(); - result.setStatut(statut); - result.setEtat(etat + "%"); - result.setEquipementPhysique(volumeMapper.toRest(volumeEqPh)); - result.setMessagerie(volumeMapper.toRest(volumeMessagerie)); - return result; + return StatutCalculRest.builder() + .statut(statut) + .etat(etat + "%") + .equipementPhysique(volumeMapper.toRest(volumeEqPh)) + .messagerie(volumeMapper.toRest(volumeMessagerie)) + .build(); } } diff --git a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java index e5162cec935f1e158d5a0b112e9465a8205e7589..759780e146182eda45ed3fccfc9c797dc81d13f7 100644 --- a/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java +++ b/services/api-expositiondonneesentrees/src/test/java/org/mte/numecoeval/expositiondonneesentrees/domain/port/input/StatutPourCalculPortImplTest.java @@ -11,6 +11,7 @@ import org.mte.numecoeval.expositiondonneesentrees.domain.exception.NotFoundExce import org.mte.numecoeval.expositiondonneesentrees.domain.model.Volume; import org.mte.numecoeval.expositiondonneesentrees.domain.ports.input.impl.StatutPourCalculPortImpl; import org.mte.numecoeval.expositiondonneesentrees.generated.api.model.StatutCalculRest; +import org.mte.numecoeval.expositiondonneesentrees.generated.api.model.VolumeRest; import org.mte.numecoeval.expositiondonneesentrees.infrastructure.mapper.VolumeMapper; import org.springframework.test.util.ReflectionTestUtils; import org.testcontainers.shaded.com.fasterxml.jackson.databind.ObjectMapper; @@ -47,20 +48,18 @@ class StatutPourCalculPortImplTest { /* EXECUTE : params does not matter in the test */ var actual = statutPourCalculPort.statutCalculs(volumeEqPhysique, volumeMessagerie); - var expected = mapper.readValue(""" - { - "statut" : "EN_COURS", - "etat" : "98%", - "equipementPhysique" : { - "nbEnCours" : 10, - "nbTraite" : 100 - }, - "messagerie" : { - "nbEnCours" : 50, - "nbTraite" : 5000 - } - } - """, StatutCalculRest.class); + var expected = StatutCalculRest.builder() + .statut(StatutCalculRest.StatutEnum.EN_COURS) + .etat("98%") + .equipementPhysique(VolumeRest.builder() + .nbEnCours(10) + .nbTraite(100) + .build()) + .messagerie(VolumeRest.builder() + .nbEnCours(50) + .nbTraite(5000) + .build()) + .build(); /* ASSERT */ assertEquals(mapper.writeValueAsString(expected), mapper.writeValueAsString(actual)); @@ -77,20 +76,18 @@ class StatutPourCalculPortImplTest { /* EXECUTE : params does not matter in the test */ var actual = statutPourCalculPort.statutCalculs(volumeEqPhysique, volumeMessagerie); - var expected = mapper.readValue(""" - { - "statut" : "TERMINE", - "etat" : "100%", - "equipementPhysique" : { - "nbEnCours" : 0, - "nbTraite" : 100 - }, - "messagerie" : { - "nbEnCours" : 0, - "nbTraite" : 5000 - } - } - """, StatutCalculRest.class); + var expected = StatutCalculRest.builder() + .statut(StatutCalculRest.StatutEnum.TERMINE) + .etat("100%") + .equipementPhysique(VolumeRest.builder() + .nbEnCours(0) + .nbTraite(100) + .build()) + .messagerie(VolumeRest.builder() + .nbEnCours(0) + .nbTraite(5000) + .build()) + .build(); /* ASSERT */ assertEquals(mapper.writeValueAsString(expected), mapper.writeValueAsString(actual)); diff --git a/services/api-referentiel/dependency_check_suppressions.xml b/services/api-referentiel/dependency_check_suppressions.xml deleted file mode 100644 index 15f53bbc9ca0caa969e8cf94333045ac34dbd899..0000000000000000000000000000000000000000 --- a/services/api-referentiel/dependency_check_suppressions.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.1.xsd"> - - <suppress> - <notes><![CDATA[ - file name: spring-security-crypto-5.7.3.jar - La librairie Spring Security est en version 5.7.3. - Cette CVE est marquée uniquement jusqu'à la version 5.2.4 (exclus) - https://nvd.nist.gov/vuln/detail/CVE-2020-5408 - ]]></notes> - <cve>CVE-2020-5408</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: spring-web-5.3.22.jar - Dans notre contexte, nous ne recevons pas de code Java de l'extérieur et n'effectuons pas de dé-sérialisation de code Java - Côté Spring, le point est déjà remonté comme un faux-positif : https://github.com/spring-projects/spring-framework/issues/24434#issuecomment-744519525 - ]]></notes> - <cve>CVE-2016-1000027</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - file name: snakeyaml-1.33.jar - Faux-positif : la version de Snakeyaml est la 1.33, la CVE existe uniquement sur les versions < 1.32 - https://nvd.nist.gov/vuln/detail/CVE-2022-38752 - ]]></notes> - <cve>CVE-2022-38752</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif sur toutes les librairies utils: https://github.com/jeremylong/DependencyCheck/issues/5213 - Concerne : software.amazon.awssdk:utils qui n'est pas utilisé - ]]></notes> - <cve>CVE-2021-4277</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-positif : matchent à tort sur tous les commons : https://github.com/jeremylong/DependencyCheck/issues/5132 - ]]></notes> - <cve>CVE-2021-37533</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-1471</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-3064</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2021-4235</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés. - Le faux-positif se trouve sur json-path, jackson-core, accessors-smart et json-smart. - cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2022-45688</cve> - </suppress> - - - <suppress> - <notes><![CDATA[ - Faux-Positif : Conformément au lien, nous ne sommes pas dans un des cas de vulnérabilité. - cf. cf. https://github.com/jeremylong/DependencyCheck/issues/5502 - ]]></notes> - <cve>CVE-2023-20862</cve> - </suppress> -</suppressions> diff --git a/services/api-referentiel/pom.xml b/services/api-referentiel/pom.xml index f574396143e2e87cd46efb455f0b529a5a331ef3..33820b21f02235b7bf0645643956568381bcbac9 100644 --- a/services/api-referentiel/pom.xml +++ b/services/api-referentiel/pom.xml @@ -39,6 +39,7 @@ <dependency> <groupId>org.mte.numecoeval</groupId> <artifactId>common</artifactId> + <version>${project.version}</version> </dependency> <!-- open api docs provisoire --> diff --git a/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java b/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java index 5d1c0da87d2007f08862bdc4b22e20efa5a97a2f..c7d1e02e8fd5cc01d4a7d63033614e3049dcc14e 100644 --- a/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java +++ b/services/api-referentiel/src/test/java/org/mte/numecoeval/referentiel/ReferentielApplicationTests.java @@ -5,8 +5,8 @@ import io.restassured.http.ContentType; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.mte.numecoeval.referentiel.infrastructure.restapi.dto.ErrorResponseDTO; import org.mte.numecoeval.referentiel.infrastructure.restapi.controller.hypothese.ReferentielHypotheseRestApi; +import org.mte.numecoeval.referentiel.infrastructure.restapi.dto.ErrorResponseDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.core.env.Environment; @@ -14,7 +14,6 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.web.bind.annotation.GetMapping; import java.util.Arrays; -import java.util.LinkedHashMap; import java.util.Objects; import static io.restassured.RestAssured.given; @@ -33,6 +32,7 @@ class ReferentielApplicationTests { RestAssured.baseURI = "http://localhost"; RestAssured.port = Integer.parseInt(Objects.requireNonNull(environment.getProperty("server.port"))); } + @Test void contextLoads() { Assertions.assertNotNull(ReferentielApplication.class); @@ -55,14 +55,12 @@ class ReferentielApplicationTests { } @Test - void unknownEndpoint_shouldReturn400() throws NoSuchMethodException { + void unknownEndpoint_shouldReturn500() throws NoSuchMethodException { var response = given() .contentType(ContentType.JSON) .get("/this/is/not/an/existing/endpoint?true=yes") .thenReturn(); - assertEquals(404, response.getStatusCode()); - var errorResponseDTO = response.as(LinkedHashMap.class); - assertEquals("/this/is/not/an/existing/endpoint", errorResponseDTO.get("path")); + assertEquals(500, response.getStatusCode()); } } diff --git a/services/calculs/README.md b/services/calculs/README.md index d1a5f7b2c0370887b775ae7b17e86adba8d61ec8..f5dc0eb276400ef8756aeefe7e75070a1a3fd62d 100644 --- a/services/calculs/README.md +++ b/services/calculs/README.md @@ -6,11 +6,11 @@ Module contenant l'intégralité des règles de calculs et du code métier lié ## Requirements -- Any JDK 17 Implementation +- Any JDK 21 Implementation - [Coretto](https://docs.aws.amazon.com/corretto/latest/corretto-17-ug/downloads-list.html) - - [Open JDK](https://jdk.java.net/java-se-ri/17) + - [Open JDK](https://jdk.java.net/java-se-ri/21) - [Maven 3](https://maven.apache.org/download.cgi) -- IDE compatible with Maven 3 and JDK 17 are highly recommended to develop +- IDE compatible with Maven 3 and JDK 21 are highly recommended to develop ### Build @@ -21,7 +21,11 @@ mvn clean install ``` ## License + Le projet est sous licence Apache 2 ## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. + +If you have run out of energy or time for your project, put a note at the top of the README saying that development has +slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or +owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/services/calculs/dependency_check_suppressions.xml b/services/calculs/dependency_check_suppressions.xml deleted file mode 100644 index 8e4bfe629077460e8a73135f51fe1dd571b06ee0..0000000000000000000000000000000000000000 --- a/services/calculs/dependency_check_suppressions.xml +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> -</suppressions> diff --git a/services/calculs/pom.xml b/services/calculs/pom.xml index ecceebc44ee5e4bb02ab26d5e2e46fbb0e931af1..dd2164c679a501b3be3f734c5f1512c1e9693fac 100644 --- a/services/calculs/pom.xml +++ b/services/calculs/pom.xml @@ -54,16 +54,6 @@ <artifactId>commons-lang3</artifactId> <version>${apache-commons-lang3.version}</version> </dependency> - <dependency> - <groupId>org.apache.commons</groupId> - <artifactId>commons-collections4</artifactId> - <version>${apache-commons-collection4.version}</version> - </dependency> - <dependency> - <groupId>commons-io</groupId> - <artifactId>commons-io</artifactId> - <version>${apache-commons-io.version}</version> - </dependency> <dependency> <groupId>org.projectlombok</groupId> diff --git a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java index 535d1b7752e34cdeaf23f35c48df00c5f808914d..4ea04c79e8018f9f68fce6742585101b26bf00bf 100644 --- a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java +++ b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/data/demande/DemandeCalculImpactEquipementPhysique.java @@ -4,7 +4,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.Setter; -import org.apache.commons.collections4.CollectionUtils; import org.mte.numecoeval.calculs.domain.data.entree.EquipementPhysique; import org.mte.numecoeval.calculs.domain.data.referentiel.*; @@ -38,21 +37,20 @@ public class DemandeCalculImpactEquipementPhysique { List<ReferentielMixElectrique> mixElectriques; public Optional<ReferentielHypothese> getHypotheseFromCode(String code) { - if (code == null) { + if (code == null || hypotheses == null) { return Optional.empty(); } - return CollectionUtils.emptyIfNull(hypotheses) - .stream() + + return hypotheses.stream() .filter(hypothese -> code.equals(hypothese.getCode())) .findFirst(); } public Optional<ReferentielImpactEquipement> getImpactEquipement(String refEquipement) { - if (refEquipement == null) { + if (refEquipement == null || impactEquipements == null) { return Optional.empty(); } - return CollectionUtils.emptyIfNull(impactEquipements) - .stream() + return impactEquipements.stream() .filter(Objects::nonNull) .filter(impactEquipement -> refEquipement.equals(impactEquipement.getRefEquipement()) && critere.getNomCritere().equals(impactEquipement.getCritere()) @@ -62,11 +60,10 @@ public class DemandeCalculImpactEquipementPhysique { } public Optional<ReferentielMixElectrique> getMixElectrique(String pays) { - if (pays == null) { + if (pays == null || mixElectriques == null) { return Optional.empty(); } - return CollectionUtils.emptyIfNull(mixElectriques) - .stream() + return mixElectriques.stream() .filter(Objects::nonNull) .filter(mixElectrique -> pays.equals(mixElectrique.getPays()) && critere.getNomCritere().equals(mixElectrique.getCritere()) diff --git a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java index aa94858196d3d6c25247ee0f162fe1f7c16ad12d..d9fe16ac9451b6a4778464733aa0624de5932d33 100644 --- a/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java +++ b/services/calculs/src/main/java/org/mte/numecoeval/calculs/domain/port/input/service/impl/CalculImpactReseauServiceImpl.java @@ -3,7 +3,6 @@ package org.mte.numecoeval.calculs.domain.port.input.service.impl; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.mte.numecoeval.calculs.domain.data.demande.DemandeCalculImpactReseau; import org.mte.numecoeval.calculs.domain.data.erreur.TypeErreurCalcul; import org.mte.numecoeval.calculs.domain.data.indicateurs.ImpactReseau; @@ -56,7 +55,7 @@ public class CalculImpactReseauServiceImpl implements CalculImpactReseauService .filter(refImpactReseau -> demandeCalcul.getEtape().getCode().equals(refImpactReseau.getEtapeACV()) && demandeCalcul.getCritere().getNomCritere().equals(refImpactReseau.getCritere()) - && StringUtils.equals(refImpactReseau.getRefReseau(), refReseau) + && refReseau.equals(refImpactReseau.getRefReseau()) ) .findFirst() .orElseThrow(() -> new CalculImpactException( diff --git a/services/common/.gitlab-ci-library.yml b/services/common/.gitlab-ci-library.yml index 333d3823909ad520f920c27976c1d29a58d341fc..64086d3fe936628380dd7bb26de3919dd6ff4c75 100644 --- a/services/common/.gitlab-ci-library.yml +++ b/services/common/.gitlab-ci-library.yml @@ -25,12 +25,13 @@ cache: - .m2/ variables: + MAVEN_DOCKER_IMAGE: "maven:3.9.6-eclipse-temurin-21" MAVEN_PROJECT_DIR: services/$COMPONENT PROJECT_DIR: services/$COMPONENT MAVEN_CLI_OPTS: "-s ci_settings.xml --batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2" DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT - DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/$COMPONENT + DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/core #Compilation et Tests pour les Merges requests et les commits test-application: diff --git a/services/common/.gitlab-ci-maven.yml b/services/common/.gitlab-ci-maven.yml index 8a32043ea82b00b487775faeeb405233f45a6db2..76001a38f2bb76800e049f162c93545e877807a4 100644 --- a/services/common/.gitlab-ci-maven.yml +++ b/services/common/.gitlab-ci-maven.yml @@ -29,13 +29,14 @@ stages: - analysis variables: + MAVEN_DOCKER_IMAGE: "maven:3.9.6-eclipse-temurin-21" MAVEN_PROJECT_DIR: services/$COMPONENT PROJECT_DIR: services/$COMPONENT MAVEN_CLI_OPTS: "-s $CI_PROJECT_DIR/services/common/ci_settings.xml --batch-mode" MAVEN_OPTS: "-Dmaven.repo.local=.m2" - DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT - DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/$COMPONENT DOCKER_IMAGE: "$CI_REGISTRY_IMAGE/$COMPONENT:$CI_COMMIT_REF_NAME" + DEPENDENCY_CHECK_SCAN_PATH: $CI_PROJECT_DIR/services/$COMPONENT + DEPENDENCY_CHECK_SUPPRESSION_PATH: $CI_PROJECT_DIR/services/core #Compilation et Tests pour les Merges requests et les commits test-application: @@ -60,10 +61,6 @@ build-application: extends: - .tags-runner - .java:build - only: - - main - - develop - - tags build-image: stage: build-image @@ -80,7 +77,3 @@ build-image: DOCKER_PASSWORD: $CI_REGISTRY_PASSWORD REGISTRY_URL: $CI_REGISTRY IMAGE_URL: $CI_REGISTRY_IMAGE/$COMPONENT - only: - - main - - develop - - tags diff --git a/services/common/Dockerfile b/services/common/Dockerfile index 9ba5cf5d87a84da687f5ebd42624ee1420a3e190..adda00c1b7624157d6a5b2989eb1599d2289aa15 100644 --- a/services/common/Dockerfile +++ b/services/common/Dockerfile @@ -1,4 +1,4 @@ -FROM openjdk:17-jdk-slim +FROM openjdk:21-jdk-slim # Logs ENV LOGS_DIR=/app/logs diff --git a/services/common/dependency_check_suppressions.xml b/services/common/dependency_check_suppressions.xml deleted file mode 100644 index 790bf7a1a3b282690efe670d18df127d68d6f791..0000000000000000000000000000000000000000 --- a/services/common/dependency_check_suppressions.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> - - <suppress> - <notes><![CDATA[ - Non-applicable : Snakeyaml n'est utilisé que par Spring Boot pour les fichiers application.yml - et non des fichiers externes. - ]]></notes> - <cve>CVE-2022-1471</cve> - </suppress> - - <suppress> - <notes><![CDATA[ - Non-applicable : json-smart est une dépendance transitive. - Les json sont limités à la taille des inventaires : la taille des listes n'a pas réellement de limite - et c'est souhaités comme cela (traitement de gros volumes de données). - ]]></notes> - <cve>CVE-2023-1370</cve> - </suppress> -</suppressions> diff --git a/services/core/dependency_check_suppressions.xml b/services/core/dependency_check_suppressions.xml index fbf9371b9855dacda4603cfaba33e10d71151dd1..9f9224ad8603be91c6310af4ce4de8d939103735 100644 --- a/services/core/dependency_check_suppressions.xml +++ b/services/core/dependency_check_suppressions.xml @@ -1,3 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.3.xsd"> + + <suppress> + <notes><![CDATA[ + Faux-Positif : Concerne hutool-json et json-java qui ne sont pas utilisés. + Le faux-positif se trouve sur json-path + cf. https://github.com/jeremylong/DependencyCheck/issues/5502 + ]]></notes> + <cve>CVE-2022-45688</cve> + </suppress> + </suppressions> diff --git a/services/core/pom.xml b/services/core/pom.xml index 0e1c2f799d3673252da25ecc1550035cebb6a971..98249ad784d6297592ddaba4faaf755b1d9ff35f 100644 --- a/services/core/pom.xml +++ b/services/core/pom.xml @@ -5,7 +5,7 @@ <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> - <version>3.0.7</version> + <version>3.2.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> @@ -36,44 +36,39 @@ </distributionManagement> <properties> - <java.version>17</java.version> + <java.version>21</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Utilitaires --> - <apache-commons-lang3.version>3.12.0</apache-commons-lang3.version> + <apache-commons-lang3.version>3.14.0</apache-commons-lang3.version> <apache-commons-collection4.version>4.4</apache-commons-collection4.version> - <apache-commons-io.version>2.11.0</apache-commons-io.version> - <apache-commons-csv.version>1.9.0</apache-commons-csv.version> - <mapstruct.version>1.5.3.Final</mapstruct.version> + <apache-commons-io.version>2.15.1</apache-commons-io.version> + <apache-commons-csv.version>1.10.0</apache-commons-csv.version> + <mapstruct.version>1.5.5.Final</mapstruct.version> - <!-- CVE multiples sur Snakeyaml (CVE-2020-13936, CVE-2022-38749, CVE-2022-38751, CVE-2022-38750, CVE-2022-38752)--> - <snakeyaml.version>1.33</snakeyaml.version> - <!-- CVE sur Postgres (CVE-2022-41946) --> - <postgresql.version>42.5.4</postgresql.version> - - <!-- CVE sur Spring CVE-2023-20863--> - <spring-framework.version>6.0.8</spring-framework.version> + <postgresql.version>42.7.1</postgresql.version> + <!-- L'erreur vient d'une de ces 4 lib --> <!-- Documentation automatique des API REST en OpenAPI 3.0 --> - <springdoc-openapi-ui.version>2.0.4</springdoc-openapi-ui.version> + <springdoc-openapi-ui.version>2.3.0</springdoc-openapi-ui.version> <!-- OpenAPI Generator (API REST generator) --> - <openapi-generator-version>6.4.0</openapi-generator-version> + <openapi-generator-version>7.2.0</openapi-generator-version> <jackson-databind-nullable-version>0.2.6</jackson-databind-nullable-version> <!-- scs-multiapi-maven-plugin (Async API generator)--> - <scs-multiapi-maven-plugin.version>4.5.0</scs-multiapi-maven-plugin.version> + <scs-multiapi-maven-plugin.version>5.3.3</scs-multiapi-maven-plugin.version> <!-- Tests --> <meanbean.version>2.0.3</meanbean.version> - <equalsverifier.version>3.10.1</equalsverifier.version> - <wiremock.version>2.34.0</wiremock.version> + <equalsverifier.version>3.15.6</equalsverifier.version> + <wiremock.version>3.0.1</wiremock.version> <javafaker.version>1.0.2</javafaker.version> - <cucumber-bom.version>7.11.1</cucumber-bom.version> - <jacoco.version>0.8.8</jacoco.version> - <instancio-junit.version>2.2.0</instancio-junit.version> + <cucumber-bom.version>7.15.0</cucumber-bom.version> + <jacoco.version>0.8.11</jacoco.version> + <instancio-junit.version>4.1.0</instancio-junit.version> <surefireArgLine>-Dfile.encoding=UTF-8</surefireArgLine> - <embedded-database-spring-test.version>2.2.0</embedded-database-spring-test.version> - <embedded-postgres.version>2.0.3</embedded-postgres.version> + <embedded-database-spring-test.version>2.5.0</embedded-database-spring-test.version> + <embedded-postgres.version>2.0.6</embedded-postgres.version> </properties> <dependencyManagement> @@ -222,7 +217,7 @@ <plugin> <groupId>org.owasp</groupId> <artifactId>dependency-check-maven</artifactId> - <version>8.1.2</version> + <version>9.0.9</version> <executions> <execution> <goals>