From: msunal Date: Wed, 7 Aug 2013 15:00:08 +0000 (+0200) Subject: Changed interface sal.binding.model.api.CodeGenerator X-Git-Tag: yangtools-0.1.0~72 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=579ce4a0484450d19a3e48b58c52c5196d144bb3;p=yangtools.git Changed interface sal.binding.model.api.CodeGenerator - 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 --- 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 index b5220dd885..0000000000 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/AbstractCodeGenerator.java +++ /dev/null @@ -1,16 +0,0 @@ -package org.opendaylight.yangtools.sal.java.api.generator; - -import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator; -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; - -public abstract class AbstractCodeGenerator implements CodeGenerator { - - @Override - public boolean isAcceptable(Type type) { - return (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)); - } - - -} diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java index 79ba1ac175..08ff99d196 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderGenerator.java @@ -1,35 +1,41 @@ package org.opendaylight.yangtools.sal.java.api.generator; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -import org.opendaylight.yangtools.binding.generator.util.Types; -import org.opendaylight.yangtools.sal.java.api.generator.BuilderTemplate; import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator; 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.DataObject; +import org.opendaylight.yangtools.yang.binding.Augmentable; + +public final class BuilderGenerator implements CodeGenerator { -public final class BuilderGenerator extends AbstractCodeGenerator { + public static final String BUILDER = "Builder"; - public static final String FILE_NAME_SUFFIX = "Builder"; + @Override + public boolean isAcceptable(Type type) { + if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) { + for (Type t : ((GeneratedType) type).getImplements()) { + // "rpc" and "grouping" elements do not implement Augmentable + if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) { + return true; + } + } + } + return false; + } @Override - public Writer generate(Type type) throws IOException { - final Writer writer = new StringWriter(); - if (type instanceof GeneratedType && isAcceptable((GeneratedType )type)) { + public String generate(Type type) { + if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) { final GeneratedType genType = (GeneratedType) type; final BuilderTemplate template = new BuilderTemplate(genType); - writer.write(template.generate().toString()); + return template.generate(); } - return writer; + return ""; } - public boolean isAcceptable(Type type) { - return super.isAcceptable(type) && type instanceof GeneratedType - && ((GeneratedType )type).getImplements().contains(Types.typeForClass(DataObject.class)); + @Override + public String getUnitName(Type type) { + return type.getName() + BUILDER; } } diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend index 96c7445e9b..a56a79ebf7 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend @@ -127,7 +127,7 @@ class BuilderTemplate { } } - def generate() { + def String generate() { val body = generateBody val pkgAndImports = generatePkgAndImports return pkgAndImports.toString + body.toString diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend index 5bd4756164..9314954437 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend @@ -288,4 +288,4 @@ class ClassTemplate { GeneratorUtil.getExplicitType(genTO, type, imports) } -} \ No newline at end of file +} diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumGenerator.java index d1ec9c56ac..b32993b040 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumGenerator.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumGenerator.java @@ -7,26 +7,30 @@ */ package org.opendaylight.yangtools.sal.java.api.generator; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -import org.opendaylight.yangtools.sal.java.api.generator.EnumTemplate; 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.Type; -public class EnumGenerator extends AbstractCodeGenerator { +public class EnumGenerator implements CodeGenerator { + + @Override + public boolean isAcceptable(Type type) { + return type instanceof Enumeration; + } @Override - public Writer generate(Type type) throws IOException { - final Writer writer = new StringWriter(); + public String generate(Type type) { if (type instanceof Enumeration) { final Enumeration enums = (Enumeration) type; final EnumTemplate enumTemplate = new EnumTemplate(enums); - writer.write(enumTemplate.generate().toString()); + return enumTemplate.generate(); } - return writer; + return ""; + } + + @Override + public String getUnitName(Type type) { + return type.getName(); } } diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend index e762ed7267..741835d28f 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/EnumTemplate.xtend @@ -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 diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/GeneratorJavaFile.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/GeneratorJavaFile.java index 40480ff0c4..895b1972c8 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/GeneratorJavaFile.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/GeneratorJavaFile.java @@ -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 generators = new ArrayList<>(); - private final Set genTypes; - private final Set genTransferObjects; - private final Set enumerations; + private final Set types; - public GeneratorJavaFile(final CodeGenerator codeGenerator, final Set 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 types, final Set genTransferObjects, - final Set 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 types) { + this.types = types; + generators.add(new InterfaceGenerator()); + generators.add(new TOGenerator()); + generators.add(new EnumGenerator()); + generators.add(new BuilderGenerator()); } public List generateToFile(final File parentDirectory) throws IOException { final List 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!"); diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceGenerator.java index dea5b8b582..c2f610d8db 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceGenerator.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceGenerator.java @@ -7,29 +7,31 @@ */ package org.opendaylight.yangtools.sal.java.api.generator; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -import org.opendaylight.yangtools.sal.java.api.generator.InterfaceTemplate; import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator; 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; -public final class InterfaceGenerator extends AbstractCodeGenerator { +public final class InterfaceGenerator implements CodeGenerator { + + @Override + public boolean isAcceptable(Type type) { + return type instanceof GeneratedType && !(type instanceof GeneratedTransferObject); + } @Override - public Writer generate(Type type) throws IOException { - final Writer writer = new StringWriter(); + public String generate(Type type) { if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) { final GeneratedType genType = (GeneratedType) type; final InterfaceTemplate interfaceTemplate = new InterfaceTemplate(genType); - writer.write(interfaceTemplate.generate().toString()); + return interfaceTemplate.generate(); } - return writer; + return ""; } - - - + + @Override + public String getUnitName(Type type) { + return type.getName(); + } + } diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceTemplate.xtend index f70afadb10..ce3a91ba74 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/InterfaceTemplate.xtend @@ -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 diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/TOGenerator.java b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/TOGenerator.java index a97385c57d..230fb3b890 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/TOGenerator.java +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/TOGenerator.java @@ -7,31 +7,30 @@ */ package org.opendaylight.yangtools.sal.java.api.generator; -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -import org.opendaylight.yangtools.sal.java.api.generator.ClassTemplate; import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator; import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject; import org.opendaylight.yangtools.sal.binding.model.api.Type; -public final class TOGenerator extends AbstractCodeGenerator { +public final class TOGenerator implements CodeGenerator { @Override - public Writer generate(Type type) throws IOException { - final Writer writer = new StringWriter(); + public String generate(Type type) { if (type instanceof GeneratedTransferObject) { final GeneratedTransferObject genTO = (GeneratedTransferObject) type; final ClassTemplate template = new ClassTemplate(genTO); - writer.write(template.generate().toString()); + return template.generate(); } - return writer; + return ""; } - + @Override public boolean isAcceptable(Type type) { - return type instanceof GeneratedTransferObject; + return type instanceof GeneratedTransferObject; + } + + @Override + public String getUnitName(Type type) { + return type.getName(); } } diff --git a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java index fdd445ef8e..d68c662328 100644 --- a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java +++ b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/ClassCodeGeneratorTest.java @@ -1,10 +1,10 @@ package org.opendaylight.yangtools.sal.java.api.generator.test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.io.File; -import java.io.IOException; -import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -73,21 +73,12 @@ public class ClassCodeGeneratorTest { } final TOGenerator clsGen = new TOGenerator(); - try { - final Writer writer = clsGen.generate(genTO); - assertNotNull(writer); + final String outputStr = clsGen.generate(genTO); - final String outputStr = writer.toString(); - writer.close(); - - assertNotNull(outputStr); - assertTrue(outputStr - .contains("public CompositeKeyListKey(String Key2, " - + "Byte Key1)")); - - } catch (IOException e) { - e.printStackTrace(); - } + assertNotNull(outputStr); + assertTrue(outputStr + .contains("public CompositeKeyListKey(String Key2, " + + "Byte Key1)")); assertEquals(2, propertyCount); genTOsCount++; @@ -120,19 +111,10 @@ public class ClassCodeGeneratorTest { final GeneratedTransferObject genTO = toBuilder.toInstance(); final TOGenerator clsGen = new TOGenerator(); - try { - final Writer writer = clsGen.generate(genTO); - assertNotNull(writer); - - final String outputStr = writer.toString(); - writer.close(); + final String outputStr = clsGen.generate(genTO); - assertNotNull(outputStr); - assertTrue(outputStr.contains("public DefCtor()")); - - } catch (IOException e) { - e.printStackTrace(); - } + assertNotNull(outputStr); + assertTrue(outputStr.contains("public DefCtor()")); } @Test @@ -151,11 +133,6 @@ public class ClassCodeGeneratorTest { toBuilder.addToStringProperty(propBuilder); final GeneratedTransferObject genTO = toBuilder.toInstance(); final TOGenerator clsGen = new TOGenerator(); - try { - final Writer writer = clsGen.generate(genTO); - assertNotNull(writer); - } catch (IOException e) { - e.printStackTrace(); - } + assertNotNull(clsGen.generate(genTO)); } } diff --git a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/GeneratorJavaFileTest.java b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/GeneratorJavaFileTest.java index 1f392c02fe..397e23f36b 100644 --- a/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/GeneratorJavaFileTest.java +++ b/code-generator/binding-java-api-generator/src/test/java/org/opendaylight/yangtools/sal/java/api/generator/test/GeneratorJavaFileTest.java @@ -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 modulesToBuild = parser.parseYangModels(sourceFiles); - final SchemaContext context = parser - .resolveSchemaContext(modulesToBuild); + final SchemaContext context = parser.resolveSchemaContext(modulesToBuild); final List types = bindingGenerator.generateTypes(context); - final Set typesToGenerate = new HashSet(); - final Set tosToGenerate = new HashSet(); - final Set enumerationToGenerate = new HashSet(); - 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(); diff --git a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/CodeGenerator.java b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/CodeGenerator.java index 2f573106d0..df6a5f6ebb 100644 --- a/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/CodeGenerator.java +++ b/code-generator/binding-model-api/src/main/java/org/opendaylight/yangtools/sal/binding/model/api/CodeGenerator.java @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.sal.binding.model.api; import java.io.IOException; -import java.io.Writer; /** * @@ -17,19 +16,22 @@ import java.io.Writer; public interface CodeGenerator { /** - * - * @param type - * @return + * @param type Input type to be processed + * @return generated code * @throws IOException */ - Writer generate(Type type) throws IOException; - + String generate(Type type); + /** - * - * * @param type Input type to be processed * @return true if type is acceptable for processing. */ - boolean isAcceptable(Type type); + boolean isAcceptable(Type type); + + /** + * @param type Input type to be processed + * @return name of generated unit + */ + String getUnitName(Type type); } diff --git a/code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/maven/sal/api/gen/plugin/CodeGeneratorImpl.java b/code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/maven/sal/api/gen/plugin/CodeGeneratorImpl.java index 5266f2b4c8..c03af87d03 100644 --- a/code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/maven/sal/api/gen/plugin/CodeGeneratorImpl.java +++ b/code-generator/maven-sal-api-gen-plugin/src/main/java/org/opendaylight/yangtools/maven/sal/api/gen/plugin/CodeGeneratorImpl.java @@ -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 types = bindingGenerator.generateTypes(context, yangModules); - final Set typesToGenerate = new HashSet<>(); - final Set tosToGenerate = new HashSet<>(); - final Set 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); }