From 5ed67b08210c4c092cc6502748a2615d5e0a6970 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 5 Jan 2016 14:27:06 +0100 Subject: [PATCH] BUG-865: deprecate SourceStreamAware 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 --- .../yang/model/api/SourceStreamAware.java | 8 ++- .../reactor/CrossSourceStatementReactor.java | 71 +++++++++---------- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SourceStreamAware.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SourceStreamAware.java index a05a3a15c4..f11f65ac3a 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SourceStreamAware.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SourceStreamAware.java @@ -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(); - } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java index c206e0e637..3856d72658 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java @@ -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 supportedTerminology; private final Map> supportedValidation; - CrossSourceStatementReactor(Map supportedTerminology) { + CrossSourceStatementReactor(final Map supportedTerminology) { this.supportedTerminology = ImmutableMap.copyOf(supportedTerminology); this.supportedValidation = ImmutableMap.of(); } - CrossSourceStatementReactor(Map supportedTerminology, Map> supportedValidation) { + CrossSourceStatementReactor(final Map supportedTerminology, final Map> supportedValidation) { this.supportedTerminology = ImmutableMap.copyOf(supportedTerminology); this.supportedValidation = ImmutableMap.copyOf(supportedValidation); } @@ -61,15 +60,13 @@ public class CrossSourceStatementReactor { final Map bundles = new EnumMap<>(ModelProcessingPhase.class); final Map> 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 yangByteSources) throws SourceException, ReactorException, IOException { - - for(ByteSource yangByteSource : yangByteSources) { + public SchemaContext buildEffective(final Collection yangByteSources) throws SourceException, + ReactorException, IOException { + for (ByteSource yangByteSource : yangByteSources) { addSource(new YangStatementSourceImpl(yangByteSource.openStream())); } return buildEffective(); } - public SchemaContext buildEffective(List yangInputStreams) throws SourceException, ReactorException { - - for(InputStream yangInputStream : yangInputStreams) { + public SchemaContext buildEffective(final List yangInputStreams) throws SourceException, + ReactorException { + for (InputStream yangInputStream : yangInputStreams) { addSource(new YangStatementSourceImpl(yangInputStream)); } return buildEffective(); } - public Map buildEffectiveMappedToSource( - List yangFiles) throws SourceException, ReactorException, - FileNotFoundException { - + /** + * @deprecated This method was never used and relies on deprecated module methods. + */ + @Deprecated + public Map buildEffectiveMappedToSource(final List yangFiles) throws SourceException, + ReactorException, FileNotFoundException { if (yangFiles == null || yangFiles.isEmpty()) { return Collections.emptyMap(); } @@ -137,16 +134,14 @@ public class CrossSourceStatementReactor { Map 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 modules = schema.getModules(); for (Module module : modules) { - sourceFileToModule.put( - pathToFile.get(module.getModuleSourcePath()), module); + sourceFileToModule.put(pathToFile.get(module.getModuleSourcePath()), module); } return sourceFileToModule; -- 2.36.6