Switch BasicCodeGenerator to use EffectiveModelContext 16/84816/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 30 Sep 2019 18:13:17 +0000 (20:13 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 1 Oct 2019 06:33:12 +0000 (08:33 +0200)
This rolls out EffectiveModelContext to codegen plugins, so they
can take advantage of it.

JIRA: MDSAL-435
Change-Id: I94d7385d29962e281a55b5e0522f7bc198648175
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-maven-plugin-spi/src/main/java/org/opendaylight/yangtools/yang2sources/spi/BasicCodeGenerator.java
yang/yang-maven-plugin-spi/src/test/java/org/opendaylight/yangtools/yang2sources/spi/CodeGeneratorTestImpl.java
yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ContextHolder.java
yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/ProcessorModuleReactor.java
yang/yang-maven-plugin/src/main/java/org/opendaylight/yangtools/yang2sources/plugin/YangToSourcesMojo.java
yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/GenerateSourcesTest.java
yang/yang-maven-plugin/src/test/java/org/opendaylight/yangtools/yang2sources/plugin/UtilTest.java

index 99a4d1c6af44edfcabc490ee91fbfddce78c3b7a..d6695099ef2c67625aa3712bade8685f1701dd3c 100644 (file)
@@ -14,8 +14,8 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 /**
  * Maven 3.1.x and newer uses SLF4J internally, which means we do not need to pass a logger instance around.
@@ -36,7 +36,7 @@ public interface BasicCodeGenerator {
     }
 
     /**
-     * Generate sources from provided {@link SchemaContext}.
+     * Generate sources from provided {@link EffectiveModelContext}.
      *
      * @param context
      *            parsed from YANG files
@@ -49,7 +49,7 @@ public interface BasicCodeGenerator {
      *            Function converting a local module to the packaged resource path
      * @return collection of files that were generated from schema context
      */
-    Collection<File> generateSources(SchemaContext context, File outputBaseDir, Set<Module> currentModules,
+    Collection<File> generateSources(EffectiveModelContext context, File outputBaseDir, Set<Module> currentModules,
             Function<Module, Optional<String>> moduleResourcePathResolver) throws IOException;
 
     /**
index e9a8db6b6a9181b84d36feffb7a62c20b35e1d23..1dea8426b5928446999b5a13cc96754a335f4a39 100644 (file)
@@ -15,8 +15,8 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.function.Function;
 import org.apache.maven.project.MavenProject;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -25,8 +25,9 @@ public class CodeGeneratorTestImpl implements BasicCodeGenerator, MavenProjectAw
     private static final Logger LOG = LoggerFactory.getLogger(CodeGeneratorTestImpl.class);
 
     @Override
-    public Collection<File> generateSources(SchemaContext context, File outputBaseDir, Set<Module> currentModules,
-            Function<Module, Optional<String>> moduleResourcePathResolver) throws IOException {
+    public Collection<File> generateSources(final EffectiveModelContext context, final File outputBaseDir,
+            final Set<Module> currentModules, final Function<Module, Optional<String>> moduleResourcePathResolver)
+                    throws IOException {
         LOG.debug("{} generateSources:context: {}", getClass().getCanonicalName(), context);
         LOG.debug("{} generateSources:outputBaseDir: {}", getClass().getCanonicalName(), outputBaseDir);
         LOG.debug("{} generateSources:currentModules: {}", getClass().getCanonicalName(), currentModules);
index 237d4fe67435554b6cf414be76efab16e327dc48..83d1c4c526618dd36652c42230ce8e17c19fd5c7 100644 (file)
@@ -13,22 +13,22 @@ import com.google.common.collect.ImmutableSet;
 import java.util.Optional;
 import java.util.Set;
 import org.opendaylight.yangtools.concepts.Immutable;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 
 final class ContextHolder implements Immutable {
-    private final SchemaContext context;
+    private final EffectiveModelContext context;
     private final Set<Module> modules;
     private final Set<SourceIdentifier> sources;
 
-    ContextHolder(final SchemaContext context, final Set<Module> modules, final Set<SourceIdentifier> sources) {
+    ContextHolder(final EffectiveModelContext context, final Set<Module> modules, final Set<SourceIdentifier> sources) {
         this.context = requireNonNull(context);
         this.modules = ImmutableSet.copyOf(modules);
         this.sources = ImmutableSet.copyOf(sources);
     }
 
-    SchemaContext getContext() {
+    EffectiveModelContext getContext() {
         return context;
     }
 
index 8f02a93c3af7b3805ccbf89fb10b56c8a30af492..62aea1b5bac8550744d4a10867ba5199dd9399de 100644 (file)
@@ -7,10 +7,10 @@
  */
 package org.opendaylight.yangtools.yang2sources.plugin;
 
+import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.MoreObjects;
-import com.google.common.base.Verify;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Maps;
 import com.google.common.io.CharStreams;
@@ -23,8 +23,8 @@ import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParser;
 import org.opendaylight.yangtools.yang.model.parser.api.YangParserException;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
@@ -59,7 +59,7 @@ final class ProcessorModuleReactor {
             parser.addLibSource(source);
         }
 
-        final SchemaContext schemaContext = Verify.verifyNotNull(parser.buildSchemaContext());
+        final EffectiveModelContext schemaContext = verifyNotNull(parser.buildEffectiveModel());
 
         final Set<Module> modules = new HashSet<>();
         for (Module module : schemaContext.getModules()) {
index 9694bc4671e15e65e8b862d08154df8559cc976c..a2d83c1e83dc717c1be142eb1db90686a9d9260f 100644 (file)
@@ -29,7 +29,7 @@ import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.repository.RepositorySystem;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
 import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator;
 import org.sonatype.plexus.build.incremental.BuildContext;
@@ -43,7 +43,7 @@ import org.sonatype.plexus.build.incremental.BuildContext;
  * <li>For each {@link BasicCodeGenerator} from {@link #codeGenerators}:
  * <ol>
  * <li>Instantiate using default constructor</li>
- * <li>Call {@link BasicCodeGenerator#generateSources(SchemaContext, File, Set, Function)}</li>
+ * <li>Call {@link BasicCodeGenerator#generateSources(EffectiveModelContext, File, Set, Function)}</li>
  * </ol></li>
  * </ol>
  */
index ead27926045f7d483d1d9a18c235e6a1fe1c603b..491a51844e3eefb255d90d80380d9f92822eb736 100644 (file)
@@ -33,8 +33,8 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
 import org.opendaylight.yangtools.yang2sources.spi.BasicCodeGenerator;
 import org.opendaylight.yangtools.yang2sources.spi.MavenProjectAware;
@@ -109,8 +109,9 @@ public class GenerateSourcesTest {
         }
 
         @Override
-        public Collection<File> generateSources(SchemaContext context, File outputBaseDir, Set<Module> currentModules,
-                Function<Module, Optional<String>> moduleResourcePathResolver) throws IOException {
+        public Collection<File> generateSources(final EffectiveModelContext context, final File outputBaseDir,
+                final Set<Module> currentModules, final Function<Module, Optional<String>> moduleResourcePathResolver)
+                        throws IOException {
             called++;
             outputDir = outputBaseDir;
             return new ArrayList<>();
index 68e9c896542ba871f6fe1340f1019b91bbfa0863..bfb822d5c03fafa2a086eb66b96a32e5064bea0f 100644 (file)
@@ -31,8 +31,8 @@ import org.apache.maven.repository.RepositorySystem;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.junit.MockitoJUnitRunner;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -99,7 +99,8 @@ public class UtilTest {
 
     @Test
     public void contextHolderTest() throws Exception {
-        final SchemaContext context = YangParserTestUtils.parseYangResources(getClass(), "/test.yang", "/test2.yang");
+        final EffectiveModelContext context = YangParserTestUtils.parseYangResources(getClass(), "/test.yang",
+            "/test2.yang");
         final Set<Module> yangModules = new HashSet<>();
         final ContextHolder cxH = new ContextHolder(context, yangModules, ImmutableSet.of());
         assertEquals(context, cxH.getContext());