Move ASTSchemaSource and its components into rfc6020.repo 44/65444/8
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 11 Nov 2017 14:37:27 +0000 (15:37 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 13 Nov 2017 13:28:22 +0000 (14:28 +0100)
ASTSchemaSource, TextToASTTransformer and YangModuleDependencyInfo
are inter-related and depend in YANG text format. Move them to
rfc6020.repo and hide their constructors as appropriate.

Change-Id: I11a8d3b29328a1f2574205d7a8b8ccd192637db4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
17 files changed:
yang/yang-model-export/src/test/java/org/opendaylight/yangtools/yang/model/export/test/SimpleModuleTest.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/RevisionDependencyResolver.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SemVerDependencyResolver.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/YangTextSchemaContextResolver.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/ASTSchemaSource.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java with 80% similarity]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/TextToASTTransformer.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java with 84% similarity]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/YangModelDependencyInfo.java [moved from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfo.java with 98% similarity]
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/impl/util/YangModelDependencyInfoTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolverTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/MultipleRevImportBug6875Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/OpenconfigVerSharedSchemaRepositoryTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactoryTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepositoryTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepositoryWithFeaturesTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/SchemaContextUtilTest.java [moved from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/SchemaContextUtilTest.java with 99% similarity]

index c34ddae9299781a340f4c0dd6913e55a8ddebe7e..3ab8c7a6815e8c92f006f5908294264a56b55ee4 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.model.repo.spi.SchemaListenerRegistration
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceListener;
 import org.opendaylight.yangtools.yang.model.repo.util.FilesystemSchemaSourceCache;
 import org.opendaylight.yangtools.yang.parser.repo.SharedSchemaRepository;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class SimpleModuleTest {
 
index 662e7b90cae0756c007a265188e7f44d5598f06d..2ebb70bfb32aa574690340c816c4114513412ae7 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
-import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 0938c0b961d70c9444716519f24773f5a7555d29..e13e3174103b16a211190ac0755eb5e903ade30a 100644 (file)
@@ -12,7 +12,7 @@ import java.util.Map;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
-import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 
 final class RevisionDependencyResolver extends DependencyResolver {
 
index fd995fd6f200580f5cd8e57dff803cb2c3c43060..370536b3eb085c90589e739bdd7cd9d67ec607da 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.yangtools.concepts.SemVer;
 import org.opendaylight.yangtools.yang.model.api.ModuleImport;
 import org.opendaylight.yangtools.yang.model.repo.api.SemVerSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
-import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 
 final class SemVerDependencyResolver extends DependencyResolver {
 
index 8c1b3244977b14b0e38c1909fc7e25360e9750fa..a797eca806fc6429709f23c60ff4b72fe599e23f 100644 (file)
@@ -39,11 +39,11 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
 import org.opendaylight.yangtools.yang.parser.impl.DefaultReactors;
-import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangStatementStreamSource;
 import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
 import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementReactor.BuildAction;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index 5520c5e3e9dff9e78be5de9f36f516c44dead501..b5c2fcfe3e02f568f4fe2a1b1561226d39796044 100644 (file)
@@ -49,8 +49,8 @@ import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceProvider;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistration;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistry;
 import org.opendaylight.yangtools.yang.model.repo.util.InMemorySchemaSourceCache;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
similarity index 80%
rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java
rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/ASTSchemaSource.java
index f772a495c0f47b4a431e3f85ea610f765dc1bc8b..99cd84bbde1210989ca6d4a4f2fe927e43e579d4 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.util;
+package org.opendaylight.yangtools.yang.parser.rfc6020.repo;
 
 import static java.util.Objects.requireNonNull;
 
@@ -19,7 +19,6 @@ 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.impl.util.YangModelDependencyInfo;
 
 /**
  * Abstract Syntax Tree representation of a schema source. This representation is internal to the YANG parser
@@ -48,23 +47,6 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
         this.symbolicName = symbolicName;
     }
 
-    /**
-     * Create a new instance of AST representation for a abstract syntax tree, performing minimal semantic analysis
-     * to acquire dependency information.
-     *
-     * @param identifier
-     *            SourceIdentifier of yang schema source.
-     * @param tree
-     *            ANTLR abstract syntax tree
-     * @return A new representation instance.
-     * @throws YangSyntaxErrorException
-     *             if we fail to extract dependency information.
-     */
-    public static ASTSchemaSource create(@Nonnull final SourceIdentifier identifier,
-            @Nonnull final ParserRuleContext tree) throws YangSyntaxErrorException {
-        return create(identifier, null, tree);
-    }
-
     /**
      * Create a new instance of AST representation for a abstract syntax tree, performing minimal semantic analysis
      * to acquire dependency information.
@@ -72,19 +54,14 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation {
      * @param symbolicName
      *            Symbolic name
      * @param identifier
-     *            SourceIdentifier of yang schema source.
+     *            SourceIdentifier of YANG schema source.
      * @param tree
      *            ANTLR abstract syntax tree
      * @return A new representation instance.
      * @throws YangSyntaxErrorException
      *             if we fail to extract dependency information.
      */
-    public static ASTSchemaSource create(@Nonnull final String symbolicName, @Nonnull final SourceIdentifier identifier,
-            @Nonnull final ParserRuleContext tree) throws YangSyntaxErrorException {
-        return create(identifier, symbolicName, tree);
-    }
-
-    private static ASTSchemaSource create(@Nonnull final SourceIdentifier identifier,
+    static ASTSchemaSource create(@Nonnull final SourceIdentifier identifier,
             @Nullable final String symbolicName, @Nonnull final ParserRuleContext tree)
                     throws YangSyntaxErrorException {
         final YangModelDependencyInfo depInfo = YangModelDependencyInfo.fromAST(identifier, tree);
similarity index 84%
rename from yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java
rename to yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/TextToASTTransformer.java
index 12e486f3add4ac91f90088c48d1c288329a2a2b8..85c51f5e6bc662ad6306f1cd54faceb989af737d 100644 (file)
@@ -6,12 +6,11 @@
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
 
-package org.opendaylight.yangtools.yang.parser.util;
+package org.opendaylight.yangtools.yang.parser.rfc6020.repo;
 
 import com.google.common.annotations.Beta;
 import com.google.common.util.concurrent.Futures;
 import java.io.IOException;
-import java.util.Optional;
 import org.antlr.v4.runtime.ParserRuleContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository;
@@ -19,7 +18,6 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceRegistry;
 import org.opendaylight.yangtools.yang.model.repo.util.SchemaSourceTransformer;
-import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangStatementStreamSource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -48,10 +46,6 @@ public final class TextToASTTransformer extends SchemaSourceTransformer<YangText
 
         // TODO: missing validation (YangModelBasicValidationListener should be re-implemented to new parser)
 
-        final Optional<String> opt = text.getSymbolicName();
-        final ASTSchemaSource result = opt.isPresent() ? ASTSchemaSource.create(opt.get(), text.getIdentifier(), ctx)
-                : ASTSchemaSource.create(text.getIdentifier(), ctx);
-
-        return result;
+        return ASTSchemaSource.create(text.getIdentifier(), text.getSymbolicName().orElse(null), ctx);
     }
 }
@@ -5,11 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.impl.util;
+package org.opendaylight.yangtools.yang.parser.rfc6020.repo;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static java.util.Objects.requireNonNull;
 
+import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableSet;
@@ -30,7 +31,6 @@ import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 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.rfc6020.repo.YangStatementStreamSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.DeclarationInTextSource;
 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping;
@@ -169,7 +169,7 @@ public abstract class YangModelDependencyInfo {
      * @return {@link YangModelDependencyInfo}
      * @throws YangSyntaxErrorException If the AST is not a valid YANG module/submodule
      */
-    public static YangModelDependencyInfo fromAST(final SourceIdentifier source, final ParserRuleContext tree)
+    static YangModelDependencyInfo fromAST(final SourceIdentifier source, final ParserRuleContext tree)
             throws YangSyntaxErrorException {
 
         if (tree instanceof StatementContext) {
@@ -204,6 +204,7 @@ public abstract class YangModelDependencyInfo {
      * @throws IllegalArgumentException
      *             If input stream is not valid YANG stream
      */
+    @VisibleForTesting
     public static YangModelDependencyInfo forResource(final Class<?> refClass, final String resourceName)
             throws IOException, YangSyntaxErrorException {
         final YangStatementStreamSource source = YangStatementStreamSource.create(
index 83806afffa62f4c9e9b004a3a8993c9e488c51fb..39750c6f8fbdaeacbefcf6d8479bc77965e5b6b7 100644 (file)
@@ -17,6 +17,7 @@ import static org.junit.Assert.assertTrue;
 import java.io.IOException;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.model.parser.api.YangSyntaxErrorException;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 
 public class YangModelDependencyInfoTest {
 
index 5efe18515f86f2c42a8d03fa211ddbeb09f06362..3ddd7e0127d1af099ed718486abcb182f46c4a8e 100644 (file)
@@ -15,7 +15,7 @@ import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
-import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.YangModelDependencyInfo;
 
 @Deprecated
 public class DependencyResolverTest {
index 97da30ddc30acafefe1f7b2d9dfebe58cfb97f69..37060aef5b737f93ab202496ce65c2c4e2ef721a 100644 (file)
@@ -26,8 +26,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class MultipleRevImportBug6875Test {
     private static final String BAR_NS = "bar";
index 0b28c71cbb09ac88e3a07d62d326cbbe6227b1f4..4e70276723bd22283859ae7c9e3fcbd42bda7c6f 100644 (file)
@@ -20,8 +20,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class OpenconfigVerSharedSchemaRepositoryTest {
 
index cf18584c3ada422f3ae708cbd7ae7cf11cc131d2..86ce7e768294f5d45047c9c7e4ee7eddb49085ad 100644 (file)
@@ -24,8 +24,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class SharedSchemaContextFactoryTest {
 
index fadb8570e164eb5d6705d5d51f6542fe838c0e29..c80149ad9038c354ad01e03898f951e8ce919a29 100644 (file)
@@ -53,8 +53,8 @@ import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.SchemaSourceListener;
 import org.opendaylight.yangtools.yang.model.repo.util.FilesystemSchemaSourceCache;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class SharedSchemaRepositoryTest {
 
index 58025d3b94824914960cbf7efa3f0f036787edfe..47d6b49e9649a6cbbaafbca72febaf4183a7b8a8 100644 (file)
@@ -26,8 +26,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.ASTSchemaSource;
-import org.opendaylight.yangtools.yang.parser.util.TextToASTTransformer;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
+import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
 
 public class SharedSchemaRepositoryWithFeaturesTest {
 
similarity index 99%
rename from yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/util/SchemaContextUtilTest.java
rename to yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/SchemaContextUtilTest.java
index dcb9f2bdd30d9cd39e0c16dee13af6e810daa834..e902d8034f2202183510f9545f2dd5aad6b25a8c 100644 (file)
@@ -5,7 +5,7 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-package org.opendaylight.yangtools.yang.parser.util;
+package org.opendaylight.yangtools.yang.parser.rfc6020.repo;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;