import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThrows;
+import com.google.common.util.concurrent.ListenableFuture;
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.binding.runtime.api.DefaultBindingRuntimeContext;
-import org.opendaylight.binding.runtime.spi.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingCodecContext;
+import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecFactory;
import org.opendaylight.mdsal.binding.generator.impl.DefaultBindingRuntimeGenerator;
+import org.opendaylight.mdsal.binding.runtime.api.DefaultBindingRuntimeContext;
+import org.opendaylight.mdsal.binding.runtime.api.ModuleInfoSnapshot;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
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.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
+import org.opendaylight.yangtools.yang.model.api.source.SourceIdentifier;
+import org.opendaylight.yangtools.yang.model.api.source.YangTextSource;
import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
public class CurrentAdapterSerializerTest {
*/
@Test
public void fromNormalizedNodeTest() throws Exception {
- final SchemaContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
- final NormalizedNode<?, ?> data = prepareData(schemaCtx, Uint16.valueOf(42));
+ final EffectiveModelContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
+ final NormalizedNode data = prepareData(schemaCtx, Uint16.valueOf(42));
final Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
final DataObject value = fromNormalizedNode.getValue();
*/
@Test
public void fromNormalizedNodeWithAnotherInputDataTest() throws Exception {
- final SchemaContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
- final NormalizedNode<?, ?> data = prepareData(schemaCtx, "42");
+ final EffectiveModelContext schemaCtx = YangParserTestUtils.parseYangResource("/test.yang");
+ final NormalizedNode data = prepareData(schemaCtx, "42");
final Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode = fromNormalizedNode(data, schemaCtx);
final DataObject value = fromNormalizedNode.getValue();
assertThat(ex.getCause(), instanceOf(IllegalArgumentException.class));
}
- private static NormalizedNode<?, ?> prepareData(final SchemaContext 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 Builders.containerBuilder()
+ .withNodeIdentifier(new NodeIdentifier(QName.create("urn:test", "2017-01-01", "cont")))
+ .withChild(Builders.leafBuilder()
+ .withNodeIdentifier(new NodeIdentifier(QName.create("urn:test", "2017-01-01", "vlan-id")))
+ .withValue(value).build())
+ .build();
}
- private static Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode(final NormalizedNode<?, ?> data,
- final SchemaContext schemaCtx) {
- final CurrentAdapterSerializer codec = new CurrentAdapterSerializer(new BindingCodecContext(
- DefaultBindingRuntimeContext.create(new DefaultBindingRuntimeGenerator().generateTypeMapping(schemaCtx),
- GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy())));
+ private static Entry<InstanceIdentifier<?>, DataObject> fromNormalizedNode(final NormalizedNode data,
+ final EffectiveModelContext schemaCtx) {
+ final CurrentAdapterSerializer 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
+ public EffectiveModelContext modelContext() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public ListenableFuture<? extends YangTextSource> getSource(final SourceIdentifier sourceIdentifier) {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> Class<T> loadClass(final String fullyQualifiedName) throws ClassNotFoundException {
+ return (Class<T>) Class.forName(fullyQualifiedName);
+ }
+ }
}