X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=plugin%2Fyang-maven-plugin%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang2sources%2Fplugin%2FYangToSourcesProcessor.java;h=e618356b85068e7e3ea3c77f17e34ecafdf6c279;hb=f6fd714443d005f094fef32922010908d0f70b08;hp=dcc724cef0158e428e09e4b6735fb0c3c97f81b8;hpb=a634aa9c108c4bc1c4ff51da8cddff9a196361c6;p=yangtools.git diff --git a/plugin/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java b/plugin/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java index dcc724cef0..e618356b85 100644 --- a/plugin/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java +++ b/plugin/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java @@ -37,12 +37,12 @@ import org.apache.maven.project.MavenProject; import org.opendaylight.yangtools.plugin.generator.api.FileGeneratorException; import org.opendaylight.yangtools.plugin.generator.api.FileGeneratorFactory; import org.opendaylight.yangtools.yang.common.YangConstants; -import org.opendaylight.yangtools.yang.model.parser.api.YangParser; -import org.opendaylight.yangtools.yang.model.parser.api.YangParserException; -import org.opendaylight.yangtools.yang.model.parser.api.YangParserFactory; -import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException; -import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; +import org.opendaylight.yangtools.yang.parser.api.YangParser; +import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration; +import org.opendaylight.yangtools.yang.parser.api.YangParserException; +import org.opendaylight.yangtools.yang.parser.api.YangParserFactory; +import org.opendaylight.yangtools.yang.parser.api.YangSyntaxErrorException; import org.opendaylight.yangtools.yang.parser.rfc7950.ir.IRSchemaSource; import org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToIRTransformer; import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg; @@ -87,11 +87,11 @@ class YangToSourcesProcessor { this.yangFilesRootDir = requireNonNull(yangFilesRootDir, "yangFilesRootDir"); this.excludedFiles = ImmutableSet.copyOf(excludedFiles); this.codeGeneratorArgs = ImmutableList.copyOf(codeGeneratorArgs); - this.fileGeneratorArgs = Maps.uniqueIndex(fileGeneratorsArgs, FileGeneratorArg::getIdentifier); + fileGeneratorArgs = Maps.uniqueIndex(fileGeneratorsArgs, FileGeneratorArg::getIdentifier); this.project = requireNonNull(project); this.inspectDependencies = inspectDependencies; this.yangProvider = requireNonNull(yangProvider); - this.parserFactory = DEFAULT_PARSER_FACTORY; + parserFactory = DEFAULT_PARSER_FACTORY; } @VisibleForTesting @@ -140,8 +140,8 @@ class YangToSourcesProcessor { return; } - final Set parserModes = codeGenerators.stream() - .map(GeneratorTaskFactory::parserMode) + final Set parserConfigs = codeGenerators.stream() + .map(GeneratorTaskFactory::parserConfig) .collect(Collectors.toUnmodifiableSet()); LOG.info("{} Inspecting {}", LOG_PREFIX, yangFilesRootDir); @@ -178,7 +178,7 @@ class YangToSourcesProcessor { final Stopwatch watch = Stopwatch.createStarted(); final List> parsed = yangFilesInProject.parallelStream() .map(file -> { - final YangTextSchemaSource textSource = YangTextSchemaSource.forFile(file); + final YangTextSchemaSource textSource = YangTextSchemaSource.forPath(file.toPath()); try { return Map.entry(textSource,TextToIRTransformer.transformText(textSource)); } catch (YangSyntaxErrorException | IOException e) { @@ -191,9 +191,9 @@ class YangToSourcesProcessor { // FIXME: store these files into state, so that we can verify/clean up final Builder files = ImmutableSet.builder(); - for (StatementParserMode parserMode : parserModes) { + for (YangParserConfiguration parserConfig : parserConfigs) { final Optional optReactor = createReactor(yangFilesInProject, - parserMode, dependencies, parsed); + parserConfig, dependencies, parsed); if (optReactor.isPresent()) { final ProcessorModuleReactor reactor = optReactor.orElseThrow(); @@ -211,7 +211,7 @@ class YangToSourcesProcessor { LOG.info("{} {} YANG models processed in {}", LOG_PREFIX, holder.getContext().getModules().size(), sw); - files.addAll(generateSources(holder, codeGenerators, parserMode)); + files.addAll(generateSources(holder, codeGenerators, parserConfig)); } else { LOG.info("{} Skipping YANG code generation because property yang.skip is true", LOG_PREFIX); } @@ -267,12 +267,12 @@ class YangToSourcesProcessor { @SuppressWarnings("checkstyle:illegalCatch") private Optional createReactor(final List yangFilesInProject, - final StatementParserMode parserMode, final Collection dependencies, + final YangParserConfiguration parserConfig, final Collection dependencies, final List> parsed) throws MojoExecutionException { try { final List sourcesInProject = new ArrayList<>(yangFilesInProject.size()); - final YangParser parser = parserFactory.createParser(parserMode); + final YangParser parser = parserFactory.createParser(parserConfig); for (final Entry entry : parsed) { final YangTextSchemaSource textSource = entry.getKey(); final IRSchemaSource astSource = entry.getValue(); @@ -319,10 +319,10 @@ class YangToSourcesProcessor { * Call generate on every generator from plugin configuration. */ private Set generateSources(final ContextHolder context, final Collection generators, - final StatementParserMode parserMode) throws MojoFailureException { + final YangParserConfiguration parserConfig) throws MojoFailureException { final Builder allFiles = ImmutableSet.builder(); for (GeneratorTaskFactory factory : generators) { - if (!parserMode.equals(factory.parserMode())) { + if (!parserConfig.equals(factory.parserConfig())) { continue; } @@ -338,9 +338,16 @@ class YangToSourcesProcessor { } LOG.debug("{} Sources generated by {}: {}", LOG_PREFIX, factory.generatorName(), files); - LOG.info("{} Sources generated by {}: {} in {}", LOG_PREFIX, factory.generatorName(), - files == null ? 0 : files.size(), sw); - allFiles.addAll(files); + + final int fileCount; + if (files != null) { + fileCount = files.size(); + allFiles.addAll(files); + } else { + fileCount = 0; + } + + LOG.info("{} Sources generated by {}: {} in {}", LOG_PREFIX, factory.generatorName(), fileCount, sw); } return allFiles.build();