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