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 List<Plan> retList = new ArrayList<Plan>();
\r
157 Iterator<Entry<String, JsonElement>> iterator = plans.entrySet().iterator();
\r
158 while (iterator.hasNext()) {
\r
159 Plan ret = new Plan();
\r
160 Entry<String, JsonElement> next = iterator.next();
\r
161 ret.setName(next.getKey());
\r
162 ret.setValue(new Gson().fromJson(next.getValue(), Plan.PlanValue.class));
\r
168 public class TopologyTemplate {
\r
169 private String description;
\r
170 private List<Input> inputs;
\r
171 private List<Output> outputs;
\r
172 private List<NodeTemplate> nodeTemplates;
\r
173 private SubstitutionMapping substitutionMappings;
\r
175 public String getDescription() {
\r
176 return description;
\r
179 public void setDescription(String description) {
\r
180 this.description = description;
\r
183 public List<Input> getInputs() {
\r
187 public void setInputs(List<Input> inputs) {
\r
188 this.inputs = inputs;
\r
191 public List<Output> getOutputs() {
\r
195 public void setOutputs(List<Output> outputs) {
\r
196 this.outputs = outputs;
\r
199 public List<NodeTemplate> getNodeTemplates() {
\r
200 return nodeTemplates;
\r
203 public void setNodeTemplates(List<NodeTemplate> nodeTemplates) {
\r
204 this.nodeTemplates = nodeTemplates;
\r
207 public SubstitutionMapping getSubstitutionMappings() {
\r
208 return substitutionMappings;
\r
211 public void setSubstitutionMappings(SubstitutionMapping substitutionMappings) {
\r
212 this.substitutionMappings = substitutionMappings;
\r
215 public class Input {
\r
216 private String name;
\r
217 private String type;
\r
218 private String description;
\r
219 private String defaultValue;
\r
220 private boolean required;
\r
222 public String getName() {
\r
226 public void setName(String name) {
\r
230 public String getType() {
\r
234 public void setType(String type) {
\r
238 public String getDescription() {
\r
239 return description;
\r
242 public void setDescription(String description) {
\r
243 this.description = description;
\r
246 public String getDefault() {
\r
247 return defaultValue;
\r
250 public void setDefault(String defaultValue) {
\r
251 this.defaultValue = defaultValue;
\r
254 public boolean isRequired() {
\r
258 public void setRequired(boolean required) {
\r
259 this.required = required;
\r
263 public class Output {
\r
264 private String name;
\r
265 private String description;
\r
266 private Object value;
\r
268 public String getName() {
\r
272 public void setName(String name) {
\r
276 public String getDescription() {
\r
277 return description;
\r
280 public void setDescription(String description) {
\r
281 this.description = description;
\r
284 public Object getValue() {
\r
288 public void setValue(Object value) {
\r
289 this.value = value;
\r
293 public class NodeTemplate {
\r
294 private String name;
\r
295 private String nodeType;
\r
296 private JsonObject properties;
\r
297 private JsonObject[] requirements;
\r
298 private JsonObject capabilities;
\r
299 private List<Relationship> relationships;
\r
301 public String getName() {
\r
305 public void setName(String name) {
\r
309 public String getNodeType() {
\r
313 public void setNodeType(String nodeType) {
\r
314 this.nodeType = nodeType;
\r
317 public JsonObject getProperties() {
\r
321 public void setProperties(JsonObject properties) {
\r
322 this.properties = properties;
\r
325 public Map<String, Object> getPropertyList() {
\r
326 return jsonObject2Properties(properties);
\r
329 private Map<String, Object> jsonObject2Properties(JsonObject properties) {
\r
330 Map<String, Object> ret = new HashMap<>();
\r
331 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
332 while (iterator.hasNext()) {
\r
333 Entry<String, JsonElement> next = iterator.next();
\r
334 ret.put(next.getKey(), next.getValue().getAsString());
\r
339 public JsonObject[] getRequirements() {
\r
340 return requirements;
\r
343 public void setRequirements(JsonObject[] requirements) {
\r
344 this.requirements = requirements;
\r
347 public JsonObject getCapabilities() {
\r
348 return capabilities;
\r
351 public void setCapabilities(JsonObject capabilities) {
\r
352 this.capabilities = capabilities;
\r
355 public List<Relationship> getRelationships() {
\r
356 return relationships;
\r
359 public void setRelationships(List<Relationship> relationships) {
\r
360 this.relationships = relationships;
\r
365 * @return NodeTemplateScalable
\r
367 public NodeTemplateScalable getScalable() {
\r
368 if (capabilities == null) {
\r
371 JsonElement scaleableJson = capabilities.get("scalable");
\r
372 if (scaleableJson == null || !scaleableJson.isJsonObject()) {
\r
375 JsonElement propertyJson = scaleableJson.getAsJsonObject().get("properties");
\r
376 if (propertyJson == null || !propertyJson.isJsonObject()) {
\r
380 NodeTemplateScalable scalable = new NodeTemplateScalable();
\r
382 .setMin_instances(propertyJson.getAsJsonObject().get("min_instances").getAsString());
\r
384 .setMax_instances(propertyJson.getAsJsonObject().get("max_instances").getAsString());
\r
385 scalable.setDefault_instances(
\r
386 propertyJson.getAsJsonObject().get("default_instances").getAsString());
\r
390 public class Relationship {
\r
391 private String targetNodeName;
\r
392 private String type;
\r
393 private String sourceNodeName;
\r
395 public String getTargetNodeName() {
\r
396 return targetNodeName;
\r
399 public void setTargetNodeName(String targetNodeName) {
\r
400 this.targetNodeName = targetNodeName;
\r
403 public String getType() {
\r
407 public void setType(String type) {
\r
411 public String getSourceNodeName() {
\r
412 return sourceNodeName;
\r
415 public void setSourceNodeName(String sourceNodeName) {
\r
416 this.sourceNodeName = sourceNodeName;
\r
420 public class NodeTemplateScalable {
\r
421 private String minInstances;
\r
422 private String maxInstances;
\r
423 private String defaultInstances;
\r
425 public String getMin_instances() {
\r
426 return minInstances;
\r
429 public void setMin_instances(String minInstances) {
\r
430 this.minInstances = minInstances;
\r
433 public String getMax_instances() {
\r
434 return maxInstances;
\r
437 public void setMax_instances(String maxInstances) {
\r
438 this.maxInstances = maxInstances;
\r
441 public String getDefault_instances() {
\r
442 return defaultInstances;
\r
445 public void setDefault_instances(String defaultInstances) {
\r
446 this.defaultInstances = defaultInstances;
\r
451 public class SubstitutionMapping {
\r
452 private String nodeType;
\r
453 private JsonObject requirements;
\r
454 private JsonObject capabilities;
\r
455 private JsonObject properties;
\r
457 public String getNodeType() {
\r
461 public void setNodeType(String nodeType) {
\r
462 this.nodeType = nodeType;
\r
465 public JsonObject getRequirements() {
\r
466 return requirements;
\r
469 public void setRequirements(JsonObject requirements) {
\r
470 this.requirements = requirements;
\r
473 public Map<String, String[]> getRequirementList() {
\r
474 return jsonObjects2Requirements(this.requirements);
\r
477 private Map<String, String[]> jsonObjects2Requirements(JsonObject requirements) {
\r
478 Map<String, String[]> ret = new HashMap<String, String[]>();
\r
480 Iterator<Entry<String, JsonElement>> iterator = requirements.entrySet().iterator();
\r
481 while (iterator.hasNext()) {
\r
482 Entry<String, JsonElement> next = iterator.next();
\r
483 if (next.getValue().isJsonPrimitive() || next.getValue().isJsonObject()) {
\r
484 ret.put(next.getKey(), new String[] {next.getValue().getAsString()});
\r
488 if (next.getValue().isJsonArray()) {
\r
489 String[] value = parseListValue((JsonArray) next.getValue());
\r
490 ret.put(next.getKey(), value);
\r
497 private String[] parseListValue(JsonArray jsonArray) {
\r
498 String[] value = new String[jsonArray.size()];
\r
499 for (int i = 0, size = jsonArray.size(); i < size; i++) {
\r
500 value[i] = jsonArray.get(i).getAsString();
\r
505 public JsonObject getCapabilities() {
\r
506 return capabilities;
\r
509 public void setCapabilities(JsonObject capabilities) {
\r
510 this.capabilities = capabilities;
\r
513 public Map<String, String[]> getCapabilityList() {
\r
514 return jsonObject2Capabilities(this.capabilities);
\r
517 private Map<String, String[]> jsonObject2Capabilities(JsonObject capabilities) {
\r
518 Map<String, String[]> ret = new HashMap<String, String[]>();
\r
520 Iterator<Entry<String, JsonElement>> iterator = capabilities.entrySet().iterator();
\r
521 while (iterator.hasNext()) {
\r
522 Entry<String, JsonElement> next = iterator.next();
\r
524 if (next.getValue().isJsonPrimitive() || next.getValue().isJsonObject()) {
\r
525 ret.put(next.getKey(), new String[] {next.getValue().getAsString()});
\r
529 if (next.getValue().isJsonArray()) {
\r
530 String[] value = parseListValue((JsonArray) next.getValue());
\r
531 ret.put(next.getKey(), value);
\r
538 public JsonObject getProperties() {
\r
542 public void setProperties(JsonObject properties) {
\r
543 this.properties = properties;
\r
546 public Map<String, Object> getPropertyList() {
\r
547 return jsonObject2Properties(properties);
\r
550 private Map<String, Object> jsonObject2Properties(JsonObject properties) {
\r
551 Map<String, Object> ret = new HashMap<>();
\r
552 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
553 while (iterator.hasNext()) {
\r
554 Entry<String, JsonElement> next = iterator.next();
\r
555 ret.put(next.getKey(), next.getValue().getAsString());
\r
563 public class RelationshipType {
\r
564 private String type;
\r
565 private RelationshipValue value;
\r
567 public String getType() {
\r
571 public void setType(String type) {
\r
575 public RelationshipValue getValue() {
\r
579 public void setValue(RelationshipValue value) {
\r
580 this.value = value;
\r
583 public class RelationshipValue {
\r
584 private String derivedFrom;
\r
585 private String[] validTargetTypes;
\r
587 public String getDerivedFrom() {
\r
588 return derivedFrom;
\r
591 public void setDerivedFrom(String derivedFrom) {
\r
592 this.derivedFrom = derivedFrom;
\r
595 public String[] getValid_target_types() {
\r
596 return validTargetTypes;
\r
599 public void setValid_target_types(String[] validTargetTypes) {
\r
600 this.validTargetTypes = validTargetTypes;
\r
606 public class NodeType {
\r
607 private String type;
\r
608 private NodeTypeValue value;
\r
610 public String getType() {
\r
614 public void setType(String type) {
\r
618 public NodeTypeValue getValue() {
\r
622 public void setValue(NodeTypeValue value) {
\r
623 this.value = value;
\r
626 public class NodeTypeValue {
\r
627 private String derivedFrom;
\r
628 private JsonObject properties;
\r
629 private JsonObject[] requirements;
\r
630 private JsonObject capabilities;
\r
632 public String getDerivedFrom() {
\r
633 return derivedFrom;
\r
636 public void setDerived_from(String derivedFrom) {
\r
637 this.derivedFrom = derivedFrom;
\r
640 public JsonObject getProperties() {
\r
644 public void setProperties(JsonObject properties) {
\r
645 this.properties = properties;
\r
648 public List<NodeTypeProperty> getPropertyList() {
\r
649 return jsonObject2Properties(properties);
\r
652 private List<NodeTypeProperty> jsonObject2Properties(JsonObject properties) {
\r
653 List<NodeTypeProperty> propertieList = new ArrayList<NodeTypeProperty>();
\r
654 Iterator<Entry<String, JsonElement>> iterator = properties.entrySet().iterator();
\r
655 while (iterator.hasNext()) {
\r
656 NodeTypeProperty type = new NodeTypeProperty();
\r
657 Entry<String, JsonElement> next = iterator.next();
\r
658 type.setKey(next.getKey());
\r
659 type.setValue(new Gson().fromJson(next.getValue(), JsonObject.class));
\r
660 propertieList.add(type);
\r
662 return propertieList;
\r
665 public class NodeTypeProperty {
\r
666 private String key;
\r
667 private JsonObject value;
\r
669 public String getKey() {
\r
673 public void setKey(String key) {
\r
678 * get default value.
\r
679 * @return default value
\r
681 public String getDefaultValue() {
\r
682 JsonElement defaultValue = value.get("default");
\r
683 if (defaultValue == null || defaultValue.isJsonObject()) {
\r
687 return defaultValue.getAsString();
\r
690 public JsonObject getValue() {
\r
694 public void setValue(JsonObject value) {
\r
695 this.value = value;
\r
699 public JsonObject[] getRequirements() {
\r
700 return requirements;
\r
703 public void setRequirements(JsonObject[] requirements) {
\r
704 this.requirements = requirements;
\r
707 public JsonObject getCapabilities() {
\r
708 return capabilities;
\r
711 public void setCapabilities(JsonObject capabilities) {
\r
712 this.capabilities = capabilities;
\r
717 public class Plan {
\r
718 private String name;
\r
719 private PlanValue value;
\r
721 public String getName() {
\r
725 public void setName(String name) {
\r
729 public String getDescription() {
\r
730 return value.getDescription();
\r
733 public String getReference() {
\r
734 return value.getReference();
\r
737 public String getPlanLanguage() {
\r
738 return value.getPlanLanguage();
\r
741 public List<PlanValue.PlanInput> getInputList() {
\r
742 return value.getInputList();
\r
745 public PlanValue getValue() {
\r
749 public void setValue(PlanValue value) {
\r
750 this.value = value;
\r
753 public class PlanValue {
\r
754 private String description;
\r
755 private String reference;
\r
756 private String planLanguage;
\r
757 private JsonObject inputs;
\r
759 public String getDescription() {
\r
760 return description;
\r
763 public void setDescription(String description) {
\r
764 this.description = description;
\r
767 public String getReference() {
\r
771 public void setReference(String reference) {
\r
772 this.reference = reference;
\r
775 public String getPlanLanguage() {
\r
776 return planLanguage;
\r
779 public void setPlanLanguage(String planLanguage) {
\r
780 this.planLanguage = planLanguage;
\r
783 public JsonObject getInputs() {
\r
787 public void setInputs(JsonObject inputs) {
\r
788 this.inputs = inputs;
\r
791 public List<PlanInput> getInputList() {
\r
792 return jsonObject2PlanInputList(inputs);
\r
796 private List<PlanInput> jsonObject2PlanInputList(JsonObject inputs) {
\r
797 List<PlanInput> retList = new ArrayList<PlanInput>();
\r
798 Iterator<Entry<String, JsonElement>> iterator = inputs.entrySet().iterator();
\r
799 while (iterator.hasNext()) {
\r
800 PlanInput ret = new PlanInput();
\r
801 Entry<String, JsonElement> next = iterator.next();
\r
802 ret.setName(next.getKey());
\r
803 ret.setValue(new Gson().fromJson(next.getValue(), PlanInput.PlanInputValue.class));
\r
809 public class PlanInput {
\r
810 private String name;
\r
811 private PlanInputValue value;
\r
813 public String getName() {
\r
817 public void setName(String name) {
\r
821 public String getType() {
\r
822 return value.getType();
\r
825 public String getDescription() {
\r
826 return value.getDescription();
\r
829 public String getDefault() {
\r
830 return value.getDefaultValue();
\r
833 public boolean isRequired() {
\r
834 return value.isRequired();
\r
837 public PlanInputValue getValue() {
\r
841 public void setValue(PlanInputValue value) {
\r
842 this.value = value;
\r
845 public class PlanInputValue {
\r
846 private String type;
\r
847 private String description;
\r
848 @SerializedName("default")
\r
849 private String defaultValue;
\r
850 private boolean required;
\r
852 public String getType() {
\r
856 public void setType(String type) {
\r
860 public String getDescription() {
\r
861 return description;
\r
864 public void setDescription(String description) {
\r
865 this.description = description;
\r
868 public String getDefaultValue() {
\r
869 return defaultValue;
\r
872 public void setDefaultValue(String defaultValue) {
\r
873 this.defaultValue = defaultValue;
\r
876 public boolean isRequired() {
\r
880 public void setRequired(boolean required) {
\r
881 this.required = required;
\r