Changed interface sal.binding.model.api.CodeGenerator 21/821/2
authormsunal <msunal@cisco.com>
Wed, 7 Aug 2013 15:00:08 +0000 (17:00 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Wed, 14 Aug 2013 12:19:53 +0000 (12:19 +0000)
- changed return type of method signature to "String generate(Type type)"
- added method "String getUnitName(Type type)" which return name of generated unit
- refactored GeneratorJavaFile with focusing on code generators

Signed-off-by: Martin Sunal <msunal@cisco.com>
14 files changed:
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/AbstractCodeGenerator.java [deleted file]
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumGenerator.java
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/GeneratorJavaFile.java
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceGenerator.java
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceTemplate.xtend
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/TOGenerator.java
code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java
code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/GeneratorJavaFileTest.java
code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/CodeGenerator.java
code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/maven/sal/api/gen/plugin/CodeGeneratorImpl.java

diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/AbstractCodeGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/AbstractCodeGenerator.java
deleted file mode 100644 (file)
index b5220dd..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-package org.opendaylight.yangtools.sal.java.api.generator;\r
-\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
-\r
-public abstract class AbstractCodeGenerator implements CodeGenerator {\r
-       \r
-       @Override\r
-    public boolean isAcceptable(Type type) {\r
-       return (type instanceof GeneratedType  && !(type instanceof GeneratedTransferObject));\r
-    }\r
-\r
-       \r
-}\r
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
index 96c7445e9bf2fd0970f4526bec03285f3877cf65..a56a79ebf7ba3a95b8287ec19adf8f5280f82bd2 100644 (file)
@@ -127,7 +127,7 @@ class BuilderTemplate {
         }
     }
 
