From: Michael Vorburger Date: Tue, 9 Aug 2016 10:32:58 +0000 (+0200) Subject: Improve yang-maven-plugin error reporting for errors in dependencies X-Git-Tag: release/boron~13 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=51c73d089f795cd0bb7d072c13975788bf479b0e;p=yangtools.git Improve yang-maven-plugin error reporting for errors in dependencies Instead of e.g. this: [ERROR] yang-to-sources: Unable to parse yang files from /home/vorburger/dev/ODL/git/netvirt/vpnservice/aclservice/impl/src/main/yang java.util.zip.ZipException: invalid LOC header (bad signature) at java.util.zip.ZipFile.read(Native Method) it will now report the much more useful variation like this: java.io.IOException: Exception when reading from: /home/vorburger/.m2/repository/org/opendaylight/netvirt/neutronvpn-api/0.3.0-SNAPSHOT/neutronvpn-api-0.3.0-SNAPSHOT.jar::META-INF/yang/neutronvpn.yang at (...) Caused by: java.util.zip.ZipException: invalid LOC header (bad signature) similar to earlier https://git.opendaylight.org/gerrit/#/c/42193/ Change-Id: Ic5bcdc8597825cdc0506516618ec13ede6433bc7 Signed-off-by: Michael Vorburger (cherry picked from commit 1d98955b96490bfda3cba04e004c29e00a3e80e6) --- diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromDependency.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromDependency.java index 6a531534df..009382bfc7 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromDependency.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromDependency.java @@ -10,4 +10,16 @@ package org.opendaylight.yangtools.yang2sources.plugin; import com.google.common.io.ByteSource; abstract class YangSourceFromDependency extends ByteSource { + + /** + * Return a description for this dependency, to be used for error output when + * working with the dependency. + */ + abstract String getDescription(); + + @Override + public final String toString() { + return getDescription(); + } + } diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromFile.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromFile.java index a5d15e8cea..4f4992790f 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromFile.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceFromFile.java @@ -33,4 +33,8 @@ class YangSourceFromFile extends YangSourceFromDependency { return source.length(); } + @Override + String getDescription() { + return source.getAbsolutePath(); + } } diff --git a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceInZipFile.java b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceInZipFile.java index eb876f689c..72ba67d4c8 100644 --- a/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceInZipFile.java +++ b/yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangSourceInZipFile.java @@ -32,4 +32,9 @@ class YangSourceInZipFile extends YangSourceFromDependency { public InputStream openStream() throws IOException { return file.getInputStream(entry); } -} \ No newline at end of file + + @Override + String getDescription() { + return file.getName() + "::" + entry.getName(); + } +} 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 f22b6ee5e3..8ad0e46335 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 @@ -230,6 +230,8 @@ class YangToSourcesProcessor { try (InputStream dataStream = yangFromDependency.openStream()) { String contents = IOUtils.toString(dataStream); byContent.putIfAbsent(contents, yangFromDependency); + } catch (IOException e) { + throw new IOException("Exception when reading from: " + yangFromDependency.getDescription(), e); } }