Added support for parsing submodules & added dependency utility parser
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / repo / SchemaSourceProviders.java
index 78cb713969b306a264d9fed52749626c1a6b9739..dbed32c7d57da50950fbc7100d25eab2c4296ed3 100644 (file)
@@ -1,5 +1,10 @@
 package org.opendaylight.yangtools.yang.model.util.repo;
 
+import java.io.InputStream;
+import java.io.StringBufferInputStream;
+
+import org.opendaylight.yangtools.concepts.Delegator;
+
 import com.google.common.base.Optional;
 
 public class SchemaSourceProviders {
@@ -12,6 +17,11 @@ public class SchemaSourceProviders {
             return Optional.absent();
         }
 
+        @Override
+        public Optional getSchemaSource(SourceIdentifier sourceIdentifier) {
+            return Optional.absent();
+        }
+
     };
 
     @SuppressWarnings("unchecked")
@@ -19,4 +29,39 @@ public class SchemaSourceProviders {
         return (SchemaSourceProvider<T>) NOOP_PROVIDER;
     }
 
+    public static SchemaSourceProvider<InputStream> inputStreamProviderfromStringProvider(
+            SchemaSourceProvider<String> delegate) {
+        return new StringToInputStreamSchemaSourceProvider(delegate);
+    }
+
+    private final static class StringToInputStreamSchemaSourceProvider implements //
+            SchemaSourceProvider<InputStream>, Delegator<SchemaSourceProvider<String>> {
+
+        private SchemaSourceProvider<String> delegate;
+
+        public StringToInputStreamSchemaSourceProvider(SchemaSourceProvider<String> delegate) {
+            this.delegate = delegate;
+        }
+
+        @Override
+        public SchemaSourceProvider<String> getDelegate() {
+            return delegate;
+        }
+
+        @Override
+        public Optional<InputStream> getSchemaSource(SourceIdentifier sourceIdentifier) {
+            Optional<String> potential = getDelegate().getSchemaSource(sourceIdentifier);
+            if (potential.isPresent()) {
+                String stringStream = potential.get();
+                return Optional.<InputStream> of(new StringBufferInputStream(stringStream));
+            }
+            return Optional.absent();
+        }
+
+        @Override
+        public Optional<InputStream> getSchemaSource(String moduleName, Optional<String> revision) {
+            return getSchemaSource(SourceIdentifier.create(moduleName, revision));
+        }
+    }
+
 }