X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fmaven-yang-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang2sources%2Fplugin%2FYangToSourcesMojo.java;h=41f3ae4a65a5f45e2e64f87b6a4ba9cddaf14c3c;hb=be6d2cfbf462fc44301309b872ca8eeae6e2eb97;hp=32ad2abb104c65a9cfe78aec8acb4bb310796961;hpb=ac1cf966b29165ae6b0844cd877f1a96c708f795;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToSourcesMojo.java b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToSourcesMojo.java index 32ad2abb10..41f3ae4a65 100644 --- a/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToSourcesMojo.java +++ b/opendaylight/sal/yang-prototype/code-generator/maven-yang-plugin/src/main/java/org/opendaylight/controller/yang2sources/plugin/YangToSourcesMojo.java @@ -8,7 +8,8 @@ package org.opendaylight.controller.yang2sources.plugin; import java.io.File; -import java.util.Arrays; +import java.io.IOException; +import java.util.ArrayList; import java.util.Collection; import java.util.Map; import java.util.Set; @@ -19,6 +20,8 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.plugins.annotations.ResolutionScope; +import org.apache.maven.project.MavenProject; import org.opendaylight.controller.yang.model.api.Module; import org.opendaylight.controller.yang.model.api.SchemaContext; import org.opendaylight.controller.yang.model.parser.api.YangModelParser; @@ -42,7 +45,7 @@ import com.google.common.collect.Maps; * * */ -@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES) +@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true) public final class YangToSourcesMojo extends AbstractMojo { private static final String LOG_PREFIX = "yang-to-sources:"; @@ -63,7 +66,10 @@ public final class YangToSourcesMojo extends AbstractMojo { @Parameter(required = true) private String yangFilesRootDir; - private final YangModelParser parser; + @Parameter(property = "project", required = true, readonly = true) + protected MavenProject project; + + private transient final YangModelParser parser; @VisibleForTesting YangToSourcesMojo(CodeGeneratorArg[] codeGeneratorArgs, @@ -90,20 +96,22 @@ public final class YangToSourcesMojo extends AbstractMojo { */ private SchemaContext processYang() throws MojoExecutionException { try { - String[] yangFiles = Util.listFilesAsArrayOfPaths(yangFilesRootDir); + Collection yangFiles = Util.listFiles(yangFilesRootDir); - if (yangFiles.length == 0) + if (yangFiles.isEmpty()) { getLog().warn( Util.message("No %s file found in %s", LOG_PREFIX, Util.YANG_SUFFIX, yangFilesRootDir)); - // TODO only warning or throw exception ? + return null; + } - Set parsedYang = parser.parseYangModels(yangFiles); + Set parsedYang = parser + .parseYangModels(new ArrayList(yangFiles)); SchemaContext resolveSchemaContext = parser .resolveSchemaContext(parsedYang); getLog().info( Util.message("%s files parsed from %s", LOG_PREFIX, - Util.YANG_SUFFIX, Arrays.toString(yangFiles))); + Util.YANG_SUFFIX, yangFiles)); return resolveSchemaContext; // MojoExecutionException is thrown since execution cannot continue @@ -159,22 +167,25 @@ public final class YangToSourcesMojo extends AbstractMojo { * Instantiate generator from class and call required method */ private void generateSourcesWithOneGenerator(SchemaContext context, - CodeGeneratorArg codeGenerator) throws ClassNotFoundException, - InstantiationException, IllegalAccessException { + CodeGeneratorArg codeGeneratorCfg) throws ClassNotFoundException, + InstantiationException, IllegalAccessException, IOException { - codeGenerator.check(); + codeGeneratorCfg.check(); CodeGenerator g = Util.getInstance( - codeGenerator.getCodeGeneratorClass(), CodeGenerator.class); + codeGeneratorCfg.getCodeGeneratorClass(), CodeGenerator.class); getLog().info( Util.message("Code generator instantiated from %s", LOG_PREFIX, - codeGenerator.getCodeGeneratorClass())); + codeGeneratorCfg.getCodeGeneratorClass())); - Collection generated = g.generateSources(context, - codeGenerator.getOutputBaseDir()); + File outputDir = codeGeneratorCfg.getOutputBaseDir(); + if (project != null && outputDir != null) { + project.addCompileSourceRoot(outputDir.getPath()); + } + Collection generated = g.generateSources(context, outputDir); getLog().info( Util.message("Sources generated by %s: %s", LOG_PREFIX, - codeGenerator.getCodeGeneratorClass(), generated)); + codeGeneratorCfg.getCodeGeneratorClass(), generated)); } }