Deprecate PrefixToModule.isPreLinkageMap() 80/68680/5
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 25 Feb 2018 23:30:13 +0000 (00:30 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 26 Feb 2018 00:07:51 +0000 (00:07 +0000)
This property is only consulted at places which can be inferred
to set it to true. Deprecate this property, as it is a state leak
defying encapsulation.

Change-Id: I1f159214e6487f482c7801ff73bd697bad6d470a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/StatementContextVisitor.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangStatementStreamSource.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/source/PrefixToModule.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/source/PrefixToModuleMap.java

index 5116b3411f75afb5e60a5739f57d1a96eeb88796..aaed74b1c5c1e206225566c9d1eddb947360ab53 100644 (file)
@@ -26,38 +26,14 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter;
 
-abstract class StatementContextVisitor {
-    static final class Loose extends StatementContextVisitor {
-        Loose(final String sourceName, final StatementWriter writer,
-            final QNameToStatementDefinition stmtDef, final PrefixToModule prefixes, final YangVersion yangVersion) {
-            super(sourceName, writer, stmtDef, prefixes, yangVersion);
-        }
-
-        Loose(final String sourceName, final StatementWriter writer, final QNameToStatementDefinition stmtDef) {
-            this(sourceName, writer, stmtDef, null, YangVersion.VERSION_1);
-        }
-    }
-
-    static final class Strict extends StatementContextVisitor {
-        Strict(final String sourceName, final StatementWriter writer,
-            final QNameToStatementDefinition stmtDef, final PrefixToModule prefixes, final YangVersion yangVersion) {
-            super(sourceName, writer, stmtDef, prefixes, yangVersion);
-        }
-
-        @Override
-        QName getValidStatementDefinition(final String keywordText, final StatementSourceReference ref) {
-            return SourceException.throwIfNull(super.getValidStatementDefinition(keywordText, ref), ref,
-                "%s is not a YANG statement or use of extension.", keywordText);
-        }
-    }
-
+class StatementContextVisitor {
     private final QNameToStatementDefinition stmtDef;
     private final StatementWriter writer;
     private final YangVersion yangVersion;
     private final PrefixToModule prefixes;
     private final String sourceName;
 
-    private StatementContextVisitor(final String sourceName, final StatementWriter writer,
+    StatementContextVisitor(final String sourceName, final StatementWriter writer,
             final QNameToStatementDefinition stmtDef, final PrefixToModule prefixes, final YangVersion yangVersion) {
         this.writer = requireNonNull(writer);
         this.stmtDef = requireNonNull(stmtDef);
@@ -104,16 +80,14 @@ abstract class StatementContextVisitor {
         }
 
         final String localName = keywordText.substring(firstColon + 1);
-        final StatementDefinition foundStmtDef;
-        if (prefixes.isPreLinkageMap()) {
-            foundStmtDef = stmtDef.getByNamespaceAndLocalName(qNameModule.getNamespace(), localName);
-        } else {
-            foundStmtDef = stmtDef.get(QName.create(qNameModule, localName));
-        }
-
+        final StatementDefinition foundStmtDef = resolveStatement(qNameModule, localName);
         return foundStmtDef != null ? foundStmtDef.getStatementName() : null;
     }
 
+    StatementDefinition resolveStatement(final QNameModule module, final String localName) {
+        return stmtDef.get(QName.create(module, localName));
+    }
+
     private void processStatement(final int myOffset, final StatementContext ctx) {
         final String keywordTxt = verifyNotNull(ctx.getChild(KeywordContext.class, 0)).getText();
         final StatementSourceReference ref = DeclarationInTextSource.atPosition(sourceName, ctx.getStart().getLine(),
index 2fa70ad89c8ad3dc9f253f5d16d277c475ef436f..8f97c9dce67aab12d965d0d2128294bb6d966d83 100644 (file)
@@ -25,12 +25,17 @@ import org.antlr.v4.runtime.tree.TerminalNode;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementLexer;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser;
 import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser.StatementContext;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.YangVersion;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
 import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
+import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
+import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementWriter;
 
@@ -113,7 +118,7 @@ public final class YangStatementStreamSource implements StatementStreamSource {
 
     @Override
     public void writePreLinkage(final StatementWriter writer, final QNameToStatementDefinition stmtDef) {
-        new StatementContextVisitor.Loose(sourceName, writer, stmtDef).visit(context);
+        new StatementContextVisitor(sourceName, writer, stmtDef, null, YangVersion.VERSION_1).visit(context);
     }
 
     @Override
@@ -125,7 +130,12 @@ public final class YangStatementStreamSource implements StatementStreamSource {
     @Override
     public void writeLinkage(final StatementWriter writer, final QNameToStatementDefinition stmtDef,
             final PrefixToModule preLinkagePrefixes, final YangVersion yangVersion) {
-        new StatementContextVisitor.Loose(sourceName, writer, stmtDef, preLinkagePrefixes, yangVersion).visit(context);
+        new StatementContextVisitor(sourceName, writer, stmtDef, preLinkagePrefixes, yangVersion) {
+            @Override
+            StatementDefinition resolveStatement(final QNameModule module, final String localName) {
+                return stmtDef.getByNamespaceAndLocalName(module.getNamespace(), localName);
+            }
+        }.visit(context);
     }
 
     @Override
@@ -137,7 +147,7 @@ public final class YangStatementStreamSource implements StatementStreamSource {
     @Override
     public void writeLinkageAndStatementDefinitions(final StatementWriter writer,
             final QNameToStatementDefinition stmtDef, final PrefixToModule prefixes, final YangVersion yangVersion) {
-        new StatementContextVisitor.Loose(sourceName, writer, stmtDef, prefixes, yangVersion).visit(context);
+        new StatementContextVisitor(sourceName, writer, stmtDef, prefixes, yangVersion).visit(context);
     }
 
     @Override
@@ -149,7 +159,13 @@ public final class YangStatementStreamSource implements StatementStreamSource {
     @Override
     public void writeFull(final StatementWriter writer, final QNameToStatementDefinition stmtDef,
             final PrefixToModule prefixes, final YangVersion yangVersion) {
-        new StatementContextVisitor.Strict(sourceName, writer, stmtDef, prefixes, yangVersion).visit(context);
+        new StatementContextVisitor(sourceName, writer, stmtDef, prefixes, yangVersion) {
+            @Override
+            QName getValidStatementDefinition(final String keywordText, final StatementSourceReference ref) {
+                return SourceException.throwIfNull(super.getValidStatementDefinition(keywordText, ref), ref,
+                    "%s is not a YANG statement or use of extension.", keywordText);
+            }
+        }.visit(context);
     }
 
     @Override
index 5d31772885a66b7e38ff07f12ca273cce1b80c63..076e15fe83c25e6a36f3000f475968f65d20df9f 100644 (file)
@@ -50,6 +50,9 @@ public interface PrefixToModule extends IdentifierNamespace<String, QNameModule>
      * Pre-linkage map does not consider revision-dates of modules and it contains module namespaces only.
      *
      * @return true if it is the pre-linkage map.
+     *
+     * @deprecated This property is bound to the currently-executing stage and so should be statically-wired.
      */
+    @Deprecated
     boolean isPreLinkageMap();
 }
index 26aab1aa08bf96ec9b4ac0d1ac720574e706db9d..a1095305190c2f7f41bfedad81cab90dd7b1db09 100644 (file)
@@ -26,28 +26,30 @@ public class PrefixToModuleMap implements PrefixToModule {
         this(false);
     }
 
-    public PrefixToModuleMap(boolean preLinkageMap) {
+    @Deprecated
+    public PrefixToModuleMap(final boolean preLinkageMap) {
         this.preLinkageMap = preLinkageMap;
     }
 
-    public void put(String prefix, QNameModule module) {
+    public void put(final String prefix, final QNameModule module) {
         prefixToModuleMap.put(prefix, module);
         namespaceToModuleMap.put(module.getNamespace(), module);
     }
 
     @Nullable
     @Override
-    public QNameModule get(@Nonnull String prefix) {
+    public QNameModule get(@Nonnull final String prefix) {
         return prefixToModuleMap.get(prefix);
     }
 
     @Nullable
     @Override
-    public QNameModule getByNamespace(String namespace) throws URISyntaxException {
+    public QNameModule getByNamespace(final String namespace) throws URISyntaxException {
         return namespaceToModuleMap.get(new URI(namespace));
     }
 
     @Override
+    @Deprecated
     public boolean isPreLinkageMap() {
         return preLinkageMap;
     }