Make sure ASTSchemaSource operates on StatementContext 57/92257/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 24 Aug 2020 10:12:30 +0000 (12:12 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 24 Aug 2020 10:12:30 +0000 (12:12 +0200)
We have external checks which are superfluous, as the implementation
is known to be invariant.

Change-Id: Ib5028b69c950fc940c335d97fee44e4a4deab99e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/ASTSchemaSource.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/repo/YangStatementStreamSource.java

index b5ee5fd53e8180befef594c9a3897ab4826270d2..f1c3c48430179b6d74eebbf154cee839fb0ad37b 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.repo;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture;
 
@@ -34,7 +33,6 @@ import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
-import org.antlr.v4.runtime.ParserRuleContext;
 import org.eclipse.jdt.annotation.NonNull;
 import org.gaul.modernizer_maven_annotations.SuppressModernizer;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@@ -47,7 +45,6 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactoryConfig
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaResolutionException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
-import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser.StatementContext;
 import org.opendaylight.yangtools.yang.parser.rfc7950.repo.ASTSchemaSource;
 import org.opendaylight.yangtools.yang.parser.rfc7950.repo.YangModelDependencyInfo;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
@@ -230,11 +227,6 @@ final class SharedSchemaContextFactory implements EffectiveModelContextFactory {
             config.getModulesDeviatedByModules().ifPresent(parser::setModulesWithSupportedDeviations);
 
             for (final Entry<SourceIdentifier, ASTSchemaSource> entry : srcs.entrySet()) {
-                final ASTSchemaSource ast = entry.getValue();
-                final ParserRuleContext parserRuleCtx = ast.getAST();
-                checkArgument(parserRuleCtx instanceof StatementContext, "Unsupported context class %s for source %s",
-                    parserRuleCtx.getClass(), entry.getKey());
-
                 try {
                     parser.addSource(entry.getValue());
                 } catch (YangSyntaxErrorException | IOException e) {
index cf059e59e4c69573444182c4b70b567844a62d44..1758d03d5f014726765797dd474ad2b635e86c72 100644 (file)
@@ -20,6 +20,7 @@ import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
 import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+import org.opendaylight.yangtools.yang.parser.antlr.YangStatementParser.StatementContext;
 
 /**
  * Abstract Syntax Tree representation of a schema source. This representation is internal to the YANG parser
@@ -35,11 +36,11 @@ public final class ASTSchemaSource extends AbstractIdentifiable<SourceIdentifier
         implements SchemaSourceRepresentation {
     private final @NonNull YangModelDependencyInfo depInfo;
     private final @NonNull SemVerSourceIdentifier semVerId;
-    private final @NonNull ParserRuleContext tree;
+    private final @NonNull StatementContext tree;
     private final @Nullable String symbolicName;
 
     private ASTSchemaSource(final @NonNull SourceIdentifier identifier, final @NonNull SemVerSourceIdentifier semVerId,
-            final @NonNull ParserRuleContext tree, final @NonNull YangModelDependencyInfo depInfo,
+            final @NonNull StatementContext tree, final @NonNull YangModelDependencyInfo depInfo,
             @Nullable final String symbolicName) {
         super(identifier);
         this.depInfo = requireNonNull(depInfo);
@@ -63,7 +64,7 @@ public final class ASTSchemaSource extends AbstractIdentifiable<SourceIdentifier
      *             if we fail to extract dependency information.
      */
     static @NonNull ASTSchemaSource create(final @NonNull SourceIdentifier identifier,
-            final @Nullable String symbolicName, final @NonNull ParserRuleContext tree)
+            final @Nullable String symbolicName, final @NonNull StatementContext tree)
                     throws YangSyntaxErrorException {
         final YangModelDependencyInfo depInfo = YangModelDependencyInfo.fromAST(identifier, tree);
         final SourceIdentifier id = getSourceId(depInfo);
@@ -112,6 +113,10 @@ public final class ASTSchemaSource extends AbstractIdentifiable<SourceIdentifier
         return depInfo;
     }
 
+    @NonNull StatementContext tree() {
+        return tree;
+    }
+
     private static @NonNull SourceIdentifier getSourceId(final @NonNull YangModelDependencyInfo depInfo) {
         final String name = depInfo.getName();
         return depInfo.getFormattedRevision() == null ? RevisionSourceIdentifier.create(name)
index 2d51d29a1ae59b0a7abb336569b4f98c6ffe926e..a46007233038b547f11fe934bbab21513c82009d 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.repo;
 
-import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
@@ -109,10 +108,7 @@ public final class YangStatementStreamSource extends AbstractIdentifiable<Source
      * @return A new {@link YangStatementStreamSource}
      */
     public static YangStatementStreamSource create(final ASTSchemaSource source) {
-        final ParserRuleContext ast = source.getAST();
-        checkArgument(ast instanceof StatementContext,
-                "Unsupported context class %s for source %s", ast.getClass(), source.getIdentifier());
-        return create(source.getIdentifier(), (StatementContext) ast, source.getSymbolicName().orElse(null));
+        return create(source.getIdentifier(), source.tree(), source.getSymbolicName().orElse(null));
     }
 
     public static YangStatementStreamSource create(final SourceIdentifier identifier, final StatementContext context,