-    def generate() {
+    def String generate() {
         val body = generateBody
         val pkgAndImports = generatePkgAndImports
         return pkgAndImports.toString + body.toString
index d1ec9c56ac624c7476dfba6df2ad9b252ab3a19c..b32993b040436df70f8d40edecf85711be5e9e54 100644 (file)
@@ -7,26 +7,30 @@
  */\r
 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.sal.java.api.generator.EnumTemplate;\r
 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;\r
 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration;\r
 import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
 \r
-public class EnumGenerator extends AbstractCodeGenerator {\r
+public class EnumGenerator implements CodeGenerator {\r
+\r
+    @Override\r
+    public boolean isAcceptable(Type type) {\r
+        return type instanceof Enumeration;\r
+    }\r
 \r
     @Override\r
-    public Writer generate(Type type) throws IOException {\r
-        final Writer writer = new StringWriter();\r
+    public String generate(Type type) {\r
         if (type instanceof Enumeration) {\r
             final Enumeration enums = (Enumeration) type;\r
             final EnumTemplate enumTemplate = new EnumTemplate(enums);\r
-            writer.write(enumTemplate.generate().toString());\r
+            return enumTemplate.generate();\r
         }\r
-        return writer;\r
+        return "";\r
+    }\r
+\r
+    @Override\r
+    public String getUnitName(Type type) {\r
+        return type.getName();\r
     }\r
 \r
 }\r
index e762ed7267beb7048b21a832fb6acdf77f68ec53..741835d28f4c91970459646fb55e9f7e010e5abf 100644 (file)
@@ -10,7 +10,7 @@ class EnumTemplate {
         this.enums = enums
     }
     
-    def generate() {
+    def String generate() {
         val body = generateBody
         val pkg = generatePkg
         return pkg.toString + body.toString
index 40480ff0c42992c66fec40b1c5f83fde96a328f8..895b1972c8bdcaa5f504d33d4fa10177d4b32d25 100644 (file)
@@ -11,93 +11,44 @@ import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileWriter;
 import java.io.IOException;
-import java.io.Writer;
 import java.util.ArrayList;
-import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;
-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;
 
 public final class GeneratorJavaFile {
 
     private static final Logger log = LoggerFactory.getLogger(GeneratorJavaFile.class);
-    private final CodeGenerator interfaceGenerator;
-    private final TOGenerator TOGenerator;
-    private final EnumGenerator enumGenerator;
-    private final BuilderGenerator builderGenerator;
+    private final List<CodeGenerator> generators = new ArrayList<>();
 
-    private final Set<GeneratedType> genTypes;
-    private final Set<GeneratedTransferObject> genTransferObjects;
-    private final Set<Enumeration> enumerations;
+    private final Set<? extends Type> types;
 
-    public GeneratorJavaFile(final CodeGenerator codeGenerator, final Set<GeneratedType> types) {
-        this.interfaceGenerator = codeGenerator;
-        this.genTypes = types;
-        this.genTransferObjects = new HashSet<>();
-        this.enumerations = new HashSet<>();
-        this.TOGenerator = new TOGenerator();
-        this.enumGenerator = new EnumGenerator();
-        this.builderGenerator = new BuilderGenerator();
-    }
-
-    public GeneratorJavaFile(final Set<GeneratedType> types, final Set<GeneratedTransferObject> genTransferObjects,
-            final Set<Enumeration> enumerations) {
-        this.interfaceGenerator = new InterfaceGenerator();
-        this.TOGenerator = new TOGenerator();
-        this.enumGenerator = new EnumGenerator();
-        this.builderGenerator = new BuilderGenerator();
-
-        this.genTypes = types;
-        this.genTransferObjects = genTransferObjects;
-        this.enumerations = enumerations;
+    public GeneratorJavaFile(final Set<? extends Type> types) {
+       this.types = types;
+       generators.add(new InterfaceGenerator());
+       generators.add(new TOGenerator());
+       generators.add(new EnumGenerator());
+       generators.add(new BuilderGenerator());
     }
 
     public List<File> generateToFile(final File parentDirectory) throws IOException {
         final List<File> result = new ArrayList<>();
-        for (GeneratedType type : genTypes) {
-            final File genFile = generateTypeToJavaFile(parentDirectory, type, interfaceGenerator, "");
-            
-            if (genFile != null) {
-                result.add(genFile);
-            }
-            
-            if(builderGenerator.isAcceptable(type)){
-                   final File genBuilderFile = generateTypeToJavaFile(parentDirectory, type, builderGenerator,
-                           BuilderGenerator.FILE_NAME_SUFFIX);
-       
-                   if (genBuilderFile != null) {
-                       result.add(genBuilderFile);
-                   }
-            }
-        }
-        for (GeneratedTransferObject transferObject : genTransferObjects) {
-            final File genFile = generateTypeToJavaFile(parentDirectory, transferObject, TOGenerator, "");
-
-            if (genFile != null) {
-                result.add(genFile);
-            }
-        }
-
-        for (Enumeration enumeration : enumerations) {
-            final File genFile = generateTypeToJavaFile(parentDirectory, enumeration, enumGenerator, "");
-
-            if (genFile != null) {
-                result.add(genFile);
+        for (Type type : types) {
+            for (CodeGenerator generator : generators) {
+                File generatedJavaFile = generateTypeToJavaFile(parentDirectory, type, generator);
+                if (generatedJavaFile != null) {
+                    result.add(generatedJavaFile);
+                }
             }
         }
-
         return result;
     }
 
-    private File generateTypeToJavaFile(final File parentDir, final Type type, final CodeGenerator generator, String fileNameSuffix)
+    private File generateTypeToJavaFile(final File parentDir, final Type type, final CodeGenerator generator)
             throws IOException {
         if (parentDir == null) {
             log.warn("Parent Directory not specified, files will be generated "
@@ -116,30 +67,27 @@ public final class GeneratorJavaFile {
         if (!packageDir.exists()) {
             packageDir.mkdirs();
         }
-        final File file = new File(packageDir, type.getName() + fileNameSuffix + ".java");
-        try (final FileWriter fw = new FileWriter(file)) {
-            file.createNewFile();
-
-            try (final BufferedWriter bw = new BufferedWriter(fw)) {
-                Writer writer = generator.generate(type);
-                bw.write(writer.toString());
+        
+        if (generator.isAcceptable(type)) {
+            String generatedCode = generator.generate(type);
+            if (generatedCode.isEmpty()) {
+                throw new IllegalStateException("Generated code should not be empty!");
             }
-        } catch (IOException e) {
-            log.error(e.getMessage());
-            throw new IOException(e.getMessage());
-        }
-        return file;
-    }
-    
-    private boolean isAugmentableIfcImplemented(GeneratedType genType) {
-        for (Type implType : genType.getImplements()) {
-            if (implType.getFullyQualifiedName().equals(Augmentable.class.getName())) {
-                return true;
+            final File file = new File(packageDir, generator.getUnitName(type) + ".java");
+            try (final FileWriter fw = new FileWriter(file)) {
+                file.createNewFile();
+                try (final BufferedWriter bw = new BufferedWriter(fw)) {
+                    bw.write(generatedCode);
+                }
+            } catch (IOException e) {
+                log.error(e.getMessage());
+                throw new IOException(e.getMessage());
             }
+            return file;
         }
-        return false;
+        return null;
     }
-
+    
     private File packageToDirectory(final File parentDirectory, final String packageName) {
         if (packageName == null) {
             throw new IllegalArgumentException("Package Name cannot be NULL!");
index dea5b8b582509b96bf5fa3988e67a09017307801..c2f610d8dbdcdd5a7e3dbcdc7c1b27d45fc93338 100644 (file)
@@ -7,29 +7,31 @@
  */\r
 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.sal.java.api.generator.InterfaceTemplate;\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
 \r
-public final class InterfaceGenerator extends AbstractCodeGenerator {\r
+public final class InterfaceGenerator implements CodeGenerator {\r
+\r
+    @Override\r
+    public boolean isAcceptable(Type type) {\r
+        return type instanceof GeneratedType && !(type instanceof GeneratedTransferObject);\r
+    }\r
 \r
     @Override\r
-    public Writer generate(Type type) throws IOException {\r
-        final Writer writer = new StringWriter();\r
+    public String generate(Type type) {\r
         if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
             final GeneratedType genType = (GeneratedType) type;\r
             final InterfaceTemplate interfaceTemplate = new InterfaceTemplate(genType);\r
-            writer.write(interfaceTemplate.generate().toString());\r
+            return interfaceTemplate.generate();\r
         }\r
-        return writer;\r
+        return "";\r
     }\r
-    \r
-    \r
-    \r
+\r
+    @Override\r
+    public String getUnitName(Type type) {\r
+        return type.getName();\r
+    }\r
+\r
 }\r
index f70afadb10ef38d4f2f235663af064daccefc5c0..ce3a91ba7446c88315c4b8194686d9161a734394 100644 (file)
@@ -33,7 +33,7 @@ class InterfaceTemplate {
         enclosedGeneratedTypes = genType.enclosedTypes
     }
     
-    def generate() {
+    def String generate() {
         val body = generateBody
         val pkgAndImports = generatePkgAndImports
         return pkgAndImports.toString + body.toString
index a97385c57d9b12501185946bf6f6867264c14474..230fb3b89002b94d18e33864e35df6a8797d9203 100644 (file)
@@ -7,31 +7,30 @@
  */\r
 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.sal.java.api.generator.ClassTemplate;\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.Type;\r
 \r
-public final class TOGenerator extends AbstractCodeGenerator {\r
+public final class TOGenerator implements CodeGenerator {\r
 \r
     @Override\r
-    public Writer generate(Type type) throws IOException {\r
-        final Writer writer = new StringWriter();\r
+    public String generate(Type type) {\r
         if (type instanceof GeneratedTransferObject) {\r
             final GeneratedTransferObject genTO = (GeneratedTransferObject) type;\r
             final ClassTemplate template = new ClassTemplate(genTO);\r
-            writer.write(template.generate().toString());\r
+            return template.generate();\r
         }\r
-        return writer;\r
+        return "";\r
     }\r
-    \r
+\r
     @Override\r
     public boolean isAcceptable(Type type) {\r
-       return type instanceof GeneratedTransferObject;\r
+        return type instanceof GeneratedTransferObject;\r
+    }\r
+\r
+    @Override\r
+    public String getUnitName(Type type) {\r
+        return type.getName();\r
     }\r
 \r
 }\r
index fdd445ef8e0629bed6fdeeff240d50901571414e..d68c66232840b574464818cc55e2cf6ce9c8fabf 100644 (file)
@@ -1,10 +1,10 @@
 package org.opendaylight.yangtools.sal.java.api.generator.test;\r
 \r
-import static org.junit.Assert.*;\r
+import static org.junit.Assert.assertEquals;\r
+import static org.junit.Assert.assertNotNull;\r
+import static org.junit.Assert.assertTrue;\r
 \r
 import java.io.File;\r
-import java.io.IOException;\r
-import java.io.Writer;\r
 import java.util.ArrayList;\r
 import java.util.List;\r
 import java.util.Set;\r
@@ -73,21 +73,12 @@ public class ClassCodeGeneratorTest {
                     }\r
 \r
                     final TOGenerator clsGen = new TOGenerator();\r
-                    try {\r
-                        final Writer writer = clsGen.generate(genTO);\r
-                        assertNotNull(writer);\r
+                    final String outputStr = clsGen.generate(genTO);\r
 \r
-                        final String outputStr = writer.toString();\r
-                        writer.close();\r
-\r
-                        assertNotNull(outputStr);\r
-                        assertTrue(outputStr\r
-                                .contains("public CompositeKeyListKey(String Key2, "\r
-                                        + "Byte Key1)"));\r
-\r
-                    } catch (IOException e) {\r
-                        e.printStackTrace();\r
-                    }\r
+                    assertNotNull(outputStr);\r
+                    assertTrue(outputStr\r
+                            .contains("public CompositeKeyListKey(String Key2, "\r
+                                    + "Byte Key1)"));\r
 \r
                     assertEquals(2, propertyCount);\r
                     genTOsCount++;\r
@@ -120,19 +111,10 @@ public class ClassCodeGeneratorTest {
         final GeneratedTransferObject genTO = toBuilder.toInstance();\r
 \r
         final TOGenerator clsGen = new TOGenerator();\r
-        try {\r
-            final Writer writer = clsGen.generate(genTO);\r
-            assertNotNull(writer);\r
-\r
-            final String outputStr = writer.toString();\r
-            writer.close();\r
+        final String outputStr = clsGen.generate(genTO);\r
 \r
-            assertNotNull(outputStr);\r
-            assertTrue(outputStr.contains("public DefCtor()"));\r
-\r
-        } catch (IOException e) {\r
-            e.printStackTrace();\r
-        }\r
+        assertNotNull(outputStr);\r
+        assertTrue(outputStr.contains("public DefCtor()"));\r
     }\r
 \r
     @Test\r
@@ -151,11 +133,6 @@ public class ClassCodeGeneratorTest {
         toBuilder.addToStringProperty(propBuilder);\r
         final GeneratedTransferObject genTO = toBuilder.toInstance();\r
         final TOGenerator clsGen = new TOGenerator();\r
-        try {\r
-            final Writer writer = clsGen.generate(genTO);\r
-            assertNotNull(writer);\r
-        } catch (IOException e) {\r
-            e.printStackTrace();\r
-        }\r
+        assertNotNull(clsGen.generate(genTO));\r
     }\r
 }\r
index 1f392c02fee2ab740d253329284ab59eebf94d58..397e23f36b471e5a8dd7f0148958a828d5db2c11 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.sal.java.api.generator.test;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
@@ -31,13 +30,10 @@ import org.opendaylight.yangtools.binding.generator.util.Types;
 import org.opendaylight.yangtools.binding.generator.util.generated.type.builder.GeneratedTypeBuilderImpl;
 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;
-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.sal.binding.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.yangtools.sal.java.api.generator.GeneratorJavaFile;
-import org.opendaylight.yangtools.sal.java.api.generator.InterfaceGenerator;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
@@ -87,8 +83,7 @@ public class GeneratorJavaFileTest {
         GeneratedTypeBuilder gtb = new GeneratedTypeBuilderImpl("org.opendaylight.controller.gen", "Type4");
         gtb.addImplementsType(Types.augmentableTypeFor(gtb));
         types.add(gtb.toInstance());
-        GeneratorJavaFile generator = new GeneratorJavaFile(
-                new InterfaceGenerator(), types);
+        GeneratorJavaFile generator = new GeneratorJavaFile(types);
         generator.generateToFile(new File(PATH));
 
         String[] files = new File(PATH + FS + "org" + FS + "opendaylight" + FS
@@ -100,7 +95,7 @@ public class GeneratorJavaFileTest {
         assertTrue(filesList.contains("Type2.java"));
         assertTrue(filesList.contains("Type3.java"));
         assertTrue(filesList.contains("Type4.java"));
-        assertTrue(filesList.contains("Type1Builder.java"));
+        assertTrue(filesList.contains("Type4Builder.java"));
     }
 
     @Ignore
@@ -120,28 +115,9 @@ public class GeneratorJavaFileTest {
 
         final Set<Module> modulesToBuild = parser.parseYangModels(sourceFiles);
 
-        final SchemaContext context = parser
-                .resolveSchemaContext(modulesToBuild);
+        final SchemaContext context = parser.resolveSchemaContext(modulesToBuild);
         final List<Type> types = bindingGenerator.generateTypes(context);
-        final Set<GeneratedType> typesToGenerate = new HashSet<GeneratedType>();
-        final Set<GeneratedTransferObject> tosToGenerate = new HashSet<GeneratedTransferObject>();
-        final Set<Enumeration> enumerationToGenerate = new HashSet<Enumeration>();
-        for (Type type : types) {
-            if (type instanceof GeneratedType
-                    && !(type instanceof GeneratedTransferObject)) {
-                typesToGenerate.add((GeneratedType) type);
-            }
-
-            if (type instanceof GeneratedTransferObject) {
-                tosToGenerate.add((GeneratedTransferObject) type);
-            }
-            if (type instanceof Enumeration) {
-               enumerationToGenerate.add((Enumeration) type);
-            }
-        }
-
-        final GeneratorJavaFile generator = new GeneratorJavaFile(
-                typesToGenerate, tosToGenerate, enumerationToGenerate);
+        final GeneratorJavaFile generator = new GeneratorJavaFile(new HashSet<>(types));
         generator.generateToFile(new File(GENERATOR_OUTPUT_PATH));
 
         JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
index 2f573106d0f3c07db7d054b5896fd43b4badad52..df6a5f6ebbe04d052f33951e7557afc53abc0896 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.sal.binding.model.api;\r
 \r
 import java.io.IOException;\r
-import java.io.Writer;\r
 \r
 /**\r
  *\r
@@ -17,19 +16,22 @@ import java.io.Writer;
 public interface CodeGenerator {\r
 \r
     /**\r
-     *\r
-     * @param type\r
-     * @return\r
+     * @param type Input type to be processed\r
+     * @return generated code\r
      * @throws IOException\r
      */\r
-    Writer generate(Type type) throws IOException;\r
-    \r
+    String generate(Type type);\r
+\r
     /**\r
-     * \r
-     * \r
      * @param type Input type to be processed\r
      * @return true if type is acceptable for processing.\r
      */\r
-       boolean isAcceptable(Type type);\r
+    boolean isAcceptable(Type type);\r
+\r
+    /**\r
+     * @param type Input type to be processed\r
+     * @return name of generated unit\r
+     */\r
+    String getUnitName(Type type);\r
 \r
 }\r
index 5266f2b4c8286e1c3d402bde192e8c591bdf93fd..c03af87d031f35fe9ffa7710276f1a81570f464f 100644 (file)
@@ -19,9 +19,6 @@ import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
 import org.opendaylight.yangtools.sal.binding.generator.api.BindingGenerator;
 import org.opendaylight.yangtools.sal.binding.generator.impl.BindingGeneratorImpl;
-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.sal.java.api.generator.GeneratorJavaFile;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -39,21 +36,7 @@ public final class CodeGeneratorImpl implements CodeGenerator {
 
         final BindingGenerator bindingGenerator = new BindingGeneratorImpl();
         final List<Type> types = bindingGenerator.generateTypes(context, yangModules);
-        final Set<GeneratedType> typesToGenerate = new HashSet<>();
-        final Set<GeneratedTransferObject> tosToGenerate = new HashSet<>();
-        final Set<Enumeration> enumsToGenerate = new HashSet<>();
-
-        for (Type type : types) {
-            if (type instanceof GeneratedTransferObject) {
-                tosToGenerate.add((GeneratedTransferObject) type);
-            } else if (type instanceof GeneratedType) {
-                typesToGenerate.add((GeneratedType) type);
-            } else if (type instanceof Enumeration) {
-                enumsToGenerate.add((Enumeration) type);
-            }
-        }
-
-        final GeneratorJavaFile generator = new GeneratorJavaFile(typesToGenerate, tosToGenerate, enumsToGenerate);
+        final GeneratorJavaFile generator = new GeneratorJavaFile(new HashSet<>(types));
 
         return generator.generateToFile(outputBaseDir);
     }