aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/org/onap/crud/util/CrudServiceUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/onap/crud/util/CrudServiceUtil.java')
-rw-r--r--src/main/java/org/onap/crud/util/CrudServiceUtil.java25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/main/java/org/onap/crud/util/CrudServiceUtil.java b/src/main/java/org/onap/crud/util/CrudServiceUtil.java
index ed5fe53..5eeb38e 100644
--- a/src/main/java/org/onap/crud/util/CrudServiceUtil.java
+++ b/src/main/java/org/onap/crud/util/CrudServiceUtil.java
@@ -31,8 +31,12 @@ import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response.Status;
import org.onap.aai.db.props.AAIProperties;
import org.onap.crud.exception.CrudException;
+import org.onap.crud.parser.EdgePayload;
+import org.onap.crud.parser.util.EdgePayloadUtil;
import org.onap.schema.EdgeRulesLoader;
import org.onap.schema.OxmModelLoader;
+import org.onap.schema.RelationshipSchema;
+
import com.google.gson.Gson;
import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
@@ -138,4 +142,25 @@ public class CrudServiceUtil {
return entityTag;
}
+ public static String determineEdgeType(EdgePayload payload, String version) throws CrudException {
+ RelationshipSchema schema = EdgeRulesLoader.getSchemaForVersion(version);
+
+ if (payload.getSource() == null || payload.getTarget() == null) {
+ throw new CrudException("Source/Target not specified", Status.BAD_REQUEST);
+ }
+
+ Set<String> edgeTypes = schema.getValidRelationTypes(EdgePayloadUtil.getVertexNodeType(payload.getSource()),
+ EdgePayloadUtil.getVertexNodeType(payload.getTarget()));
+
+ if (edgeTypes.size() == 0) {
+ throw new CrudException("No valid relationship types from " + payload.getSource() + " to " + payload.getTarget(), Status.BAD_REQUEST);
+ }
+
+ if (edgeTypes.size() > 1) {
+ throw new CrudException("Multiple possible relationship types from " + payload.getSource() + " to " + payload.getTarget(), Status.BAD_REQUEST);
+ }
+
+ return edgeTypes.iterator().next();
+ }
+
}