diff --git a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/service/VitamContextService.java b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/service/VitamContextService.java index 7e3e8cc4b830a9269ae6ad4839b474164617ac14..24121fa499a2407ac916a47368a32a6bf5b3fcc9 100644 --- a/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/service/VitamContextService.java +++ b/api/api-referential/referential-commons/src/main/java/fr/gouv/vitamui/referential/common/service/VitamContextService.java @@ -40,9 +40,11 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; +import java.util.Iterator; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -50,6 +52,8 @@ import org.springframework.http.HttpStatus; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; 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.ObjectMapper; import fr.gouv.vitam.access.external.client.AdminExternalClient; @@ -184,8 +188,26 @@ public class VitamContextService { final List<ContextVitamDto> listOfContexts = convertContextsToModelOfCreation(contextDto); final ObjectMapper mapper = new ObjectMapper(); final JsonNode node = mapper.convertValue(listOfContexts, JsonNode.class); - LOGGER.debug("The json for creation access contract, sent to Vitam {}", node); - + + // FIXME ? The "accessContracts" and "ingestContracts" in the permissions must be rename to "AccessContracts" and "IngestContracts" to be saved in Vitam + final ArrayNode arrayNode = (ArrayNode) node; + arrayNode.forEach(contextNode -> { + final ArrayNode permissionsNode = (ArrayNode) contextNode.get("Permissions"); + if (permissionsNode != null) { + permissionsNode.forEach(permissionNode -> { + final ObjectNode objectNode = (ObjectNode) permissionNode; + if (permissionNode.get("accessContracts") != null) { + objectNode.set("AccessContracts", permissionNode.get("accessContracts")); + objectNode.remove("accessContracts"); + } + if (permissionNode.get("ingestContracts") != null) { + objectNode.set("IngestContracts", permissionNode.get("ingestContracts")); + objectNode.remove("ingestContracts"); + } + }); + } + }); + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { mapper.writeValue(byteArrayOutputStream, node); return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());