@Override
public void executeProcess(String parameters, JsonObject childObject, Service serviceModel) {
switch (parameters) {
+ case "actor":
+ JsonArray jsonArray = new JsonArray();
+ jsonArray.add("CDS");
+ addToJsonArray(childObject, "enum", jsonArray);
+ break;
case "payload":
- childObject.add("anyOf", generatePayload(serviceModel));
+ generatePayload(childObject, serviceModel);
break;
case "operation":
- childObject.add("enum", generateOperation(serviceModel));
+ generateOperation(childObject, serviceModel);
break;
}
}
- private static JsonArray generatePayload(Service serviceModel) {
- JsonArray schemaAnyOf = new JsonArray();
- schemaAnyOf.addAll(generatePayloadPerResource("VF", serviceModel));
- schemaAnyOf.addAll(generatePayloadPerResource("PNF", serviceModel));
- return schemaAnyOf;
+ private static void generatePayload(JsonObject childObject, Service serviceModel) {
+ generatePayloadPerResource(childObject, "VF", serviceModel);
+ generatePayloadPerResource(childObject, "PNF", serviceModel);
+ addToJsonArray(childObject, "anyOf", createBlankEntry());
}
- private static JsonArray generateOperation(Service serviceModel) {
- JsonArray schemaEnum = new JsonArray();
- schemaEnum.addAll(generateOperationPerResource("VF", serviceModel));
- schemaEnum.addAll(generateOperationPerResource("PNF", serviceModel));
- return schemaEnum;
+ private static void generateOperation(JsonObject childObject, Service serviceModel) {
+ generateOperationPerResource(childObject, "VF", serviceModel);
+ generateOperationPerResource(childObject, "PNF", serviceModel);
}
- private static JsonArray generateOperationPerResource(String resourceName, Service serviceModel) {
+ private static void generateOperationPerResource(JsonObject childObject, String resourceName,
+ Service serviceModel) {
JsonArray schemaEnum = new JsonArray();
+ JsonArray schemaTitle = new JsonArray();
for (Map.Entry<String, JsonElement> entry : serviceModel.getResourceDetails().getAsJsonObject(resourceName)
.entrySet()) {
JsonObject controllerProperties = entry.getValue().getAsJsonObject()
if (controllerProperties != null) {
for (String workflowsEntry : controllerProperties.getAsJsonObject("workflows").keySet()) {
schemaEnum.add(workflowsEntry);
+ schemaTitle.add(workflowsEntry + " (CDS operation)");
}
}
}
- return schemaEnum;
+ addToJsonArray(childObject, "enum", schemaEnum);
+ if (childObject.get("options") == null) {
+ JsonObject optionsSection = new JsonObject();
+ childObject.add("options", optionsSection);
+ }
+ addToJsonArray(childObject.getAsJsonObject("options"), "enum_titles", schemaTitle);
+
}
- private static JsonArray generatePayloadPerResource(String resourceName, Service serviceModel) {
+ private static void generatePayloadPerResource(JsonObject childObject, String resourceName,
+ Service serviceModel) {
JsonArray schemaAnyOf = new JsonArray();
+
for (Map.Entry<String, JsonElement> entry : serviceModel.getResourceDetails().getAsJsonObject(resourceName)
.entrySet()) {
JsonObject controllerProperties = entry.getValue().getAsJsonObject()
}
}
}
- return schemaAnyOf;
+ addToJsonArray(childObject, "anyOf", schemaAnyOf);
+ }
+
+ private static JsonArray createBlankEntry() {
+ JsonArray result = new JsonArray();
+ JsonObject blankObject = new JsonObject();
+ blankObject.addProperty("title", "User defined");
+ blankObject.add("properties", new JsonObject());
+ result.add(blankObject);
+ return result;
}
private static JsonObject createPayloadProperty(JsonObject workFlow, JsonObject controllerProperties) {
JsonObject payloadResult = new JsonObject();
- payloadResult.addProperty("artifact_name", controllerProperties.get("sdnc_model_name").getAsString());
- payloadResult.addProperty("artifact_version", controllerProperties.get("sdnc_model_version").getAsString());
- payloadResult.addProperty("mode", "async");
- payloadResult.add("data", workFlow.getAsJsonObject("inputs"));
+ payloadResult.add("artifact_name",
+ createAnyOfJsonProperty("artifact_name", controllerProperties.get("sdnc_model_name").getAsString()));
+ payloadResult.add("artifact_version",
+ createAnyOfJsonProperty("artifact_version",
+ controllerProperties.get("sdnc_model_version").getAsString()));
+ payloadResult.add("mode", createAnyOfJsonProperty("mode", "async"));
+
+ payloadResult.add("data", createAnyOfJsonObject("data", workFlow.getAsJsonObject("inputs")));
return payloadResult;
}
+
+ private static JsonObject createAnyOfJsonProperty(String name, String defaultValue) {
+ JsonObject result = new JsonObject();
+ result.addProperty("title", name);
+ result.addProperty("type", "string");
+ result.addProperty("default", defaultValue);
+ result.addProperty("readOnly", "True");
+ return result;
+ }
+
+ private static JsonObject createAnyOfJsonObject(String name, JsonObject allProperties) {
+ JsonObject result = new JsonObject();
+ result.addProperty("title", name);
+ result.addProperty("type", "object");
+ result.add("properties", allProperties);
+ return result;
+ }
+
+ private static void addToJsonArray(JsonObject childObject, String section, JsonArray value) {
+ if (childObject.getAsJsonArray(section) != null) {
+ childObject.getAsJsonArray(section).addAll(value);
+ }
+ else {
+ childObject.add(section, value);
+ }
+ }
}