From: Robert Varga Date: Wed, 20 Jan 2016 12:32:42 +0000 (+0100) Subject: Fix yang-maven-plugin generating superfluous files X-Git-Tag: release/beryllium~19 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=yangtools.git;a=commitdiff_plain;h=63e86447c2be28af9142b310f67a07e2e0a87ed4 Fix yang-maven-plugin generating superfluous files Logic detecting whether a file belongs to the current project has been broken in change I75c8b67af01212a8ac5b832625f9405bb0108455. It works most of the time with 'mvn clean install', but fails if there is a generate-sources phase before dependency projects are packaged/installed. This typically happens when invoked from IDE such as Eclipse. Perform correct checks to see if a particular file was injected from current project. The correct fix is to use SchemaContextResolver, where we inject local files, capture their SchemaSourceIdentifiers, then inject any dependencies. That way we can perform the lookup based on ModuleIdentifiers and not rely on the particulars what form was used to get the source. Change-Id: I2392dc05bfbc94d613ec896d38fac21734a5bc81 Signed-off-by: Robert Varga --- diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java index 195c7f39ba..3de8eef5eb 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesProcessor.java @@ -139,13 +139,14 @@ class YangToSourcesProcessor { return null; } - final List yangsInProject = new ArrayList<>(); + final List yangsInProject = new ArrayList<>(); for (final File f : yangFilesInProject) { // FIXME: This is hack - normal path should be reported. yangsInProject.add(new NamedFileInputStream(f, META_INF_YANG_STRING + File.separator + f.getName())); } - List all = new ArrayList<>(yangsInProject); + List all = new ArrayList<>(); + all.addAll(yangsInProject); closeables.addAll(yangsInProject); /** @@ -170,8 +171,17 @@ class YangToSourcesProcessor { Set parsedAllYangModules = resolveSchemaContext.getModules(); projectYangModules = new HashSet<>(); for (Module module : parsedAllYangModules) { - if(module.getModuleSourcePath()!=null) { - projectYangModules.add(module); + final String path = module.getModuleSourcePath(); + if (path != null) { + LOG.debug("Looking for source {}", path); + for (NamedFileInputStream is : yangsInProject) { + LOG.debug("In project destination {}", is.getFileDestination()); + if (path.equals(is.getFileDestination())) { + LOG.debug("Module {} belongs to current project", module); + projectYangModules.add(module); + break; + } + } } } } finally {