diff options
Diffstat (limited to 'src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java')
-rw-r--r-- | src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java | 513 |
1 files changed, 254 insertions, 259 deletions
diff --git a/src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java b/src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java index 918c629..c251be9 100644 --- a/src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java +++ b/src/main/java/org/onap/sdc/toscaparser/api/elements/NodeType.java @@ -7,9 +7,9 @@ * 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. @@ -28,305 +28,300 @@ import java.util.LinkedHashMap; import java.util.Map; public class NodeType extends StatefulEntityType { - // TOSCA built-in node type - - private static final String DERIVED_FROM = "derived_from"; - private static final String METADATA = "metadata"; - private static final String PROPERTIES = "properties"; - private static final String VERSION = "version"; - private static final String DESCRIPTION = "description"; - private static final String ATTRIBUTES = "attributes"; - private static final String REQUIREMENTS = "requirements"; - private static final String CAPABILITIES = "capabilities"; - private static final String INTERFACES = "interfaces"; - private static final String ARTIFACTS = "artifacts"; - - private static final String SECTIONS[] = { - DERIVED_FROM, METADATA, PROPERTIES, VERSION, DESCRIPTION, ATTRIBUTES, REQUIREMENTS, CAPABILITIES, INTERFACES, ARTIFACTS - }; - - private String ntype; - public LinkedHashMap<String,Object> customDef; - - public NodeType(String nttype,LinkedHashMap<String,Object> ntcustomDef) { - super(nttype,NODE_PREFIX, ntcustomDef); + // TOSCA built-in node type + + private static final String DERIVED_FROM = "derived_from"; + private static final String METADATA = "metadata"; + private static final String PROPERTIES = "properties"; + private static final String VERSION = "version"; + private static final String DESCRIPTION = "description"; + private static final String ATTRIBUTES = "attributes"; + private static final String REQUIREMENTS = "requirements"; + private static final String CAPABILITIES = "capabilities"; + private static final String INTERFACES = "interfaces"; + private static final String ARTIFACTS = "artifacts"; + + private static final String SECTIONS[] = { + DERIVED_FROM, METADATA, PROPERTIES, VERSION, DESCRIPTION, ATTRIBUTES, REQUIREMENTS, CAPABILITIES, INTERFACES, ARTIFACTS + }; + + private String ntype; + public LinkedHashMap<String, Object> customDef; + + public NodeType(String nttype, LinkedHashMap<String, Object> ntcustomDef) { + super(nttype, NODE_PREFIX, ntcustomDef); ntype = nttype; customDef = ntcustomDef; _validateKeys(); - } + } - public Object getParentType() { + public Object getParentType() { // Return a node this node is derived from - if(defs == null) { - return null; - } - String pnode = derivedFrom(defs); - if(pnode != null && !pnode.isEmpty()) { - return new NodeType(pnode,customDef); - } - return null; - } - - @SuppressWarnings("unchecked") - public LinkedHashMap<RelationshipType,NodeType> getRelationship() { + if (defs == null) { + return null; + } + String pnode = derivedFrom(defs); + if (pnode != null && !pnode.isEmpty()) { + return new NodeType(pnode, customDef); + } + return null; + } + + @SuppressWarnings("unchecked") + public LinkedHashMap<RelationshipType, NodeType> getRelationship() { // Return a dictionary of relationships to other node types // This method returns a dictionary of named relationships that nodes // of the current node type (self) can have to other nodes (of specific // types) in a TOSCA template. - LinkedHashMap<RelationshipType,NodeType> relationship = new LinkedHashMap<>(); - ArrayList<LinkedHashMap<String,Object>> requires; - Object treq = getAllRequirements(); - if(treq != null) { + LinkedHashMap<RelationshipType, NodeType> relationship = new LinkedHashMap<>(); + ArrayList<LinkedHashMap<String, Object>> requires; + Object treq = getAllRequirements(); + if (treq != null) { // NOTE(sdmonov): Check if requires is a dict. // If it is a dict convert it to a list of dicts. // This is needed because currently the code below supports only // lists as requirements definition. The following check will // make sure if a map (dict) was provided it will be converted to // a list before proceeding to the parsing. - if(treq instanceof LinkedHashMap) { - requires = new ArrayList<>(); - for(Map.Entry<String,Object> me: ((LinkedHashMap<String,Object>)treq).entrySet()) { - LinkedHashMap<String,Object> tl = new LinkedHashMap<>(); - tl.put(me.getKey(),me.getValue()); - requires.add(tl); - } - } - else { - requires = (ArrayList<LinkedHashMap<String,Object>>)treq; + if (treq instanceof LinkedHashMap) { + requires = new ArrayList<>(); + for (Map.Entry<String, Object> me : ((LinkedHashMap<String, Object>) treq).entrySet()) { + LinkedHashMap<String, Object> tl = new LinkedHashMap<>(); + tl.put(me.getKey(), me.getValue()); + requires.add(tl); + } + } else { + requires = (ArrayList<LinkedHashMap<String, Object>>) treq; } - + String keyword = null; String nodeType = null; - for(LinkedHashMap<String,Object> require: requires) { - String relation = null; - for(Map.Entry<String,Object> re: require.entrySet()) { - String key = re.getKey(); - LinkedHashMap<String,Object> req = (LinkedHashMap<String,Object>)re.getValue(); - if(req.get("relationship") != null) { - Object trelation = req.get("relationship"); - // trelation is a string or a dict with "type" mapped to the string we want - if(trelation instanceof String) { - relation = (String)trelation; - } - else { - if(((LinkedHashMap<String,Object>)trelation).get("type") != null) { - relation = (String)((LinkedHashMap<String,Object>)trelation).get("type"); - } - } - nodeType = (String)req.get("node"); - //BUG meaningless?? LinkedHashMap<String,Object> value = req; - if(nodeType != null) { - keyword = "node"; - } - else { - String getRelation = null; + for (LinkedHashMap<String, Object> require : requires) { + String relation = null; + for (Map.Entry<String, Object> re : require.entrySet()) { + String key = re.getKey(); + LinkedHashMap<String, Object> req = (LinkedHashMap<String, Object>) re.getValue(); + if (req.get("relationship") != null) { + Object trelation = req.get("relationship"); + // trelation is a string or a dict with "type" mapped to the string we want + if (trelation instanceof String) { + relation = (String) trelation; + } else { + if (((LinkedHashMap<String, Object>) trelation).get("type") != null) { + relation = (String) ((LinkedHashMap<String, Object>) trelation).get("type"); + } + } + nodeType = (String) req.get("node"); + //BUG meaningless?? LinkedHashMap<String,Object> value = req; + if (nodeType != null) { + keyword = "node"; + } else { + String getRelation = null; // If nodeTypeByCap is a dict and has a type key // we need to lookup the node type using // the capability type - String captype = (String)req.get("capability"); - nodeType = _getNodeTypeByCap(captype); - if (nodeType != null){ - getRelation = _getRelation(key, nodeType); - } else { - ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE11", String.format( - "NodeTypeRequirementForCapabilityUnfulfilled: Node type: \"%s\" with requrement \"%s\" for node type with capability type \"%s\" is not found\\unfulfilled", this.ntype, key, captype))); - } - if (getRelation != null) { - relation = getRelation; - } - keyword = key; - } - } - } - if(relation == null || nodeType == null){ - ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE11", String.format( - "NodeTypeForRelationUnfulfilled: Node type \"%s\" - relationship type \"%s\" is unfulfilled", this.ntype, relation))); - } else { - RelationshipType rtype = new RelationshipType(relation, keyword, customDef); - NodeType relatednode = new NodeType(nodeType, customDef); - relationship.put(rtype, relatednode); - } + String captype = (String) req.get("capability"); + nodeType = _getNodeTypeByCap(captype); + if (nodeType != null) { + getRelation = _getRelation(key, nodeType); + } else { + ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE11", String.format( + "NodeTypeRequirementForCapabilityUnfulfilled: Node type: \"%s\" with requrement \"%s\" for node type with capability type \"%s\" is not found\\unfulfilled", this.ntype, key, captype))); + } + if (getRelation != null) { + relation = getRelation; + } + keyword = key; + } + } + } + if (relation == null || nodeType == null) { + ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE11", String.format( + "NodeTypeForRelationUnfulfilled: Node type \"%s\" - relationship type \"%s\" is unfulfilled", this.ntype, relation))); + } else { + RelationshipType rtype = new RelationshipType(relation, keyword, customDef); + NodeType relatednode = new NodeType(nodeType, customDef); + relationship.put(rtype, relatednode); + } } - } - return relationship; - - } - + } + return relationship; + + } + @SuppressWarnings("unchecked") - private String _getNodeTypeByCap(String cap) { + private String _getNodeTypeByCap(String cap) { // Find the node type that has the provided capability // This method will lookup all node types if they have the // provided capability. // Filter the node types ArrayList<String> nodeTypes = new ArrayList<>(); - for(String nt: customDef.keySet()) { - if(nt.startsWith(NODE_PREFIX) || nt.startsWith("org.openecomp") && !nt.equals("tosca.nodes.Root")) { - nodeTypes.add(nt); - } + for (String nt : customDef.keySet()) { + if (nt.startsWith(NODE_PREFIX) || nt.startsWith("org.openecomp") && !nt.equals("tosca.nodes.Root")) { + nodeTypes.add(nt); + } } - for(String nt: nodeTypes) { - LinkedHashMap<String,Object> nodeDef = (LinkedHashMap<String,Object>)customDef.get(nt); - if(nodeDef instanceof LinkedHashMap && nodeDef.get("capabilities") != null) { - LinkedHashMap<String,Object> nodeCaps = (LinkedHashMap<String,Object>)nodeDef.get("capabilities"); - if(nodeCaps != null) { - for(Object val: nodeCaps.values()) { - if(val instanceof LinkedHashMap) { - String tp = (String)((LinkedHashMap<String,Object>)val).get("type"); - if(tp != null && tp.equals(cap)) { - return nt; - } - } - } - } + for (String nt : nodeTypes) { + LinkedHashMap<String, Object> nodeDef = (LinkedHashMap<String, Object>) customDef.get(nt); + if (nodeDef instanceof LinkedHashMap && nodeDef.get("capabilities") != null) { + LinkedHashMap<String, Object> nodeCaps = (LinkedHashMap<String, Object>) nodeDef.get("capabilities"); + if (nodeCaps != null) { + for (Object val : nodeCaps.values()) { + if (val instanceof LinkedHashMap) { + String tp = (String) ((LinkedHashMap<String, Object>) val).get("type"); + if (tp != null && tp.equals(cap)) { + return nt; + } + } + } + } } - } + } return null; - } - + } + @SuppressWarnings("unchecked") - private String _getRelation(String key,String ndtype) { - String relation = null; - NodeType ntype = new NodeType(ndtype, customDef); - LinkedHashMap<String,CapabilityTypeDef> caps = ntype.getCapabilities(); - if(caps != null && caps.get(key) != null) { - CapabilityTypeDef c = caps.get(key); - for(int i=0; i< RELATIONSHIP_TYPE.length; i++) { - String r = RELATIONSHIP_TYPE[i]; - if(r != null) { - relation = r; - break; - } - LinkedHashMap<String,Object> rtypedef = (LinkedHashMap<String,Object>)customDef.get(r); - for(Object o: rtypedef.values()) { - LinkedHashMap<String,Object> properties = (LinkedHashMap<String,Object>)o; - if(properties.get(c.getType()) != null) { - relation = r; - break; - } - } - if(relation != null) { - break; - } - else { - for(Object o: rtypedef.values()) { - LinkedHashMap<String,Object> properties = (LinkedHashMap<String,Object>)o; - if(properties.get(c.getParentType()) != null) { - relation = r; - break; - } - } - } - } - } - return relation; + private String _getRelation(String key, String ndtype) { + String relation = null; + NodeType ntype = new NodeType(ndtype, customDef); + LinkedHashMap<String, CapabilityTypeDef> caps = ntype.getCapabilities(); + if (caps != null && caps.get(key) != null) { + CapabilityTypeDef c = caps.get(key); + for (int i = 0; i < RELATIONSHIP_TYPE.length; i++) { + String r = RELATIONSHIP_TYPE[i]; + if (r != null) { + relation = r; + break; + } + LinkedHashMap<String, Object> rtypedef = (LinkedHashMap<String, Object>) customDef.get(r); + for (Object o : rtypedef.values()) { + LinkedHashMap<String, Object> properties = (LinkedHashMap<String, Object>) o; + if (properties.get(c.getType()) != null) { + relation = r; + break; + } + } + if (relation != null) { + break; + } else { + for (Object o : rtypedef.values()) { + LinkedHashMap<String, Object> properties = (LinkedHashMap<String, Object>) o; + if (properties.get(c.getParentType()) != null) { + relation = r; + break; + } + } + } + } + } + return relation; } @SuppressWarnings("unchecked") - public ArrayList<CapabilityTypeDef> getCapabilitiesObjects() { + public ArrayList<CapabilityTypeDef> getCapabilitiesObjects() { // Return a list of capability objects - ArrayList<CapabilityTypeDef> typecapabilities = new ArrayList<>(); - LinkedHashMap<String,Object> caps = (LinkedHashMap<String,Object>)getValue(CAPABILITIES, null, true); - if(caps != null) { + ArrayList<CapabilityTypeDef> typecapabilities = new ArrayList<>(); + LinkedHashMap<String, Object> caps = (LinkedHashMap<String, Object>) getValue(CAPABILITIES, null, true); + if (caps != null) { // 'cname' is symbolic name of the capability // 'cvalue' is a dict { 'type': <capability type name> } - for(Map.Entry<String,Object> me: caps.entrySet()) { - String cname = me.getKey(); - LinkedHashMap<String,String> cvalue = (LinkedHashMap<String,String>)me.getValue(); - String ctype = cvalue.get("type"); - CapabilityTypeDef cap = new CapabilityTypeDef(cname,ctype,type,customDef); - typecapabilities.add(cap); - } + for (Map.Entry<String, Object> me : caps.entrySet()) { + String cname = me.getKey(); + LinkedHashMap<String, String> cvalue = (LinkedHashMap<String, String>) me.getValue(); + String ctype = cvalue.get("type"); + CapabilityTypeDef cap = new CapabilityTypeDef(cname, ctype, type, customDef); + typecapabilities.add(cap); + } } return typecapabilities; - } - - public LinkedHashMap<String,CapabilityTypeDef> getCapabilities() { + } + + public LinkedHashMap<String, CapabilityTypeDef> getCapabilities() { // Return a dictionary of capability name-objects pairs - LinkedHashMap<String,CapabilityTypeDef> caps = new LinkedHashMap<>(); - for(CapabilityTypeDef ctd: getCapabilitiesObjects()) { - caps.put(ctd.getName(),ctd); - } - return caps; - } - - @SuppressWarnings("unchecked") - public ArrayList<Object> getRequirements() { - return (ArrayList<Object>)getValue(REQUIREMENTS,null,true); - } - - public ArrayList<Object> getAllRequirements() { - return getRequirements(); - } - - @SuppressWarnings("unchecked") - public LinkedHashMap<String,Object> getInterfaces() { - return (LinkedHashMap<String,Object>)getValue(INTERFACES,null,false); - } - - - @SuppressWarnings("unchecked") - public ArrayList<String> getLifecycleInputs() - { + LinkedHashMap<String, CapabilityTypeDef> caps = new LinkedHashMap<>(); + for (CapabilityTypeDef ctd : getCapabilitiesObjects()) { + caps.put(ctd.getName(), ctd); + } + return caps; + } + + @SuppressWarnings("unchecked") + public ArrayList<Object> getRequirements() { + return (ArrayList<Object>) getValue(REQUIREMENTS, null, true); + } + + public ArrayList<Object> getAllRequirements() { + return getRequirements(); + } + + @SuppressWarnings("unchecked") + public LinkedHashMap<String, Object> getInterfaces() { + return (LinkedHashMap<String, Object>) getValue(INTERFACES, null, false); + } + + + @SuppressWarnings("unchecked") + public ArrayList<String> getLifecycleInputs() { // Return inputs to life cycle operations if found ArrayList<String> inputs = new ArrayList<>(); - LinkedHashMap<String,Object> interfaces = getInterfaces(); - if(interfaces != null) { - for(Map.Entry<String,Object> me: interfaces.entrySet()) { - String iname = me.getKey(); - LinkedHashMap<String,Object> ivalue = (LinkedHashMap<String,Object>)me.getValue(); - if(iname.equals(InterfacesDef.LIFECYCLE)) { - for(Map.Entry<String,Object> ie: ivalue.entrySet()) { - if(ie.getKey().equals("input")) { - LinkedHashMap<String,Object> y = (LinkedHashMap<String,Object>)ie.getValue(); - for(String i: y.keySet()) { - inputs.add(i); - } - } - } - } - } + LinkedHashMap<String, Object> interfaces = getInterfaces(); + if (interfaces != null) { + for (Map.Entry<String, Object> me : interfaces.entrySet()) { + String iname = me.getKey(); + LinkedHashMap<String, Object> ivalue = (LinkedHashMap<String, Object>) me.getValue(); + if (iname.equals(InterfacesDef.LIFECYCLE)) { + for (Map.Entry<String, Object> ie : ivalue.entrySet()) { + if (ie.getKey().equals("input")) { + LinkedHashMap<String, Object> y = (LinkedHashMap<String, Object>) ie.getValue(); + for (String i : y.keySet()) { + inputs.add(i); + } + } + } + } + } } return inputs; - } - - public ArrayList<String> getLifecycleOperations() { - // Return available life cycle operations if found - ArrayList<String> ops = null; - LinkedHashMap<String,Object> interfaces = getInterfaces(); - if(interfaces != null) { - InterfacesDef i = new InterfacesDef(this,InterfacesDef.LIFECYCLE,null,null,null); - ops = i.getLifecycleOps(); - } - return ops; - } - - public CapabilityTypeDef getCapability(String name) { - //BUG?? the python code has to be wrong - // it refers to a bad attribute 'value'... - LinkedHashMap<String,CapabilityTypeDef> caps = getCapabilities(); - if(caps != null) { - return caps.get(name); - } - return null; + } + + public ArrayList<String> getLifecycleOperations() { + // Return available life cycle operations if found + ArrayList<String> ops = null; + LinkedHashMap<String, Object> interfaces = getInterfaces(); + if (interfaces != null) { + InterfacesDef i = new InterfacesDef(this, InterfacesDef.LIFECYCLE, null, null, null); + ops = i.getLifecycleOps(); + } + return ops; + } + + public CapabilityTypeDef getCapability(String name) { + //BUG?? the python code has to be wrong + // it refers to a bad attribute 'value'... + LinkedHashMap<String, CapabilityTypeDef> caps = getCapabilities(); + if (caps != null) { + return caps.get(name); + } + return null; /* def get_capability(self, name): caps = self.get_capabilities() if caps and name in caps.keys(): return caps[name].value */ - } + } public String getCapabilityType(String name) { - //BUG?? the python code has to be wrong - // it refers to a bad attribute 'value'... - CapabilityTypeDef captype = getCapability(name); - if(captype != null) { - return captype.getType(); - } - return null; + //BUG?? the python code has to be wrong + // it refers to a bad attribute 'value'... + CapabilityTypeDef captype = getCapability(name); + if (captype != null) { + return captype.getType(); + } + return null; /* def get_capability_type(self, name): captype = self.get_capability(name) @@ -336,21 +331,21 @@ public class NodeType extends StatefulEntityType { } private void _validateKeys() { - if(defs != null) { - for(String key: defs.keySet()) { - boolean bFound = false; - for(int i=0; i< SECTIONS.length; i++) { - if(key.equals(SECTIONS[i])) { - bFound = true; - break; - } - } - if(!bFound) { + if (defs != null) { + for (String key : defs.keySet()) { + boolean bFound = false; + for (int i = 0; i < SECTIONS.length; i++) { + if (key.equals(SECTIONS[i])) { + bFound = true; + break; + } + } + if (!bFound) { ThreadLocalsHolder.getCollector().appendValidationIssue(new JToscaValidationIssue("JE124", String.format( - "UnknownFieldError: Nodetype \"%s\" has unknown field \"%s\"",ntype,key))); - } - } - } + "UnknownFieldError: Nodetype \"%s\" has unknown field \"%s\"", ntype, key))); + } + } + } } } |