From 4720f5aea7d548701a832b965a2b0e38dbc3bc4a Mon Sep 17 00:00:00 2001 From: mojahidi Date: Fri, 22 Jun 2018 16:37:52 +0530 Subject: Add output parameter support in Operation screen Added code to support Output parameter, fixed UTs, Added flow test Change-Id: I4ff869d120cefd7645a407278caeea6ee695c73b Issue-ID: SDC-1440 Signed-off-by: mojahidi --- .../java/org/openecomp/sdc/be/model/Operation.java | 5 +++- .../be/model/jsontitan/utils/InterfaceUtils.java | 28 ++++++++++++++++++++-- 2 files changed, 30 insertions(+), 3 deletions(-) (limited to 'catalog-model/src/main/java/org/openecomp') diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/Operation.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/Operation.java index 066cd67fec..4455920d3d 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/Operation.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/Operation.java @@ -24,6 +24,7 @@ import org.openecomp.sdc.be.datatypes.elements.ArtifactDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.OperationDataDefinition; import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition; +import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition; /** * Defines an operation available to manage particular aspects of the Node Type. @@ -54,10 +55,12 @@ public class Operation extends OperationDataDefinition implements IOperationPara } public Operation(ArtifactDataDefinition implementation, String description, - ListDataDefinition inputs) { + ListDataDefinition inputs, + ListDataDefinition outputs) { super(description); setImplementation(implementation); setInputs(inputs); + setOutputs(outputs); } @Override diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java index 6b22413d56..49f16946af 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/jsontitan/utils/InterfaceUtils.java @@ -29,6 +29,7 @@ import org.apache.commons.collections.MapUtils; import org.openecomp.sdc.be.datatypes.elements.InputDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ListDataDefinition; import org.openecomp.sdc.be.datatypes.elements.OperationInputDefinition; +import org.openecomp.sdc.be.datatypes.elements.OperationOutputDefinition; import org.openecomp.sdc.be.model.InputDefinition; import org.openecomp.sdc.be.model.InterfaceDefinition; import org.openecomp.sdc.be.model.Operation; @@ -82,12 +83,14 @@ public class InterfaceUtils { } InterfaceDefinition interfaceDefinition = optionalInterface.get(); interfaceDefinition.getOperationsMap().values().stream() - .forEach(operation -> createInput(operation, resource.getInputs())); + .forEach(operation -> createInputOutput(operation, resource.getInputs())); + + return interfaceDefinition.getOperationsMap(); } - private static void createInput(Operation operation, List inputs) throws IllegalStateException { + private static void createInputOutput(Operation operation, List inputs) throws IllegalStateException { ListDataDefinition inputDefinitionListDataDefinition = operation.getInputs(); if (inputDefinitionListDataDefinition != null) { return; @@ -97,8 +100,20 @@ public class InterfaceUtils { List convertedInputs = listToscaDataDefinition.stream() .map(input -> convertInput(input, inputs)) .collect(Collectors.toList()); + + ListDataDefinition outputDefinitionListDataDefinition = operation.getOutputs(); + if (outputDefinitionListDataDefinition != null) { + return; + } + List outListToscaDefinition = outputDefinitionListDataDefinition + .getListToscaDataDefinition(); + List convertedOutputs = outListToscaDefinition.stream() + .map(operationOutputDefinition -> convertOutput(operationOutputDefinition, inputs) ) + .collect(Collectors.toList()); inputDefinitionListDataDefinition.getListToscaDataDefinition().clear(); inputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedInputs); + outputDefinitionListDataDefinition.getListToscaDataDefinition().clear(); + outputDefinitionListDataDefinition.getListToscaDataDefinition().addAll(convertedOutputs); } private static OperationInputDefinition convertInput(OperationInputDefinition input, @@ -111,6 +126,15 @@ public class InterfaceUtils { throw new IllegalStateException("Could not find input :"+ input.getLabel()); } + private static OperationOutputDefinition convertOutput(OperationOutputDefinition output, + List outputs) throws IllegalStateException { + Optional anyOutputDefinition = outputs.stream() + .filter(inp -> inp.getUniqueId().equals(output.getUniqueId())).findAny(); + if (anyOutputDefinition.isPresent()) { + return new OperationOutputDefinition(output.getLabel(),new InputDataDefinition(anyOutputDefinition.get())); + } + throw new IllegalStateException("Could not find output :"+ output.getLabel()); + } public static List getOperationsFromInterface(Map interfaces) { List operationData = new ArrayList<>(); if (!MapUtils.isEmpty(interfaces)) { -- cgit 1.2.3-korg