From 9041b2200d7c48962615f414ed884cb54a7573df Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 16 Nov 2020 20:49:10 +0100 Subject: [PATCH] Convert yang-data-impl to a JPMS module 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 (cherry picked from commit 2fb9e7cb0aaeac0792f918190803b2041c192611) --- yang/yang-data-impl/pom.xml | 5 ++- .../src/main/java/module-info.java | 37 +++++++++++++++++++ .../schema/tree/InMemoryDataTreeFactory.java | 6 +++ .../data/impl/schema/tree/Bug5830Test.java | 6 +-- .../impl/schema/tree/Bug5968MergeTest.java | 34 +++++++---------- .../data/impl/schema/tree/Bug5968Test.java | 19 ++++------ .../data/impl/schema/tree/Bug8291Test.java | 4 +- .../yang/data/impl/schema/tree/YT776Test.java | 2 +- .../{bug5830 => bug-5830}/foo-multiple.yang | 0 .../foo-non-presence.yang | 0 .../{bug5830 => bug-5830}/foo-presence.yang | 0 .../{bug5968/foo.yang => bug5968.yang} | 6 +-- .../{bug8291/foo.yang => bug8291.yang} | 8 ++-- .../src/test/resources/{yt776 => }/yt776.yang | 0 14 files changed, 81 insertions(+), 46 deletions(-) create mode 100644 yang/yang-data-impl/src/main/java/module-info.java rename yang/yang-data-impl/src/test/resources/{bug5830 => bug-5830}/foo-multiple.yang (100%) rename yang/yang-data-impl/src/test/resources/{bug5830 => bug-5830}/foo-non-presence.yang (100%) rename yang/yang-data-impl/src/test/resources/{bug5830 => bug-5830}/foo-presence.yang (100%) rename yang/yang-data-impl/src/test/resources/{bug5968/foo.yang => bug5968.yang} (87%) rename yang/yang-data-impl/src/test/resources/{bug8291/foo.yang => bug8291.yang} (85%) rename yang/yang-data-impl/src/test/resources/{yt776 => }/yt776.yang (100%) diff --git a/yang/yang-data-impl/pom.xml b/yang/yang-data-impl/pom.xml index efcfd97299..f68efdfb8f 100644 --- a/yang/yang-data-impl/pom.xml +++ b/yang/yang-data-impl/pom.xml @@ -26,8 +26,8 @@ true - org.opendaylight.yangtools.yang.data.impl + {local-packages}, org.opendaylight.yangtools.yang.data.impl.*, @@ -80,6 +80,7 @@ javax.inject javax.inject + provided true @@ -88,7 +89,7 @@ org.osgi - osgi.cmpn + org.osgi.service.component.annotations 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 index 0000000000..7901619c0a --- /dev/null +++ b/yang/yang-data-impl/src/main/java/module-info.java @@ -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; +} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeFactory.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeFactory.java index 57e91b6ce7..17e330eb09 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeFactory.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/InMemoryDataTreeFactory.java @@ -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()), diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5830Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5830Test.java index f94da1c607..9571bb6be0 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5830Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5830Test.java @@ -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); diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968MergeTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968MergeTest.java index 81922ba217..68900e2ee2 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968MergeTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968MergeTest.java @@ -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()); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968Test.java index a596d43b8e..dfc5a42e04 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug5968Test.java @@ -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()); } } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug8291Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug8291Test.java index 611bde07be..2199d48917 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug8291Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/Bug8291Test.java @@ -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); } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java index 6d6bcdc8da..2e8f7d7b96 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/YT776Test.java @@ -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 diff --git a/yang/yang-data-impl/src/test/resources/bug5830/foo-multiple.yang b/yang/yang-data-impl/src/test/resources/bug-5830/foo-multiple.yang similarity index 100% rename from yang/yang-data-impl/src/test/resources/bug5830/foo-multiple.yang rename to yang/yang-data-impl/src/test/resources/bug-5830/foo-multiple.yang diff --git a/yang/yang-data-impl/src/test/resources/bug5830/foo-non-presence.yang b/yang/yang-data-impl/src/test/resources/bug-5830/foo-non-presence.yang similarity index 100% rename from yang/yang-data-impl/src/test/resources/bug5830/foo-non-presence.yang rename to yang/yang-data-impl/src/test/resources/bug-5830/foo-non-presence.yang diff --git a/yang/yang-data-impl/src/test/resources/bug5830/foo-presence.yang b/yang/yang-data-impl/src/test/resources/bug-5830/foo-presence.yang similarity index 100% rename from yang/yang-data-impl/src/test/resources/bug5830/foo-presence.yang rename to yang/yang-data-impl/src/test/resources/bug-5830/foo-presence.yang diff --git a/yang/yang-data-impl/src/test/resources/bug5968/foo.yang b/yang/yang-data-impl/src/test/resources/bug5968.yang 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 a3bdec4cb6..538f95026d 100644 --- a/yang/yang-data-impl/src/test/resources/bug5968/foo.yang +++ b/yang/yang-data-impl/src/test/resources/bug5968.yang @@ -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"; diff --git a/yang/yang-data-impl/src/test/resources/bug8291/foo.yang b/yang/yang-data-impl/src/test/resources/bug8291.yang 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 3c7fc9316c..c13ec3a2c2 100644 --- a/yang/yang-data-impl/src/test/resources/bug8291/foo.yang +++ b/yang/yang-data-impl/src/test/resources/bug8291.yang @@ -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 +} diff --git a/yang/yang-data-impl/src/test/resources/yt776/yt776.yang b/yang/yang-data-impl/src/test/resources/yt776.yang similarity index 100% rename from yang/yang-data-impl/src/test/resources/yt776/yt776.yang rename to yang/yang-data-impl/src/test/resources/yt776.yang -- 2.36.6