Merge "Parents pom distribution"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / maven-yang / src / main / java / org / opendaylight / controller / yang2sources / spi / CodeGenerator.java
index 534c37de10399447b95a06962ce99e88d0303a96..09dcd3e8e9ca2cafc18d5745bcafb6016c64eedb 100644 (file)
@@ -8,8 +8,14 @@
 package org.opendaylight.controller.yang2sources.spi;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
 
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.opendaylight.controller.yang.model.api.Module;
 import org.opendaylight.controller.yang.model.api.SchemaContext;
 
 /**
@@ -20,13 +26,50 @@ public interface CodeGenerator {
 
     /**
      * Generate sources from provided {@link SchemaContext}
-     * 
+     *
      * @param context
      *            parsed from yang files
      * @param outputBaseDir
      *            expected output directory for generated sources configured by
      *            user
+     * @param currentModules
+     *            yang modules parsed from yangFilesRootDir
+     * @param log
+     *            maven logger
      * @return collection of files that were generated from schema context
+     * @throws IOException
      */
-    Collection<File> generateSources(SchemaContext context, File outputBaseDir);
+    Collection<File> generateSources(SchemaContext context, File outputBaseDir,
+            Set<Module> currentModules) throws IOException;
+
+    /**
+     * Utilize maven logging if necessary
+     *
+     * @param log
+     */
+    void setLog(Log log);
+
+    /**
+     * Provided map contains all configuration that was set in pom for code
+     * generator in additionalConfiguration tag
+     *
+     * @param additionalConfiguration
+     */
+    void setAdditionalConfig(Map<String, String> additionalConfiguration);
+
+    /**
+     * Provided folder is marked as resources and its content will be packaged
+     * in resulting jar. Feel free to add necessary resources
+     *
+     * @param resourceBaseDir
+     */
+    void setResourceBaseDir(File resourceBaseDir);
+
+    /**
+     * Provided maven project object. Any additional information about current
+     * maven project can be accessed from it.
+     *
+     * @param resourceBaseDir
+     */
+    void setMavenProject(MavenProject project);
 }