From b147ce0c576f4ae44f14981a02dab81b684ad88e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ABl=20QUAISSARD?= <mael.quaissard@smile.fr>
Date: Mon, 7 Sep 2020 13:38:17 +0200
Subject: [PATCH] fix empty contracts in vitam context creation and
 modification

---
 .../common/service/VitamContextService.java   | 26 +++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

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 7e3e8cc4..24121fa4 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());
-- 
GitLab