Yang-maven-plugin refactored + fixed bugs.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / maven-yang-plugin / src / main / java / org / opendaylight / controller / yang2sources / plugin / ConfigArg.java
index 217c6f5b86a7f923f22d136c04a07379c8d2c10f..aaf7080a6234c8e6a4155b42ec8dc20d3c7cc58f 100644 (file)
@@ -8,74 +8,53 @@
 package org.opendaylight.controller.yang2sources.plugin;
 
 import java.io.File;
+import java.util.Map;
+
+import org.apache.maven.project.MavenProject;
 
 import com.google.common.base.Preconditions;
+import com.google.common.collect.Maps;
 
 /**
  * Base complex configuration arguments
  */
 public abstract class ConfigArg {
 
-    protected File outputBaseDir;
-
-    public ConfigArg(File outputBaseDir) {
-        this.outputBaseDir = outputBaseDir;
-    }
+    private final File outputBaseDir;
 
-    public ConfigArg() {
+    public ConfigArg(String outputBaseDir) {
+        this.outputBaseDir = new File(outputBaseDir);
     }
 
-    public File getOutputBaseDir() {
-        return outputBaseDir;
+    public File getOutputBaseDir(MavenProject project) {
+        if (outputBaseDir.isAbsolute()) {
+            return outputBaseDir;
+        } else {
+            return new File(project.getBasedir(), outputBaseDir.getPath());
+        }
     }
 
     public abstract void check();
 
-    /**
-     * Configuration argument for resource generator class and output directory.
-     */
-    public static final class ResourceProviderArg extends ConfigArg {
-        private String resourceProviderClass;
-
-        public ResourceProviderArg() {
-        }
-
-        public ResourceProviderArg(String resourceProviderClass) {
-            this(resourceProviderClass, new File("outDir/"));
-        }
-
-        public ResourceProviderArg(String resourceProviderClass,
-                File outputBaseDir) {
-            super(outputBaseDir);
-            this.resourceProviderClass = resourceProviderClass;
-        }
-
-        @Override
-        public void check() {
-            Preconditions
-                    .checkNotNull(resourceProviderClass,
-                            "resourceProviderClass for ResourceProvider cannot be null");
-        }
-
-        public String getResourceProviderClass() {
-            return resourceProviderClass;
-        }
-    }
-
     /**
      * Configuration argument for code generator class and output directory.
      */
     public static final class CodeGeneratorArg extends ConfigArg {
+        private static final String CODE_GEN_DEFAULT_DIR = "target"
+                + File.separator + "generated-sources";
         private String codeGeneratorClass;
 
+        private Map<String, String> additionalConfiguration = Maps.newHashMap();
+
         public CodeGeneratorArg() {
+            super(CODE_GEN_DEFAULT_DIR);
         }
 
         public CodeGeneratorArg(String codeGeneratorClass) {
-            this(codeGeneratorClass, new File("outDir/"));
+            this(codeGeneratorClass, CODE_GEN_DEFAULT_DIR);
         }
 
-        public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
+        public CodeGeneratorArg(String codeGeneratorClass, String outputBaseDir) {
             super(outputBaseDir);
             this.codeGeneratorClass = codeGeneratorClass;
         }
@@ -89,5 +68,9 @@ public abstract class ConfigArg {
         public String getCodeGeneratorClass() {
             return codeGeneratorClass;
         }
+
+        public Map<String, String> getAdditionalConfiguration() {
+            return additionalConfiguration;
+        }
     }
-}
\ No newline at end of file
+}