+ 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(RelationshipSchemaValidator.vertexTypeFromUri(payload.getSource()),
+ RelationshipSchemaValidator.vertexTypeFromUri(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();
+ }