Updated code generation
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / UnionTemplate.xtend
1 package org.opendaylight.yangtools.sal.java.api.generator\r
2 \r
3 import java.util.List\r
4 import java.util.Map\r
5 import org.opendaylight.yangtools.binding.generator.util.TypeConstants\r
6 import org.opendaylight.yangtools.sal.binding.model.api.Constant\r
7 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration\r
8 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty\r
9 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject\r
10 import org.opendaylight.yangtools.sal.binding.model.api.Type\r
11 import org.opendaylight.yangtools.binding.generator.util.Types\r
12 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType\r
13 \r
14 \r
15 /**\r
16  * Template for generating JAVA class. \r
17  */\r
18 class UnionTemplate extends ClassTemplate {\r
19 \r
20 \r
21     \r
22     /**\r
23      * Creates instance of this class with concrete <code>genType</code>.\r
24      * \r
25      * @param genType generated transfer object which will be transformed to JAVA class source code\r
26      */\r
27     new(GeneratedTransferObject genType) {\r
28         super(genType)\r
29     }\r
30     \r
31 \r
32     \r
33     \r
34     override constructors() '''\r
35     «unionConstructors»\r
36     «IF !allProperties.empty»\r
37     «copyConstructor»\r
38     «ENDIF»\r
39     «IF properties.empty && !parentProperties.empty »\r
40         «parentConstructor»\r
41     «ENDIF»\r
42     '''\r
43     \r
44 \r
45      def unionConstructors() '''\r
46         «FOR property : finalProperties SEPARATOR "\n"»\r
47                 «val propertyAndTopParentProperties = parentProperties + #[property]»\r
48                 public «type.name»(«propertyAndTopParentProperties.asArgumentsDeclaration») {\r
49                     super(«parentProperties.asArguments»);\r
50                     this.«property.fieldName» = «property.fieldName»;\r
51                     «FOR other : finalProperties»\r
52                     «IF property != other»this.«other.fieldName» = null;«ENDIF»\r
53                     «ENDFOR»\r
54                 }\r
55         «ENDFOR»\r
56      ''' \r
57 }\r