Add marker interface Builder<T> to generated Builders
authorEd Warnicke <eaw@cisco.com>
Mon, 5 Jan 2015 23:02:19 +0000 (17:02 -0600)
committerRobert Varga <rovarga@cisco.com>
Fri, 16 Jan 2015 14:13:16 +0000 (15:13 +0100)
Change-Id: I6e6e7f33143982e4a719ea6d6399947587a627a3
Signed-off-by: Ed Warnicke <eaw@cisco.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend

index d322833ad81ab9c69e8309462779a1f24c1a37fc..f632d86fb809414303485191463be7e08c932be2 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.Type
 import org.opendaylight.yangtools.yang.binding.Augmentable
 import org.opendaylight.yangtools.yang.binding.DataObject
 import org.opendaylight.yangtools.yang.binding.Identifiable
+import org.opendaylight.yangtools.concepts.Builder
 
 /**
  * Template for generating JAVA builder classes. 
@@ -48,6 +49,11 @@ class BuilderTemplate extends BaseTemplate {
      */
     val static BUILDER = 'Builder'
 
+    /**
+     * Constant with the name of the BuilderFor interface
+     */
+     val static BUILDERFOR = Builder.simpleName;
+
     /**
      * Constant with suffix for the classes which are generated from the builder classes.
      */
@@ -72,6 +78,7 @@ class BuilderTemplate extends BaseTemplate {
     new(GeneratedType genType) {
         super(genType)
         this.properties = propertiesFromMethods(createMethods)
+        importMap.put(Builder.simpleName, Builder.package.name)
     }
 
     /**
@@ -209,7 +216,7 @@ class BuilderTemplate extends BaseTemplate {
      */
     override body() '''
         «wrapToDocumentation(formatDataForJavaDoc(type))»
-        public class «type.name»«BUILDER» {
+        public class «type.name»«BUILDER» implements «BUILDERFOR» <«type.importedName»> {
 
             «generateFields(false)»