X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fcrud%2Fservice%2FCrudGraphDataService.java;h=ae2d294c3f8cd47e09ce210177c80c68562ae2d0;hb=3bc6a702f2d3d8710c7aaa94cdc8c0ccf3deb759;hp=5b1c2ddce2e36e55fe2218341b7780dae02cd47d;hpb=b348af8ed2c4192f88169b37bf53fa25b8a7a681;p=aai%2Fgizmo.git diff --git a/src/main/java/org/onap/crud/service/CrudGraphDataService.java b/src/main/java/org/onap/crud/service/CrudGraphDataService.java index 5b1c2dd..ae2d294 100644 --- a/src/main/java/org/onap/crud/service/CrudGraphDataService.java +++ b/src/main/java/org/onap/crud/service/CrudGraphDataService.java @@ -22,6 +22,7 @@ package org.onap.crud.service; import java.util.HashMap; +import java.util.List; import javax.ws.rs.core.EntityTag; import org.apache.commons.lang3.tuple.ImmutablePair; import org.onap.aai.restclient.client.OperationResult; @@ -30,9 +31,12 @@ import org.onap.crud.entity.Edge; import org.onap.crud.entity.Vertex; import org.onap.crud.exception.CrudException; import org.onap.crud.parser.CrudResponseBuilder; +import org.onap.crud.parser.EdgePayload; +import org.onap.crud.parser.VertexPayload; +import org.onap.crud.parser.util.EdgePayloadUtil; import org.onap.crud.util.CrudServiceUtil; -import org.onap.schema.OxmModelValidator; -import org.onap.schema.RelationshipSchemaValidator; +import org.onap.schema.validation.OxmModelValidator; +import org.onap.schema.validation.RelationshipSchemaValidator; public class CrudGraphDataService extends AbstractGraphDataService { @@ -64,13 +68,23 @@ public class CrudGraphDataService extends AbstractGraphDataService { String payload = CrudResponseBuilder .buildUpsertVertexResponse(OxmModelValidator.validateOutgoingPayload(version, addedVertex), version); - return new ImmutablePair(entityTag, payload); + return new ImmutablePair<>(entityTag, payload); } @Override public ImmutablePair addEdge(String version, String type, EdgePayload payload) throws CrudException { - Edge edge = RelationshipSchemaValidator.validateIncomingAddPayload(version, type, payload); + // load source and target vertex relationships for validation + List sourceVertexEdges = + EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getSource()), type, + daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getSource()), null, null)); + + List targetVertexEdges = + EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getTarget()), type, + daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getTarget()), null, null)); + + Edge edge = RelationshipSchemaValidator.validateIncomingAddPayload(version, type, payload, sourceVertexEdges, targetVertexEdges); + return addEdge(version, edge); } @@ -81,7 +95,7 @@ public class CrudGraphDataService extends AbstractGraphDataService { String payload = CrudResponseBuilder .buildUpsertEdgeResponse(RelationshipSchemaValidator.validateOutgoingPayload(version, addedEdge), version); - return new ImmutablePair(entityTag, payload); + return new ImmutablePair<>(entityTag, payload); } @Override @@ -96,7 +110,7 @@ public class CrudGraphDataService extends AbstractGraphDataService { String payload = getUpdatedVertexPayload(version, updatedVertexResult); EntityTag entityTag = CrudServiceUtil.getETagFromHeader(updatedVertexResult.getHeaders()); - return new ImmutablePair(entityTag, payload); + return new ImmutablePair<>(entityTag, payload); } private String getUpdatedVertexPayload(String version, OperationResult updatedVertexResult) throws CrudException { @@ -126,14 +140,27 @@ public class CrudGraphDataService extends AbstractGraphDataService { @Override public String deleteEdge(String version, String id, String type) throws CrudException { RelationshipSchemaValidator.validateType(version, type); - dao.deleteEdge(id, type); + dao.deleteEdge(id); return ""; } @Override public ImmutablePair updateEdge(String version, String id, String type, EdgePayload payload) throws CrudException { - Edge validatedEdge = getValidatedEdge(version, id, type, payload); + OperationResult edgeResult = dao.getEdge(id, type, new HashMap()); + Edge edge = Edge.fromJson(edgeResult.getResult()); + + // load source and target vertex relationships for validation + List sourceVertexEdges = + EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getSource()), type, + daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getSource()), null, null)); + + List targetVertexEdges = + EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getTarget()), type, + daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getTarget()), null, null)); + + Edge validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, version, payload, type, sourceVertexEdges, targetVertexEdges); + return updateEdge(version, validatedEdge); } @@ -142,7 +169,7 @@ public class CrudGraphDataService extends AbstractGraphDataService { String payload = getUpdatedEdgePayload(version, updatedEdgeResult); EntityTag entityTag = CrudServiceUtil.getETagFromHeader(updatedEdgeResult.getHeaders()); - return new ImmutablePair(entityTag, payload); + return new ImmutablePair<>(entityTag, payload); } private String getUpdatedEdgePayload(String version, OperationResult updatedEdgeResult) throws CrudException { @@ -152,11 +179,6 @@ public class CrudGraphDataService extends AbstractGraphDataService { .buildUpsertEdgeResponse(RelationshipSchemaValidator.validateOutgoingPayload(version, updatedEdge), version); } - private Edge getValidatedEdge(String version, String id, String type, EdgePayload payload) throws CrudException { - OperationResult operationResult = dao.getEdge(id, type, new HashMap()); - return RelationshipSchemaValidator.validateIncomingUpdatePayload(Edge.fromJson(operationResult.getResult()), version, payload); - } - @Override public ImmutablePair patchEdge(String version, String id, String type, EdgePayload payload) throws CrudException { @@ -191,7 +213,7 @@ public class CrudGraphDataService extends AbstractGraphDataService { } @Override - protected void deleteBulkEdge(String id, String version, String type, String dbTransId) throws CrudException { - dao.deleteEdge(id, type, dbTransId); + protected void deleteBulkEdge(String id, String version, String dbTransId) throws CrudException { + dao.deleteEdge(id, dbTransId); } }