From 6018fb047963d151d77bf03f6f84446866a30899 Mon Sep 17 00:00:00 2001 From: Toshimichi Fukuda Date: Fri, 19 Apr 2019 17:57:30 +0900 Subject: Change for TOSCA v1.3 get_input Change-Id: I39c8917c8c984896769e08a39302a98bca94e282 Issue-ID: SDC-2046 Signed-off-by: Toshimichi Fukuda --- .../onap/sdc/toscaparser/api/ToscaTemplate.java | 54 +++++++++++++- .../sdc/toscaparser/api/functions/GetInput.java | 82 +++++++++++++++++++--- .../onap/sdc/toscaparser/api/parameters/Input.java | 5 ++ 3 files changed, 132 insertions(+), 9 deletions(-) (limited to 'src/main') diff --git a/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java index b5ae4c4..6edc291 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/ToscaTemplate.java @@ -1,3 +1,22 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (c) 2017 AT&T Intellectual Property. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * Modifications copyright (c) 2019 Fujitsu Limited. + * ================================================================================ + */ package org.onap.sdc.toscaparser.api; import java.io.File; @@ -22,6 +41,7 @@ import org.onap.sdc.toscaparser.api.common.JToscaException; import org.onap.sdc.toscaparser.api.common.JToscaValidationIssue; import org.onap.sdc.toscaparser.api.common.ValidationIssueCollector; import org.onap.sdc.toscaparser.api.elements.EntityType; +import org.onap.sdc.toscaparser.api.elements.DataType; import org.onap.sdc.toscaparser.api.elements.Metadata; import org.onap.sdc.toscaparser.api.extensions.ExtTools; import org.onap.sdc.toscaparser.api.parameters.Input; @@ -105,6 +125,7 @@ public class ToscaTemplate extends Object { private LinkedHashMap> metaProperties; private Set processedImports; private LinkedHashMap customDefsFinal = new LinkedHashMap<>(); + private HashSet dataTypes; public ToscaTemplate(String _path, LinkedHashMap _parsedParams, @@ -214,7 +235,8 @@ public class ToscaTemplate extends Object { this.metaData = _tplMetaData(); this.relationshipTypes = _tplRelationshipTypes(); this.description = _tplDescription(); - this.topologyTemplate = _topologyTemplate(); + this.dataTypes = getTopologyDataTypes(); + this.topologyTemplate = _topologyTemplate(); this.repositories = _tplRepositories(); if(topologyTemplate.getTpl() != null) { this.inputs = _inputs(); @@ -325,6 +347,27 @@ public class ToscaTemplate extends Object { return topologyTemplate.getGroups(); } + /** + * Read datatypes field + * @return return list of datatypes. + */ + @SuppressWarnings("unchecked") + private HashSet getTopologyDataTypes(){ + LinkedHashMap value = + (LinkedHashMap)tpl.get(DATA_TYPES); + HashSet datatypes = new HashSet<>(); + if(value != null) { + customDefsFinal.putAll(value); + for(Map.Entry me: value.entrySet()) { + DataType datatype = new DataType(me.getKey(), value); + datatypes.add(datatype); + } + } + + + return datatypes; + } + /** * This method is used to get consolidated custom definitions from all imports * It is logically divided in two parts to handle imports; map and list formats. @@ -855,6 +898,14 @@ public class ToscaTemplate extends Object { return nestedToscaTplsWithTopology; } + /** + * Get datatypes. + * @return return list of datatypes. + */ + public HashSet getDataTypes() { + return dataTypes; + } + @Override public String toString() { return "ToscaTemplate{" + @@ -883,6 +934,7 @@ public class ToscaTemplate extends Object { ", graph=" + graph + ", csarTempDir='" + csarTempDir + '\'' + ", nestingLoopCounter=" + nestingLoopCounter + + ", dataTypes=" + dataTypes + '}'; } diff --git a/src/main/java/org/onap/sdc/toscaparser/api/functions/GetInput.java b/src/main/java/org/onap/sdc/toscaparser/api/functions/GetInput.java index 24d5a18..026113e 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/functions/GetInput.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/functions/GetInput.java @@ -1,3 +1,22 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (c) 2017 AT&T Intellectual Property. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + * Modifications copyright (c) 2019 Fujitsu Limited. + * ================================================================================ + */ package org.onap.sdc.toscaparser.api.functions; import org.onap.sdc.toscaparser.api.DataEntity; @@ -10,7 +29,13 @@ import java.util.ArrayList; import java.util.LinkedHashMap; public class GetInput extends Function { - + + public static final String INDEX = "INDEX"; + public static final String INPUTS = "inputs"; + public static final String TYPE = "type"; + public static final String PROPERTIES = "properties"; + public static final String ENTRY_SCHEMA = "entry_schema"; + public GetInput(TopologyTemplate toscaTpl, Object context, String name, ArrayList _args) { super(toscaTpl,context,name,_args); @@ -18,17 +43,13 @@ public class GetInput extends Function { @Override void validate() { + // if(args.size() != 1) { // //PA - changed to WARNING from CRITICAL after talking to Renana, 22/05/2017 // ThreadLocalsHolder.getCollector().appendWarning(String.format( // "ValueError: Expected one argument for function \"get_input\" but received \"%s\"", // args.toString())); // } - if(args.size() > 2) { - ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE009", String.format( - "ValueError: Expected max 2 arguments for function \"get_input\" but received \"%s\"", - args.size()))); - } boolean bFound = false; for(Input inp: toscaTpl.getInputs()) { if(inp.getName().equals(args.get(0))) { @@ -40,12 +61,48 @@ public class GetInput extends Function { ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE158", String.format( "UnknownInputError: Unknown input \"%s\"",args.get(0)))); } + else if(args.size() > 2){ + LinkedHashMap inputs = (LinkedHashMap)toscaTpl.getTpl().get(INPUTS); + LinkedHashMap data = (LinkedHashMap)inputs.get(getInputName()); + String type ; + + for(int argumentNumber=1;argumentNumber schema = (LinkedHashMap)data.get(ENTRY_SCHEMA); + dataTypeName=(String)schema.get(TYPE); + }else{ + dataTypeName=type; + } + //check property name + LinkedHashMap dataType = (LinkedHashMap)toscaTpl.getCustomDefs().get(dataTypeName); + if(dataType != null) { + LinkedHashMap props = (LinkedHashMap) dataType.get(PROPERTIES); + data = (LinkedHashMap)props.get(args.get(argumentNumber).toString()); + if(data != null) { + bFound = true; + } + } + } + if(!bFound){ + ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE282", String.format( + "UnknownDataType: Unknown data type \"%s\"",args.get(argumentNumber)))); + } + } + } } public Object result() { if(toscaTpl.getParsedParams() != null && toscaTpl.getParsedParams().get(getInputName()) != null) { - LinkedHashMap ttinp = (LinkedHashMap)toscaTpl.getTpl().get("inputs"); + LinkedHashMap ttinp = (LinkedHashMap)toscaTpl.getTpl().get(INPUTS); LinkedHashMap ttinpinp = (LinkedHashMap)ttinp.get(getInputName()); String type = (String)ttinpinp.get("type"); @@ -94,6 +151,15 @@ public class GetInput extends Function { return (String)args.get(0); } + public LinkedHashMap getEntrySchema() { + LinkedHashMap inputs = (LinkedHashMap)toscaTpl.getTpl().get(INPUTS); + LinkedHashMap inputValue = (LinkedHashMap)inputs.get(getInputName()); + return (LinkedHashMap)inputValue.get(ENTRY_SCHEMA); + } + + public ArrayList getArguments(){ + return args; + } } /*python @@ -136,4 +202,4 @@ def result(self): def input_name(self): return self.args[0] -*/ \ No newline at end of file +*/ diff --git a/src/main/java/org/onap/sdc/toscaparser/api/parameters/Input.java b/src/main/java/org/onap/sdc/toscaparser/api/parameters/Input.java index d59f406..5a6eb73 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/parameters/Input.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/parameters/Input.java @@ -176,4 +176,9 @@ public class Input { public void resetAnnotaions(){ annotations = null; } + + public LinkedHashMap getEntrySchema() { + return schema.getEntrySchema(); + } + } -- cgit 1.2.3-korg