X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fcrud%2Fservice%2FCrudAsyncGraphDataService.java;h=5e264b59bd0f24ec6bac4eb743bf6f289546b403;hb=74879a7b7a5607c89aef5fa9d64aca5ddea8e3b7;hp=360a7dcfd47412914001a7ddc398a28e66cfed42;hpb=cb54da50943ca8f2b339444bb0ce73c0d777d257;p=aai%2Fgizmo.git diff --git a/src/main/java/org/onap/crud/service/CrudAsyncGraphDataService.java b/src/main/java/org/onap/crud/service/CrudAsyncGraphDataService.java index 360a7dc..5e264b5 100644 --- a/src/main/java/org/onap/crud/service/CrudAsyncGraphDataService.java +++ b/src/main/java/org/onap/crud/service/CrudAsyncGraphDataService.java @@ -84,12 +84,21 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { public static Integer getRequestTimeOut() { return requestTimeOut; } + + public CrudAsyncGraphDataService(GraphDao dao, + EventPublisher asyncRequestPublisher, + EventConsumer asyncResponseConsumer) throws CrudException { + this(dao,dao,asyncRequestPublisher,asyncResponseConsumer); + } public CrudAsyncGraphDataService(GraphDao dao, + GraphDao daoForGet, EventPublisher asyncRequestPublisher, EventConsumer asyncResponseConsumer) throws CrudException { - super(dao); + super(); + this.dao = dao; + this.daoForGet = daoForGet; requestTimeOut = DEFAULT_REQUEST_TIMEOUT; try { @@ -206,20 +215,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertVertexResponse( OxmModelValidator.validateOutgoingPayload(version, response.getVertex().toVertex()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -234,20 +235,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertEdgeResponse( RelationshipSchemaValidator.validateOutgoingPayload(version, response.getEdge().toEdge()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -262,20 +255,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertVertexResponse( OxmModelValidator.validateOutgoingPayload(version, response.getVertex().toVertex()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -285,7 +270,7 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { public String patchVertex(String version, String id, String type, VertexPayload payload) throws CrudException { Vertex existingVertex - = dao.getVertex(id, OxmModelValidator.resolveCollectionType(version, type)); + = dao.getVertex(id, OxmModelValidator.resolveCollectionType(version, type), version); Vertex patchedVertex = OxmModelValidator.validateIncomingPatchPayload(id, version, type, payload.getProperties(), existingVertex); @@ -294,20 +279,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertVertexResponse( OxmModelValidator.validateOutgoingPayload(version, response.getVertex().toVertex()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -321,18 +298,10 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return ""; } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -346,18 +315,10 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return ""; } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -374,20 +335,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertEdgeResponse( RelationshipSchemaValidator.validateOutgoingPayload(version, response.getEdge().toEdge()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -404,20 +357,12 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { GraphEvent response = sendAndWait(event); if (response.getResult().equals(GraphEventResult.SUCCESS)) { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult()); + logSuccessResponse(event, response); return CrudResponseBuilder.buildUpsertEdgeResponse( RelationshipSchemaValidator.validateOutgoingPayload(version, response.getEdge().toEdge()), version); } else { - logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, - "Event response received: " + response.getObjectType() + " with key: " - + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() - + " , operation: " + event.getOperation().toString() + " , result: " - + response.getResult() + " , error: " + response.getErrorMessage()); + logErrorResponse(event, response); throw new CrudException("Operation Failed with transaction-id: " + response.getTransactionId() + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); } @@ -429,11 +374,82 @@ public class CrudAsyncGraphDataService extends AbstractGraphDataService { timer.cancel(); } - + @Override - public String addBulk(String version, BulkPayload payload) throws CrudException { - throw new CrudException("Bulk operation not supported in async mode", Status.BAD_REQUEST); + protected Vertex addBulkVertex(Vertex vertex, String version, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.CREATE) + .vertex(GraphEventVertex.fromVertex(vertex, version)).build(); + event.setDbTransactionId(dbTransId); + GraphEvent response = publishEvent(event); + return response.getVertex().toVertex(); + } + + @Override + protected Vertex updateBulkVertex(Vertex vertex, String id, String version, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.UPDATE) + .vertex(GraphEventVertex.fromVertex(vertex, version)).build(); + event.setDbTransactionId(dbTransId); + GraphEvent response = publishEvent(event); + return response.getVertex().toVertex(); + } + + @Override + protected void deleteBulkVertex(String id, String version, String type, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.DELETE).vertex(new GraphEventVertex(id, version, type, null)).build(); + event.setDbTransactionId(dbTransId); + publishEvent(event); + } + + @Override + protected Edge addBulkEdge(Edge edge, String version, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.CREATE).edge(GraphEventEdge.fromEdge(edge, version)).build(); + event.setDbTransactionId(dbTransId); + GraphEvent response = publishEvent(event); + return response.getEdge().toEdge(); + } + + @Override + protected Edge updateBulkEdge(Edge edge, String version, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.UPDATE).edge(GraphEventEdge.fromEdge(edge, version)).build(); + event.setDbTransactionId(dbTransId); + GraphEvent response = publishEvent(event); + return response.getEdge().toEdge(); + } + + @Override + protected void deleteBulkEdge(String id, String version, String type, String dbTransId) throws CrudException { + GraphEvent event = GraphEvent.builder(GraphEventOperation.DELETE) + .edge(new GraphEventEdge(id, version, type, null, null, null)).build(); + event.setDbTransactionId(dbTransId); + publishEvent(event); + } + + private GraphEvent publishEvent(GraphEvent event) throws CrudException { + GraphEvent response = sendAndWait(event); + if (response.getResult().equals(GraphEventResult.SUCCESS)) { + logSuccessResponse(event, response); + } else { + logErrorResponse(event, response); + throw new CrudException("Operation failed with transaction-id: " + response.getTransactionId() + + " Error: " + response.getErrorMessage(), response.getHttpErrorStatus()); + } + + return response; } - + private void logSuccessResponse(GraphEvent event, GraphEvent response) { + logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, + "Event response received: " + response.getObjectType() + " with key: " + + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() + + " , operation: " + event.getOperation().toString() + " , result: " + + response.getResult()); + } + + private void logErrorResponse(GraphEvent event, GraphEvent response) { + logger.info(CrudServiceMsgs.ASYNC_DATA_SERVICE_INFO, + "Event response received: " + response.getObjectType() + " with key: " + + response.getObjectKey() + " , transaction-id: " + response.getTransactionId() + + " , operation: " + event.getOperation().toString() + " , result: " + + response.getResult() + " , error: " + response.getErrorMessage()); + } } \ No newline at end of file