Binding generator v2 - uses statement - support list
[mdsal.git] / binding2 / mdsal-binding2-java-api-generator / src / main / twirl / org / opendaylight / mdsal / binding / javav2 / java / api / generator / unionTemplate.scala.txt
1 @*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  *@
8
9 @import org.opendaylight.mdsal.binding.javav2.generator.util.Types.getOuterClassName
10 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.fieldName
11 @import org.opendaylight.mdsal.binding.javav2.java.api.generator.util.TextTemplateUtil.asArguments
12 @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedType
13 @import org.opendaylight.mdsal.binding.javav2.model.api.GeneratedProperty
14
15 @(baseType: GeneratedType, importedNames: Map[String, String], finalProperties: List[GeneratedProperty],
16 parentProperties: List[GeneratedProperty], properties: List[GeneratedProperty], propertyList: String)
17 @for(property <- parentProperties) {
18     public @{baseType.getName}(@{importedNames.get(property.getName)} @{fieldName(property)}) {
19         super(@{fieldName(property)});
20     }
21 }
22
23 @for(property <- finalProperties) {
24     @*TO DO parentProperties + #[property] as argument to method below see  unionTemplate 84 *@
25     public @{baseType.getName}(@{importedNames.get(property.getName)} @{fieldName(property)}) {
26         super();
27         this.@{fieldName(property)} = @{fieldName(property)};
28         @for(otherProperty <- finalProperties) {
29             @if(property != otherProperty && !"value".equals(otherProperty.getName)) {
30                 this.@{fieldName(otherProperty)} = null;
31             }
32         }
33     }
34 }
35
36 @for(property <- properties) {
37     @if("char[]".equals(property.getReturnType.getName)) {
38         /**
39          * Constructor provided only for using in JMX. Don't use it for
40          * construction new object of this union type.
41          */
42         @@@{importedNames.get("constructorProperties")}("@{property.getName}")
43         public @{baseType.getName}(@{importedNames.get(property.getName)} @{fieldName(property)}) {
44             @{importedNames.get("string")} defVal = new @{importedNames.get("string")}(@{fieldName(property)});
45             @{baseType.getName} defInst = @{typeBuilder}.getDefaultInstance(defVal);
46             @for(otherProperty <- finalProperties) {
47                 this.@{fieldName(otherProperty)} = defInst.@{fieldName(otherProperty)};
48             }
49
50             this.@{fieldName(property)} = @{fieldName(property)} == null ? null : @{fieldName(property)}.clone();
51         }
52     }
53 }
54
55 /**
56  * Creates a copy from Source Object.
57  *
58  * @@param source Source object
59  */
60 public @{baseType.getName}(@{baseType.getName} source) {
61     @if(!parentProperties.isEmpty()) {
62         super(source);
63     } else {
64         @{propertyList}
65     }
66 }
67
68 @if(properties.isEmpty && !parentProperties.isEmpty) {
69     /**
70      * Creates a new instance from @{importedNames.get("superType")}
71      *
72      * @@param source Source object
73      */
74     public @{baseType.getName}(@{importedNames.get("superType")} source) {
75             super(source);
76     }
77 }
78
79 @typeBuilder() = {
80 @if(getOuterClassName(baseType) != null) {
81     @{getOuterClassName(baseType)}@{baseType.getName}Builder
82 } else {
83     @{baseType.getName}Builder
84 }
85 }