BUG-1611: force maven plugin generating verbose comments
[yangtools.git] / code-generator / maven-sal-api-gen-plugin / src / main / java / org / opendaylight / yangtools / maven / sal / api / gen / plugin / CodeGeneratorImpl.java
index 60eba385e63d410d3bc77ac986fffdb7754f059a..99f426dcc68c888492f3f730cbab95e8e7e9469d 100644 (file)
@@ -7,6 +7,11 @@
  */
 package org.opendaylight.yangtools.maven.sal.api.gen.plugin;
 
+import com.google.common.base.Joiner;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSet.Builder;
+
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.IOException;
@@ -36,11 +41,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonatype.plexus.build.incremental.BuildContext;
 
-import com.google.common.base.Joiner;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.ImmutableSet.Builder;
-
 public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware {
     private static final String FS = File.separator;
     private BuildContext buildContext;
@@ -58,7 +58,7 @@ public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware
 
         outputBaseDir = outputDir == null ? getDefaultOutputBaseDir() : outputDir;
 
-        final BindingGenerator bindingGenerator = new BindingGeneratorImpl();
+        final BindingGenerator bindingGenerator = new BindingGeneratorImpl(true);
         final List<Type> types = bindingGenerator.generateTypes(context, yangModules);
         final GeneratorJavaFile generator = new GeneratorJavaFile(buildContext, types);
 
@@ -79,20 +79,26 @@ public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware
         return result;
     }
 
-    private Collection<? extends File> generateModuleInfos(File outputBaseDir, Set<Module> yangModules,
-            SchemaContext context) {
+    private Collection<? extends File> generateModuleInfos(final File outputBaseDir, final Set<Module> yangModules,
+                                                           final SchemaContext context) {
         Builder<File> result = ImmutableSet.builder();
         Builder<String> bindingProviders = ImmutableSet.builder();
         for (Module module : yangModules) {
-            result.addAll(generateYangModuleInfo(outputBaseDir, module, context, bindingProviders));
+            Builder<String> currentProvidersBuilder = ImmutableSet.builder();
+            // TODO: do not mutate parameters, output of a method is defined by its return value
+            Set<File> moduleInfoProviders = generateYangModuleInfo(outputBaseDir, module, context, currentProvidersBuilder);
+            ImmutableSet<String> currentProviders = currentProvidersBuilder.build();
+            logger.info("Adding ModuleInfo providers {}", currentProviders);
+            bindingProviders.addAll(currentProviders);
+            result.addAll(moduleInfoProviders);
         }
 
         result.add(writeMetaInfServices(resourceBaseDir, YangModelBindingProvider.class, bindingProviders.build()));
         return result.build();
     }
 
-    private File writeMetaInfServices(File outputBaseDir, Class<YangModelBindingProvider> serviceClass,
-            ImmutableSet<String> services) {
+    private File writeMetaInfServices(final File outputBaseDir, final Class<YangModelBindingProvider> serviceClass,
+            final ImmutableSet<String> services) {
         File metainfServicesFolder = new File(outputBaseDir, "META-INF" + File.separator + "services");
         metainfServicesFolder.mkdirs();
         File serviceFile = new File(metainfServicesFolder, serviceClass.getName());
@@ -113,38 +119,38 @@ public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware
         return outputBaseDir;
     }
 
-    private static void setOutputBaseDirAsSourceFolder(File outputBaseDir, MavenProject mavenProject) {
+    private static void setOutputBaseDirAsSourceFolder(final File outputBaseDir, final MavenProject mavenProject) {
         Preconditions.checkNotNull(mavenProject, "Maven project needs to be set in this phase");
         mavenProject.addCompileSourceRoot(outputBaseDir.getPath());
     }
 
     @Override
-    public void setLog(Log log) {
+    public void setLog(final Log log) {
     }
 
     @Override
-    public void setAdditionalConfig(Map<String, String> additionalConfiguration) {
+    public void setAdditionalConfig(final Map<String, String> additionalConfiguration) {
         this.additionalConfig = additionalConfiguration;
     }
 
     @Override
-    public void setResourceBaseDir(File resourceBaseDir) {
+    public void setResourceBaseDir(final File resourceBaseDir) {
         this.resourceBaseDir = resourceBaseDir;
     }
 
     @Override
-    public void setMavenProject(MavenProject project) {
+    public void setMavenProject(final MavenProject project) {
         this.mavenProject = project;
         this.projectBaseDir = project.getBasedir();
     }
 
     @Override
-    public void setBuildContext(BuildContext buildContext) {
+    public void setBuildContext(final BuildContext buildContext) {
         this.buildContext = Preconditions.checkNotNull(buildContext);
     }
 
-    private Set<File> generateYangModuleInfo(File outputBaseDir, Module module, SchemaContext ctx,
-            Builder<String> providerSourceSet) {
+    private Set<File> generateYangModuleInfo(final File outputBaseDir, final Module module, final SchemaContext ctx,
+            final Builder<String> providerSourceSet) {
         Builder<File> generatedFiles = ImmutableSet.<File> builder();
 
         final YangModuleInfoTemplate template = new YangModuleInfoTemplate(module, ctx);
@@ -166,7 +172,7 @@ public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware
 
     }
 
-    private File writeJavaSource(File packageDir, String className, String source) {
+    private File writeJavaSource(final File packageDir, final String className, final String source) {
         if (!packageDir.exists()) {
             packageDir.mkdirs();
         }
@@ -175,7 +181,7 @@ public final class CodeGeneratorImpl implements CodeGenerator, BuildContextAware
         return file;
     }
 
-    private File writeFile(File file, String source) {
+    private File writeFile(final File file, final String source) {
         try (final OutputStream stream = buildContext.newFileOutputStream(file)) {
             try (final Writer fw = new OutputStreamWriter(stream)) {
                 try (final BufferedWriter bw = new BufferedWriter(fw)) {