diff options
Diffstat (limited to 'src/main/java/org/onap')
3 files changed, 119 insertions, 50 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/CdsServices.java b/src/main/java/org/onap/clamp/clds/client/CdsServices.java index fa15e2778..fd3b3539a 100644 --- a/src/main/java/org/onap/clamp/clds/client/CdsServices.java +++ b/src/main/java/org/onap/clamp/clds/client/CdsServices.java @@ -22,6 +22,8 @@ package org.onap.clamp.clds.client;
+import static java.lang.Boolean.parseBoolean;
+
import com.att.eelf.configuration.EELFLogger;
import com.att.eelf.configuration.EELFManager;
import com.google.gson.JsonElement;
@@ -52,6 +54,10 @@ public class CdsServices { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CdsServices.class);
+ private static final String TYPE = "type";
+ private static final String PROPERTIES = "properties";
+ private static final String LIST = "list";
+
/**
* Constructor.
*/
@@ -129,55 +135,80 @@ public class CdsServices { JsonObject dataTypes = root.getAsJsonObject("dataTypes");
JsonObject workFlowProperties = new JsonObject();
- workFlowProperties.add("inputs", getInputProperties(inputs, dataTypes));
+ workFlowProperties.add("inputs", getInputProperties(inputs, dataTypes, new JsonObject()));
return workFlowProperties;
}
- private JsonObject getInputProperties(JsonObject inputs, JsonObject dataTypes) {
- JsonObject inputObject = new JsonObject();
+ private JsonObject getInputProperties(JsonObject inputs, JsonObject dataTypes,
+ JsonObject inputObject) {
+ if (inputs == null) {
+ return inputObject;
+ }
+
for (Map.Entry<String, JsonElement> entry : inputs.entrySet()) {
String key = entry.getKey();
JsonObject inputProperty = inputs.getAsJsonObject(key);
- String type = inputProperty.get("type").getAsString();
+ String type = inputProperty.get(TYPE).getAsString();
if (isComplexType(type, dataTypes)) {
inputObject.add(key, handleComplexType(type, dataTypes));
- } else if (type.equalsIgnoreCase("list")) {
- inputObject.add(key, handleListType(key, inputProperty,
- dataTypes));
- } else {
+ } else if (LIST.equalsIgnoreCase(type)) {
+ handleListType(key, inputProperty, dataTypes, inputObject);
+ } else if (isInputParam(inputProperty)) {
inputObject.add(key, entry.getValue());
}
}
return inputObject;
}
- private JsonObject handleListType(String propertyName,
+ private void handleListType(String propertyName,
JsonObject inputProperty,
- JsonObject dataTypes) {
- if (inputProperty.get("entry_schema") != null) {
- String type = inputProperty.get("entry_schema").getAsJsonObject().get(
- "type").getAsString();
- if (dataTypes.get(type) != null) {
- JsonObject jsonObject = new JsonObject();
- jsonObject.addProperty("type", "list");
- jsonObject.add("properties", handleComplexType(type, dataTypes));
- return jsonObject;
- } else {
- return inputProperty;
- }
+ JsonObject dataTypes,
+ JsonObject inputObject) {
+ if (inputProperty.get("entry_schema") == null) {
+ throw new CdsParametersException("Entry schema is null for " + propertyName);
+ }
+
+ String type = inputProperty.get("entry_schema").getAsJsonObject().get(
+ TYPE).getAsString();
+ if (dataTypes.get(type) != null) {
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty(TYPE, LIST);
+ jsonObject.add(PROPERTIES, getPropertiesObject(type, dataTypes));
+ inputObject.add(propertyName, jsonObject);
+ } else if (isInputParam(inputProperty)) {
+ inputObject.add(propertyName, inputProperty);
}
- throw new CdsParametersException("Entry schema is null for " + propertyName);
}
private JsonObject handleComplexType(String key, JsonObject dataTypes) {
- JsonObject properties = dataTypes.get(key).getAsJsonObject().get("properties").getAsJsonObject();
- return getInputProperties(properties, dataTypes);
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty(TYPE, "object");
+ jsonObject.add(PROPERTIES, getPropertiesObject(key, dataTypes));
+ return jsonObject;
+ }
+
+ private JsonObject getPropertiesObject(String key, JsonObject dataTypes) {
+ JsonObject properties = dataTypes.get(key).getAsJsonObject().get(PROPERTIES).getAsJsonObject();
+ JsonObject object = new JsonObject();
+ getInputProperties(properties, dataTypes, object);
+ return object;
}
private boolean isComplexType(String type, JsonObject dataTypes) {
+ if (dataTypes == null) {
+ return false;
+ }
return dataTypes.get(type) != null;
}
+ private boolean isInputParam(JsonObject inputProperty) {
+ JsonElement inputParam = inputProperty.get("input-param");
+ if (inputParam == null) {
+ return false;
+ }
+ return parseBoolean(inputParam.getAsString());
+ }
+
/**
* Creates payload to query CDS to get workflow input properties.
*
diff --git a/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java b/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java index 94a477fe5..39fa25a2b 100644 --- a/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java +++ b/src/main/java/org/onap/clamp/clds/tosca/update/execution/cds/ToscaMetadataCdsProcess.java @@ -24,6 +24,7 @@ package org.onap.clamp.clds.tosca.update.execution.cds; 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; @@ -108,7 +109,8 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess { obj.addProperty("title", workflowsEntry.getKey()); obj.add("properties", createInputPropertiesForPayload(workflowsEntry.getValue().getAsJsonObject(), - controllerProperties)); + controllerProperties, + workflowsEntry.getKey())); schemaAnyOf.add(obj); } } @@ -150,10 +152,12 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess { * @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"); @@ -164,32 +168,53 @@ public class ToscaMetadataCdsProcess extends ToscaMetadataProcess { "artifact version", artifactVersion, true)); jsonObject.add("mode", createAnyOfJsonProperty( "mode", "async", false)); - jsonObject.add("data", createDataProperty(inputs)); + 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.addProperty("type", "string"); data.addProperty("format", "textarea"); JsonObject defaultValue = new JsonObject(); - addDefaultValueForData(inputs, defaultValue); + addDefaultValueForData(inputs, defaultValue, workFlowName); data.addProperty("default", defaultValue.toString()); return data; } private static void addDefaultValueForData(JsonObject inputs, - JsonObject defaultValue) { + 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) { - addDefaultValueForData(entry.getValue().getAsJsonObject(), defaultValue); + 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 { defaultValue.addProperty(entry.getKey(), ""); } } } + + private static JsonArray handleListType(JsonObject inputs, + String workFlowName) { + + JsonObject object = new JsonObject(); + if (inputs.get("properties") != null) { + addDefaultValueForData(inputs.get("properties").getAsJsonObject(), object, workFlowName); + } + JsonArray arr = new JsonArray(); + arr.add(object); + return arr; + } } diff --git a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java index ee4030656..c0e1c019e 100644 --- a/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java +++ b/src/main/java/org/onap/clamp/policy/operational/OperationalPolicyRepresentationBuilder.java @@ -53,6 +53,8 @@ public class OperationalPolicyRepresentationBuilder { public static final String STRING = "string"; public static final String TYPE = "type"; public static final String TYPE_LIST = "list"; + public static final String TYPE_OBJECT = "object"; + public static final String TYPE_ARRAY = "array"; private OperationalPolicyRepresentationBuilder() { throw new IllegalStateException("This is Utility class, not supposed to be initiated."); @@ -240,8 +242,8 @@ public class OperationalPolicyRepresentationBuilder { JsonObject payload = new JsonObject(); payload.addProperty(TITLE, "Payload"); payload.addProperty(TYPE, "object"); - payload.add(PROPERTIES, createInputPropertiesForPayload(workFlow, - controllerProperties)); + payload.add(PROPERTIES, createInputPropertiesForPayload(workFlow, controllerProperties, + workFlowName)); JsonObject properties = new JsonObject(); properties.add(RECIPE, createRecipeForCdsWorkflow(workFlowName)); properties.add("payload", payload); @@ -265,10 +267,12 @@ public class OperationalPolicyRepresentationBuilder { * @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"); @@ -279,33 +283,33 @@ public class OperationalPolicyRepresentationBuilder { "artifact version", STRING, artifactVersion, "True", null)); jsonObject.add("mode", createCdsInputProperty( "mode", STRING, "async" ,null)); - jsonObject.add("data", createDataProperty(inputs)); + 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"); JsonObject dataObj = new JsonObject(); - addDataFields(inputs, dataObj); + addDataFields(inputs, dataObj, workflowName); data.add(PROPERTIES, dataObj); return data; } private static void addDataFields(JsonObject inputs, - JsonObject dataObj) { + JsonObject dataObj, + 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) { - addDataFields(entry.getValue().getAsJsonObject(), dataObj); + if (key.equalsIgnoreCase(workFlowName + "-properties")) { + addDataFields(entry.getValue().getAsJsonObject().get("properties").getAsJsonObject(), + dataObj, workFlowName); } else { dataObj.add(entry.getKey(), - createCdsInputProperty(key, - inputProperty.get(TYPE).getAsString(), - null, - entry.getValue().getAsJsonObject())); + createCdsInputProperty(key, inputProperty.get(TYPE).getAsString(),null, + entry.getValue().getAsJsonObject())); } } } @@ -318,15 +322,15 @@ public class OperationalPolicyRepresentationBuilder { property.addProperty(TITLE, title); if (TYPE_LIST.equalsIgnoreCase(type)) { - property.addProperty(TYPE, "array"); + property.addProperty(TYPE, TYPE_ARRAY); if (cdsProperty != null && cdsProperty.get(PROPERTIES) != null) { - JsonObject dataObject = new JsonObject(); - addDataFields(cdsProperty.get(PROPERTIES).getAsJsonObject(), - dataObject); JsonObject listProperties = new JsonObject(); - listProperties.add(PROPERTIES, dataObject); + listProperties.add(PROPERTIES, getProperties(cdsProperty.get(PROPERTIES).getAsJsonObject())); property.add(ITEMS, listProperties); } + } else if (TYPE_OBJECT.equalsIgnoreCase(type)) { + property.addProperty(TYPE, TYPE_OBJECT); + property.add(PROPERTIES, getProperties(cdsProperty.get(PROPERTIES).getAsJsonObject())); } else { property.addProperty(TYPE, type); } @@ -336,4 +340,13 @@ public class OperationalPolicyRepresentationBuilder { } return property; } + + private static JsonObject getProperties(JsonObject inputProperties) { + if (inputProperties == null) { + return null; + } + JsonObject dataObject = new JsonObject(); + addDataFields(inputProperties, dataObject, null); + return dataObject; + } } |