Java builder pattern is not generated for rcp and grouping elements
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / GeneratorJavaFile.java
index 8f114b3536a2f54d061f7cc5e9df6a9f7e325f8e..c3716256c2674204dd374c8da780e16ffcdd1e88 100644 (file)
@@ -22,6 +22,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.Enumeration;
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
 import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.binding.Augmentable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -63,14 +64,19 @@ public final class GeneratorJavaFile {
         final List<File> result = new ArrayList<>();
         for (GeneratedType type : genTypes) {
             final File genFile = generateTypeToJavaFile(parentDirectory, type, interfaceGenerator, "");
-            final File genBuilderFile = generateTypeToJavaFile(parentDirectory, type, builderGenerator,
-                    BuilderGenerator.FILE_NAME_SUFFIX);
-
             if (genFile != null) {
                 result.add(genFile);
             }
-            if (genBuilderFile != null) {
-                result.add(genBuilderFile);
+            if (genFile != null) {
+                result.add(genFile);
+            }
+            // "rpc" and "grouping" elements do not implement Augmentable interface
+            if (isAugmentableIfcImplemented(type)) {
+                final File genBuilderFile = generateTypeToJavaFile(parentDirectory, type, builderGenerator,
+                        BuilderGenerator.FILE_NAME_SUFFIX);
+                if (genBuilderFile != null) {
+                    result.add(genBuilderFile);
+                }
             }
         }
         for (GeneratedTransferObject transferObject : genTransferObjects) {
@@ -125,6 +131,15 @@ public final class GeneratorJavaFile {
         }
         return file;
     }
+    
+    private boolean isAugmentableIfcImplemented(GeneratedType genType) {
+        for (Type implType : genType.getImplements()) {
+            if (implType.getFullyQualifiedName().equals(Augmentable.class.getName())) {
+                return true;
+            }
+        }
+        return false;
+    }
 
     private File packageToDirectory(final File parentDirectory, final String packageName) {
         if (packageName == null) {