Bump upstreams
[bgpcep.git] / bgp / rib-spi / src / test / java / org / opendaylight / protocol / bgp / rib / spi / AbstractRIBSupportTest.java
index 635dede9c1bdd1bc25125a4a49073a61ceb12668..c0e7d7d1418d08a8ccd25ec27d14d0623a13a8f3 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.mdsal.binding.dom.adapter.AdapterContext;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer.NodeResult;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.PathId;
@@ -49,14 +49,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.rib.LocRib;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.ChoiceIn;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.binding.KeyAware;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -69,9 +67,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & ChoiceIn<Tables>,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<? super S> & Identifiable<?>> extends AbstractConcurrentDataBrokerTest {
-    protected static final PathId PATH_ID = new PathId(Uint32.ONE);
-    protected static final Attributes ATTRIBUTES = new AttributesBuilder().build();
+        R extends Route & ChildOf<? super S> & KeyAware<?>> extends AbstractConcurrentDataBrokerTest {
+    protected static final @NonNull PathId PATH_ID = new PathId(Uint32.ONE);
+    protected static final @NonNull Attributes ATTRIBUTES = new AttributesBuilder().build();
     private static final InstanceIdentifier<LocRib> RIB = InstanceIdentifier.builder(BgpRib.class)
             .child(Rib.class, new RibKey(new RibId("rib"))).child(LocRib.class).build();
 
@@ -91,18 +89,20 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     public void setUp() throws Exception {
         initMocks(this);
         doAnswer(invocation -> {
-            final Object[] args = invocation.getArguments();
-            AbstractRIBSupportTest.this.insertedRoutes.add(adapter.currentSerializer()
-                    .fromNormalizedNode((YangInstanceIdentifier) args[1], (NormalizedNode) args[2]));
-            return args[1];
+            final var path = invocation.getArgument(1, YangInstanceIdentifier.class);
+            final var data = invocation.getArgument(2, NormalizedNode.class);
+
+            AbstractRIBSupportTest.this.insertedRoutes.add(adapter.currentSerializer().fromNormalizedNode(path, data));
+            return null;
         }).when(tx).put(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class),
                 any(NormalizedNode.class));
 
         doAnswer(invocation -> {
-            final Object[] args = invocation.getArguments();
+            final var path = invocation.getArgument(1, YangInstanceIdentifier.class);
+
             AbstractRIBSupportTest.this.deletedRoutes.add((InstanceIdentifier)
-                adapter.currentSerializer().fromYangInstanceIdentifier((YangInstanceIdentifier) args[1]));
-            return args[1];
+                adapter.currentSerializer().fromYangInstanceIdentifier(path));
+            return null;
         }).when(tx).delete(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class));
         deletedRoutes = new ArrayList<>();
         insertedRoutes = new ArrayList<>();
