From 5455ebcb5036a0568675939a5c68533e58adf9ad Mon Sep 17 00:00:00 2001 From: PriyanshuAgarwal Date: Tue, 10 Apr 2018 17:56:18 +0300 Subject: Interfaces support in SDC Parser Part 1 of the changes of interface support in SDC Parser. Change-Id: I3a5e0fdda69baad329460047a03f03665fbe577b Issue-ID: SDC-1197 Signed-off-by: priyanshu --- pom.xml | 4 +- .../org/onap/sdc/toscaparser/api/NodeTemplate.java | 41 +++++ .../toscaparser/api/elements/InterfacesDef.java | 187 +++++++++++++-------- version.properties | 2 +- 4 files changed, 157 insertions(+), 77 deletions(-) diff --git a/pom.xml b/pom.xml index 990a7c9..5a2d1be 100644 --- a/pom.xml +++ b/pom.xml @@ -4,8 +4,8 @@ org.onap.sdc.jtosca jtosca - 1.3.4-SNAPSHOT - sdc-jtosca + 1.3.5-SNAPSHOT + sdc-jtosca diff --git a/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java b/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java index 20bc210..73b2341 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/NodeTemplate.java @@ -1,5 +1,6 @@ package org.onap.sdc.toscaparser.api; +import static org.onap.sdc.toscaparser.api.elements.EntityType.TOSCA_DEF; import org.onap.sdc.toscaparser.api.common.JToscaValidationIssue; import java.util.ArrayList; @@ -405,6 +406,46 @@ public class NodeTemplate extends EntityTemplate { return allowedOperations; } + /** + * Get all interface details for given node template.
+ * @return Map that contains the list of all interfaces and their definitions. + * If none found, an empty map will be returned. + */ + public Map> getAllInterfaceDetailsForNodeType(){ + Map> interfaceMap = new LinkedHashMap<>(); + + // Get custom interface details + Map customInterfacesDetails = ((NodeType)typeDefinition).getInterfaces(); + // Get native interface details from tosca definitions + Object nativeInterfaceDetails = TOSCA_DEF.get(InterfacesDef.LIFECYCLE); + Map allInterfaceDetails = new LinkedHashMap<>(); + allInterfaceDetails.putAll(customInterfacesDetails); + if (nativeInterfaceDetails != null){ + allInterfaceDetails.put(InterfacesDef.LIFECYCLE, nativeInterfaceDetails); + } + + // Process all interface details from combined collection and return an interface Map with + // interface names and their definitions + for(Map.Entry me: allInterfaceDetails.entrySet()) { + ArrayList interfaces = new ArrayList<>(); + String interfaceType = me.getKey(); + Map interfaceValue = (Map)me.getValue(); + if(interfaceValue.containsKey("type")){ + interfaceType = (String) interfaceValue.get("type"); + } + + for(Map.Entry ve: interfaceValue.entrySet()) { + // Filter type as this is a reserved key and not an operation + if(!ve.getKey().equals("type")){ + InterfacesDef iface = new InterfacesDef(typeDefinition, interfaceType,this, ve.getKey(), ve.getValue()); + interfaces.add(iface); + } + } + interfaceMap.put(interfaceType, interfaces); + } + return interfaceMap; + } + private void _validateFields(LinkedHashMap nodetemplate) { for(String ntname: nodetemplate.keySet()) { boolean bFound = false; diff --git a/src/main/java/org/onap/sdc/toscaparser/api/elements/InterfacesDef.java b/src/main/java/org/onap/sdc/toscaparser/api/elements/InterfacesDef.java index f8669ed..86333d6 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/elements/InterfacesDef.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/elements/InterfacesDef.java @@ -20,88 +20,88 @@ public class InterfacesDef extends StatefulEntityType { }; public static final String IMPLEMENTATION = "implementation"; + public static final String DESCRIPTION = "description"; public static final String INPUTS = "inputs"; - - public static final String INTERFACEVALUE[] = {IMPLEMENTATION, INPUTS}; public static final String INTERFACE_DEF_RESERVED_WORDS[] = { "type", "inputs", "derived_from", "version", "description"}; - + private EntityType ntype; private EntityTemplate nodeTemplate; - private String name; - private Object value; + + private String operationName; + private Object operationDef; private String implementation; private LinkedHashMap inputs; + private String description; - @SuppressWarnings("unchecked") public InterfacesDef(EntityType inodeType, - String interfaceType, - EntityTemplate inodeTemplate, - String iname, - Object ivalue) { + String interfaceType, + EntityTemplate inodeTemplate, + String iname, + Object ivalue) { // void super(); - - ntype = inodeType; - nodeTemplate = inodeTemplate; - type = interfaceType; - name = iname; - value = ivalue; - implementation = null; - inputs = null; - defs = new LinkedHashMap(); - - if(interfaceType.equals(LIFECYCLE_SHORTNAME)) { - interfaceType = LIFECYCLE; - } - if(interfaceType.equals(CONFIGURE_SHORTNAME)) { - interfaceType = CONFIGURE; - } - - // only NodeType has getInterfaces "hasattr(ntype,interfaces)" - // while RelationshipType does not - if(ntype instanceof NodeType) { - if(((NodeType)ntype).getInterfaces() != null && - ((NodeType)ntype).getInterfaces().values().contains(interfaceType)) { - LinkedHashMap nii = (LinkedHashMap) - ((NodeType)ntype).getInterfaces().get(interfaceType); - interfaceType = (String)nii.get("type"); - } - } - if(inodeType != null) { - if(nodeTemplate != null && nodeTemplate.getCustomDef() != null && - nodeTemplate.getCustomDef().values().contains(interfaceType)) { - defs = (LinkedHashMap) - nodeTemplate.getCustomDef().get(interfaceType); - } - else { - defs = (LinkedHashMap)TOSCA_DEF.get(interfaceType); - } - } - - if(ivalue != null) { - if(ivalue instanceof LinkedHashMap) { - for(Map.Entry me: ((LinkedHashMap)ivalue).entrySet()) { - if(me.getKey().equals("implementation")) { - implementation = (String)me.getValue(); - } - else if(me.getKey().equals("inputs")) { - inputs = (LinkedHashMap)me.getValue(); - } - else { - ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE123", String.format( - "UnknownFieldError: \"interfaces\" of template \"%s\" contain unknown field \"%s\"", - nodeTemplate.getName(),me.getKey()))); - } - } - } - else { - implementation = (String)ivalue; - } - } - } + + ntype = inodeType; + nodeTemplate = inodeTemplate; + type = interfaceType; + operationName = iname; + operationDef = ivalue; + implementation = null; + inputs = null; + defs = new LinkedHashMap(); + + if(interfaceType.equals(LIFECYCLE_SHORTNAME)) { + interfaceType = LIFECYCLE; + } + if(interfaceType.equals(CONFIGURE_SHORTNAME)) { + interfaceType = CONFIGURE; + } + + // only NodeType has getInterfaces "hasattr(ntype,interfaces)" + // while RelationshipType does not + if(ntype instanceof NodeType) { + if(((NodeType)ntype).getInterfaces() != null && + ((NodeType)ntype).getInterfaces().values().contains(interfaceType)) { + LinkedHashMap nii = (LinkedHashMap) + ((NodeType)ntype).getInterfaces().get(interfaceType); + interfaceType = (String)nii.get("type"); + } + } + if(inodeType != null) { + if(nodeTemplate != null && nodeTemplate.getCustomDef() != null && + nodeTemplate.getCustomDef().containsKey(interfaceType)) { + defs = (LinkedHashMap) + nodeTemplate.getCustomDef().get(interfaceType); + } + else { + defs = (LinkedHashMap)TOSCA_DEF.get(interfaceType); + } + } + + if(ivalue != null) { + if(ivalue instanceof LinkedHashMap) { + for(Map.Entry me: ((LinkedHashMap)ivalue).entrySet()) { + if(me.getKey().equals(IMPLEMENTATION)) { + implementation = (String)me.getValue(); + } + else if(me.getKey().equals(INPUTS)) { + inputs = (LinkedHashMap)me.getValue(); + } + else if(me.getKey().equals(DESCRIPTION)) { + description = (String)me.getValue(); + } + else { + ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE123", String.format( + "UnknownFieldError: \"interfaces\" of template \"%s\" contain unknown field \"%s\"", + nodeTemplate.getName(),me.getKey()))); + } + } + } + } + } public ArrayList getLifecycleOps() { if(defs != null) { @@ -111,7 +111,20 @@ public class InterfacesDef extends StatefulEntityType { } return null; } - + + public ArrayList getInterfaceOps() { + if(defs != null) { + ArrayList ops = _ops(); + ArrayList idrw = new ArrayList<>(); + for(int i=0; i getConfigureOps() { if(defs != null) { if(type.equals(CONFIGURE)) { @@ -120,22 +133,48 @@ public class InterfacesDef extends StatefulEntityType { } return null; } - + private ArrayList _ops() { return new ArrayList(defs.keySet()); } - + // getters/setters - + public LinkedHashMap getInputs() { return inputs; } - + public void setInput(String name,Object value) { inputs.put(name, value); } + + public String getImplementation(){ + return implementation; + } + + public void setImplementation(String implementation){ + this.implementation = implementation; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getOperationName() { + return operationName; + } + + public void setOperationName(String operationName) { + this.operationName = operationName; + } } + + /*python # Licensed under the Apache License, Version 2.0 (the "License"); you may diff --git a/version.properties b/version.properties index a8f201d..a24b0ee 100644 --- a/version.properties +++ b/version.properties @@ -5,7 +5,7 @@ major=1 minor=3 -patch=4 +patch=5 base_version=${major}.${minor}.${patch} -- cgit 1.2.3-korg