- public String updateEdge(String version, String id, String type, EdgePayload payload) throws CrudException {
- Edge edge = dao.getEdge(id, type, new HashMap<String, String>());
- Edge validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, version, payload);
+ @Override
+ public ImmutablePair<EntityTag, String> updateEdge(String version, String id, String type, EdgePayload payload)
+ throws CrudException {
+ OperationResult edgeResult = dao.getEdge(id, type, new HashMap<String, String>());
+ Edge edge = Edge.fromJson(edgeResult.getResult());
+
+ // load source and target vertex relationships for validation
+ List<Edge> sourceVertexEdges =
+ EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getSource()), type,
+ daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getSource()), null));
+
+ List<Edge> targetVertexEdges =
+ EdgePayloadUtil.filterEdgesByRelatedVertexAndType(EdgePayloadUtil.getVertexNodeType(payload.getTarget()), type,
+ daoForGet.getVertexEdges(EdgePayloadUtil.getVertexNodeId(payload.getTarget()), null));
+
+ Edge validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, version, payload, type, sourceVertexEdges, targetVertexEdges);
+