Convert yang-data-impl to a JPMS module 55/93855/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 16 Nov 2020 19:49:10 +0000 (20:49 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 17 Nov 2020 12:19:24 +0000 (13:19 +0100)
This is a mostly straightforward conversion except we need to move
some files around to allow them to be loaded by external libraries
during UT.

JIRA: YANGTOOLS-1175
Change-Id: Iacecd4157e34c58d35bd2dc495eb178d7e3c86a6
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 2fb9e7cb0aaeac0792f918190803b2041c192611)

14 files changed:
yang/yang-data-impl/pom.xml
yang/yang-data-impl/src/main/java/module-info.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeFactory.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5830Test.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968MergeTest.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968Test.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug8291Test.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java
yang/yang-data-impl/src/test/resources/bug-5830/foo-multiple.yang [moved from yang/yang-data-impl/src/test/resources/bug5830/foo-multiple.yang with 100% similarity]
yang/yang-data-impl/src/test/resources/bug-5830/foo-non-presence.yang [moved from yang/yang-data-impl/src/test/resources/bug5830/foo-non-presence.yang with 100% similarity]
yang/yang-data-impl/src/test/resources/bug-5830/foo-presence.yang [moved from yang/yang-data-impl/src/test/resources/bug5830/foo-presence.yang with 100% similarity]
yang/yang-data-impl/src/test/resources/bug5968.yang [moved from yang/yang-data-impl/src/test/resources/bug5968/foo.yang with 87% similarity]
yang/yang-data-impl/src/test/resources/bug8291.yang [moved from yang/yang-data-impl/src/test/resources/bug8291/foo.yang with 85% similarity]
yang/yang-data-impl/src/test/resources/yt776.yang [moved from yang/yang-data-impl/src/test/resources/yt776/yt776.yang with 100% similarity]

index efcfd972999d48cbd96985ba927d0068d79fdc39..f68efdfb8fd007b9f0464a564de1012d060c63b8 100644 (file)
@@ -26,8 +26,8 @@
                 <extensions>true</extensions>
                 <configuration>
                     <instructions>
-                        <Automatic-Module-Name>org.opendaylight.yangtools.yang.data.impl</Automatic-Module-Name>
                         <!-- FIXME: do not export data.impl -->
+                        <!-- FIXME: use OSGi annotations when we have R7 -->
                         <Export-Package>
                             {local-packages},
                             org.opendaylight.yangtools.yang.data.impl.*,
@@ -80,6 +80,7 @@
         <dependency>
             <groupId>javax.inject</groupId>
             <artifactId>javax.inject</artifactId>
+            <scope>provided</scope>
             <optional>true</optional>
         </dependency>
         <dependency>
@@ -88,7 +89,7 @@
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
+            <artifactId>org.osgi.service.component.annotations</artifactId>
         </dependency>
 
         <dependency>
diff --git a/yang/yang-data-impl/src/main/java/module-info.java b/yang/yang-data-impl/src/main/java/module-info.java
new file mode 100644 (file)
index 0000000..7901619
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeFactory;
+import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory;
+
+module org.opendaylight.yangtools.yang.data.impl {
+    // FIXME: do not export data.impl.*
+    exports org.opendaylight.yangtools.yang.data.impl.codec;
+    exports org.opendaylight.yangtools.yang.data.impl.leafref;
+    exports org.opendaylight.yangtools.yang.data.impl.schema;
+    exports org.opendaylight.yangtools.yang.data.impl.schema.builder.api;
+    exports org.opendaylight.yangtools.yang.data.impl.schema.builder.impl;
+    exports org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid;
+    exports org.opendaylight.yangtools.yang.data.impl.schema.nodes;
+    exports org.opendaylight.yangtools.yang.data.impl.schema.tree;
+
+    provides DataTreeFactory with InMemoryDataTreeFactory;
+
+    requires transitive org.opendaylight.yangtools.yang.data.api;
+    requires transitive org.opendaylight.yangtools.rfc7952.data.api;
+    requires org.opendaylight.yangtools.util;
+    requires org.opendaylight.yangtools.rfc7952.data.util;
+    requires org.opendaylight.yangtools.rfc8528.data.util;
+    requires org.opendaylight.yangtools.yang.model.util;
+    requires org.slf4j;
+
+    // Annotations
+    requires static transitive org.eclipse.jdt.annotation;
+    requires static org.osgi.service.component.annotations;
+    requires static javax.inject;
+    requires static metainf.services;
+}
index 57e91b6ce70515234ce3c99cbd1356b0bf8f678d..17e330eb09e544c6c5ea11f4ca1ebc66140cb35b 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree;
 import static com.google.common.base.Preconditions.checkArgument;
 
 import java.util.Optional;
