2 * Copyright 2016 [ZTE] and others.
\r
4 * Licensed under the Apache License, Version 2.0 (the "License");
\r
5 * you may not use this file except in compliance with the License.
\r
6 * You may obtain a copy of the License at
\r
8 * http://www.apache.org/licenses/LICENSE-2.0
\r
10 * Unless required by applicable law or agreed to in writing, software
\r
11 * distributed under the License is distributed on an "AS IS" BASIS,
\r
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
13 * See the License for the specific language governing permissions and
\r
14 * limitations under the License.
\r
17 package org.openo.commontosca.catalog.model.parser.yaml.entity;
\r
19 import com.google.gson.Gson;
\r
20 import com.google.gson.JsonArray;
\r
21 import com.google.gson.JsonElement;
\r
22 import com.google.gson.JsonObject;
\r
23 import com.google.gson.annotations.SerializedName;
\r
25 import java.util.ArrayList;
\r
26 import java.util.HashMap;
\r
27 import java.util.Iterator;
\r
28 import java.util.List;
\r
29 import java.util.Map;
\r
30 import java.util.Map.Entry;
\r
33 public class ParseYamlResult {
\r
34 private String toscaDefinitionsVersion;
\r
35 private String description;
\r
36 private JsonObject nodeTypes;
\r
37 private JsonObject capabilityTypes;
\r
38 private JsonObject relationshipTypes;
\r
39 private JsonObject policyTypes;
\r
40 private TopologyTemplate topologyTemplate;
\r
41 private Map<String, String> metadata;
\r
42 private JsonObject plans;
\r
45 public String getToscaDefinitionsVersion() {
\r
46 return toscaDefinitionsVersion;
\r
49 public void setToscaDefinitionsVersion(String toscaDefinitionsVersion) {
\r
50 this.toscaDefinitionsVersion = toscaDefinitionsVersion;
\r
53 public String getDescription() {
\r
57 public void setDescription(String description) {
\r
58 this.description = description;
\r
61 public JsonObject getNodeTypes() {
\r
65 public void setNodeTypes(JsonObject nodeTypes) {
\r
66 this.nodeTypes = nodeTypes;
\r
69 public List<NodeType> getNodeTypeList() {
\r
70 return jsonObject2NodeTypes(nodeTypes);
\r
73 private ArrayList<NodeType> jsonObject2NodeTypes(JsonObject nodeTypes) {
\r
74 ArrayList<NodeType> nodeTypeList = new ArrayList<NodeType>();
\r
75 Iterator<Entry<String, JsonElement>> iterator = nodeTypes.entrySet().iterator();
\r
76 while (iterator.hasNext()) {
\r
77 NodeType type = new NodeType();
\r
78 Entry<String, JsonElement> next = iterator.next();
\r
79 type.setType(next.getKey());
\r
80 type.setValue(new Gson().fromJson(next.getValue(), NodeType.NodeTypeValue.class));
\r
81 nodeTypeList.add(type);
\r
83 return nodeTypeList;
\r
86 public JsonObject getCapabilityTypes() {
\r
87 return capabilityTypes;
\r
90 public void setCapabilityTypes(JsonObject capabilityTypes) {
\r
91 this.capabilityTypes = capabilityTypes;
\r
94 public JsonObject getRelationshipTypes() {
\r
95 return relationshipTypes;
\r
98 public void setRelationshipTypes(JsonObject relationshipTypes) {
\r
99 this.relationshipTypes = relationshipTypes;
\r
102 public List<RelationshipType> getRelationshipTypeList() {
\r
103 return jsonObject2RelationshipTypes(relationshipTypes);
\r
106 private ArrayList<RelationshipType> jsonObject2RelationshipTypes(JsonObject relationshipTypes) {
\r
107 ArrayList<RelationshipType> relationshipTypeList = new ArrayList<RelationshipType>();
\r
108 Iterator<Entry<String, JsonElement>> iterator = relationshipTypes.entrySet().iterator();
\r
109 while (iterator.hasNext()) {
\r
110 RelationshipType type = new RelationshipType();
\r
111 Entry<String, JsonElement> next = iterator.next();
\r
112 type.setType(next.getKey());
\r
113 type.setValue(new Gson().fromJson(next.getValue(), RelationshipType.RelationshipValue.class));
\r
114 relationshipTypeList.add(type);
\r
116 return relationshipTypeList;
\r
119 public JsonObject getPolicyTypes() {
\r
120 return policyTypes;
\r
123 public void setPolicyTypes(JsonObject policyTypes) {
\r
124 this.policyTypes = policyTypes;
\r
127 public TopologyTemplate getTopologyTemplate() {
\r
128 return topologyTemplate;
\r
131 public void setTopologyTemplate(TopologyTemplate topologyTemplate) {
\r
132 this.topologyTemplate = topologyTemplate;
\r
135 public Map<String, String> getMetadata() {
\r
139 public void setMetadata(Map<String, String> metadata) {
\r
140 this.metadata = metadata;
\r
143 public JsonObject getPlans() {
\r
147 public void setPlans(JsonObject plans) {
\r
148 this.plans = plans;
\r
151 public List<Plan> getPlanList() {
\r
152 return jsonObject2PlanList(this.plans);
\r
155 private List<Plan> jsonObject2PlanList(JsonObject plans) {
\r
156 if (plans == null) {
\r
157 return new ArrayList<>();
\r
159 List<Plan> retList = new ArrayList<>();
\r
160 Iterator<Entry<String, JsonElement>> iterator = plans.entrySet().iterator();
\r
161 while (iterator.hasNext()) {
\r
162 Plan ret = new Plan();
\r
163 Entry<String, JsonElement> next = iterator.next();
\r
164 ret.setName(next.getKey());
\r
165 ret.setValue(new Gson().fromJson(next.getValue(), Plan.PlanValue.class));
\r
171 public class TopologyTemplate {
\r
172 private String description;
\r
173 private List<Input> inputs;
\r
174 private List<Output> outputs;
\r
175 private List<NodeTemplate> nodeTemplates;
\r
176 private SubstitutionMapping substitutionMappings;
\r
178 public String getDescription() {
\r
179 return description;
\r
182 public void setDescription(String description) {
\r
183 this.description = description;
\r
186 public List<Input> getInputs() {
\r
190 public void setInputs(List<Input> inputs) {
\r
191 this.inputs = inputs;
\r
194 public List<Output> getOutputs() {
\r
198 public void setOutputs(List<Output> outputs) {
\r
199 this.outputs = outputs;
\r
202 public List<NodeTemplate> getNodeTemplates() {
\r
203 return nodeTemplates;
\r
206 public void setNodeTemplates(List<NodeTemplate> nodeTemplates) {
\r
207 this.nodeTemplates = nodeTemplates;
\r
210 public SubstitutionMapping getSubstitutionMappings() {
\r
211 return substitutionMappings;
\r
214 public void setSubstitutionMappings(SubstitutionMapping substitutionMappings) {
\r
215 this.substitutionMappings = substitutionMappings;
\r
218 public class Input {
\r
219 private String name;
\r
220 private String type;
\r
221 private String description;
\r
222 private String defaultValue;
\r
223 private boolean required;
\r
225 public String getName() {
\r
229 public void setName(String name) {
\r
233 public String getType() {
\r
237 public void setType(String type) {
\r
241 public String getDescription() {
\r
242 return description;
\r
245 public void setDescription(String description) {
\r
246 this.description = description;
\r
249 public String getDefault() {
\r
250 return defaultValue;
\r
253 public void setDefault(String defaultValue) {
\r
254 this.defaultValue = defaultValue;
\r
257 public boolean isRequired() {
\r
261 public void setRequired(boolean required) {
\r
262 this.required = required;
\r
266 public class Output {
\r
267 private String name;
\r
268 private String description;
\r
269 private Object value;
\r
271 public String getName() {
\r
275 public void setName(String name) {
\r
279 public String getDescription() {
\r
280 return description;
\r
283 public void setDescription(String description) {
\r
284 this.description = description;
\r
287 public Object getValue() {
\r
291 public void setValue(Object value) {
\r
292 this.value = value;
\r
296 public class NodeTemplate {
\r
297 private String name;
\r
298 private String nodeType;
\r
299 private JsonObject properties;
\r
300 private JsonObject[] requirements;
\r
301 private JsonObject capabilities;
\r
302 private List<Relationship> relationships;
\r
304 public String getName() {
\r
308 public void setName(String name) {
\r
312 public String getNodeType() {
\r
316 public void setNodeType(String nodeType) {
\r
317 this.nodeType = nodeType;
\r
320 public JsonObject getProperties() {
\r
324 public void setProperties(JsonObject properties) {
\r
325 this.properties = properties;
\r
328 public Map<String, Object> getPropertyList() {
\r
329 return jsonObject2Properties(properties);
\r
332 private Map<String, Object> jsonObject2Properties(JsonObject properties) {
\r
333 Map<String, Object> ret = new HashMap<>();
\r
334 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
335 while (iterator.hasNext()) {
\r
336 Entry<String, JsonElement> next = iterator.next();
\r
337 ret.put(next.getKey(), next.getValue().getAsString());
\r
342 public JsonObject[] getRequirements() {
\r
343 return requirements;
\r
346 public void setRequirements(JsonObject[] requirements) {
\r
347 this.requirements = requirements;
\r
350 public JsonObject getCapabilities() {
\r
351 return capabilities;
\r
354 public void setCapabilities(JsonObject capabilities) {
\r
355 this.capabilities = capabilities;
\r
358 public List<Relationship> getRelationships() {
\r
359 return relationships;
\r
362 public void setRelationships(List<Relationship> relationships) {
\r
363 this.relationships = relationships;
\r
368 * @return NodeTemplateScalable
\r
370 public NodeTemplateScalable getScalable() {
\r
371 if (capabilities == null) {
\r
374 JsonElement scaleableJson = capabilities.get("scalable");
\r
375 if (scaleableJson == null || !scaleableJson.isJsonObject()) {
\r
378 JsonElement propertyJson = scaleableJson.getAsJsonObject().get("properties");
\r
379 if (propertyJson == null || !propertyJson.isJsonObject()) {
\r
383 NodeTemplateScalable scalable = new NodeTemplateScalable();
\r
385 .setMin_instances(propertyJson.getAsJsonObject().get("min_instances").getAsString());
\r
387 .setMax_instances(propertyJson.getAsJsonObject().get("max_instances").getAsString());
\r
388 scalable.setDefault_instances(
\r
389 propertyJson.getAsJsonObject().get("default_instances").getAsString());
\r
393 public class Relationship {
\r
394 private String targetNodeName;
\r
395 private String type;
\r
396 private String sourceNodeName;
\r
398 public String getTargetNodeName() {
\r
399 return targetNodeName;
\r
402 public void setTargetNodeName(String targetNodeName) {
\r
403 this.targetNodeName = targetNodeName;
\r
406 public String getType() {
\r
410 public void setType(String type) {
\r
414 public String getSourceNodeName() {
\r
415 return sourceNodeName;
\r
418 public void setSourceNodeName(String sourceNodeName) {
\r
419 this.sourceNodeName = sourceNodeName;
\r
423 public class NodeTemplateScalable {
\r
424 private String minInstances;
\r
425 private String maxInstances;
\r
426 private String defaultInstances;
\r
428 public String getMin_instances() {
\r
429 return minInstances;
\r
432 public void setMin_instances(String minInstances) {
\r
433 this.minInstances = minInstances;
\r
436 public String getMax_instances() {
\r
437 return maxInstances;
\r
440 public void setMax_instances(String maxInstances) {
\r
441 this.maxInstances = maxInstances;
\r
444 public String getDefault_instances() {
\r
445 return defaultInstances;
\r
448 public void setDefault_instances(String defaultInstances) {
\r
449 this.defaultInstances = defaultInstances;
\r
454 public class SubstitutionMapping {
\r
455 private String nodeType;
\r
456 private JsonObject requirements;
\r
457 private JsonObject capabilities;
\r
458 private JsonObject properties;
\r
460 public String getNodeType() {
\r
464 public void setNodeType(String nodeType) {
\r
465 this.nodeType = nodeType;
\r
468 public JsonObject getRequirements() {
\r
469 return requirements;
\r
472 public void setRequirements(JsonObject requirements) {
\r
473 this.requirements = requirements;
\r
476 public Map<String, String[]> getRequirementList() {
\r
477 return jsonObjects2Requirements(this.requirements);
\r
480 private Map<String, String[]> jsonObjects2Requirements(JsonObject requirements) {
\r
481 Map<String, String[]> ret = new HashMap<String, String[]>();
\r
483 Iterator<Entry<String, JsonElement>> iterator = requirements.entrySet().iterator();
\r
484 while (iterator.hasNext()) {
\r
485 Entry<String, JsonElement> next = iterator.next();
\r
486 if (next.getValue().isJsonPrimitive() || next.getValue().isJsonObject()) {
\r
487 ret.put(next.getKey(), new String[] {next.getValue().getAsString()});
\r
491 if (next.getValue().isJsonArray()) {
\r
492 String[] value = parseListValue((JsonArray) next.getValue());
\r
493 ret.put(next.getKey(), value);
\r
500 private String[] parseListValue(JsonArray jsonArray) {
\r
501 String[] value = new String[jsonArray.size()];
\r
502 for (int i = 0, size = jsonArray.size(); i < size; i++) {
\r
503 value[i] = jsonArray.get(i).getAsString();
\r
508 public JsonObject getCapabilities() {
\r
509 return capabilities;
\r
512 public void setCapabilities(JsonObject capabilities) {
\r
513 this.capabilities = capabilities;
\r
516 public Map<String, String[]> getCapabilityList() {
\r
517 return jsonObject2Capabilities(this.capabilities);
\r
520 private Map<String, String[]> jsonObject2Capabilities(JsonObject capabilities) {
\r
521 Map<String, String[]> ret = new HashMap<String, String[]>();
\r
523 Iterator<Entry<String, JsonElement>> iterator = capabilities.entrySet().iterator();
\r
524 while (iterator.hasNext()) {
\r
525 Entry<String, JsonElement> next = iterator.next();
\r
527 if (next.getValue().isJsonPrimitive() || next.getValue().isJsonObject()) {
\r
528 ret.put(next.getKey(), new String[] {next.getValue().getAsString()});
\r
532 if (next.getValue().isJsonArray()) {
\r
533 String[] value = parseListValue((JsonArray) next.getValue());
\r
534 ret.put(next.getKey(), value);
\r
541 public JsonObject getProperties() {
\r
545 public void setProperties(JsonObject properties) {
\r
546 this.properties = properties;
\r
549 public Map<String, Object> getPropertyList() {
\r
550 return jsonObject2Properties(properties);
\r
553 private Map<String, Object> jsonObject2Properties(JsonObject properties) {
\r
554 Map<String, Object> ret = new HashMap<>();
\r
555 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
556 while (iterator.hasNext()) {
\r
557 Entry<String, JsonElement> next = iterator.next();
\r
558 ret.put(next.getKey(), next.getValue().getAsString());
\r
566 public class RelationshipType {
\r
567 private String type;
\r
568 private RelationshipValue value;
\r
570 public String getType() {
\r
574 public void setType(String type) {
\r
578 public RelationshipValue getValue() {
\r
582 public void setValue(RelationshipValue value) {
\r
583 this.value = value;
\r
586 public class RelationshipValue {
\r
587 private String derivedFrom;
\r
588 private String[] validTargetTypes;
\r
590 public String getDerivedFrom() {
\r
591 return derivedFrom;
\r
594 public void setDerivedFrom(String derivedFrom) {
\r
595 this.derivedFrom = derivedFrom;
\r
598 public String[] getValid_target_types() {
\r
599 return validTargetTypes;
\r
602 public void setValid_target_types(String[] validTargetTypes) {
\r
603 this.validTargetTypes = validTargetTypes;
\r
609 public class NodeType {
\r
610 private String type;
\r
611 private NodeTypeValue value;
\r
613 public String getType() {
\r
617 public void setType(String type) {
\r
621 public NodeTypeValue getValue() {
\r
625 public void setValue(NodeTypeValue value) {
\r
626 this.value = value;
\r
629 public class NodeTypeValue {
\r
630 private String derivedFrom;
\r
631 private JsonObject properties;
\r
632 private JsonObject[] requirements;
\r
633 private JsonObject capabilities;
\r
635 public String getDerivedFrom() {
\r
636 return derivedFrom;
\r
639 public void setDerived_from(String derivedFrom) {
\r
640 this.derivedFrom = derivedFrom;
\r
643 public JsonObject getProperties() {
\r
647 public void setProperties(JsonObject properties) {
\r
648 this.properties = properties;
\r
651 public List<NodeTypeProperty> getPropertyList() {
\r
652 return jsonObject2Properties(properties);
\r
655 private List<NodeTypeProperty> jsonObject2Properties(JsonObject properties) {
\r
656 List<NodeTypeProperty> propertieList = new ArrayList<NodeTypeProperty>();
\r
657 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
658 while (iterator.hasNext()) {
\r
659 NodeTypeProperty type = new NodeTypeProperty();
\r
660 Entry<String, JsonElement> next = iterator.next();
\r
661 type.setKey(next.getKey());
\r
662 type.setValue(new Gson().fromJson(next.getValue(), JsonObject.class));
\r
663 propertieList.add(type);
\r
665 return propertieList;
\r
668 public class NodeTypeProperty {
\r
669 private String key;
\r
670 private JsonObject value;
\r
672 public String getKey() {
\r
676 public void setKey(String key) {
\r
681 * get default value.
\r
682 * @return default value
\r
684 public String getDefaultValue() {
\r
685 JsonElement defaultValue = value.get("default");
\r
686 if (defaultValue == null || defaultValue.isJsonObject()) {
\r
690 return defaultValue.getAsString();
\r
693 public JsonObject getValue() {
\r
697 public void setValue(JsonObject value) {
\r
698 this.value = value;
\r
702 public JsonObject[] getRequirements() {
\r
703 return requirements;
\r
706 public void setRequirements(JsonObject[] requirements) {
\r
707 this.requirements = requirements;
\r
710 public JsonObject getCapabilities() {
\r
711 return capabilities;
\r
714 public void setCapabilities(JsonObject capabilities) {
\r
715 this.capabilities = capabilities;
\r
720 public class Plan {
\r
721 private String name;
\r
722 private PlanValue value;
\r
724 public String getName() {
\r
728 public void setName(String name) {
\r
732 public String getDescription() {
\r
733 return value.getDescription();
\r
736 public String getReference() {
\r
737 return value.getReference();
\r
740 public String getPlanLanguage() {
\r
741 return value.getPlanLanguage();
\r
744 public List<PlanValue.PlanInput> getInputList() {
\r
745 return value.getInputList();
\r
748 public PlanValue getValue() {
\r
752 public void setValue(PlanValue value) {
\r
753 this.value = value;
\r
756 public class PlanValue {
\r
757 private String description;
\r
758 private String reference;
\r
759 private String planLanguage;
\r
760 private JsonObject inputs;
\r
762 public String getDescription() {
\r
763 return description;
\r
766 public void setDescription(String description) {
\r
767 this.description = description;
\r
770 public String getReference() {
\r
774 public void setReference(String reference) {
\r
775 this.reference = reference;
\r
778 public String getPlanLanguage() {
\r
779 return planLanguage;
\r
782 public void setPlanLanguage(String planLanguage) {
\r
783 this.planLanguage = planLanguage;
\r
786 public JsonObject getInputs() {
\r
790 public void setInputs(JsonObject inputs) {
\r
791 this.inputs = inputs;
\r
794 public List<PlanInput> getInputList() {
\r
795 return jsonObject2PlanInputList(inputs);
\r
799 private List<PlanInput> jsonObject2PlanInputList(JsonObject inputs) {
\r
800 List<PlanInput> retList = new ArrayList<PlanInput>();
\r
801 Iterator<Entry<String, JsonElement>> iterator = inputs.entrySet().iterator();
\r
802 while (iterator.hasNext()) {
\r
803 PlanInput ret = new PlanInput();
\r
804 Entry<String, JsonElement> next = iterator.next();
\r
805 ret.setName(next.getKey());
\r
806 ret.setValue(new Gson().fromJson(next.getValue(), PlanInput.PlanInputValue.class));
\r
812 public class PlanInput {
\r
813 private String name;
\r
814 private PlanInputValue value;
\r
816 public String getName() {
\r
820 public void setName(String name) {
\r
824 public String getType() {
\r
825 return value.getType();
\r
828 public String getDescription() {
\r
829 return value.getDescription();
\r
832 public String getDefault() {
\r
833 return value.getDefaultValue();
\r
836 public boolean isRequired() {
\r
837 return value.isRequired();
\r
840 public PlanInputValue getValue() {
\r
844 public void setValue(PlanInputValue value) {
\r
845 this.value = value;
\r
848 public class PlanInputValue {
\r
849 private String type;
\r
850 private String description;
\r
851 @SerializedName("default")
\r
852 private String defaultValue;
\r
853 private boolean required;
\r
855 public String getType() {
\r
859 public void setType(String type) {
\r
863 public String getDescription() {
\r
864 return description;
\r
867 public void setDescription(String description) {
\r
868 this.description = description;
\r
871 public String getDefaultValue() {
\r
872 return defaultValue;
\r
875 public void setDefaultValue(String defaultValue) {
\r
876 this.defaultValue = defaultValue;
\r
879 public boolean isRequired() {
\r
883 public void setRequired(boolean required) {
\r
884 this.required = required;
\r