Added @ConstructorProperties annotation to constructors of classes generated from...
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / ClassTemplate.xtend
index 53f7d4c5cd045a352176b71ce5f16dacf70131ca..6c6fd13e6c85aefb48e23732caf845091b32b764 100644 (file)
@@ -12,6 +12,8 @@ import java.util.Collections\rimport java.util.Arrays
 import org.opendaylight.yangtools.sal.binding.model.api.Restrictions
 import com.google.common.collect.Range
 import java.util.regex.Pattern
+import com.google.common.io.BaseEncoding
+import java.beans.ConstructorProperties
 
 /**\r
  * Template for generating JAVA class. \r
@@ -95,7 +97,9 @@ class ClassTemplate extends BaseTemplate {
             «enumDeclarations»\r
             «constantsDeclarations»\r
             «generateFields»\r
+\r
             «constructors»\r
+\r
             «FOR field : properties SEPARATOR "\n"»\r
                 «field.getterMethod»\r
                 «IF !field.readOnly»\r
@@ -148,6 +152,9 @@ class ClassTemplate extends BaseTemplate {
     '''\r
     \r
     def protected allValuesConstructor() '''\r
+    «IF genTO.typedef && !allProperties.empty && allProperties.size == 1 && allProperties.get(0).name.equals("value")»\r
+        @«ConstructorProperties.importedName»("value")\r
+    «ENDIF»\r
     public «type.name»(«allProperties.asArgumentsDeclaration») {\r
         «IF false == parentProperties.empty»\r
             super(«parentProperties.asArguments»);\r
@@ -209,9 +216,21 @@ class ClassTemplate extends BaseTemplate {
             super(source);\r
     }\r
     '''\r
-    \r
 \r
-    \r
+    def protected defaultInstance() '''\r
+        «IF genTO.typedef && !allProperties.empty && !genTO.unionType»\r
+            «val prop = allProperties.get(0)»\r
+            public static «genTO.name» getDefaultInstance(String defaultValue) {\r
+                «IF "byte[]".equals(prop.returnType.name)»\r
+                    «BaseEncoding.importedName» baseEncoding = «BaseEncoding.importedName».base64(); \r
+                    return new «genTO.name»(baseEncoding.decode(defaultValue));\r
+                «ELSE»\r
+                    return new «genTO.name»(new «prop.returnType.importedName»(defaultValue));\r
+                «ENDIF»\r
+            } \r
+        «ENDIF»\r
+    '''\r
+\r
     /**\r
      * Template method which generates JAVA class declaration.\r
      * \r