Changed interface sal.binding.model.api.CodeGenerator
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / BuilderGenerator.java
index 79ba1ac175992c258a35d02694af476e89f3189d..08ff99d1965644e01eefcbe813fdb014845e4b86 100644 (file)
@@ -1,35 +1,41 @@
 package org.opendaylight.yangtools.sal.java.api.generator;\r
 \r
-import java.io.IOException;\r
-import java.io.StringWriter;\r
-import java.io.Writer;\r
-\r
-import org.opendaylight.yangtools.binding.generator.util.Types;\r
-import org.opendaylight.yangtools.sal.java.api.generator.BuilderTemplate;\r
 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;\r
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
-import org.opendaylight.yangtools.yang.binding.DataObject;\r
+import org.opendaylight.yangtools.yang.binding.Augmentable;\r
+\r
+public final class BuilderGenerator implements CodeGenerator {\r
 \r
-public final class BuilderGenerator extends AbstractCodeGenerator {\r
+    public static final String BUILDER = "Builder";\r
 \r
-    public static final String FILE_NAME_SUFFIX = "Builder";\r
+    @Override\r
+    public boolean isAcceptable(Type type) {\r
+        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
+            for (Type t : ((GeneratedType) type).getImplements()) {\r
+                // "rpc" and "grouping" elements do not implement Augmentable\r
+                if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) {\r
+                    return true;\r
+                }\r
+            }\r
+        }\r
+        return false;\r
+    }\r
 \r
     @Override\r
-    public Writer generate(Type type) throws IOException {\r
-        final Writer writer = new StringWriter();\r
-        if (type instanceof GeneratedType  && isAcceptable((GeneratedType )type)) {\r
+    public String generate(Type type) {\r
+        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
             final GeneratedType genType = (GeneratedType) type;\r
             final BuilderTemplate template = new BuilderTemplate(genType);\r
-            writer.write(template.generate().toString());\r
+            return template.generate();\r
         }\r
-        return writer;\r
+        return "";\r
     }\r
 \r
-    public boolean isAcceptable(Type type) {\r
-       return super.isAcceptable(type) && type instanceof GeneratedType \r
-       && ((GeneratedType )type).getImplements().contains(Types.typeForClass(DataObject.class));\r
+    @Override\r
+    public String getUnitName(Type type) {\r
+        return type.getName() + BUILDER;\r
     }\r
 \r
 }\r