Fixed setting yang sources to modules. 96/7296/5
authorMartin Vitez <mvitez@cisco.com>
Wed, 21 May 2014 09:57:57 +0000 (11:57 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Wed, 28 May 2014 11:28:14 +0000 (13:28 +0200)
Change-Id: I2f3a070fd3afcb49ac3ecc9ce232fd7f299be71b
Signed-off-by: Martin Vitez <mvitez@cisco.com>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/YangParserImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/NamedByteArrayInputStream.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ParserUtils.java

index de41975645703cedfb74ec4e9b0442ef469c1621..1a463447a9c9eac5ee0a57293ac760f50623240d 100644 (file)
@@ -194,8 +194,8 @@ public final class YangParserImpl implements YangContextParser {
     @Override
     @Deprecated
     public Set<Module> parseYangModelsFromStreams(final List<InputStream> yangModelStreams) {
-        Collection<ByteSource> sources = ParserUtils.streamsToByteSources(yangModelStreams);
         try {
+            Collection<ByteSource> 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<Module> parseYangModelsFromStreams(final List<InputStream> yangModelStreams, final SchemaContext context) {
-        Collection<ByteSource> sources = ParserUtils.streamsToByteSources(yangModelStreams);
         try {
+            Collection<ByteSource> 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;
     }
 
index fd5bd9d2d86930c6e1fe91012c1df65d5848c865..9d7e599c418d4fe6fdbeafd22d77f3cb7569f163 100644 (file)
@@ -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;
     }
index 1a20d87c93cfc5342eeda0e667a4db6e5a2ca753..82d7014cfbf2fced74340464f753055b27d72341 100644 (file)
@@ -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<ByteSource> streamsToByteSources(final Collection<InputStream> streams) {
-        return Collections2.transform(streams, new Function<InputStream, ByteSource>() {
-            @Override
-            public ByteSource apply(final InputStream input) {
-                return new ByteSource() {
-                    @Override
-                    public InputStream openStream() throws IOException {
-                        return NamedByteArrayInputStream.create(input);
-                    }
-                };
-            }
-        });
+    public static Collection<ByteSource> streamsToByteSources(final Collection<InputStream> streams) throws IOException {
+        Collection<ByteSource> 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);
+        }
+    }
+
 }