Merge "BUG-580: Improved parsing."
[yangtools.git] / yang / yang-maven-plugin / src / main / java / org / opendaylight / yangtools / yang2sources / plugin / YangToSourcesProcessor.java
index 9efe633ffafc57c6f39b604e807fcd1a25c410ad..f2b67f46eb40f0236b56b4dc437cd1b8b70def61 100644 (file)
@@ -7,18 +7,8 @@
  */
 package org.opendaylight.yangtools.yang2sources.plugin;
 
-import java.io.Closeable;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Maps;
 import org.apache.maven.model.Resource;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -36,8 +26,19 @@ import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator;
 import org.sonatype.plexus.build.incremental.BuildContext;
 import org.sonatype.plexus.build.incremental.DefaultBuildContext;
 
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Maps;
+import java.io.Closeable;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import static com.google.common.base.Preconditions.checkNotNull;
 
 class YangToSourcesProcessor {
     static final String LOG_PREFIX = "yang-to-sources:";
@@ -148,7 +149,8 @@ class YangToSourcesProcessor {
 
                 projectYangModules = new HashSet<>();
                 for (InputStream inProject : yangsInProject) {
-                    projectYangModules.add(allYangModules.get(inProject));
+                    Module module = checkNotNull(allYangModules.get(inProject), "Cannot find module by %s", inProject);
+                    projectYangModules.add(module);
                 }
 
             } finally {
@@ -251,15 +253,17 @@ class YangToSourcesProcessor {
 
         File outputDir = codeGeneratorCfg.getOutputBaseDir(project);
 
+        if (outputDir != null) {
+          project.addCompileSourceRoot(outputDir.getAbsolutePath());
+        } else {
+          throw new NullPointerException("outputBaseDir is null. Please provide a valid outputBaseDir value in the pom.xml");
+        }
+
         log.info(Util.message("Sources will be generated to %s", LOG_PREFIX, outputDir));
         log.debug(Util.message("Project root dir is %s", LOG_PREFIX, project.getBasedir()));
         log.debug(Util.message("Additional configuration picked up for : %s: %s", LOG_PREFIX,
                 codeGeneratorCfg.getCodeGeneratorClass(), codeGeneratorCfg.getAdditionalConfiguration()));
 
-        if (outputDir != null) {
-            project.addCompileSourceRoot(outputDir.getAbsolutePath());
-        }
-
         if (g instanceof BuildContextAware) {
             ((BuildContextAware)g).setBuildContext(buildContext);
         }