+import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.eclipse.jdt.annotation.NonNull;
 import org.kohsuke.MetaInfServices;
@@ -56,6 +57,11 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
     private static final @NonNull NormalizedNode<?, ?> ROOT_CONTAINER =
             ImmutableNodes.containerNode(SchemaContext.NAME);
 
+    @Inject
+    public InMemoryDataTreeFactory() {
+        // Exposed for DI
+    }
+
     @Override
     public DataTree create(final DataTreeConfiguration treeConfig) {
         return new InMemoryDataTree(TreeNodeFactory.createTreeNode(createRoot(treeConfig.getRootPath()),
index f94da1c607b571c9e683f69923ecdda7fa4c7f73..9571bb6be0ed888c23d88df81aa1e2d9c1606361 100644 (file)
@@ -71,7 +71,7 @@ public class Bug5830Test {
     }
 
     private static void testPresenceContainer() throws DataValidationFailedException {
-        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug5830/foo-presence.yang");
+        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug-5830/foo-presence.yang");
         assertNotNull("Schema context must not be null.", schemaContext);
 
         testContainerIsNotPresent(schemaContext);
@@ -87,7 +87,7 @@ public class Bug5830Test {
     }
 
     private static void testNonPresenceContainer() throws DataValidationFailedException {
-        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug5830/foo-non-presence.yang");
+        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug-5830/foo-non-presence.yang");
         assertNotNull("Schema context must not be null.", schemaContext);
 
         try {
@@ -111,7 +111,7 @@ public class Bug5830Test {
     }
 
     private static void testMultipleContainers() throws DataValidationFailedException {
-        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug5830/foo-multiple.yang");
+        final EffectiveModelContext schemaContext = TestModel.createTestContext("/bug-5830/foo-multiple.yang");
         assertNotNull("Schema context must not be null.", schemaContext);
 
         testContainerIsNotPresent(schemaContext);
index 81922ba217e7d7949e93c96b5f7aa0383399011f..68900e2ee24177437f76b1438a4f6d75cf6398db 100644 (file)
@@ -33,7 +33,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 public class Bug5968MergeTest {
-    private static final String NS = "foo";
+    private static final String NS = "bug5968";
     private static final String REV = "2016-07-28";
     private static final QName ROOT = QName.create(NS, REV, "root");
     private static final QName MY_LIST = QName.create(NS, REV, "my-list");
@@ -44,7 +44,7 @@ public class Bug5968MergeTest {
 
     @BeforeClass
     public static void beforeClass() {
-        SCHEMA_CONTEXT = TestModel.createTestContext("/bug5968/foo.yang");
+        SCHEMA_CONTEXT = TestModel.createTestContext("/bug5968.yang");
     }
 
     @AfterClass
@@ -97,9 +97,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -116,9 +115,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -136,9 +134,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -279,9 +276,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -345,9 +341,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -424,9 +419,8 @@ public class Bug5968MergeTest {
             inMemoryDataTree.commit(prepare2);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=2}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=2}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
index a596d43b8edf2dee127bcbee2005d6669afc9c12..dfc5a42e04d7e3e09b27513413e39b2b82f00738 100644 (file)
@@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContaine
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 public class Bug5968Test {
-    private static final String NS = "foo";
+    private static final String NS = "bug5968";
     private static final String REV = "2016-07-28";
     private static final QName ROOT = QName.create(NS, REV, "root");
     private static final QName MY_LIST = QName.create(NS, REV, "my-list");
@@ -44,7 +44,7 @@ public class Bug5968Test {
 
     @BeforeClass
     public static void beforeClass() {
-        SCHEMA_CONTEXT = TestModel.createTestContext("/bug5968/foo.yang");
+        SCHEMA_CONTEXT = TestModel.createTestContext("/bug5968.yang");
     }
 
     @AfterClass
@@ -97,9 +97,8 @@ public class Bug5968Test {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -116,9 +115,8 @@ public class Bug5968Test {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
@@ -136,9 +134,8 @@ public class Bug5968Test {
             inMemoryDataTree.commit(prepare);
             fail("Should fail due to missing mandatory leaf.");
         } catch (final IllegalArgumentException e) {
-            assertEquals(
-                    "Node (foo?revision=2016-07-28)my-list[{(foo?revision=2016-07-28)list-id=1}] is missing mandatory "
-                            + "descendant /(foo?revision=2016-07-28)mandatory-leaf", e.getMessage());
+            assertEquals("Node (bug5968?revision=2016-07-28)my-list[{(bug5968?revision=2016-07-28)list-id=1}] is "
+                + "missing mandatory descendant /(bug5968?revision=2016-07-28)mandatory-leaf", e.getMessage());
         }
     }
 
index 611bde07be8e46250e93b071fb8f7ef9c8824d00..2199d4891728d0db78894df2372d221ae9998d8b 100644 (file)
@@ -28,7 +28,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 public class Bug8291Test {
-    private static final String NS = "foo";
+    private static final String NS = "bug8291";
     private static final QName ROOT = QName.create(NS, "root");
     private static final QName OUTER_LIST = QName.create(NS, "outer-list");
     private static final QName OUTER_LIST_ID = QName.create(NS, "id");
@@ -38,7 +38,7 @@ public class Bug8291Test {
 
     @Before
     public void init() {
-        this.schemaContext = TestModel.createTestContext("/bug8291/foo.yang");
+        this.schemaContext = TestModel.createTestContext("/bug8291.yang");
         assertNotNull("Schema context must not be null.", this.schemaContext);
     }
 
index 6d6bcdc8da07c6aa96949511fcac1adf8ff805e7..2e8f7d7b9645110059ab0335edae6890d8d77de1 100644 (file)
@@ -64,7 +64,7 @@ public class YT776Test {
 
     @BeforeClass
     public static void beforeClass() {
-        SCHEMA_CONTEXT = TestModel.createTestContext("/yt776/yt776.yang");
+        SCHEMA_CONTEXT = TestModel.createTestContext("/yt776.yang");
     }
 
     @AfterClass
similarity index 87%
rename from yang/yang-data-impl/src/test/resources/bug5968/foo.yang
rename to yang/yang-data-impl/src/test/resources/bug5968.yang
index a3bdec4cb636d6befef46c495354454e4c64a9a1..538f95026d2cf96b77615fa327ed05bc95b0e255 100644 (file)
@@ -1,7 +1,7 @@
-module foo {
+module bug5968 {
     yang-version 1;
-    namespace "foo";
-    prefix foo;
+    namespace bug5968;
+    prefix bug5968;
 
     revision 2016-07-28 {
         description "test";
similarity index 85%
rename from yang/yang-data-impl/src/test/resources/bug8291/foo.yang
rename to yang/yang-data-impl/src/test/resources/bug8291.yang
index 3c7fc9316c40125e38d31626fd0d8fcd39acd83a..c13ec3a2c21a4dc53e4ab5f6b5cdeee3c1be86fd 100644 (file)
@@ -1,7 +1,7 @@
-module odl-datastore-test {
+module bug8291 {
     yang-version 1;
-    namespace "foo";
-    prefix foo;
+    namespace bug8291;
+    prefix bug8291;
 
     container root {
         list outer-list {
@@ -20,4 +20,4 @@ module odl-datastore-test {
             }
         }
     }
-}
\ No newline at end of file
+}