Auto-resolve edge type
[aai/gizmo.git] / src / main / java / org / onap / crud / service / CrudAsyncGraphDataService.java
index 6b447a1..8d147eb 100644 (file)
@@ -56,11 +56,13 @@ import org.onap.crud.event.envelope.GraphEventEnvelope;
 import org.onap.crud.event.response.GraphEventResponseHandler;
 import org.onap.crud.exception.CrudException;
 import org.onap.crud.logging.CrudServiceMsgs;
+import org.onap.crud.parser.EdgePayload;
+import org.onap.crud.parser.VertexPayload;
 import org.onap.crud.util.CrudProperties;
 import org.onap.crud.util.CrudServiceConstants;
 import org.onap.crud.util.etag.EtagGenerator;
-import org.onap.schema.OxmModelValidator;
-import org.onap.schema.RelationshipSchemaValidator;
+import org.onap.schema.validation.OxmModelValidator;
+import org.onap.schema.validation.RelationshipSchemaValidator;
 
 public class CrudAsyncGraphDataService extends AbstractGraphDataService {
 
@@ -118,7 +120,9 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
 
         // Start the Response Consumer timer
-        CrudAsyncResponseConsumer crudAsyncResponseConsumer = new CrudAsyncResponseConsumer(asyncResponseConsumer);
+        CrudAsyncResponseConsumer crudAsyncResponseConsumer = new CrudAsyncResponseConsumer(
+            asyncResponseConsumer, new GraphEventUpdater()
+        );
         timer = new Timer("crudAsyncResponseConsumer-1");
         timer.schedule(crudAsyncResponseConsumer, responsePollInterval, responsePollInterval);
 
@@ -211,7 +215,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
             throws CrudException {
         // Validate the incoming payload
         Vertex vertex = OxmModelValidator.validateIncomingUpsertPayload(null, version, type, payload.getProperties());
-        vertex.getProperties().put(org.onap.schema.OxmModelValidator.Metadata.NODE_TYPE.propertyName(), type);
+        vertex.getProperties().put(OxmModelValidator.Metadata.NODE_TYPE.propertyName(), type);
         // Create graph request event
         GraphEvent event = GraphEvent.builder(GraphEventOperation.CREATE)
                 .vertex(GraphEventVertex.fromVertex(vertex, version)).build();
@@ -226,13 +230,14 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleVertexResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @Override
     public ImmutablePair<EntityTag, String> addEdge(String version, String type, EdgePayload payload)
             throws CrudException {
         Edge edge = RelationshipSchemaValidator.validateIncomingAddPayload(version, type, payload);
+
         // Create graph request event
         GraphEvent event =
                 GraphEvent.builder(GraphEventOperation.CREATE).edge(GraphEventEdge.fromEdge(edge, version)).build();
@@ -247,7 +252,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleEdgeResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @Override
@@ -267,7 +272,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleVertexResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @Override
@@ -291,7 +296,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleVertexResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @Override
@@ -320,6 +325,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         OperationResult operationResult = dao.getEdge(id, type, new HashMap<String, String>());
         Edge edge = Edge.fromJson(operationResult.getResult());
         Edge validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, version, payload);
+
         GraphEvent event = GraphEvent.builder(GraphEventOperation.UPDATE)
                 .edge(GraphEventEdge.fromEdge(validatedEdge, version)).build();
 
@@ -333,7 +339,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleEdgeResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @Override
@@ -355,7 +361,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
         }
         String responsePayload = responseHandler.handleEdgeResponse(version, event, response);
 
-        return new ImmutablePair<EntityTag, String>(entityTag, responsePayload);
+        return new ImmutablePair<>(entityTag, responsePayload);
     }
 
     @PreDestroy
@@ -408,7 +414,18 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService {
     }
 
     @Override
-    protected void deleteBulkEdge(String id, String version, String type, String dbTransId) throws CrudException {
+    protected void deleteBulkEdge(String id, String version, String dbTransId) throws CrudException {
+        // Get the edge type
+        String type = null;
+        try {
+            Edge edge = daoForGet.getEdge(id);
+            type = edge.getType();
+        }
+        catch (CrudException ex) {
+            // Likely the client is trying to delete an edge which isn't present.  Just swallow the exception
+            // and let the bulk request fail via the normal path.
+        }
+        
         GraphEvent event = GraphEvent.builder(GraphEventOperation.DELETE)
                 .edge(new GraphEventEdge(id, version, type, null, null, null)).build();
         event.setDbTransactionId(dbTransId);