aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/crud/service/AbstractGraphDataService.java30
-rw-r--r--src/main/java/org/onap/crud/service/CrudRestService.java8
2 files changed, 34 insertions, 4 deletions
diff --git a/src/main/java/org/onap/crud/service/AbstractGraphDataService.java b/src/main/java/org/onap/crud/service/AbstractGraphDataService.java
index 654ebfb..60241cc 100644
--- a/src/main/java/org/onap/crud/service/AbstractGraphDataService.java
+++ b/src/main/java/org/onap/crud/service/AbstractGraphDataService.java
@@ -155,6 +155,23 @@ public abstract class AbstractGraphDataService {
Vertex outgoingVertex = OxmModelValidator.validateOutgoingPayload(version, persistedVertex);
vertices.put(item.getKey(), outgoingVertex);
}
+
+ // Patch vertex
+ else if (opr.getValue().getAsString().equalsIgnoreCase("patch")) {
+ if ( (vertexPayload.getId() == null) || (vertexPayload.getType() == null) ) {
+ throw new CrudException("id and type must be specified for patch request", Status.BAD_REQUEST);
+ }
+
+ vertexPayload.setProperties(CrudServiceUtil.mergeHeaderInFoToPayload(vertexPayload.getProperties(),
+ headers, false));
+
+ Vertex existingVertex = dao.getVertex(vertexPayload.getId(), OxmModelValidator.resolveCollectionType(version, vertexPayload.getType()));
+ Vertex validatedVertex = OxmModelValidator.validateIncomingPatchPayload(vertexPayload.getId(),
+ version, vertexPayload.getType(), vertexPayload.getProperties(), existingVertex);
+ Vertex persistedVertex = updateBulkVertex(validatedVertex, vertexPayload.getId(), version, txId);
+ Vertex outgoingVertex = OxmModelValidator.validateOutgoingPayload(version, persistedVertex);
+ vertices.put(item.getKey(), outgoingVertex);
+ }
}
// Step 4: Handle edge add/modify
@@ -171,7 +188,8 @@ public abstract class AbstractGraphDataService {
// Add/Update edge
if (opr.getValue().getAsString().equalsIgnoreCase("add")
- || opr.getValue().getAsString().equalsIgnoreCase("modify")) {
+ || opr.getValue().getAsString().equalsIgnoreCase("modify")
+ || opr.getValue().getAsString().equalsIgnoreCase("patch")) {
Edge validatedEdge;
Edge persistedEdge;
if (opr.getValue().getAsString().equalsIgnoreCase("add")) {
@@ -197,11 +215,19 @@ public abstract class AbstractGraphDataService {
validatedEdge = RelationshipSchemaValidator.validateIncomingAddPayload(version, edgePayload.getType(),
edgePayload);
persistedEdge = addBulkEdge(validatedEdge, version, txId);
- } else {
+ } else if (opr.getValue().getAsString().equalsIgnoreCase("modify")) {
Edge edge = dao.getEdge(edgePayload.getId(), edgePayload.getType(), txId);
validatedEdge = RelationshipSchemaValidator.validateIncomingUpdatePayload(edge, version, edgePayload);
persistedEdge = updateBulkEdge(validatedEdge, version, txId);
+ } else {
+ if ( (edgePayload.getId() == null) || (edgePayload.getType() == null) ) {
+ throw new CrudException("id and type must be specified for patch request", Status.BAD_REQUEST);
+ }
+ Edge existingEdge = dao.getEdge(edgePayload.getId(), edgePayload.getType(), txId);
+ Edge patchedEdge = RelationshipSchemaValidator.validateIncomingPatchPayload(existingEdge, version, edgePayload);
+ persistedEdge = updateBulkEdge(patchedEdge, version, txId);
}
+
Edge outgoingEdge = RelationshipSchemaValidator.validateOutgoingPayload(version, persistedEdge);
edges.put(item.getKey(), outgoingEdge);
diff --git a/src/main/java/org/onap/crud/service/CrudRestService.java b/src/main/java/org/onap/crud/service/CrudRestService.java
index d00323e..0ea07f0 100644
--- a/src/main/java/org/onap/crud/service/CrudRestService.java
+++ b/src/main/java/org/onap/crud/service/CrudRestService.java
@@ -451,11 +451,13 @@ public class CrudRestService {
if (!opr.getValue().getAsString().equalsIgnoreCase("add")
&& !opr.getValue().getAsString().equalsIgnoreCase("modify")
+ && !opr.getValue().getAsString().equalsIgnoreCase("patch")
&& !opr.getValue().getAsString().equalsIgnoreCase("delete")) {
throw new CrudException("Invalid operation at item: " + item.getKey(), Status.BAD_REQUEST);
}
- // check if ID is populate for modify/delete operation
+ // check if ID is populate for modify/patch/delete operation
if ((opr.getValue().getAsString().equalsIgnoreCase("modify")
+ || opr.getValue().getAsString().equalsIgnoreCase("patch")
|| opr.getValue().getAsString().equalsIgnoreCase("delete")) && (vertexPayload.getId() == null)) {
throw new CrudException("Mising ID at item: " + item.getKey(), Status.BAD_REQUEST);
@@ -491,11 +493,13 @@ public class CrudRestService {
if (!opr.getValue().getAsString().equalsIgnoreCase("add")
&& !opr.getValue().getAsString().equalsIgnoreCase("modify")
+ && !opr.getValue().getAsString().equalsIgnoreCase("patch")
&& !opr.getValue().getAsString().equalsIgnoreCase("delete")) {
throw new CrudException("Invalid operation at item: " + item.getKey(), Status.BAD_REQUEST);
}
- // check if ID is populate for modify/delete operation
+ // check if ID is populate for modify/patch/delete operation
if ((edgePayload.getId() == null) && (opr.getValue().getAsString().equalsIgnoreCase("modify")
+ || opr.getValue().getAsString().equalsIgnoreCase("patch")
|| opr.getValue().getAsString().equalsIgnoreCase("delete"))) {
throw new CrudException("Mising ID at item: " + item.getKey(), Status.BAD_REQUEST);