From eb2c8022baf09208c841acdf8af3c663d320e1fc Mon Sep 17 00:00:00 2001 From: "luca.frosini" Date: Thu, 24 Nov 2016 16:56:05 +0000 Subject: [PATCH] Fixed error on resource marshalling git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/information-system/resource-registry@134709 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../resources/impl/EntityManagementImpl.java | 59 ++++++++----------- 1 file changed, 25 insertions(+), 34 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 82682d4..2a77721 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 @@ -101,7 +101,7 @@ public class EntityManagementImpl implements EntityManagement { String classProperty = getClassProperty(jsonNode); try { - SchemaManagementImpl.getTypeSchema(classProperty, classProperty); + SchemaManagementImpl.getTypeSchema(orientGraph, classProperty, classProperty); } catch (SchemaNotFoundException e) { throw e; } @@ -157,7 +157,7 @@ public class EntityManagementImpl implements EntityManagement { String classProperty = getClassProperty(jsonNode); if (relationType.compareTo(classProperty) != 0) { try { - SchemaManagementImpl.getTypeSchema(relationType, classProperty); + SchemaManagementImpl.getTypeSchema(orientGraph, relationType, classProperty); } catch (SchemaNotFoundException e) { throw e; } @@ -437,7 +437,7 @@ public class EntityManagementImpl implements EntityManagement { try { try { - SchemaManagementImpl.getTypeSchema(entityType, + SchemaManagementImpl.getTypeSchema(orientGraph, entityType, entity.getSimpleName()); } catch (SchemaNotFoundException e) { throw e; @@ -575,7 +575,7 @@ public class EntityManagementImpl implements EntityManagement { } try { - SchemaManagementImpl.getTypeSchema(relationType, + SchemaManagementImpl.getTypeSchema(orientGraph, relationType, relationBaseClass.getSimpleName()); } catch (SchemaNotFoundException e) { throw e; @@ -623,8 +623,7 @@ public class EntityManagementImpl implements EntityManagement { private Edge updateRelation( OrientGraph orientGraph, JsonNode jsonNode, - @SuppressWarnings("rawtypes") Class relationClass, - boolean deferredCommit) throws ResourceRegistryException { + @SuppressWarnings("rawtypes") Class relationClass) throws ResourceRegistryException { logger.debug("Trying to update {} : {}", relationClass.getSimpleName(), jsonNode); @@ -640,7 +639,7 @@ public class EntityManagementImpl implements EntityManagement { } try { - SchemaManagementImpl.getTypeSchema(relationType, + SchemaManagementImpl.getTypeSchema(orientGraph, relationType, relationClass.getSimpleName()); } catch (SchemaNotFoundException e) { throw e; @@ -662,30 +661,16 @@ public class EntityManagementImpl implements EntityManagement { updateFacet(orientGraph, targetUUID, target); } - if (!deferredCommit) { - orientGraph.commit(); - } - logger.info("{} {} successfully updated", relationType, jsonNode); return edge; } catch (ResourceRegistryException rre) { logger.error("Error Updating {} {} ", relationClass, jsonNode, rre); - if (orientGraph != null) { - orientGraph.rollback(); - } throw rre; } catch (Exception e) { logger.error("Error Creating {} {}", relationClass, jsonNode, e); - if (orientGraph != null) { - orientGraph.rollback(); - } throw new ResourceRegistryException(e); - } finally { - if (orientGraph != null && !deferredCommit) { - orientGraph.shutdown(); - } } } @@ -1066,30 +1051,37 @@ public class EntityManagementImpl implements EntityManagement { return true; } - private static String marshallResource(Vertex vertex) throws JSONException { + private static String marshallResource(OrientGraph orientGraph, Vertex vertex) throws JSONException { JSONObject jsonObject = Utility.toJsonObject((OrientVertex) vertex, true); JSONArray consistsOfArray = new JSONArray(); Iterable edges = vertex.getEdges(Direction.OUT); - - for (Edge edge : edges) { + + for(Edge edge : edges) { String edgeType = edge.getLabel(); try { - SchemaManagementImpl.getTypeSchema(edgeType, ConsistsOf.NAME); - + SchemaManagementImpl.getTypeSchema(orientGraph, edgeType, ConsistsOf.NAME); + }catch (SchemaNotFoundException e) { + // This not an ConsistsOf Edge. it will be skipped + continue; + } + + try{ JSONObject jsonObjectEdge = Utility.toJsonObject( (OrientEdge) edge, true); Vertex facetVertex = edge.getVertex(Direction.IN); + jsonObjectEdge.put(Relation.TARGET_PROPERTY, Utility.toJsonObject((OrientVertex) facetVertex, true)); consistsOfArray.put(jsonObjectEdge); - } catch (SchemaNotFoundException e) { - // This not an ConsistsOf Edge. it will be skipped + } catch (Exception e) { + logger.error("Unable to add a Relation to serilization", e); + continue; } } @@ -1131,10 +1123,10 @@ public class EntityManagementImpl implements EntityManagement { createRelations(orientGraph, resource, jsonNodeArray, IsRelatedTo.class); } - + orientGraph.commit(); - String resourceString = marshallResource(resource); + String resourceString = marshallResource(orientGraph, resource); logger.info("{} ({}) successfully created {}", Resource.NAME, resourceType, resourceString); @@ -1188,7 +1180,7 @@ public class EntityManagementImpl implements EntityManagement { resourceType, uuid, Utility.toJsonString((OrientVertex) resource, true)); - return marshallResource(resource); + return marshallResource(orientGraph, resource); } catch (ResourceNotFoundException rnfe) { logger.error("Unable to read {} ({}) with UUID {}", Resource.NAME, resourceType, uuid, rnfe); @@ -1225,8 +1217,7 @@ public class EntityManagementImpl implements EntityManagement { if (jsonNode.has(property)) { JsonNode jsonNodeArray = jsonNode.get(property); for (JsonNode relationJsonNode : jsonNodeArray) { - updateRelation(orientGraph, relationJsonNode, - ConsistsOf.class, true); + updateRelation(orientGraph, relationJsonNode, ConsistsOf.class); } } @@ -1234,7 +1225,7 @@ public class EntityManagementImpl implements EntityManagement { ((OrientVertex) resource).save(); orientGraph.commit(); - String resourceString = marshallResource(resource); + String resourceString = marshallResource(orientGraph, resource); logger.info("{} with UUID {} has been updated {}", Resource.NAME, resourceUUID,