Fix odl-mdsal-rfc8294-netty
[mdsal.git] / binding / mdsal-binding-dom-adapter / src / test / java / org / opendaylight / mdsal / binding / dom / adapter / CurrentAdapterSerializerTest.java
index e0cd4a0ad7d0decd8fe2ada7e35f54f7ab7d078e..71d46450a22c8e3b05defd24c6f4e26253e8412c 100644 (file)
@@ -17,24 +17,25 @@ import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Map.Entry;
+import java.util.ServiceLoader;
 import org.junit.Test;
-import org.opendaylight.mdsal.binding.dom.adapter.test.util.TestingModuleInfoSnapshot;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
-import org.opendaylight.mdsal.binding.generator.impl.DefaultBindingRuntimeGenerator;
-import org.opendaylight.mdsal.binding.runtime.api.DefaultBindingRuntimeContext;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.binding.DataObject;
+import org.opendaylight.yangtools.binding.DataObjectReference;
+import org.opendaylight.yangtools.binding.data.codec.spi.BindingDOMCodecFactory;
+import org.opendaylight.yangtools.binding.generator.impl.DefaultBindingRuntimeGenerator;
+import org.opendaylight.yangtools.binding.runtime.api.DefaultBindingRuntimeContext;
+import org.opendaylight.yangtools.binding.runtime.api.ModuleInfoSnapshot;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
+import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException;
 import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 
 public class CurrentAdapterSerializerTest {
@@ -50,11 +51,11 @@ public class CurrentAdapterSerializerTest {
      */
     @Test
     public void fromNormalizedNodeTest() throws Exception {
-        final EffectiveModelContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
-        final NormalizedNode<?, ?> data = prepareData(schemaCtx, Uint16.valueOf(42));
-        final Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
+        final var schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
+        final var data = prepareData(schemaCtx, Uint16.valueOf(42));
+        final var fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
 
-        final DataObject value = fromNormalizedNode.getValue();
+        final var value = fromNormalizedNode.getValue();
         assertNotNull(value);
         final Class<? extends DataObject> iface = value.implementedInterface();
         assertEquals("Cont", iface.getSimpleName());
@@ -81,11 +82,11 @@ public class CurrentAdapterSerializerTest {
      */
     @Test
     public void fromNormalizedNodeWithAnotherInputDataTest() throws Exception {
-        final EffectiveModelContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
-        final NormalizedNode<?, ?> data = prepareData(schemaCtx, "42");
+        final var schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
+        final var data = prepareData(schemaCtx, "42");
 
-        final Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
-        final DataObject value = fromNormalizedNode.getValue();
+        final var fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
+        final var value = fromNormalizedNode.getValue();
         assertNotNull(value);
         final Class<? extends DataObject> iface = value.implementedInterface();
         assertEquals("Cont", iface.getSimpleName());
@@ -96,26 +97,53 @@ public class CurrentAdapterSerializerTest {
         assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class));
     }
 
-    private static NormalizedNode<?, ?> prepareData(final EffectiveModelContext schemaCtx, final Object value) {
-        final DataSchemaNode dataChildByName =
-                schemaCtx.getDataChildByName(QName.create("urn:test", "2017-01-01", "cont"));
-        final DataSchemaNode leaf = ((ContainerSchemaNode) dataChildByName)
-                .getDataChildByName(QName.create("urn:test", "2017-01-01", "vlan-id"));
-
-        final DataContainerChild<?, ?> child = Builders.leafBuilder((LeafSchemaNode) leaf).withValue(value).build();
-        final NormalizedNode<?, ?> data =
-                Builders.containerBuilder((ContainerSchemaNode) dataChildByName).withChild(child).build();
-        return data;
+    private static ContainerNode prepareData(final EffectiveModelContext schemaCtx, final Object value) {
+        return ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(QName.create("urn:test", "2017-01-01", "cont")))
+            .withChild(ImmutableNodes.leafNode(QName.create("urn:test", "2017-01-01", "vlan-id"), value))
+            .build();
     }
 
-    private static Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode(final NormalizedNode<?, ?> data,
+    private static Entry<DataObjectReference<?>, DataObject> fromNormalizedNode(final NormalizedNode data,
             final EffectiveModelContext schemaCtx) {
-        final CurrentAdapterSerializer codec = new CurrentAdapterSerializer(new BindingCodecContext(
-            new DefaultBindingRuntimeContext(new DefaultBindingRuntimeGenerator().generateTypeMapping(schemaCtx),
+        final var codec = new CurrentAdapterSerializer(
+            ServiceLoader.load(BindingDOMCodecFactory.class).findFirst().orElseThrow()
+                .createBindingDOMCodec(new DefaultBindingRuntimeContext(
+                    new DefaultBindingRuntimeGenerator().generateTypeMapping(schemaCtx),
                     TestingModuleInfoSnapshot.INSTANCE)));
 
-        final YangInstanceIdentifier path = YangInstanceIdentifier.create(NodeIdentifier.create(QName.create(
+        final YangInstanceIdentifier path = YangInstanceIdentifier.of(NodeIdentifier.create(QName.create(
             "urn:test", "2017-01-01", "cont")));
         return codec.fromNormalizedNode(path, data);
     }
+
+    private static final class TestingModuleInfoSnapshot implements ModuleInfoSnapshot {
+        static final TestingModuleInfoSnapshot INSTANCE = new TestingModuleInfoSnapshot();
+
+        private TestingModuleInfoSnapshot() {
+            // Hidden on purpose
+        }
+
+        @Override
+        @SuppressWarnings("unchecked")
+        public <T> Class<T> loadClass(final String fullyQualifiedName) throws ClassNotFoundException {
+            return (Class<T>) Class.forName(fullyQualifiedName);
+        }
+
+        @Override
+        public YangTextSource yangTextSource(final SourceIdentifier arg0) {
+            return null;
+        }
+
+        @Override
+        public YangTextSource getYangTextSource(final SourceIdentifier sourceId) throws MissingSchemaSourceException {
+            throw new MissingSchemaSourceException(sourceId, "no sources");
+        }
+
+        @Override
+        public EffectiveModelContext modelContext() {
+            throw new UnsupportedOperationException();
+        }
+
+    }
 }