BUG-865: deprecate SourceStreamAware 34/32134/1
authorRobert Varga <rovarga@cisco.com>
Tue, 5 Jan 2016 13:27:06 +0000 (14:27 +0100)
committerRobert Varga <rovarga@cisco.com>
Tue, 5 Jan 2016 13:27:06 +0000 (14:27 +0100)
This interface is only used by Module, where it is a violation of
effective moidel separation from declared model.

Change-Id: I7de48f2c585f8daa7a29bc5b4e6a5ac33c994bbf
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SourceStreamAware.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java

index a05a3a15c41518b4242069cbdd82be31e1784a47..f11f65ac3a8e4ce53b0a38abf4327408ddd32037 100644 (file)
@@ -7,12 +7,16 @@
  */
 package org.opendaylight.yangtools.yang.model.api;
 
-// TODO: merge into Module, makes no sense as standalone interface
+/**
+ * @deprecated This interface is a violation of the effective model contract. To look up the source of a particular
+ *             module use a {@link org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository} or a similar
+ *             lookup table.
+ */
+@Deprecated
 public interface SourceStreamAware {
 
     /**
      * Get descriptive source path (usually file path) from which this module was parsed.
      */
     String getModuleSourcePath();
-
 }
index c206e0e6375c80b65f6f67062eff1ca23eed1f03..3856d7265840033bd0ab8920ba77f81dc06e6e17 100644 (file)
@@ -7,43 +7,42 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.reactor;
 
-import java.io.IOException;
-
+import com.google.common.collect.ImmutableMap;
 import com.google.common.io.ByteSource;
-import java.util.Set;
-import java.io.FileNotFoundException;
-import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream;
-import java.util.HashMap;
-import java.util.Collections;
-import org.opendaylight.yangtools.yang.model.api.Module;
 import java.io.File;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.io.InputStream;
-import java.util.List;
 import java.util.Collection;
-import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveSchemaContext;
-import com.google.common.collect.ImmutableMap;
+import java.util.Collections;
 import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
+import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveSchemaContext;
+import org.opendaylight.yangtools.yang.parser.util.NamedFileInputStream;
 
 public class CrossSourceStatementReactor {
 
     private final Map<ModelProcessingPhase,StatementSupportBundle> supportedTerminology;
     private final Map<ValidationBundleType,Collection<?>> supportedValidation;
 
-    CrossSourceStatementReactor(Map<ModelProcessingPhase, StatementSupportBundle> supportedTerminology) {
+    CrossSourceStatementReactor(final Map<ModelProcessingPhase, StatementSupportBundle> supportedTerminology) {
         this.supportedTerminology = ImmutableMap.copyOf(supportedTerminology);
         this.supportedValidation = ImmutableMap.of();
     }
 
-    CrossSourceStatementReactor(Map<ModelProcessingPhase, StatementSupportBundle> supportedTerminology, Map<ValidationBundleType,Collection<?>> supportedValidation) {
+    CrossSourceStatementReactor(final Map<ModelProcessingPhase, StatementSupportBundle> supportedTerminology, final Map<ValidationBundleType,Collection<?>> supportedValidation) {
         this.supportedTerminology = ImmutableMap.copyOf(supportedTerminology);
         this.supportedValidation = ImmutableMap.copyOf(supportedValidation);
     }
@@ -61,15 +60,13 @@ public class CrossSourceStatementReactor {
         final Map<ModelProcessingPhase,StatementSupportBundle> bundles = new EnumMap<>(ModelProcessingPhase.class);
         final Map<ValidationBundleType,Collection<?>> validationBundles = new EnumMap<>(ValidationBundleType.class);
 
-        public Builder setBundle(ModelProcessingPhase phase,StatementSupportBundle bundle) {
+        public Builder setBundle(final ModelProcessingPhase phase,final StatementSupportBundle bundle) {
             bundles.put(phase, bundle);
             return this;
         }
 
 
-        public Builder setValidationBundle(
-                ValidationBundleType type,
-                Collection<?> validationBundle) {
+        public Builder setValidationBundle(final ValidationBundleType type, final Collection<?> validationBundle) {
             validationBundles.put(type,validationBundle);
             return this;
         }
@@ -78,22 +75,20 @@ public class CrossSourceStatementReactor {
         public CrossSourceStatementReactor build() {
             return new CrossSourceStatementReactor(bundles, validationBundles);
         }
-
     }
 
     public class BuildAction {
-
         private final BuildGlobalContext context;
 
         public BuildAction() {
             this.context = new BuildGlobalContext(supportedTerminology, supportedValidation);
         }
 
-        public void addSource(StatementStreamSource source) {
+        public void addSource(final StatementStreamSource source) {
             context.addSource(source);
         }
 
-        public void addSources(StatementStreamSource... sources) {
+        public void addSources(final StatementStreamSource... sources) {
             for (StatementStreamSource source : sources) {
                 context.addSource(source);
             }
@@ -107,28 +102,30 @@ public class CrossSourceStatementReactor {
             return context.buildEffective();
         }
 
-        public SchemaContext buildEffective(Collection<ByteSource> yangByteSources) throws SourceException, ReactorException, IOException {
-
-            for(ByteSource yangByteSource : yangByteSources) {
+        public SchemaContext buildEffective(final Collection<ByteSource> yangByteSources) throws SourceException,
+                ReactorException, IOException {
+            for (ByteSource yangByteSource : yangByteSources) {
                 addSource(new YangStatementSourceImpl(yangByteSource.openStream()));
             }
 
             return buildEffective();
         }
 
-        public SchemaContext buildEffective(List<InputStream> yangInputStreams) throws SourceException, ReactorException {
-
-            for(InputStream yangInputStream : yangInputStreams) {
+        public SchemaContext buildEffective(final List<InputStream> yangInputStreams) throws SourceException,
+                ReactorException {
+            for (InputStream yangInputStream : yangInputStreams) {
                 addSource(new YangStatementSourceImpl(yangInputStream));
             }
 
             return buildEffective();
         }
 
-        public Map<File, Module> buildEffectiveMappedToSource(
-                List<File> yangFiles) throws SourceException, ReactorException,
-                FileNotFoundException {
-
+        /**
+         * @deprecated This method was never used and relies on deprecated module methods.
+         */
+        @Deprecated
+        public Map<File, Module> buildEffectiveMappedToSource(final List<File> yangFiles) throws SourceException,
+                ReactorException, FileNotFoundException {
             if (yangFiles == null || yangFiles.isEmpty()) {
                 return Collections.emptyMap();
             }
@@ -137,16 +134,14 @@ public class CrossSourceStatementReactor {
             Map<File, Module> sourceFileToModule = new HashMap<>();
 
             for (File yangFile : yangFiles) {
-                addSource(new YangStatementSourceImpl(new NamedFileInputStream(
-                        yangFile, yangFile.getPath())));
+                addSource(new YangStatementSourceImpl(new NamedFileInputStream(yangFile, yangFile.getPath())));
                 pathToFile.put(yangFile.getPath(), yangFile);
             }
 
             EffectiveSchemaContext schema = buildEffective();
             Set<Module> modules = schema.getModules();
             for (Module module : modules) {
-                sourceFileToModule.put(
-                        pathToFile.get(module.getModuleSourcePath()), module);
+                sourceFileToModule.put(pathToFile.get(module.getModuleSourcePath()), module);
             }
 
             return sourceFileToModule;