Convert yang-data-codec-gson to JPMS 00/102000/8
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 7 Aug 2022 19:33:14 +0000 (21:33 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 8 Aug 2022 08:20:30 +0000 (10:20 +0200)
This is an automatic module, jump the ship and become a full module.

JIRA: YANGTOOLS-1449
Change-Id: Ib1847be1e684e3a694f110d8a3d6b0166d52259c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
codec/yang-data-codec-gson/pom.xml
codec/yang-data-codec-gson/src/main/java/module-info.java [new file with mode: 0644]
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug5446Test.java
codec/yang-data-codec-gson/src/test/resources/bug5446/foo.yang [moved from codec/yang-data-codec-gson/src/test/resources/bug5446/yang/foo.yang with 100% similarity]
codec/yang-data-codec-gson/src/test/resources/bug5446/json/foo.json [deleted file]

index f54776ae1c0a9d855d1bd0b39185fea5ab745753..e01f9076fb0fe55f1d2f0a513d8a7904a3dd676b 100644 (file)
             <artifactId>mockito-configuration</artifactId>
         </dependency>
     </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <configuration>
-                    <instructions>
-                        <Automatic-Module-Name>org.opendaylight.yangtools.yang.data.codec.gson</Automatic-Module-Name>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
 </project>
diff --git a/codec/yang-data-codec-gson/src/main/java/module-info.java b/codec/yang-data-codec-gson/src/main/java/module-info.java
new file mode 100644 (file)
index 0000000..1352b35
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2022 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
+ */
+module org.opendaylight.yangtools.yang.data.codec.gson {
+    exports org.opendaylight.yangtools.yang.data.codec.gson;
+
+    requires transitive com.google.gson;
+    requires transitive org.opendaylight.yangtools.yang.data.api;
+    requires transitive org.opendaylight.yangtools.rfc7952.data.api;
+    requires transitive org.opendaylight.yangtools.rfc8528.data.api;
+
+    requires com.google.common;
+    requires java.xml;
+    requires org.opendaylight.yangtools.util;
+    requires org.opendaylight.yangtools.yang.common;
+    requires org.opendaylight.yangtools.yang.data.impl;
+    requires org.opendaylight.yangtools.yang.data.util;
+    requires org.opendaylight.yangtools.yang.model.api;
+    requires org.opendaylight.yangtools.yang.model.util;
+    requires org.slf4j;
+
+    // Annotations
+    requires static org.checkerframework.checker.qual;
+    requires static com.github.spotbugs.annotations;
+    requires static org.eclipse.jdt.annotation;
+}
index 2df8e5cbf52f737da7671b5fb47dbc7ac563faa4..7c9a8878452d7e45afe1a0d59d0f74d6dcc3094d 100644 (file)
@@ -9,17 +9,12 @@ package org.opendaylight.yangtools.yang.data.codec.gson;
 
 import static org.junit.Assert.assertEquals;
 
-import com.google.gson.JsonElement;
 import com.google.gson.JsonParser;
-import java.io.File;
-import java.io.FileReader;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
-import java.nio.charset.StandardCharsets;
 import java.util.Base64;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
@@ -27,49 +22,44 @@ import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.common.XMLNamespace;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeWriter;
+import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class Bug5446Test {
-
     private static final QNameModule FOO_MODULE = QNameModule.create(XMLNamespace.of("foo"), Revision.of("2015-11-05"));
     private static final QName ROOT_QNAME = QName.create(FOO_MODULE, "root");
     private static final QName IP_ADDRESS_QNAME = QName.create(FOO_MODULE, "ip-address");
-    private static EffectiveModelContext schemaContext;
-
-    @BeforeClass
-    public static void init() {
-        schemaContext = YangParserTestUtils.parseYangResources(Bug5446Test.class, "/bug5446/yang/foo.yang");
-    }
+    private EffectiveModelContext schemaContext;
 
-    @AfterClass
-    public static void cleanup() {
-        schemaContext = null;
+    @Before
+    public void init() {
+        schemaContext = YangParserTestUtils.parseYangResourceDirectory("/bug5446");
     }
 
     @Test
     public void test() throws Exception {
-        final ContainerNode rootNode = createRootNode();
-
-        final Writer writer = new StringWriter();
-        final String jsonOutput = normalizedNodeToJsonStreamTransformation(writer, rootNode);
+        final String jsonOutput = normalizedNodeToJsonStreamTransformation(
+            new StringWriter(),
+            Builders.containerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(ROOT_QNAME))
+                .withChild(ImmutableNodes.leafNode(IP_ADDRESS_QNAME, Base64.getDecoder().decode("fwAAAQ==")))
+                .build());
 
-        final JsonElement serializedJson = JsonParser.parseString(jsonOutput);
-        final JsonElement expextedJson = JsonParser.parseReader(new FileReader(new File(getClass().getResource(
-                "/bug5446/json/foo.json").toURI()), StandardCharsets.UTF_8));
-
-        assertEquals(expextedJson, serializedJson);
+        assertEquals(JsonParser.parseString("""
+            {
+              "foo:root" : {
+                "ip-address" : "fwAAAQ=="
+               }
+            }"""),
+            JsonParser.parseString(jsonOutput));
     }
 
-    private static String normalizedNodeToJsonStreamTransformation(final Writer writer,
-            final NormalizedNode inputStructure) throws IOException {
-
+    private String normalizedNodeToJsonStreamTransformation(final Writer writer, final ContainerNode inputStructure)
+            throws IOException {
         final NormalizedNodeStreamWriter jsonStream = JSONNormalizedNodeStreamWriter.createExclusiveWriter(
             JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(schemaContext),
             JsonWriterFactory.createJsonWriter(writer, 2));
@@ -79,10 +69,4 @@ public class Bug5446Test {
 
         return writer.toString();
     }
-
-    private static ContainerNode createRootNode() {
-        LeafNode<byte[]> ipAddress = ImmutableNodes.leafNode(IP_ADDRESS_QNAME, Base64.getDecoder().decode("fwAAAQ=="));
-        return ImmutableContainerNodeBuilder.create().withNodeIdentifier(new NodeIdentifier(ROOT_QNAME))
-                .withChild(ipAddress).build();
-    }
 }
diff --git a/codec/yang-data-codec-gson/src/test/resources/bug5446/json/foo.json b/codec/yang-data-codec-gson/src/test/resources/bug5446/json/foo.json
deleted file mode 100644 (file)
index a62eb74..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-   "foo:root":{
-         "ip-address":"fwAAAQ=="
-   }
-}
\ No newline at end of file