e64a6abbb0629cf035f9bad9c0f5c12c7f3ed06b
[vfc/nfvo/catalog.git] /
1 /**\r
2  * Copyright 2016 [ZTE] and others.\r
3  *\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
7  *\r
8  *     http://www.apache.org/licenses/LICENSE-2.0\r
9  *\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
15  */\r
16 \r
17 package org.openo.commontosca.catalog.model.parser.yaml.entity;\r
18 \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
24 \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
31 \r
32 \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
43 \r
44 \r
45   public String getToscaDefinitionsVersion() {\r
46     return toscaDefinitionsVersion;\r
47   }\r
48 \r
49   public void setToscaDefinitionsVersion(String toscaDefinitionsVersion) {\r
50     this.toscaDefinitionsVersion = toscaDefinitionsVersion;\r
51   }\r
52 \r
53   public String getDescription() {\r
54     return description;\r
55   }\r
56 \r
57   public void setDescription(String description) {\r
58     this.description = description;\r
59   }\r
60 \r
61   public JsonObject getNodeTypes() {\r
62     return nodeTypes;\r
63   }\r
64 \r
65   public void setNodeTypes(JsonObject nodeTypes) {\r
66     this.nodeTypes = nodeTypes;\r
67   }\r
68 \r
69   public List<NodeType> getNodeTypeList() {\r
70     return jsonObject2NodeTypes(nodeTypes);\r
71   }\r
72 \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
82     }\r
83     return nodeTypeList;\r
84   }\r
85 \r
86   public JsonObject getCapabilityTypes() {\r
87     return capabilityTypes;\r
88   }\r
89 \r
90   public void setCapabilityTypes(JsonObject capabilityTypes) {\r
91     this.capabilityTypes = capabilityTypes;\r
92   }\r
93 \r
94   public JsonObject getRelationshipTypes() {\r
95     return relationshipTypes;\r
96   }\r
97 \r
98   public void setRelationshipTypes(JsonObject relationshipTypes) {\r
99     this.relationshipTypes = relationshipTypes;\r
100   }\r
101 \r
102   public List<RelationshipType> getRelationshipTypeList() {\r
103     return jsonObject2RelationshipTypes(relationshipTypes);\r
104   }\r
105 \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
115     }\r
116     return relationshipTypeList;\r
117   }\r
118 \r
119   public JsonObject getPolicyTypes() {\r
120     return policyTypes;\r
121   }\r
122 \r
123   public void setPolicyTypes(JsonObject policyTypes) {\r
124     this.policyTypes = policyTypes;\r
125   }\r
126 \r
127   public TopologyTemplate getTopologyTemplate() {\r
128     return topologyTemplate;\r
129   }\r
130 \r
131   public void setTopologyTemplate(TopologyTemplate topologyTemplate) {\r
132     this.topologyTemplate = topologyTemplate;\r
133   }\r
134 \r
135   public Map<String, String> getMetadata() {\r
136     return metadata;\r
137   }\r
138 \r
139   public void setMetadata(Map<String, String> metadata) {\r
140     this.metadata = metadata;\r
141   }\r
142 \r
143   public JsonObject getPlans() {\r
144     return plans;\r
145   }\r
146 \r
147   public void setPlans(JsonObject plans) {\r
148     this.plans = plans;\r
149   }\r
150 \r
151   public List<Plan> getPlanList() {\r
152     return jsonObject2PlanList(this.plans);\r
153   }\r
154 \r
155   private List<Plan> jsonObject2PlanList(JsonObject plans) {\r
156     if (plans == null) {\r
157       return new ArrayList<>();\r
158     }\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
166       retList.add(ret);\r
167     }\r
168     return retList;\r
169   }\r
170 \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
177 \r
178     public String getDescription() {\r
179       return description;\r
180     }\r
181 \r
182     public void setDescription(String description) {\r
183       this.description = description;\r
184     }\r
185 \r
186     public List<Input> getInputs() {\r
187       return inputs;\r
188     }\r
189 \r
190     public void setInputs(List<Input> inputs) {\r
191       this.inputs = inputs;\r
192     }\r
193 \r
194     public List<Output> getOutputs() {\r
195       return outputs;\r
196     }\r
197 \r
198     public void setOutputs(List<Output> outputs) {\r
199       this.outputs = outputs;\r
200     }\r
201 \r
202     public List<NodeTemplate> getNodeTemplates() {\r
203       return nodeTemplates;\r
204     }\r
205 \r
206     public void setNodeTemplates(List<NodeTemplate> nodeTemplates) {\r
207       this.nodeTemplates = nodeTemplates;\r
208     }\r
209 \r
210     public SubstitutionMapping getSubstitutionMappings() {\r
211       return substitutionMappings;\r
212     }\r
213 \r
214     public void setSubstitutionMappings(SubstitutionMapping substitutionMappings) {\r
215       this.substitutionMappings = substitutionMappings;\r
216     }\r
217 \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
224 \r
225       public String getName() {\r
226         return name;\r
227       }\r
228 \r
229       public void setName(String name) {\r
230         this.name = name;\r
231       }\r
232 \r
233       public String getType() {\r
234         return type;\r
235       }\r
236 \r
237       public void setType(String type) {\r
238         this.type = type;\r
239       }\r
240 \r
241       public String getDescription() {\r
242         return description;\r
243       }\r
244 \r
245       public void setDescription(String description) {\r
246         this.description = description;\r
247       }\r
248 \r
249       public String getDefault() {\r
250         return defaultValue;\r
251       }\r
252 \r
253       public void setDefault(String defaultValue) {\r
254         this.defaultValue = defaultValue;\r
255       }\r
256 \r
257       public boolean isRequired() {\r
258         return required;\r
259       }\r
260 \r
261       public void setRequired(boolean required) {\r
262         this.required = required;\r
263       }\r
264     }\r
265 \r
266     public class Output {\r
267       private String name;\r
268       private String description;\r
269       private Object value;\r
270 \r
271       public String getName() {\r
272         return name;\r
273       }\r
274 \r
275       public void setName(String name) {\r
276         this.name = name;\r
277       }\r
278 \r
279       public String getDescription() {\r
280         return description;\r
281       }\r
282 \r
283       public void setDescription(String description) {\r
284         this.description = description;\r
285       }\r
286 \r
287       public Object getValue() {\r
288         return value;\r
289       }\r
290 \r
291       public void setValue(Object value) {\r
292         this.value = value;\r
293       }\r
294     }\r
295 \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
303 \r
304       public String getName() {\r
305         return name;\r
306       }\r
307 \r
308       public void setName(String name) {\r
309         this.name = name;\r
310       }\r
311 \r
312       public String getNodeType() {\r
313         return nodeType;\r
314       }\r
315 \r
316       public void setNodeType(String nodeType) {\r
317         this.nodeType = nodeType;\r
318       }\r
319 \r
320       public JsonObject getProperties() {\r
321         return properties;\r
322       }\r
323 \r
324       public void setProperties(JsonObject properties) {\r
325         this.properties = properties;\r
326       }\r
327 \r
328       public Map<String, Object> getPropertyList() {\r
329         return jsonObject2Properties(properties);\r
330       }\r
331 \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
338         }\r
339         return ret;\r
340       }\r
341 \r
342       public JsonObject[] getRequirements() {\r
343         return requirements;\r
344       }\r
345 \r
346       public void setRequirements(JsonObject[] requirements) {\r
347         this.requirements = requirements;\r
348       }\r
349 \r
350       public JsonObject getCapabilities() {\r
351         return capabilities;\r
352       }\r
353 \r
354       public void setCapabilities(JsonObject capabilities) {\r
355         this.capabilities = capabilities;\r
356       }\r
357 \r
358       public List<Relationship> getRelationships() {\r
359         return relationships;\r
360       }\r
361 \r
362       public void setRelationships(List<Relationship> relationships) {\r
363         this.relationships = relationships;\r
364       }\r
365 \r
366       /**\r
367        * get scalable.\r
368        * @return NodeTemplateScalable\r
369        */\r
370       public NodeTemplateScalable getScalable() {\r
371         if (capabilities == null) {\r
372           return null;\r
373         }\r
374         JsonElement scaleableJson = capabilities.get("scalable");\r
375         if (scaleableJson == null || !scaleableJson.isJsonObject()) {\r
376           return null;\r
377         }\r
378         JsonElement propertyJson = scaleableJson.getAsJsonObject().get("properties");\r
379         if (propertyJson == null || !propertyJson.isJsonObject()) {\r
380           return null;\r
381         }\r
382 \r
383         NodeTemplateScalable scalable = new NodeTemplateScalable();\r
384         scalable\r
385             .setMin_instances(propertyJson.getAsJsonObject().get("min_instances").getAsString());\r
386         scalable\r
387             .setMax_instances(propertyJson.getAsJsonObject().get("max_instances").getAsString());\r
388         scalable.setDefault_instances(\r
389             propertyJson.getAsJsonObject().get("default_instances").getAsString());\r
390         return scalable;\r
391       }\r
392 \r
393       public class Relationship {\r
394         private String targetNodeName;\r
395         private String type;\r
396         private String sourceNodeName;\r
397 \r
398         public String getTargetNodeName() {\r
399           return targetNodeName;\r
400         }\r
401 \r
402         public void setTargetNodeName(String targetNodeName) {\r
403           this.targetNodeName = targetNodeName;\r
404         }\r
405 \r
406         public String getType() {\r
407           return type;\r
408         }\r
409 \r
410         public void setType(String type) {\r
411           this.type = type;\r
412         }\r
413 \r
414         public String getSourceNodeName() {\r
415           return sourceNodeName;\r
416         }\r
417 \r
418         public void setSourceNodeName(String sourceNodeName) {\r
419           this.sourceNodeName = sourceNodeName;\r
420         }\r
421       }\r
422 \r
423       public class NodeTemplateScalable {\r
424         private String minInstances;\r
425         private String maxInstances;\r
426         private String defaultInstances;\r
427 \r
428         public String getMin_instances() {\r
429           return minInstances;\r
430         }\r
431 \r
432         public void setMin_instances(String minInstances) {\r
433           this.minInstances = minInstances;\r
434         }\r
435 \r
436         public String getMax_instances() {\r
437           return maxInstances;\r
438         }\r
439 \r
440         public void setMax_instances(String maxInstances) {\r
441           this.maxInstances = maxInstances;\r
442         }\r
443 \r
444         public String getDefault_instances() {\r
445           return defaultInstances;\r
446         }\r
447 \r
448         public void setDefault_instances(String defaultInstances) {\r
449           this.defaultInstances = defaultInstances;\r
450         }\r
451       }\r
452     }\r
453 \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
459 \r
460       public String getNodeType() {\r
461         return nodeType;\r
462       }\r
463 \r
464       public void setNodeType(String nodeType) {\r
465         this.nodeType = nodeType;\r
466       }\r
467 \r
468       public JsonObject getRequirements() {\r
469         return requirements;\r
470       }\r
471 \r
472       public void setRequirements(JsonObject requirements) {\r
473         this.requirements = requirements;\r
474       }\r
475 \r
476       public Map<String, String[]> getRequirementList() {\r
477         return jsonObjects2Requirements(this.requirements);\r
478       }\r
479 \r
480       private Map<String, String[]> jsonObjects2Requirements(JsonObject requirements) {\r
481         Map<String, String[]> ret = new HashMap<String, String[]>();\r
482 \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
488             continue;\r
489           }\r
490 \r
491           if (next.getValue().isJsonArray()) {\r
492             String[] value = parseListValue((JsonArray) next.getValue());\r
493             ret.put(next.getKey(), value);\r
494           }\r
495         }\r
496 \r
497         return ret;\r
498       }\r
499 \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
504         }\r
505         return value;\r
506       }\r
507 \r
508       public JsonObject getCapabilities() {\r
509         return capabilities;\r
510       }\r
511 \r
512       public void setCapabilities(JsonObject capabilities) {\r
513         this.capabilities = capabilities;\r
514       }\r
515 \r
516       public Map<String, String[]> getCapabilityList() {\r
517         return jsonObject2Capabilities(this.capabilities);\r
518       }\r
519 \r
520       private Map<String, String[]> jsonObject2Capabilities(JsonObject capabilities) {\r
521         Map<String, String[]> ret = new HashMap<String, String[]>();\r
522 \r
523         Iterator<Entry<String, JsonElement>> iterator = capabilities.entrySet().iterator();\r
524         while (iterator.hasNext()) {\r
525           Entry<String, JsonElement> next = iterator.next();\r
526 \r
527           if (next.getValue().isJsonPrimitive() || next.getValue().isJsonObject()) {\r
528             ret.put(next.getKey(), new String[] {next.getValue().getAsString()});\r
529             continue;\r
530           }\r
531 \r
532           if (next.getValue().isJsonArray()) {\r
533             String[] value = parseListValue((JsonArray) next.getValue());\r
534             ret.put(next.getKey(), value);\r
535           }\r
536         }\r
537 \r
538         return ret;\r
539       }\r
540 \r
541       public JsonObject getProperties() {\r
542         return properties;\r
543       }\r
544 \r
545       public void setProperties(JsonObject properties) {\r
546         this.properties = properties;\r
547       }\r
548 \r
549       public Map<String, Object> getPropertyList() {\r
550         return jsonObject2Properties(properties);\r
551       }\r
552 \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
559         }\r
560         return ret;\r
561       }\r
562     }\r
563   }\r
564 \r
565 \r
566   public class RelationshipType {\r
567     private String type;\r
568     private RelationshipValue value;\r
569 \r
570     public String getType() {\r
571       return type;\r
572     }\r
573 \r
574     public void setType(String type) {\r
575       this.type = type;\r
576     }\r
577 \r
578     public RelationshipValue getValue() {\r
579       return value;\r
580     }\r
581 \r
582     public void setValue(RelationshipValue value) {\r
583       this.value = value;\r
584     }\r
585 \r
586     public class RelationshipValue {\r
587       private String derivedFrom;\r
588       private String[] validTargetTypes;\r
589 \r
590       public String getDerivedFrom() {\r
591         return derivedFrom;\r
592       }\r
593 \r
594       public void setDerivedFrom(String derivedFrom) {\r
595         this.derivedFrom = derivedFrom;\r
596       }\r
597 \r
598       public String[] getValid_target_types() {\r
599         return validTargetTypes;\r
600       }\r
601 \r
602       public void setValid_target_types(String[] validTargetTypes) {\r
603         this.validTargetTypes = validTargetTypes;\r
604       }\r
605     }\r
606   }\r
607 \r
608 \r
609   public class NodeType {\r
610     private String type;\r
611     private NodeTypeValue value;\r
612 \r
613     public String getType() {\r
614       return type;\r
615     }\r
616 \r
617     public void setType(String type) {\r
618       this.type = type;\r
619     }\r
620 \r
621     public NodeTypeValue getValue() {\r
622       return value;\r
623     }\r
624 \r
625     public void setValue(NodeTypeValue value) {\r
626       this.value = value;\r
627     }\r
628 \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
634 \r
635       public String getDerivedFrom() {\r
636         return derivedFrom;\r
637       }\r
638 \r
639       public void setDerived_from(String derivedFrom) {\r
640         this.derivedFrom = derivedFrom;\r
641       }\r
642 \r
643       public JsonObject getProperties() {\r
644         return properties;\r
645       }\r
646 \r
647       public void setProperties(JsonObject properties) {\r
648         this.properties = properties;\r
649       }\r
650 \r
651       public List<NodeTypeProperty> getPropertyList() {\r
652         return jsonObject2Properties(properties);\r
653       }\r
654 \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
664         }\r
665         return propertieList;\r
666       }\r
667 \r
668       public class NodeTypeProperty {\r
669         private String key;\r
670         private JsonObject value;\r
671 \r
672         public String getKey() {\r
673           return key;\r
674         }\r
675 \r
676         public void setKey(String key) {\r
677           this.key = key;\r
678         }\r
679 \r
680         /**\r
681          * get default value.\r
682          * @return default value\r
683          */\r
684         public String getDefaultValue() {\r
685           JsonElement defaultValue = value.get("default");\r
686           if (defaultValue == null || defaultValue.isJsonObject()) {\r
687             return "";\r
688           }\r
689 \r
690           return defaultValue.getAsString();\r
691         }\r
692 \r
693         public JsonObject getValue() {\r
694           return value;\r
695         }\r
696 \r
697         public void setValue(JsonObject value) {\r
698           this.value = value;\r
699         }\r
700       }\r
701 \r
702       public JsonObject[] getRequirements() {\r
703         return requirements;\r
704       }\r
705 \r
706       public void setRequirements(JsonObject[] requirements) {\r
707         this.requirements = requirements;\r
708       }\r
709 \r
710       public JsonObject getCapabilities() {\r
711         return capabilities;\r
712       }\r
713 \r
714       public void setCapabilities(JsonObject capabilities) {\r
715         this.capabilities = capabilities;\r
716       }\r
717     }\r
718   }\r
719 \r
720   public class Plan {\r
721     private String name;\r
722     private PlanValue value;\r
723 \r
724     public String getName() {\r
725       return name;\r
726     }\r
727 \r
728     public void setName(String name) {\r
729       this.name = name;\r
730     }\r
731 \r
732     public String getDescription() {\r
733       return value.getDescription();\r
734     }\r
735 \r
736     public String getReference() {\r
737       return value.getReference();\r
738     }\r
739 \r
740     public String getPlanLanguage() {\r
741       return value.getPlanLanguage();\r
742     }\r
743 \r
744     public List<PlanValue.PlanInput> getInputList() {\r
745       return value.getInputList();\r
746     }\r
747 \r
748     public PlanValue getValue() {\r
749       return value;\r
750     }\r
751 \r
752     public void setValue(PlanValue value) {\r
753       this.value = value;\r
754     }\r
755 \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
761 \r
762       public String getDescription() {\r
763         return description;\r
764       }\r
765 \r
766       public void setDescription(String description) {\r
767         this.description = description;\r
768       }\r
769 \r
770       public String getReference() {\r
771         return reference;\r
772       }\r
773 \r
774       public void setReference(String reference) {\r
775         this.reference = reference;\r
776       }\r
777 \r
778       public String getPlanLanguage() {\r
779         return planLanguage;\r
780       }\r
781 \r
782       public void setPlanLanguage(String planLanguage) {\r
783         this.planLanguage = planLanguage;\r
784       }\r
785 \r
786       public JsonObject getInputs() {\r
787         return inputs;\r
788       }\r
789 \r
790       public void setInputs(JsonObject inputs) {\r
791         this.inputs = inputs;\r
792       }\r
793 \r
794       public List<PlanInput> getInputList() {\r
795         return jsonObject2PlanInputList(inputs);\r
796 \r
797       }\r
798 \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
807           retList.add(ret);\r
808         }\r
809         return retList;\r
810       }\r
811 \r
812       public class PlanInput {\r
813         private String name;\r
814         private PlanInputValue value;\r
815 \r
816         public String getName() {\r
817           return name;\r
818         }\r
819 \r
820         public void setName(String name) {\r
821           this.name = name;\r
822         }\r
823 \r
824         public String getType() {\r
825           return value.getType();\r
826         }\r
827 \r
828         public String getDescription() {\r
829           return value.getDescription();\r
830         }\r
831 \r
832         public String getDefault() {\r
833           return value.getDefaultValue();\r
834         }\r
835 \r
836         public boolean isRequired() {\r
837           return value.isRequired();\r
838         }\r
839 \r
840         public PlanInputValue getValue() {\r
841           return value;\r
842         }\r
843 \r
844         public void setValue(PlanInputValue value) {\r
845           this.value = value;\r
846         }\r
847 \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
854 \r
855           public String getType() {\r
856             return type;\r
857           }\r
858 \r
859           public void setType(String type) {\r
860             this.type = type;\r
861           }\r
862 \r
863           public String getDescription() {\r
864             return description;\r
865           }\r
866 \r
867           public void setDescription(String description) {\r
868             this.description = description;\r
869           }\r
870 \r
871           public String getDefaultValue() {\r
872             return defaultValue;\r
873           }\r
874 \r
875           public void setDefaultValue(String defaultValue) {\r
876             this.defaultValue = defaultValue;\r
877           }\r
878 \r
879           public boolean isRequired() {\r
880             return required;\r
881           }\r
882 \r
883           public void setRequired(boolean required) {\r
884             this.required = required;\r
885           }\r
886         }\r
887       }\r
888     }\r
889   }\r
890 }\r