@@ -116,12 +116,12 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     }
 
     private @NonNull BindingDataObjectCodecTreeNode<Attributes> updateAttributesCodec() {
-        return adapter.currentSerializer().streamChild(Update.class).streamChild(Attributes.class);
+        return adapter.currentSerializer().getStreamChild(Update.class).getStreamDataObject(Attributes.class);
     }
 
     protected final ContainerNode createNlriWithDrawnRoute(final DestinationType destUnreach) {
         return (ContainerNode) updateAttributesCodec()
-            .streamChild(AttributesUnreach.class).streamChild(MpUnreachNlri.class)
+            .getStreamChild(AttributesUnreach.class).getStreamDataObject(MpUnreachNlri.class)
             .serialize(new MpUnreachNlriBuilder()
                 .setWithdrawnRoutes(new WithdrawnRoutesBuilder().setDestinationType(destUnreach).build())
                 .build());
@@ -129,7 +129,7 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
 
     protected final ContainerNode createNlriAdvertiseRoute(final DestinationType destReach) {
         return (ContainerNode) updateAttributesCodec()
-            .streamChild(AttributesReach.class).streamChild(MpReachNlri.class)
+            .getStreamChild(AttributesReach.class).getStreamDataObject(MpReachNlri.class)
             .serialize(new MpReachNlriBuilder()
                 .setAdvertizedRoutes(new AdvertizedRoutesBuilder().setDestinationType(destReach).build())
                 .build());
@@ -140,36 +140,31 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     }
 
     protected final MapEntryNode createEmptyTable() {
-        final Tables tables = new TablesBuilder().withKey(getTablesKey())
+        final Tables tables = new TablesBuilder().withKey(abstractRIBSupport.getTablesKey())
             .setAttributes(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329
                 .rib.tables.AttributesBuilder().build()).build();
-        return (MapEntryNode) adapter.currentSerializer().toNormalizedNode(tablesIId(), tables).getValue();
+        return (MapEntryNode) adapter.currentSerializer().toNormalizedDataObject(tablesIId(), tables).node();
     }
 
     protected final ChoiceNode createRoutes(final Routes routes) {
-        final Tables tables = new TablesBuilder().withKey(getTablesKey()).setRoutes(routes).build();
+        final Tables tables = new TablesBuilder().withKey(abstractRIBSupport.getTablesKey()).setRoutes(routes).build();
         return (ChoiceNode) verifyNotNull(((MapEntryNode) adapter.currentSerializer()
-            .toNormalizedNode(tablesIId(), tables).getValue())
-            .childByArg(new NodeIdentifier(BindingReflections.findQName(Routes.class))));
+            .toNormalizedDataObject(tablesIId(), tables).node())
+            .childByArg(new NodeIdentifier(Routes.QNAME)));
     }
 
     protected final Collection<MapEntryNode> createRoutes(final S routes) {
         Preconditions.checkArgument(routes.implementedInterface()
                 .equals(abstractRIBSupport.routesContainerClass()));
         final InstanceIdentifier<S> routesIId = routesIId();
-        final Map.Entry<YangInstanceIdentifier, NormalizedNode> normalizedNode = adapter.currentSerializer()
-                .toNormalizedNode(routesIId, routes);
-        final ContainerNode container = (ContainerNode) normalizedNode.getValue();
-        final NodeIdentifier routeNid = new NodeIdentifier(getRouteListQname());
+        final NodeResult normalizedNode = adapter.currentSerializer().toNormalizedDataObject(routesIId, routes);
+        final ContainerNode container = (ContainerNode) normalizedNode.node();
+        final NodeIdentifier routeNid = new NodeIdentifier(abstractRIBSupport.routeQName());
         return ((MapNode) container.getChildByArg(routeNid)).body();
     }
 
-    private TablesKey getTablesKey() {
-        return new TablesKey(abstractRIBSupport.getAfi(), abstractRIBSupport.getSafi());
-    }
-
     private InstanceIdentifier<Tables> tablesIId() {
-        return RIB.child(Tables.class, getTablesKey());
+        return RIB.child(Tables.class, abstractRIBSupport.getTablesKey());
     }
 
     private InstanceIdentifier<S> routesIId() {
@@ -184,16 +179,11 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
 
     protected final YangInstanceIdentifier getRoutePath() {
         final InstanceIdentifier<S> routesIId = routesIId();
-        return adapter.currentSerializer().toYangInstanceIdentifier(routesIId).node(getRouteListQname());
-    }
-
-    private QName getRouteListQname() {
-        return BindingReflections.findQName(abstractRIBSupport.routesListClass())
-                .bindTo(BindingReflections.getQNameModule(abstractRIBSupport.routesCaseClass()));
+        return adapter.currentSerializer().toYangInstanceIdentifier(routesIId).node(abstractRIBSupport.routeQName());
     }
 
     protected final NodeIdentifierWithPredicates createRouteNIWP(final S routes) {
         final Collection<MapEntryNode> map = createRoutes(routes);
-        return Iterables.getOnlyElement(map).getIdentifier();
+        return Iterables.getOnlyElement(map).name();
     }
 }