diff --git a/.github/workflows/create-release.yaml b/.github/workflows/create-release.yaml
index 15fa4a697..8e24b1694 100644
--- a/.github/workflows/create-release.yaml
+++ b/.github/workflows/create-release.yaml
@@ -71,7 +71,7 @@ jobs:
java-version: '25'
- name: install model filiere
- run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.2.2-springboot4.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.2.2-springboot4 -Dpackaging=jar -DgeneratePom=true
- name: Clone BPM
uses: actions/checkout@v6
@@ -182,4 +182,4 @@ jobs:
password: ${{ secrets.DOCKERHUB_TOKEN }}
default_branch: ${{ github.ref }}
tags: ${{ needs.check-version.outputs.release-tag }}
- workdir: .
\ No newline at end of file
+ workdir: .
diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml
index 030f04e8c..34ef52940 100644
--- a/.github/workflows/docker.yaml
+++ b/.github/workflows/docker.yaml
@@ -28,7 +28,7 @@ jobs:
java-version: "25"
- name: install model filiere
- run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.2.2-springboot4.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.2.2-springboot4 -Dpackaging=jar -DgeneratePom=true
- name: Clone BPM
uses: actions/checkout@master
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index ca58eeca0..9fb5dcea9 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -30,7 +30,7 @@ jobs:
cache: maven
- name: install model filiere
- run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+ run: mvn install:install-file -Dfile="$(pwd)/libs/modelefiliere-2.2.2-springboot4.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.2.2-springboot4 -Dpackaging=jar -DgeneratePom=true
- name: Clone BPM
uses: actions/checkout@master
diff --git a/.github/workflows/scheduled-version-update.yaml b/.github/workflows/scheduled-version-update.yaml
index 29adabad1..c06fa32c4 100644
--- a/.github/workflows/scheduled-version-update.yaml
+++ b/.github/workflows/scheduled-version-update.yaml
@@ -87,7 +87,7 @@ jobs:
- name: install model filiere
run: |
- mvn install:install-file -Dfile="$(pwd)/genesis/libs/modelefiliere-2.1.0.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.1.0 -Dpackaging=jar -DgeneratePom=true
+ mvn install:install-file -Dfile="$(pwd)/genesis/libs/modelefiliere-2.2.2-springboot4.jar" -DgroupId=fr.insee -DartifactId=modelefiliere -Dversion=2.2.2-springboot4 -Dpackaging=jar -DgeneratePom=true
- name: Clone BPM
uses: actions/checkout@master
diff --git a/.gitignore b/.gitignore
index 21e24e4c5..918479bc7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,6 +33,7 @@ src/bin/
# Package Files #
*.jar
+!libs/*.jar
*.war
*.nar
*.ear
diff --git a/libs/modelefiliere-2.1.0.jar b/libs/modelefiliere-2.1.0.jar
deleted file mode 100644
index cadda87eb..000000000
Binary files a/libs/modelefiliere-2.1.0.jar and /dev/null differ
diff --git a/libs/modelefiliere-2.2.2-springboot4.jar b/libs/modelefiliere-2.2.2-springboot4.jar
new file mode 100644
index 000000000..37408feeb
Binary files /dev/null and b/libs/modelefiliere-2.2.2-springboot4.jar differ
diff --git a/pom.xml b/pom.xml
index b50013177..fd9399cde 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.5.14
+ 4.0.6
@@ -20,12 +20,10 @@
11.0.21
3.20.0
- 5.13.4
- 2.21.1
1.1.4
- 2.8.17
+ 3.0.3
1.6.3
1.23.1
1.2.3
@@ -75,10 +73,19 @@
test
- org.springframework.security
- spring-security-test
+ org.springframework.boot
+ spring-boot-starter-security-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-webmvc-test
test
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
@@ -106,7 +113,7 @@
fr.insee
modelefiliere
- 2.1.0
+ 2.2.2-springboot4
diff --git a/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitInputDto.java b/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitInputDto.java
index 1c7ec8efd..c0af750d1 100644
--- a/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitInputDto.java
+++ b/src/main/java/fr/insee/genesis/controller/dto/SurveyUnitInputDto.java
@@ -1,12 +1,16 @@
package fr.insee.genesis.controller.dto;
import fr.insee.genesis.domain.model.surveyunit.Mode;
+import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.util.List;
@Builder
+@NoArgsConstructor
+@AllArgsConstructor
@Data
public class SurveyUnitInputDto {
private String questionnaireId;
diff --git a/src/main/java/fr/insee/genesis/controller/rest/LunaticModelController.java b/src/main/java/fr/insee/genesis/controller/rest/LunaticModelController.java
index 47def0852..ed38ccee4 100644
--- a/src/main/java/fr/insee/genesis/controller/rest/LunaticModelController.java
+++ b/src/main/java/fr/insee/genesis/controller/rest/LunaticModelController.java
@@ -1,7 +1,6 @@
package fr.insee.genesis.controller.rest;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
import fr.insee.genesis.domain.model.lunaticmodel.LunaticModelModel;
import fr.insee.genesis.domain.ports.api.LunaticModelApiPort;
import fr.insee.genesis.exceptions.GenesisException;
@@ -15,6 +14,7 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
+import tools.jackson.databind.json.JsonMapper;
import java.util.Map;
@@ -45,10 +45,12 @@ public ResponseEntity saveRawResponsesFromJsonBody(
@PreAuthorize("hasRole('READER')")
public ResponseEntity getLunaticModelFromQuestionnaireId(
@RequestParam("questionnaireId") String questionnaireId
- ) throws JsonProcessingException, GenesisException {
+ ) throws JacksonException, GenesisException {
LunaticModelModel lunaticModelModel = lunaticModelApiPort.get(questionnaireId);
- ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
return ResponseEntity.ok(objectMapper.writeValueAsString(lunaticModelModel.lunaticModel()));
}
}
diff --git a/src/main/java/fr/insee/genesis/controller/sources/xml/LunaticXmlDataParser.java b/src/main/java/fr/insee/genesis/controller/sources/xml/LunaticXmlDataParser.java
index bbe8db83f..f6b974066 100644
--- a/src/main/java/fr/insee/genesis/controller/sources/xml/LunaticXmlDataParser.java
+++ b/src/main/java/fr/insee/genesis/controller/sources/xml/LunaticXmlDataParser.java
@@ -249,7 +249,7 @@ private static void setValues(LunaticXmlCollectedData varData, Node value, List<
varData.setPrevious(valueTypes);
break;
default:
- throw new GenesisException(HttpStatus.DESTINATION_LOCKED, "Tag not recognized: " + valueElement.getTagName());
+ throw new GenesisException(HttpStatus.LOCKED, "Tag not recognized: " + valueElement.getTagName());
}
}
diff --git a/src/main/java/fr/insee/genesis/controller/utils/ExtendedJsonNormalizer.java b/src/main/java/fr/insee/genesis/controller/utils/ExtendedJsonNormalizer.java
index 6bb1c4bdf..58226bfc4 100644
--- a/src/main/java/fr/insee/genesis/controller/utils/ExtendedJsonNormalizer.java
+++ b/src/main/java/fr/insee/genesis/controller/utils/ExtendedJsonNormalizer.java
@@ -1,9 +1,9 @@
package fr.insee.genesis.controller.utils;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.fasterxml.jackson.databind.node.TextNode;
+import tools.jackson.databind.node.StringNode;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.node.ArrayNode;
+import tools.jackson.databind.node.ObjectNode;
public class ExtendedJsonNormalizer {
public static final String $_DATE = "$date";
@@ -23,8 +23,8 @@ public static JsonNode normalize(JsonNode node) {
ObjectNode obj = (ObjectNode) node;
if (obj.size() == 1) {
- if (obj.has($_DATE) && obj.get($_DATE).isTextual()) {
- return TextNode.valueOf(obj.get($_DATE).asText());
+ if (obj.has($_DATE) && obj.get($_DATE).isString()) {
+ return StringNode.valueOf(obj.get($_DATE).asString());
}
// if (obj.has("$oid") && obj.get("$oid").isTextual()) {
// return TextNode.valueOf(obj.get("$oid").asText());
@@ -32,9 +32,11 @@ public static JsonNode normalize(JsonNode node) {
}
ObjectNode copy = obj.objectNode();
- obj.fields().forEachRemaining(e ->
+
+ obj.properties().forEach(e ->
copy.set(e.getKey(), normalize(e.getValue()))
);
+
return copy;
}
diff --git a/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java b/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java
index 001bbc925..84abf6865 100644
--- a/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java
+++ b/src/main/java/fr/insee/genesis/domain/service/context/DataProcessingContextService.java
@@ -1,7 +1,6 @@
package fr.insee.genesis.domain.service.context;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import tools.jackson.databind.json.JsonMapper;
import fr.insee.genesis.Constants;
import fr.insee.genesis.controller.dto.KraftwerkExecutionScheduleInput;
import fr.insee.genesis.controller.dto.rawdata.ScheduleResponseDto;
@@ -275,8 +274,9 @@ public void deleteExpiredSchedules(String logFolder) throws GenesisException {
String scheduleName = context.getCollectionInstrumentId();
Path jsonLogPath = Path.of(logFolder, Constants.SCHEDULE_ARCHIVE_FOLDER_NAME,
scheduleName + ".json");
- ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
- objectMapper.registerModule(new JavaTimeModule());
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
String jsonToWrite = objectMapper.writeValueAsString(deletedKraftwerkExecutionSchedules);
if(Files.exists(jsonLogPath)){
//Remove last ] and append survey
diff --git a/src/main/java/fr/insee/genesis/domain/service/contextualvariable/external/ContextualExternalVariableJsonService.java b/src/main/java/fr/insee/genesis/domain/service/contextualvariable/external/ContextualExternalVariableJsonService.java
index 140a367bf..93acc58ba 100644
--- a/src/main/java/fr/insee/genesis/domain/service/contextualvariable/external/ContextualExternalVariableJsonService.java
+++ b/src/main/java/fr/insee/genesis/domain/service/contextualvariable/external/ContextualExternalVariableJsonService.java
@@ -1,9 +1,10 @@
package fr.insee.genesis.domain.service.contextualvariable.external;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonToken;
+import fr.insee.genesis.exceptions.JsonParsingException;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonParser;
+import tools.jackson.core.json.JsonFactory;
+import tools.jackson.core.JsonToken;
import fr.insee.genesis.domain.model.contextualvariable.ContextualExternalVariableModel;
import fr.insee.genesis.domain.ports.api.ContextualExternalVariableApiPort;
import fr.insee.genesis.domain.ports.spi.ContextualExternalVariablePersistancePort;
@@ -74,7 +75,7 @@ public boolean readContextualExternalFile(String collectionInstrumentId, String
contextualExternalVariablePersistancePort.deleteBackup(collectionInstrumentId);
return true;
}
- }catch (JsonParseException jpe){
+ }catch (JacksonException jpe){
contextualExternalVariablePersistancePort.restoreBackup(collectionInstrumentId);
throw new GenesisException(HttpStatus.BAD_REQUEST, "JSON Parsing exception : %s".formatted(jpe.toString()));
}catch (IOException ioe){
@@ -90,7 +91,7 @@ public ContextualExternalVariableModel findByCollectionInstrumentIdAndInterrogat
private static boolean goToContextualExternalToken(JsonParser jsonParser) throws IOException {
while (jsonParser.nextToken() != null) {
- if (jsonParser.currentToken() == JsonToken.FIELD_NAME
+ if (jsonParser.currentToken() == JsonToken.PROPERTY_NAME
&& "editedExternal".equals(jsonParser.currentName())) {
return true;
}
@@ -127,7 +128,7 @@ private ContextualExternalVariableModel readNextContextualExternal(JsonParser js
String collectionInstrumentId
) throws IOException {
if(jsonParser.currentToken() != JsonToken.START_OBJECT){
- throw new JsonParseException("Expected { on line %d, got token %s".formatted(jsonParser.currentLocation().getLineNr(), jsonParser.currentToken()));
+ throw new JsonParsingException("Expected { on line %d, got token %s".formatted(jsonParser.currentLocation().getLineNr(), jsonParser.currentToken()));
}
ContextualExternalVariableModel contextualExternalVariableModel = ContextualExternalVariableModel.builder()
.collectionInstrumentId(collectionInstrumentId)
@@ -135,7 +136,7 @@ private ContextualExternalVariableModel readNextContextualExternal(JsonParser js
.build();
jsonParser.nextToken();
while (!jsonParser.currentToken().equals(JsonToken.END_OBJECT)){
- if(jsonParser.currentToken().equals(JsonToken.FIELD_NAME) && jsonParser.currentName().equals("interrogationId")){
+ if(jsonParser.currentToken().equals(JsonToken.PROPERTY_NAME) && jsonParser.currentName().equals("interrogationId")){
jsonParser.nextToken();
contextualExternalVariableModel.setInterrogationId(jsonParser.getText());
jsonParser.nextToken();
diff --git a/src/main/java/fr/insee/genesis/domain/service/contextualvariable/previous/ContextualPreviousVariableJsonService.java b/src/main/java/fr/insee/genesis/domain/service/contextualvariable/previous/ContextualPreviousVariableJsonService.java
index 2599d843f..4a7cd4c35 100644
--- a/src/main/java/fr/insee/genesis/domain/service/contextualvariable/previous/ContextualPreviousVariableJsonService.java
+++ b/src/main/java/fr/insee/genesis/domain/service/contextualvariable/previous/ContextualPreviousVariableJsonService.java
@@ -1,9 +1,10 @@
package fr.insee.genesis.domain.service.contextualvariable.previous;
-import com.fasterxml.jackson.core.JsonFactory;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonToken;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.json.JsonFactory;
+import fr.insee.genesis.exceptions.JsonParsingException;
+import tools.jackson.core.JsonParser;
+import tools.jackson.core.JsonToken;
import fr.insee.genesis.domain.model.contextualvariable.ContextualPreviousVariableModel;
import fr.insee.genesis.domain.ports.api.ContextualPreviousVariableApiPort;
import fr.insee.genesis.domain.ports.spi.ContextualPreviousVariablePersistancePort;
@@ -41,7 +42,7 @@ public boolean readContextualPreviousFile(String collectionInstrumentId,
try(FileInputStream inputStream = new FileInputStream(filePath)){
checkSourceStateLength(sourceState);
- JsonFactory jsonFactory = new JsonFactory();
+ JsonFactory jsonFactory = JsonFactory.builder().build();
try (JsonParser jsonParser = jsonFactory.createParser(inputStream)) {
if (!goToEditedPreviousToken(jsonParser)) {
log.warn("No EditedPrevious part found in file {}", filePath);
@@ -79,7 +80,7 @@ public boolean readContextualPreviousFile(String collectionInstrumentId,
contextualPreviousVariablePersistancePort.deleteBackup(collectionInstrumentId);
return true;
}
- }catch (JsonParseException jpe){
+ }catch (JacksonException jpe){
contextualPreviousVariablePersistancePort.restoreBackup(collectionInstrumentId);
throw new GenesisException(HttpStatus.BAD_REQUEST, "JSON Parsing exception : %s".formatted(jpe.toString()));
}catch (IOException _){
@@ -116,8 +117,8 @@ private static void checkSourceStateLength(String sourceState) throws GenesisExc
private boolean goToEditedPreviousToken(JsonParser jsonParser) throws IOException {
while (jsonParser.nextToken() != null) {
- if (jsonParser.currentToken() == JsonToken.FIELD_NAME
- && "editedPrevious".equals(jsonParser.getCurrentName())) {
+ if (jsonParser.currentToken() == JsonToken.PROPERTY_NAME
+ && "editedPrevious".equals(jsonParser.currentName())) {
return true;
}
}
@@ -129,7 +130,7 @@ private ContextualPreviousVariableModel readNextContextualPrevious(JsonParser js
String sourceState
) throws IOException {
if(jsonParser.currentToken() != JsonToken.START_OBJECT){
- throw new JsonParseException("Expected { on line %d, got token %s".formatted(jsonParser.currentLocation().getLineNr(), jsonParser.currentToken()));
+ throw new JsonParsingException("Expected { on line %d, got token %s".formatted(jsonParser.currentLocation().getLineNr(), jsonParser.currentToken()));
}
ContextualPreviousVariableModel contextualPreviousVariableModel = ContextualPreviousVariableModel.builder()
.collectionInstrumentId(collectionInstrumentId)
@@ -138,7 +139,7 @@ private ContextualPreviousVariableModel readNextContextualPrevious(JsonParser js
.build();
jsonParser.nextToken();
while (!jsonParser.currentToken().equals(JsonToken.END_OBJECT)){
- if(jsonParser.currentToken().equals(JsonToken.FIELD_NAME) && jsonParser.currentName().equals("interrogationId")){
+ if(jsonParser.currentToken().equals(JsonToken.PROPERTY_NAME) && jsonParser.currentName().equals("interrogationId")){
jsonParser.nextToken();
contextualPreviousVariableModel.setInterrogationId(jsonParser.getText());
jsonParser.nextToken();
@@ -174,7 +175,7 @@ private Object readValue(JsonParser jsonParser) throws IOException{
case START_ARRAY -> {
return readArray(jsonParser);
}
- case null, default -> throw new JsonParseException("Unexpected token %s on line %d".formatted(
+ case null, default -> throw new JsonParsingException("Unexpected token %s on line %d".formatted(
jsonParser.currentToken(), jsonParser.currentLocation().getLineNr())
);
}
diff --git a/src/main/java/fr/insee/genesis/domain/utils/JsonUtils.java b/src/main/java/fr/insee/genesis/domain/utils/JsonUtils.java
index e2b91c803..f0fa33a61 100644
--- a/src/main/java/fr/insee/genesis/domain/utils/JsonUtils.java
+++ b/src/main/java/fr/insee/genesis/domain/utils/JsonUtils.java
@@ -1,11 +1,10 @@
package fr.insee.genesis.domain.utils;
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.core.JsonParser;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.core.JsonToken;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JsonParser;
+import tools.jackson.core.JacksonException;
+import tools.jackson.core.JsonToken;
import lombok.experimental.UtilityClass;
+import tools.jackson.databind.json.JsonMapper;
import java.io.IOException;
import java.util.ArrayList;
@@ -14,9 +13,11 @@
@UtilityClass
public class JsonUtils {
- private static final ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
- public static Map jsonToMap(String json) throws JsonProcessingException {
+ public static Map jsonToMap(String json) throws JacksonException {
return objectMapper.readValue(json, Map.class);
}
@@ -54,7 +55,7 @@ public static Object readValue(JsonParser jsonParser) throws IOException {
case START_ARRAY -> {
return readArray(jsonParser);
}
- case null, default -> throw new JsonParseException("Unexpected token %s on line %d".formatted(
+ case null, default -> throw new IOException("Unexpected token %s on line %d".formatted(
jsonParser.currentToken(), jsonParser.currentLocation().getLineNr())
);
}
diff --git a/src/main/java/fr/insee/genesis/exceptions/JsonParsingException.java b/src/main/java/fr/insee/genesis/exceptions/JsonParsingException.java
new file mode 100644
index 000000000..b42d78a40
--- /dev/null
+++ b/src/main/java/fr/insee/genesis/exceptions/JsonParsingException.java
@@ -0,0 +1,9 @@
+package fr.insee.genesis.exceptions;
+
+import java.io.IOException;
+
+public class JsonParsingException extends IOException {
+ public JsonParsingException(String message) {
+ super(message);
+ }
+}
diff --git a/src/main/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitMongoAdapter.java b/src/main/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitMongoAdapter.java
index f74b8d18a..99a01737a 100644
--- a/src/main/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitMongoAdapter.java
+++ b/src/main/java/fr/insee/genesis/infrastructure/adapter/SurveyUnitMongoAdapter.java
@@ -1,8 +1,7 @@
package fr.insee.genesis.infrastructure.adapter;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.JsonNode;
import com.mongodb.client.MongoCollection;
import fr.insee.genesis.Constants;
import fr.insee.genesis.domain.model.surveyunit.InterrogationInfo;
@@ -19,6 +18,7 @@
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;
+import tools.jackson.databind.json.JsonMapper;
import java.time.Instant;
import java.time.LocalDateTime;
@@ -142,11 +142,13 @@ public long count() {
private static @NotNull Set extractQuestionnaireIdsFromJson(Set mongoResponse) {
Set questionnaireIds = new HashSet<>();
for(String line : mongoResponse){
- ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
try{
JsonNode jsonNode = objectMapper.readTree(line);
questionnaireIds.add(jsonNode.get(QUESTIONNAIRE_ID).asText());
- }catch (JsonProcessingException e){
+ }catch (JacksonException e){
log.error(e.getMessage());
}
}
diff --git a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java
index f90cd0096..a8a9c49ac 100644
--- a/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java
+++ b/src/main/java/fr/insee/genesis/infrastructure/document/surveyunit/SurveyUnitDocument.java
@@ -1,6 +1,5 @@
package fr.insee.genesis.infrastructure.document.surveyunit;
-import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import fr.insee.genesis.Constants;
import fr.insee.modelefiliere.RawResponseDto;
diff --git a/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepository.java b/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepository.java
index 3b324e87e..fac05f343 100644
--- a/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepository.java
+++ b/src/main/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepository.java
@@ -1,7 +1,7 @@
package fr.insee.genesis.infrastructure.repository;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.ObjectMapper;
import fr.insee.modelefiliere.RawResponseDto;
import lombok.RequiredArgsConstructor;
import org.bson.Document;
@@ -35,7 +35,7 @@ public void saveAsRawJson(RawResponseDto dto) {
document.put("recordDate", Instant.now());
document.put("payload", payload);
mongoTemplate.save(document, "rawResponses");
- } catch (JsonProcessingException e) {
+ } catch (JacksonException e) {
throw new RuntimeException(e);
}
diff --git a/src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java b/src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java
index 1e6952291..4e8f5b00c 100644
--- a/src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java
+++ b/src/main/java/fr/insee/genesis/infrastructure/utils/FileUtils.java
@@ -1,6 +1,5 @@
package fr.insee.genesis.infrastructure.utils;
-import com.fasterxml.jackson.databind.ObjectMapper;
import fr.insee.genesis.Constants;
import fr.insee.genesis.configuration.Config;
import fr.insee.genesis.domain.model.surveyunit.Mode;
@@ -10,6 +9,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Component;
+import tools.jackson.databind.json.JsonMapper;
import java.io.*;
import java.nio.file.Files;
@@ -226,8 +226,9 @@ public void writeFile(Path filePath, String fileContent) {
*/
public void writeSuUpdatesInFile(Path filePath, Stream responsesStream) throws IOException {
Files.createDirectories(filePath.getParent());
- ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
- objectMapper.findAndRegisterModules();
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
try (BufferedWriter writer = new BufferedWriter(new FileWriter(filePath.toFile(), true))) {
writer.write("[");
responsesStream.forEach(response -> {
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 15d29f604..a8cd56ab0 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -45,6 +45,6 @@ management.endpoint.health.show-details=always
#--------------------------------------------------------------------------
# Database MongoDB
#--------------------------------------------------------------------------
-spring.data.mongodb.auto-index-creation=true
-spring.data.mongodb.uri=mongodb://${fr.insee.genesis.persistence.database.mongodb.username}:${fr.insee.genesis.persistence.database.mongodb.password}@${fr.insee.genesis.persistence.database.mongodb.host1}:${fr.insee.genesis.persistence.database.mongodb.port},${fr.insee.genesis.persistence.database.mongodb.host2}:${fr.insee.genesis.persistence.database.mongodb.port},${fr.insee.genesis.persistence.database.mongodb.host3}:${fr.insee.genesis.persistence.database.mongodb.port}/${fr.insee.genesis.persistence.database.mongodb.database}
+spring.mongodb.auto-index-creation=true
+spring.mongodb.uri=mongodb://${fr.insee.genesis.persistence.database.mongodb.username}:${fr.insee.genesis.persistence.database.mongodb.password}@${fr.insee.genesis.persistence.database.mongodb.host1}:${fr.insee.genesis.persistence.database.mongodb.port},${fr.insee.genesis.persistence.database.mongodb.host2}:${fr.insee.genesis.persistence.database.mongodb.port},${fr.insee.genesis.persistence.database.mongodb.host3}:${fr.insee.genesis.persistence.database.mongodb.port}/${fr.insee.genesis.persistence.database.mongodb.database}
server.compression.enabled=true
\ No newline at end of file
diff --git a/src/test/java/fr/insee/genesis/controller/IntegrationTestAbstract.java b/src/test/java/fr/insee/genesis/controller/IntegrationTestAbstract.java
index 27e255f50..338e14f00 100644
--- a/src/test/java/fr/insee/genesis/controller/IntegrationTestAbstract.java
+++ b/src/test/java/fr/insee/genesis/controller/IntegrationTestAbstract.java
@@ -14,10 +14,10 @@
import fr.insee.genesis.infrastructure.repository.SurveyUnitMongoDBRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
-import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
+import org.springframework.boot.data.mongodb.autoconfigure.DataMongoAutoConfiguration;
+import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.TestPropertySource;
@@ -34,7 +34,7 @@
@TestPropertySource(properties = {
"logging.level.=DEBUG"
})
-@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
+@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, DataMongoAutoConfiguration.class})
public abstract class IntegrationTestAbstract {
@Autowired
protected MockMvc mockMvc;
diff --git a/src/test/java/fr/insee/genesis/controller/rest/DataProcessingContextControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/DataProcessingContextControllerTest.java
index 40abea177..e5d595cc4 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/DataProcessingContextControllerTest.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/DataProcessingContextControllerTest.java
@@ -1,7 +1,7 @@
package fr.insee.genesis.controller.rest;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
+import tools.jackson.databind.ObjectMapper;
import fr.insee.genesis.controller.dto.KraftwerkExecutionScheduleInput;
import fr.insee.genesis.controller.dto.ScheduleRequestDto;
import fr.insee.genesis.controller.dto.rawdata.ScheduleResponseDto;
@@ -20,12 +20,12 @@
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.web.servlet.MockMvc;
+import tools.jackson.databind.json.JsonMapper;
import java.time.LocalDateTime;
import java.util.List;
@@ -68,8 +68,9 @@ class DataProcessingContextControllerTest {
@BeforeEach
void setUp() {
- objectMapper = new ObjectMapper();
- objectMapper.registerModule(new JavaTimeModule());
+ objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
}
@Nested
diff --git a/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java
index 5a19d42f2..87cd2daa3 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/HealthCheckControllerTest.java
@@ -6,7 +6,7 @@
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.bean.override.mockito.MockitoBean;
diff --git a/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerIT.java b/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerIT.java
index 8f0f22558..69687c07e 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerIT.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerIT.java
@@ -16,12 +16,11 @@
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import org.mockito.ArgumentCaptor;
-import org.mockito.Mock;
import org.springframework.data.mongodb.core.ExecutableUpdateOperation;
import org.springframework.data.mongodb.core.query.CriteriaDefinition;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
import java.nio.file.Files;
@@ -39,6 +38,7 @@
import static org.mockito.Mockito.verifyNoInteractions;
import static org.mockito.Mockito.when;
import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.user;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
@@ -46,13 +46,13 @@
class LunaticModelControllerIT extends IntegrationTestAbstract {
- @Mock
+ @MockitoBean
private ExecutableUpdateOperation.ExecutableUpdate executableUpdate;
- @Mock
+ @MockitoBean
private ExecutableUpdateOperation.UpdateWithUpdate updateWithUpdate;
- @Mock
+ @MockitoBean
private ExecutableUpdateOperation.TerminatingUpdate terminatingUpdate;
@MockitoSpyBean
@@ -76,7 +76,6 @@ class SaveLunaticModelTests{
"specs/LUNATIC-TEST/lunaticlog2021x21_web.json",
"specs/RAWDATATESTCAMPAIGN/WEB/lunaticFAM2025X01.json"
})
- @WithMockUser(roles = "USER_BACK_OFFICE")
@DisplayName("Lunatic model saving test")
@SneakyThrows
void save_lunaticModel_test(String jsonFilePathString){
@@ -89,6 +88,7 @@ void save_lunaticModel_test(String jsonFilePathString){
//WHEN
mockMvc.perform(put("/lunatic-model/save")
+ .with(user("test").roles("USER_BACK_OFFICE"))
.with(csrf())
.param("questionnaireId", questionnaireId)
.contentType(MediaType.APPLICATION_JSON)
@@ -131,7 +131,6 @@ void save_lunaticModel_test(String jsonFilePathString){
//SAD PATH
@Test
- @WithMockUser(roles = "USER_BACK_OFFICE")
@DisplayName("Lunatic model save invalid syntax")
@SneakyThrows
void save_lunaticModel_syntax_error_test(){
@@ -144,6 +143,7 @@ void save_lunaticModel_syntax_error_test(){
//WHEN + THEN
mockMvc.perform(put("/lunatic-model/save")
+ .with(user("test").roles("USER_BACK_OFFICE"))
.with(csrf())
.param("questionnaireId", questionnaireId)
.contentType(MediaType.APPLICATION_JSON)
@@ -159,7 +159,6 @@ class GetLunaticModelTests{
//HAPPY PATH
@Test
@DisplayName("Get Lunatic model test")
- @WithMockUser(roles = "READER")
@SneakyThrows
void get_lunaticModel_test(){
//GIVEN
@@ -180,6 +179,7 @@ void get_lunaticModel_test(){
//WHEN + THEN
mockMvc.perform(get("/lunatic-model/get")
+ .with(user("test").roles("READER"))
.with(csrf())
.param("questionnaireId", collectionInstrumentId))
.andExpect(status().isOk())
@@ -189,14 +189,12 @@ void get_lunaticModel_test(){
//BAD PATHS
@Test
@DisplayName("Get non existent Lunatic model")
- @WithMockUser(roles = "READER")
@SneakyThrows
- void get_lunaticModel_not_found_test(){
- //GIVEN
+ void get_lunaticModel_not_found_test() {
String collectionInstrumentId = "collectionInstrumentId";
- //WHEN + THEN
mockMvc.perform(get("/lunatic-model/get")
+ .with(user("test").roles("READER"))
.with(csrf())
.param("questionnaireId", collectionInstrumentId))
.andExpect(status().isNotFound());
diff --git a/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerTest.java
index 5ab280608..09d688b50 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerTest.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/LunaticModelControllerTest.java
@@ -1,6 +1,6 @@
package fr.insee.genesis.controller.rest;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.ObjectMapper;
import fr.insee.genesis.domain.model.lunaticmodel.LunaticModelModel;
import fr.insee.genesis.domain.ports.api.LunaticModelApiPort;
import lombok.SneakyThrows;
@@ -11,6 +11,7 @@
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.http.ResponseEntity;
+import tools.jackson.databind.json.JsonMapper;
import java.time.LocalDateTime;
import java.util.HashMap;
@@ -50,7 +51,9 @@ void saveRawResponsesFromJsonBody() {
void getLunaticModelFromQuestionnaireId() {
//GIVEN
String questionnaireId = "test";
- ObjectMapper objectMapper = new ObjectMapper().findAndRegisterModules();
+ JsonMapper objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
Map lunaticModel = new HashMap<>();
String expected = objectMapper.writeValueAsString(lunaticModel);
doReturn(LunaticModelModel.builder()
diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerIT.java b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerIT.java
index db58fdfb3..782e87c7b 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerIT.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerIT.java
@@ -1,7 +1,7 @@
package fr.insee.genesis.controller.rest.responses;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.databind.JsonNode;
+import tools.jackson.databind.ObjectMapper;
import fr.insee.bpm.metadata.model.MetadataModel;
import fr.insee.bpm.metadata.model.Variable;
import fr.insee.bpm.metadata.model.VariableType;
@@ -32,6 +32,7 @@
import org.springframework.http.MediaType;
import org.springframework.security.test.context.support.WithMockUser;
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean;
+import tools.jackson.databind.json.JsonMapper;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -69,8 +70,9 @@ class RawResponseControllerIT extends IntegrationTestAbstract {
@BeforeEach
void init(){
- objectMapper = new ObjectMapper();
- objectMapper.findAndRegisterModules();
+ objectMapper = JsonMapper.builder()
+ .findAndAddModules()
+ .build();
}
diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java
index 50dc7c36d..b32bad06f 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/responses/RawResponseControllerTest.java
@@ -16,10 +16,10 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
-import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.data.mongodb.autoconfigure.DataMongoAutoConfiguration;
+import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.context.annotation.Import;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
@@ -62,7 +62,7 @@
@Import({DefaultSecurityConfig.class})
@ActiveProfiles("test")
@AutoConfigureMockMvc
-@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
+@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, DataMongoAutoConfiguration.class})
class RawResponseControllerTest {
@Autowired
diff --git a/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java b/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java
index c57fd2d5a..5238e827b 100644
--- a/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java
+++ b/src/test/java/fr/insee/genesis/controller/rest/responses/ResponseControllerTest.java
@@ -25,10 +25,10 @@
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration;
-import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
+import org.springframework.boot.data.mongodb.autoconfigure.DataMongoAutoConfiguration;
+import org.springframework.boot.mongodb.autoconfigure.MongoAutoConfiguration;
+import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc;
+import org.springframework.boot.webmvc.test.autoconfigure.WebMvcTest;
import org.springframework.context.annotation.Import;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
@@ -62,7 +62,7 @@
@Import({DefaultSecurityConfig.class})
@ActiveProfiles("test")
@AutoConfigureMockMvc
-@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, MongoDataAutoConfiguration.class})
+@EnableAutoConfiguration(exclude = {MongoAutoConfiguration.class, DataMongoAutoConfiguration.class})
class ResponseControllerTest {
@Autowired
diff --git a/src/test/java/fr/insee/genesis/domain/utils/JsonUtilsTest.java b/src/test/java/fr/insee/genesis/domain/utils/JsonUtilsTest.java
index 01d1a880d..0a934d73d 100644
--- a/src/test/java/fr/insee/genesis/domain/utils/JsonUtilsTest.java
+++ b/src/test/java/fr/insee/genesis/domain/utils/JsonUtilsTest.java
@@ -1,6 +1,6 @@
package fr.insee.genesis.domain.utils;
-import com.fasterxml.jackson.core.JsonProcessingException;
+import tools.jackson.core.JacksonException;
import lombok.extern.slf4j.Slf4j;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
@@ -31,7 +31,7 @@ void jsonToMap_shouldThrowExceptionForInvalidJson() {
String invalidJson = "{key1: value1, key2: }";
assertThatThrownBy(() -> JsonUtils.jsonToMap(invalidJson))
- .isInstanceOf(JsonProcessingException.class);
+ .isInstanceOf(JacksonException.class);
}
@Test
diff --git a/src/test/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepositoryTest.java b/src/test/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepositoryTest.java
index 27f778331..a302c6ceb 100644
--- a/src/test/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepositoryTest.java
+++ b/src/test/java/fr/insee/genesis/infrastructure/repository/RawResponseInputRepositoryTest.java
@@ -1,7 +1,7 @@
package fr.insee.genesis.infrastructure.repository;
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
+import tools.jackson.core.JacksonException;
+import tools.jackson.databind.ObjectMapper;
import fr.insee.modelefiliere.ModeDto;
import fr.insee.modelefiliere.RawResponseDto;
import org.junit.jupiter.api.DisplayName;
@@ -49,7 +49,7 @@ class SaveAsRawJsonTests {
@Test
@DisplayName("Should serialize the DTO to JSON and save to the correct collection")
- void saveAsRawJson_shouldSerializeAndSave() throws JsonProcessingException {
+ void saveAsRawJson_shouldSerializeAndSave() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{\"interrogationId\":\"interrogation-123\"}");
@@ -64,7 +64,7 @@ void saveAsRawJson_shouldSerializeAndSave() throws JsonProcessingException {
@Test
@DisplayName("Should save a document containing interrogationId")
- void saveAsRawJson_documentShouldContainInterrogationId() throws JsonProcessingException {
+ void saveAsRawJson_documentShouldContainInterrogationId() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -81,7 +81,7 @@ void saveAsRawJson_documentShouldContainInterrogationId() throws JsonProcessingE
@Test
@DisplayName("Should save a document containing collectionInstrumentId")
- void saveAsRawJson_documentShouldContainCollectionInstrumentId() throws JsonProcessingException {
+ void saveAsRawJson_documentShouldContainCollectionInstrumentId() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -98,7 +98,7 @@ void saveAsRawJson_documentShouldContainCollectionInstrumentId() throws JsonProc
@Test
@DisplayName("Should save a document containing mode")
- void saveAsRawJson_documentShouldContainMode() throws JsonProcessingException {
+ void saveAsRawJson_documentShouldContainMode() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -115,7 +115,7 @@ void saveAsRawJson_documentShouldContainMode() throws JsonProcessingException {
@Test
@DisplayName("Should save a document containing a non-null recordDate")
- void saveAsRawJson_documentShouldContainRecordDate() throws JsonProcessingException {
+ void saveAsRawJson_documentShouldContainRecordDate() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -133,7 +133,7 @@ void saveAsRawJson_documentShouldContainRecordDate() throws JsonProcessingExcept
@Test
@DisplayName("Should save a document containing a non-null payload")
- void saveAsRawJson_documentShouldContainPayload() throws JsonProcessingException {
+ void saveAsRawJson_documentShouldContainPayload() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto))
@@ -152,7 +152,7 @@ void saveAsRawJson_documentShouldContainPayload() throws JsonProcessingException
@Test
@DisplayName("Should save to the 'rawResponses' collection exactly")
- void saveAsRawJson_shouldSaveToCorrectCollection() throws JsonProcessingException {
+ void saveAsRawJson_shouldSaveToCorrectCollection() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -168,7 +168,7 @@ void saveAsRawJson_shouldSaveToCorrectCollection() throws JsonProcessingExceptio
@Test
@DisplayName("Should call mongoTemplate.save() exactly once")
- void saveAsRawJson_shouldCallSaveExactlyOnce() throws JsonProcessingException {
+ void saveAsRawJson_shouldCallSaveExactlyOnce() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto)).thenReturn("{}");
@@ -183,26 +183,26 @@ void saveAsRawJson_shouldCallSaveExactlyOnce() throws JsonProcessingException {
@Test
@DisplayName("Should wrap JsonProcessingException in RuntimeException")
- void saveAsRawJson_jsonProcessingException_shouldThrowRuntimeException() throws JsonProcessingException {
+ void saveAsRawJson_jsonProcessingException_shouldThrowRuntimeException() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto))
- .thenThrow(new JsonProcessingException("serialization error") {});
+ .thenThrow(new JacksonException("serialization error") {});
// WHEN / THEN
assertThatThrownBy(() -> repository.saveAsRawJson(dto))
.isInstanceOf(RuntimeException.class)
- .hasCauseInstanceOf(JsonProcessingException.class)
+ .hasCauseInstanceOf(JacksonException.class)
.hasRootCauseMessage("serialization error");
}
@Test
@DisplayName("Should not call mongoTemplate when serialization fails")
- void saveAsRawJson_jsonProcessingException_shouldNotCallMongoTemplate() throws JsonProcessingException {
+ void saveAsRawJson_jsonProcessingException_shouldNotCallMongoTemplate() throws JacksonException {
// GIVEN
RawResponseDto dto = buildDto();
when(objectMapper.writeValueAsString(dto))
- .thenThrow(new JsonProcessingException("serialization error") {});
+ .thenThrow(new JacksonException("serialization error") {});
// WHEN
try {