From 1cbc7e2fd5a9c743f6ddd51e003a7e1ddb03ae43 Mon Sep 17 00:00:00 2001 From: Pavel Aharoni Date: Mon, 2 Oct 2017 16:27:22 +0300 Subject: [SDC-426] get_input fix Change-Id: I86e8f9d7bfe4f34ef305c81e82af818f661f6ddb Signed-off-by: Pavel Aharoni --- .../sdc/toscaparser/api/functions/Function.java | 41 +++++++++++++--------- 1 file changed, 25 insertions(+), 16 deletions(-) (limited to 'src') diff --git a/src/main/java/org/openecomp/sdc/toscaparser/api/functions/Function.java b/src/main/java/org/openecomp/sdc/toscaparser/api/functions/Function.java index 0278508..3437735 100644 --- a/src/main/java/org/openecomp/sdc/toscaparser/api/functions/Function.java +++ b/src/main/java/org/openecomp/sdc/toscaparser/api/functions/Function.java @@ -98,31 +98,40 @@ public abstract class Function { if (rawFunctionObj instanceof LinkedHashMap) { // In map type case LinkedHashMap rawFunction = ((LinkedHashMap) rawFunctionObj); - if(rawFunction.size() == 1) { // End point + if(rawFunction.size() == 1 && + !(rawFunction.values().iterator().next() instanceof LinkedHashMap)) { // End point return getFunctionForObjectItem(ttpl, context, rawFunction, resolveGetInput); } else { - // iterate over map nested properties in recursion, convert leaves to function, - // and collect them in the same hierarchy as the original map. - LinkedHashMap rawFunctionObjMap = new LinkedHashMap(); - for (Object rawFunctionObjItem: rawFunction.entrySet()) { - Object itemValue = getFunction(ttpl, context, ((Map.Entry)rawFunctionObjItem).getValue(), resolveGetInput); - rawFunctionObjMap.put(((Map.Entry)rawFunctionObjItem).getKey(), itemValue); - } - return rawFunctionObjMap; + return getFunctionForMap(ttpl, context, rawFunction, resolveGetInput); } } else if (rawFunctionObj instanceof ArrayList) { // In list type case - // iterate over list properties in recursion, convert leaves to function, - // and collect them in the same hierarchy as the original list. - ArrayList rawFunctionObjList = new ArrayList<>(); - for (Object rawFunctionObjItem: (ArrayList) rawFunctionObj) { - rawFunctionObjList.add(getFunction(ttpl, context, rawFunctionObjItem, resolveGetInput)); - } - return rawFunctionObjList; + return getFunctionForList(ttpl, context, (ArrayList) rawFunctionObj, resolveGetInput); } return rawFunctionObj; } + private static Object getFunctionForList(TopologyTemplate ttpl, Object context, ArrayList rawFunctionObj, boolean resolveGetInput) { + // iterate over list properties in recursion, convert leaves to function, + // and collect them in the same hierarchy as the original list. + ArrayList rawFunctionObjList = new ArrayList<>(); + for (Object rawFunctionObjItem: rawFunctionObj) { + rawFunctionObjList.add(getFunction(ttpl, context, rawFunctionObjItem, resolveGetInput)); + } + return rawFunctionObjList; + } + + private static Object getFunctionForMap(TopologyTemplate ttpl, Object context, LinkedHashMap rawFunction, boolean resolveGetInput) { + // iterate over map nested properties in recursion, convert leaves to function, + // and collect them in the same hierarchy as the original map. + LinkedHashMap rawFunctionObjMap = new LinkedHashMap(); + for (Object rawFunctionObjItem: rawFunction.entrySet()) { + Object itemValue = getFunction(ttpl, context, ((Map.Entry)rawFunctionObjItem).getValue(), resolveGetInput); + rawFunctionObjMap.put(((Map.Entry)rawFunctionObjItem).getKey(), itemValue); + } + return rawFunctionObjMap; + } + private static Object getFunctionForObjectItem(TopologyTemplate ttpl, Object context, Object rawFunctionObjItem, boolean resolveGetInput) { if(isFunction(rawFunctionObjItem)) { LinkedHashMap rawFunction = (LinkedHashMap) rawFunctionObjItem; -- cgit 1.2.3-korg