From f7784bfb3934c84240d278d6279ba7cd9445e6a8 Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Mon, 21 Nov 2016 10:52:56 +0000 Subject: [PATCH] Fixing header git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@134422 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../resources/impl/EntityManagementImpl.java | 27 +++---------------- .../resources/utils/HeaderUtility.java | 26 +++++++++++++++++- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/resources/impl/EntityManagementImpl.java b/src/main/java/org/gcube/informationsystem/resourceregistry/resources/impl/EntityManagementImpl.java index 7801392..c2543cd 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/resources/impl/EntityManagementImpl.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/resources/impl/EntityManagementImpl.java @@ -36,15 +36,12 @@ import org.gcube.informationsystem.resourceregistry.api.exceptions.schema.Schema import org.gcube.informationsystem.resourceregistry.context.SecurityContextMapper; import org.gcube.informationsystem.resourceregistry.context.SecurityContextMapper.PermissionMode; import org.gcube.informationsystem.resourceregistry.resources.utils.ContextUtility; -import org.gcube.informationsystem.resourceregistry.resources.utils.HeaderOrient; import org.gcube.informationsystem.resourceregistry.resources.utils.HeaderUtility; import org.gcube.informationsystem.resourceregistry.resources.utils.Utility; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.JsonNodeType; @@ -126,24 +123,6 @@ public class EntityManagementImpl implements EntityManagement { return null; } - private static Header getHeader(JsonNode jsonNode) - throws JsonParseException, JsonMappingException, IOException { - if (jsonNode.has(Resource.HEADER_PROPERTY)) { - JsonNode headerNode = jsonNode.get(Resource.HEADER_PROPERTY); - if (headerNode.isNull()) { - return null; - } - /* - * ObjectMapper mapper = new ObjectMapper(); Header header = - * mapper.readValue(headerNode.toString(), Header.class); - */ - HeaderOrient headerOrient = new HeaderOrient(); - headerOrient.fromJSON(headerNode.toString()); - return headerOrient; - } - return null; - } - private static ODocument getEmbeddedType(JsonNode jsonNode) throws ResourceRegistryException { if (jsonNode.has(Entities.CLASS_PROPERTY)) { @@ -159,7 +138,7 @@ public class EntityManagementImpl implements EntityManagement { Header header = null; try { - header = getHeader(jsonNode); + header = HeaderUtility.getHeader(jsonNode, false); } catch (Exception e) { logger.warn("An invalid Header has been provided. An embedded object cannot have an Header. It will be ignored."); throw new ResourceRegistryException( @@ -292,7 +271,7 @@ public class EntityManagementImpl implements EntityManagement { Header targetHeader = null; try { - targetHeader = getHeader(target); + targetHeader = HeaderUtility.getHeader(target, false); } catch (IOException e) { throw new ResourceRegistryException(e); } @@ -401,7 +380,7 @@ public class EntityManagementImpl implements EntityManagement { OrientVertex vertex = orientGraph.addVertex("class:" + entityType); - Header entityHeader = getHeader(jsonNode); + Header entityHeader = HeaderUtility.getHeader(jsonNode, true); if (entityHeader != null) { vertex.setProperty(Entity.HEADER_PROPERTY, entityHeader); } else { diff --git a/src/main/java/org/gcube/informationsystem/resourceregistry/resources/utils/HeaderUtility.java b/src/main/java/org/gcube/informationsystem/resourceregistry/resources/utils/HeaderUtility.java index 5cc0780..fc07703 100644 --- a/src/main/java/org/gcube/informationsystem/resourceregistry/resources/utils/HeaderUtility.java +++ b/src/main/java/org/gcube/informationsystem/resourceregistry/resources/utils/HeaderUtility.java @@ -3,6 +3,7 @@ */ package org.gcube.informationsystem.resourceregistry.resources.utils; +import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @@ -13,9 +14,13 @@ import org.gcube.common.authorization.library.provider.ClientInfo; import org.gcube.common.authorization.library.utils.Caller; import org.gcube.informationsystem.model.embedded.Header; import org.gcube.informationsystem.model.entity.Entity; +import org.gcube.informationsystem.model.entity.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; import com.tinkerpop.blueprints.Edge; import com.tinkerpop.blueprints.Vertex; @@ -63,7 +68,26 @@ public class HeaderUtility { return header; } - + + public static Header getHeader(JsonNode jsonNode, boolean creation) + throws JsonParseException, JsonMappingException, IOException { + if (jsonNode.has(Resource.HEADER_PROPERTY)) { + JsonNode headerNode = jsonNode.get(Resource.HEADER_PROPERTY); + if (headerNode.isNull()) { + return null; + } + HeaderOrient header = null; + if(creation){ + UUID uuid = UUID.fromString(headerNode.get(Header.UUID_PROPERTY).asText()); + header = (HeaderOrient) createHeader(uuid); + }else{ + header = new HeaderOrient(); + header.fromJSON(headerNode.toString()); + } + return header; + } + return null; + } public static Header addHeader(Vertex vertex, UUID uuid) { Header header = createHeader(uuid);