From: Martin Vitez Date: Wed, 21 May 2014 09:57:57 +0000 (+0200) Subject: Fixed setting yang sources to modules. X-Git-Tag: release/helium~507^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=26d79804403797c4442df6b42ffb13cc9edb04b6;hp=--cc;p=yangtools.git Fixed setting yang sources to modules. Change-Id: I2f3a070fd3afcb49ac3ecc9ce232fd7f299be71b Signed-off-by: Martin Vitez --- 26d79804403797c4442df6b42ffb13cc9edb04b6 diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java index de41975645..1a463447a9 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java @@ -194,8 +194,8 @@ public final class YangParserImpl implements YangContextParser { @Override @Deprecated public Set parseYangModelsFromStreams(final List yangModelStreams) { - Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); try { + Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); return parseSources(sources).getModules(); } catch (IOException | YangSyntaxErrorException e) { throw new YangParseException("Failed to parse yang data", e); @@ -213,8 +213,8 @@ public final class YangParserImpl implements YangContextParser { @Override @Deprecated public Set parseYangModelsFromStreams(final List yangModelStreams, final SchemaContext context) { - Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); try { + Collection sources = ParserUtils.streamsToByteSources(yangModelStreams); return parseSources(sources, context).getModules(); } catch (IOException | YangSyntaxErrorException e) { throw new YangParseException("Failed to parse yang data", e); @@ -378,6 +378,7 @@ public final class YangParserImpl implements YangContextParser { sourceToBuilder.put(source, moduleBuilder); } + ParserUtils.setSourceToBuilder(sourceToBuilder); return sourceToBuilder; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NamedByteArrayInputStream.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NamedByteArrayInputStream.java index fd5bd9d2d8..9d7e599c41 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NamedByteArrayInputStream.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NamedByteArrayInputStream.java @@ -8,15 +8,14 @@ package org.opendaylight.yangtools.yang.parser.util; -import org.apache.commons.io.IOUtils; - import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; +import org.apache.commons.io.IOUtils; public class NamedByteArrayInputStream extends ByteArrayInputStream implements NamedInputStream { private final String toString; - private NamedByteArrayInputStream(byte[] buf, String toString) { + public NamedByteArrayInputStream(byte[] buf, String toString) { super(buf); this.toString = toString; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java index 1a20d87c93..82d7014cfb 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java @@ -7,6 +7,7 @@ */ package org.opendaylight.yangtools.yang.parser.util; +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -84,18 +85,12 @@ public final class ParserUtils { private ParserUtils() { } - public static Collection streamsToByteSources(final Collection streams) { - return Collections2.transform(streams, new Function() { - @Override - public ByteSource apply(final InputStream input) { - return new ByteSource() { - @Override - public InputStream openStream() throws IOException { - return NamedByteArrayInputStream.create(input); - } - }; - } - }); + public static Collection streamsToByteSources(final Collection streams) throws IOException { + Collection result = new HashSet<>(); + for (InputStream stream : streams) { + result.add(new ByteSourceImpl(stream)); + } + return result; } public static ByteSource fileToByteSource(final File file) { @@ -660,4 +655,19 @@ public final class ParserUtils { return result; } + private static final class ByteSourceImpl extends ByteSource { + private final String toString; + private final ByteArrayOutputStream output = new ByteArrayOutputStream(); + + private ByteSourceImpl(InputStream input) throws IOException { + toString = input.toString(); + IOUtils.copy(input, output); + } + + @Override + public InputStream openStream() throws IOException { + return new NamedByteArrayInputStream(output.toByteArray(), toString); + } + } + }