From 2484943036ddbed65b1e3bc27000a2f99f14e8bd Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 1 Mar 2024 18:18:34 +0100 Subject: [PATCH] Migrate bgp-rib-impl use of Builders Use spi.node.ImmutableNodes instead, reducing the overall dependencies. Change-Id: I048138e00c175392f3808100e2d0fd3077a7d062 Signed-off-by: Robert Varga --- bgp/rib-impl/pom.xml | 4 ++-- .../protocol/bgp/rib/impl/AdjRibInWriter.java | 19 ++++++++------- .../bgp/rib/impl/EffectiveRibInWriter.java | 6 +++-- .../protocol/bgp/rib/impl/RIBImpl.java | 24 +++++++++---------- .../bgp/rib/impl/AbstractRIBTestSetup.java | 23 ++++-------------- .../impl/SynchronizationAndExceptionTest.java | 2 +- 6 files changed, 34 insertions(+), 44 deletions(-) diff --git a/bgp/rib-impl/pom.xml b/bgp/rib-impl/pom.xml index 41aac2c58b..7fc10ec094 100644 --- a/bgp/rib-impl/pom.xml +++ b/bgp/rib-impl/pom.xml @@ -121,11 +121,11 @@ org.opendaylight.yangtools - yang-data-tree-api + yang-data-spi org.opendaylight.yangtools - yang-data-impl + yang-data-tree-api org.opendaylight.yangtools diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibInWriter.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibInWriter.java index 24155b2499..8f01cf92fe 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibInWriter.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibInWriter.java @@ -63,8 +63,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -83,12 +82,14 @@ final class AdjRibInWriter { private static final QName SEND_RECEIVE = QName.create(SupportedTables.QNAME, "send-receive").intern(); // FIXME: is there a utility method to construct this? - private static final MapNode EMPTY_TABLES = ImmutableNodes.mapNodeBuilder(TABLES_NID).build(); - private static final ContainerNode EMPTY_ADJRIBIN = Builders.containerBuilder() + private static final MapNode EMPTY_TABLES = ImmutableNodes.newSystemMapBuilder() + .withNodeIdentifier(TABLES_NID) + .build(); + private static final ContainerNode EMPTY_ADJRIBIN = ImmutableNodes.newContainerBuilder() .withNodeIdentifier(ADJRIBIN_NID).addChild(EMPTY_TABLES).build(); - private static final ContainerNode EMPTY_EFFRIBIN = Builders.containerBuilder() + private static final ContainerNode EMPTY_EFFRIBIN = ImmutableNodes.newContainerBuilder() .withNodeIdentifier(EFFRIBIN_NID).addChild(EMPTY_TABLES).build(); - private static final ContainerNode EMPTY_ADJRIBOUT = Builders.containerBuilder() + private static final ContainerNode EMPTY_ADJRIBOUT = ImmutableNodes.newContainerBuilder() .withNodeIdentifier(ADJRIBOUT_NID).addChild(EMPTY_TABLES).build(); private final Map tables; @@ -210,7 +211,7 @@ final class AdjRibInWriter { final SendReceive sendReceive, final DOMDataTreeWriteTransaction tx) { final var tableKey = rs.getRibSupport().tablesKey(); final var supTablesKey = NodeIdentifierWithPredicates.of(SupportedTables.QNAME, tableKey.asMap()); - final var tt = Builders.mapEntryBuilder().withNodeIdentifier(supTablesKey); + final var tt = ImmutableNodes.newMapEntryBuilder().withNodeIdentifier(supTablesKey); for (var e : supTablesKey.entrySet()) { tt.withChild(ImmutableNodes.leafNode(e.getKey(), e.getValue())); } @@ -232,11 +233,11 @@ final class AdjRibInWriter { @VisibleForTesting MapEntryNode peerSkeleton(final NodeIdentifierWithPredicates peerKey, final String peerId) { - return Builders.mapEntryBuilder() + return ImmutableNodes.newMapEntryBuilder() .withNodeIdentifier(peerKey) .withChild(ImmutableNodes.leafNode(PEER_ID, peerId)) .withChild(ImmutableNodes.leafNode(PEER_ROLE, PeerRoleUtil.roleForString(role))) - .withChild(Builders.mapBuilder().withNodeIdentifier(PEER_TABLES).build()) + .withChild(ImmutableNodes.newSystemMapBuilder().withNodeIdentifier(PEER_TABLES).build()) .withChild(EMPTY_ADJRIBIN) .withChild(EMPTY_EFFRIBIN) .withChild(EMPTY_ADJRIBOUT) diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/EffectiveRibInWriter.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/EffectiveRibInWriter.java index 709ae409ad..5d2d28359c 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/EffectiveRibInWriter.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/EffectiveRibInWriter.java @@ -78,7 +78,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.MapNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode; import org.opendaylight.yangtools.yang.data.tree.api.ModificationType; @@ -114,7 +114,9 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn .xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder() .setCommunities(STALE_LLGR_COMMUNUTIES) .build(); - private static final ChoiceNode EMPTY_ROUTES = Builders.choiceBuilder().withNodeIdentifier(ROUTES_NID).build(); + private static final ChoiceNode EMPTY_ROUTES = ImmutableNodes.newChoiceBuilder() + .withNodeIdentifier(ROUTES_NID) + .build(); private final RIBSupportContextRegistry registry; private final YangInstanceIdentifier peerIId; diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java index 622171aac3..010fb61010 100644 --- a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java +++ b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java @@ -69,8 +69,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.InstanceI import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -310,16 +309,17 @@ public final class RIBImpl extends BGPRibStateImpl implements RIB { domChain = domDataBroker.createMergingTransactionChain(); addCallback(domChain); - final ContainerNode bgpRib = Builders.containerBuilder().withNodeIdentifier(BGPRIB_NID) - .addChild(ImmutableNodes.mapNodeBuilder(RIB_NID).build()).build(); - - final MapEntryNode ribInstance = Builders.mapEntryBuilder().withNodeIdentifier( - NodeIdentifierWithPredicates.of(Rib.QNAME, RIB_ID_QNAME, ribId.getValue())) - .addChild(ImmutableNodes.leafNode(RIB_ID_QNAME, ribId.getValue())) - .addChild(ImmutableNodes.mapNodeBuilder(PEER_NID).build()) - .addChild(Builders.containerBuilder().withNodeIdentifier(LOCRIB_NID) - .addChild(ImmutableNodes.mapNodeBuilder(TABLES_NID).build()) - .build()).build(); + final ContainerNode bgpRib = ImmutableNodes.newContainerBuilder().withNodeIdentifier(BGPRIB_NID) + .addChild(ImmutableNodes.newSystemMapBuilder().withNodeIdentifier(RIB_NID).build()).build(); + + final MapEntryNode ribInstance = ImmutableNodes.newMapEntryBuilder() + .withNodeIdentifier(NodeIdentifierWithPredicates.of(Rib.QNAME, RIB_ID_QNAME, ribId.getValue())) + .addChild(ImmutableNodes.leafNode(RIB_ID_QNAME, ribId.getValue())) + .addChild(ImmutableNodes.newSystemMapBuilder().withNodeIdentifier(PEER_NID).build()) + .addChild(ImmutableNodes.newContainerBuilder().withNodeIdentifier(LOCRIB_NID) + .addChild(ImmutableNodes.newSystemMapBuilder().withNodeIdentifier(TABLES_NID).build()) + .build()) + .build(); final DOMDataTreeWriteTransaction trans = domChain.newWriteOnlyTransaction(); diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java index 2dbf9d73c4..c692f1f3b4 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java @@ -17,7 +17,6 @@ import static org.mockito.Mockito.mock; import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.Collection; -import java.util.EventListener; import java.util.HashSet; import java.util.List; import java.util.Map; @@ -54,19 +53,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.type import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv6AddressFamily; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily; -import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.concepts.Registration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; -import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.api.schema.builder.DataContainerNodeBuilder; -import org.opendaylight.yangtools.yang.data.impl.schema.Builders; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate; import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidateNode; import org.opendaylight.yangtools.yang.data.tree.api.ModificationType; @@ -160,11 +154,9 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest { for (final Ipv4Prefix p : prefix) { final NodeIdentifierWithPredicates routekey = NodeIdentifierWithPredicates.of(Ipv4Route.QNAME, PREFIX_QNAME, p); - final DataContainerNodeBuilder b = - ImmutableNodes.mapEntryBuilder(); - b.withNodeIdentifier(routekey); - b.addChild(Builders.leafBuilder() - .withNodeIdentifier(new NodeIdentifier(PREFIX_QNAME)).withValue(p).build()); + final var b = ImmutableNodes.newMapEntryBuilder() + .withNodeIdentifier(routekey) + .addChild(ImmutableNodes.leafNode(PREFIX_QNAME, p)); final DataTreeCandidateNode child = mock(DataTreeCandidateNode.class); doReturn(createIdentifier(p)).when(child).name(); @@ -191,12 +183,7 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest { return domTransWrite; } - private static final class TestListenerRegistration implements ListenerRegistration { - @Override - public EventListener getInstance() { - return null; - } - + private static final class TestListenerRegistration implements Registration { @Override public void close() { } diff --git a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SynchronizationAndExceptionTest.java b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SynchronizationAndExceptionTest.java index 062143d429..7cfd493ef7 100644 --- a/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SynchronizationAndExceptionTest.java +++ b/bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SynchronizationAndExceptionTest.java @@ -101,7 +101,7 @@ import org.opendaylight.yangtools.yang.common.Uint8; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; +import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes; public class SynchronizationAndExceptionTest extends AbstractAddPathTest { private static final int HOLD_TIMER = 3; -- 2.36.6