package org.onap.clamp.clds.tosca.update.execution.cds;
-import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.PROPERTIES;
import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE;
import static org.onap.clamp.clds.tosca.ToscaSchemaConstants.TYPE_LIST;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-
import java.util.Map;
import java.util.Set;
-
import org.onap.clamp.clds.tosca.update.execution.ToscaMetadataProcess;
import org.onap.clamp.loop.service.Service;
-import org.onap.clamp.tosca.DictionaryService;
-import org.springframework.beans.factory.annotation.Autowired;
/**
* This class is there to add the JsonObject for CDS in the json Schema according to what is found in the Tosca model.
*/
public class ToscaMetadataCdsProcess extends ToscaMetadataProcess {
- @Autowired
- private DictionaryService dictionaryService;
-
@Override
public void executeProcess(String parameters, JsonObject childObject, Service serviceModel) {
switch (parameters) {
case "operation":
generateOperation(childObject, serviceModel);
break;
+ default:
}
}
.entrySet()) {
JsonObject controllerProperties = entry.getValue().getAsJsonObject()
.getAsJsonObject("controllerProperties");
- if (controllerProperties != null) {
+ if (controllerProperties != null && controllerProperties.getAsJsonObject("workflows") != null) {
for (String workflowsEntry : controllerProperties.getAsJsonObject("workflows").keySet()) {
schemaEnum.add(workflowsEntry);
schemaTitle.add(workflowsEntry + " (CDS operation)");
.entrySet()) {
JsonObject controllerProperties = entry.getValue().getAsJsonObject()
.getAsJsonObject("controllerProperties");
- if (controllerProperties != null) {
+ if (controllerProperties != null && controllerProperties.getAsJsonObject("workflows") != null) {
for (Map.Entry<String, JsonElement> workflowsEntry : controllerProperties.getAsJsonObject("workflows")
.entrySet()) {
JsonObject obj = new JsonObject();
obj.addProperty("title", workflowsEntry.getKey());
obj.add("properties",
createInputPropertiesForPayload(workflowsEntry.getValue().getAsJsonObject(),
- controllerProperties));
+ controllerProperties,
+ workflowsEntry.getKey()));
schemaAnyOf.add(obj);
}
}
return result;
}
- private static JsonObject createAnyOfJsonProperty(String name, String defaultValue) {
+ private static JsonObject createAnyOfJsonProperty(String name,
+ String defaultValue,
+ boolean readOnlyFlag) {
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);
+ result.addProperty("readOnly", readOnlyFlag);
return result;
}
* @param workFlow cds work flows to update payload
* @param controllerProperties cds properties to get blueprint name and
* version
+ * @param workFlowName work flow name
* @return returns the properties of payload
*/
public static JsonObject createInputPropertiesForPayload(JsonObject workFlow,
- JsonObject controllerProperties) {
+ JsonObject controllerProperties,
+ String workFlowName) {
String artifactName = controllerProperties.get("sdnc_model_name").getAsString();
String artifactVersion = controllerProperties.get("sdnc_model_version").getAsString();
JsonObject inputs = workFlow.getAsJsonObject("inputs");
JsonObject jsonObject = new JsonObject();
jsonObject.add("artifact_name", createAnyOfJsonProperty(
- "artifact name", artifactName));
+ "artifact name", artifactName, true));
jsonObject.add("artifact_version", createAnyOfJsonProperty(
- "artifact version", artifactVersion));
- jsonObject.add("mode", createCdsInputProperty(
- "mode", "string", "async", null));
- jsonObject.add("data", createDataProperty(inputs));
-
+ "artifact version", artifactVersion, true));
+ jsonObject.add("mode", createAnyOfJsonProperty(
+ "mode", "async", false));
+ jsonObject.add("data", createDataProperty(inputs, workFlowName));
return jsonObject;
}
- private static JsonObject createDataProperty(JsonObject inputs) {
+ private static JsonObject createDataProperty(JsonObject inputs, String workFlowName) {
JsonObject data = new JsonObject();
data.addProperty("title", "data");
- data.add(PROPERTIES, addDataFields(inputs));
+ data.addProperty("type", "string");
+ data.addProperty("format", "textarea");
+ JsonObject defaultValue = new JsonObject();
+ addDefaultValueForData(inputs, defaultValue, workFlowName);
+ data.addProperty("default", defaultValue.toString());
return data;
}
- private static JsonObject addDataFields(JsonObject inputs) {
- JsonObject jsonObject = new JsonObject();
+ private static void addDefaultValueForData(JsonObject inputs,
+ JsonObject defaultValue,
+ String workFlowName) {
Set<Map.Entry<String, JsonElement>> entrySet = inputs.entrySet();
for (Map.Entry<String, JsonElement> entry : entrySet) {
String key = entry.getKey();
JsonObject inputProperty = inputs.getAsJsonObject(key);
- if (inputProperty.get(TYPE) == null) {
- jsonObject.add(entry.getKey(),
- createAnyOfJsonObject(key,
- addDataFields(entry.getValue().getAsJsonObject())));
+ if (key.equalsIgnoreCase(workFlowName + "-properties")) {
+ addDefaultValueForData(entry.getValue().getAsJsonObject().get("properties")
+ .getAsJsonObject(), defaultValue, workFlowName);
+ } else if ("object".equalsIgnoreCase(inputProperty.get(TYPE).getAsString())) {
+ JsonObject object = new JsonObject();
+ addDefaultValueForData(entry.getValue().getAsJsonObject().get("properties")
+ .getAsJsonObject(), object, workFlowName);
+ defaultValue.add(entry.getKey(), object);
+ } else if (TYPE_LIST.equalsIgnoreCase(inputProperty.get(TYPE).getAsString())) {
+ defaultValue.add(entry.getKey(), handleListType(entry.getValue().getAsJsonObject(), workFlowName));
} else {
- jsonObject.add(entry.getKey(),
- createCdsInputProperty(key,
- inputProperty.get("type").getAsString(),
- null,
- entry.getValue().getAsJsonObject()));
+ defaultValue.addProperty(entry.getKey(), "");
}
}
- return jsonObject;
}
- private static JsonObject createCdsInputProperty(String title,
- String type,
- String defaultValue,
- JsonObject cdsProperty) {
- JsonObject property = new JsonObject();
- property.addProperty("title", title);
-
- if (TYPE_LIST.equalsIgnoreCase(type)) {
- property.addProperty(TYPE, "array");
- if (cdsProperty.get(PROPERTIES) != null) {
- JsonObject listProperties = new JsonObject();
- listProperties.add(PROPERTIES,
- addDataFields(cdsProperty.get(PROPERTIES).getAsJsonObject()));
- property.add("items", listProperties);
- }
- } else {
- property.addProperty(TYPE, type);
- }
+ private static JsonArray handleListType(JsonObject inputs,
+ String workFlowName) {
- if (defaultValue != null) {
- property.addProperty("default", defaultValue);
+ JsonObject object = new JsonObject();
+ if (inputs.get("properties") != null) {
+ addDefaultValueForData(inputs.get("properties").getAsJsonObject(), object, workFlowName);
}
- return property;
+ JsonArray arr = new JsonArray();
+ arr.add(object);
+ return arr;
}
}