Bump upstreams 44/106544/19
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 20 Jun 2023 00:12:41 +0000 (02:12 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 26 Jun 2023 17:12:30 +0000 (19:12 +0200)
Adopt:
- odlparent-13.0.3
- infrautils-6.0.1
- yangtools-11.0.0
- mdsal-12.0.0-SNAPSHOT
- controller-8.0.0-SNAPSHOT
- aaa-0.18.0-SNAPSHOT
- netconf-6.0.0-SNAPSHOT

Change-Id: I439e4c3d5f920d324e242d5b9cd2eae564704c4f
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
141 files changed:
algo/algo-artifacts/pom.xml
algo/algo-impl/pom.xml
algo/pom.xml
artifacts/pom.xml
bgp/bgp-artifacts/pom.xml
bgp/concepts/pom.xml
bgp/config-example/pom.xml
bgp/extensions/evpn/pom.xml
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/LacpParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/LanParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/esi/types/MacParser.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/extended/communities/ESImpRouteTargetExtCom.java
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/nlri/MACIpAdvRParser.java
bgp/extensions/flowspec/pom.xml
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/AbstractFlowspecIpRIBSupport.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/AbstractFlowspecRIBSupport.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/AbstractFlowspecL3vpnRIBSupport.java
bgp/extensions/inet/pom.xml
bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/AbstractIPRibSupport.java
bgp/extensions/l3vpn/pom.xml
bgp/extensions/labeled-unicast/pom.xml
bgp/extensions/linkstate/pom.xml
bgp/extensions/mvpn/pom.xml
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/attributes/OpaqueUtil.java
bgp/extensions/parent/pom.xml
bgp/extensions/pom.xml
bgp/extensions/route-target/pom.xml
bgp/openconfig-rp-impl/pom.xml
bgp/openconfig-rp-spi/pom.xml
bgp/openconfig-rp-spi/src/main/java/org/opendaylight/protocol/bgp/openconfig/routing/policy/spi/registry/ActionsRegistryImpl.java
bgp/openconfig-spi/pom.xml
bgp/parser-spi/pom.xml
bgp/peer-acceptor/src/main/java/org/opendaylight/protocol/bgp/peer/acceptor/BGPPeerAcceptorImpl.java
bgp/pom.xml
bgp/rib-impl/pom.xml
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/AdjRibOutListener.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ApplicationPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/EffectiveRibInWriter.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/LocRibWriter.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/StrictBGPPeerRegistry.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/AppPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/GracefulRestartUtil.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtil.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImpl.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractBGPDispatcherTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractRIBTestSetup.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/PeerTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtilTest.java
bgp/rib-mock/pom.xml
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/AbstractRIBSupport.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBNodeIdentifiers.java
bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/AbstractRIBSupportTest.java
bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTest.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateGraphBuilder.java
binding-parent/pom.xml
bmp/bmp-artifacts/pom.xml
bmp/bmp-config-example/pom.xml
bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpMonitoringStationImpl.java
bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/BmpRouterPeerImpl.java
bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/app/TableContext.java
bmp/pom.xml
config-loader/config-loader-artifacts/pom.xml
config-loader/config-loader-impl/pom.xml
config-loader/config-loader-impl/src/main/java/org/opendaylight/bgpcep/config/loader/impl/AbstractConfigLoader.java
config-loader/config-loader-spi/pom.xml
config-loader/pom.xml
config-loader/routing-policy-config-loader/pom.xml
distribution-karaf/pom.xml
feature-repo-parent/pom.xml
features/algo/pom.xml
features/bgp/odl-bgpcep-bgp-benchmark/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-dependencies/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-evpn/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-labeled-unicast/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-linkstate/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-openconfig-rp-impl/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-openconfig-rp-statement/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-parser-api/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-rib-api/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-rib-impl/src/main/feature/feature.xml
features/bgp/pom.xml
features/bgpcep-extras/odl-bgpcep-data-change-counter/src/main/feature/feature.xml
features/bgpcep-extras/odl-bgpcep-extras-dependencies/src/main/feature/feature.xml
features/bgpcep-extras/pom.xml
features/bmp/pom.xml
features/concepts/odl-bgpcep-concepts/src/main/feature/feature.xml
features/concepts/pom.xml
features/config-loader/odl-bgpcep-bmp-config-loader/src/main/feature/feature.xml
features/config-loader/odl-bgpcep-config-loader-impl/src/main/feature/feature.xml
features/config-loader/odl-bgpcep-config-loader-spi/src/main/feature/feature.xml
features/config-loader/odl-bgpcep-topology-config-loader/src/main/feature/feature.xml
features/config-loader/pom.xml
features/graph/odl-bgpcep-graph-api/src/main/feature/feature.xml
features/graph/odl-bgpcep-graph/src/main/feature/feature.xml
features/graph/pom.xml
features/pcep/odl-bgpcep-pcep-impl/src/main/feature/feature.xml
features/pcep/odl-bgpcep-pcep-p2mp-te-lsp/src/main/feature/feature.xml
features/pcep/odl-bgpcep-pcep-tunnel-provider/src/main/feature/feature.xml
features/pcep/odl-bgpcep-programming-api/src/main/feature/feature.xml
features/pcep/odl-bgpcep-programming-impl/src/main/feature/feature.xml
features/pcep/pom.xml
features/pom.xml
features/rsvp/odl-bgpcep-rsvp-api/src/main/feature/feature.xml
features/rsvp/pom.xml
features/topology/odl-bgpcep-topology-api/src/main/feature/feature.xml
features/topology/odl-bgpcep-topology-tunnel-api/src/main/feature/feature.xml
features/topology/pom.xml
graph/graph-api/pom.xml
graph/graph-artifacts/pom.xml
graph/graph-impl/pom.xml
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedGraphImpl.java
graph/pom.xml
parent/pom.xml
pcep/config-example/pom.xml
pcep/impl/pom.xml
pcep/pcep-artifacts/pom.xml
pcep/pom.xml
pcep/server/pom.xml
pcep/server/server-provider/pom.xml
pcep/spi/pom.xml
pcep/topology/pom.xml
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractTopologySessionListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTopologyConfiguration.java
pcep/topology/topology-spi/pom.xml
pcep/tunnel/pom.xml
pom.xml
programming/api/pom.xml
programming/pom.xml
programming/programming-artifacts/pom.xml
programming/spi/pom.xml
rsvp/api/pom.xml
rsvp/pom.xml
rsvp/rsvp-artifacts/pom.xml
single-feature-parent/pom.xml
testtool-parent/pom.xml
topology/api/pom.xml
topology/pom.xml
topology/topology-artifacts/pom.xml
util/src/main/java/org/opendaylight/protocol/util/Ipv4Util.java
util/src/main/java/org/opendaylight/protocol/util/Ipv6Util.java

index 4e3fdee84373a7cd55819cd1fa00eda5e90da4d8..fb12407fffcb77dd8811bf32dc5bf6369f791182 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 83a505a1014fbdf26e04b4288da462eb0fe1ac03..e06dae111983e83f0a0f1cc0f522b0318c5b5277 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
-            <artifactId>rfc6991-ietf-inet-types</artifactId>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>yang-binding</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
+            <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
+            <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index 77bfa8821719a67bcb57f8efde2419df8573cbf4..d874c5c68fa414076bc6d860c5c4aaa33ab09e0b 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index f7902eee892e3bb7e46d900770e90b144ac4605d..8be4f73e6a73923d508aaaa0e01a6314f3d845d3 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
       <groupId>org.opendaylight.odlparent</groupId>
       <artifactId>odlparent-lite</artifactId>
-      <version>12.0.5</version>
+      <version>13.0.3</version>
       <relativePath/>
     </parent>
 
index 1c97788647495a88eb1911fda02807ffd7a5a67a..78dc9a2fa7c45221bb7911f2ed77663be660672b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index dc5b06541f43e751ea5617aaeb683df24b5a1c76..9614a8a306c22dcb8e9d3678683acdddfd82e3e2 100644 (file)
             <artifactId>netty-buffer</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-common</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-api</artifactId>
index 4d7432879aa5e84f77c39738462eb630ff77817f..fb8ed8bc81ea375a69b662ca65e192187ca632de 100644 (file)
@@ -15,7 +15,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index a870c01381230676efd4465736f6e709ebb6875b..b73d47684028e8925d489ea4ffadf5dd706982b7 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
index 35fc30168ac1cc7e309386a494bb0e5a6fd618bd..f690d8f5e901d61c76981a5219c29d99e3d05eb2 100644 (file)
@@ -18,7 +18,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.Esi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.LacpAutoGeneratedCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.LacpAutoGeneratedCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.lacp.auto.generated._case.LacpAutoGenerated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.lacp.auto.generated._case.LacpAutoGeneratedBuilder;
 import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -29,8 +28,8 @@ final class LacpParser extends AbstractEsiType {
     public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
         checkArgument(esi instanceof LacpAutoGeneratedCase,
             "Unknown esi instance. Passed %s. Needed LacpAutoGeneratedCase.", esi);
-        final LacpAutoGenerated lacp = ((LacpAutoGeneratedCase) esi).getLacpAutoGenerated();
-        body.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(lacp.getCeLacpMacAddress()));
+        final var lacp = ((LacpAutoGeneratedCase) esi).getLacpAutoGenerated();
+        body.writeBytes(IetfYangUtil.macAddressBytes(lacp.getCeLacpMacAddress()));
         ByteBufUtils.writeOrZero(body, lacp.getCeLacpPortKey());
         return body.writeByte(0);
     }
@@ -43,21 +42,20 @@ final class LacpParser extends AbstractEsiType {
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
         return new LacpAutoGeneratedCaseBuilder()
-                .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
-                    .setCeLacpMacAddress(extractLacpMac(esi))
-                    .setCeLacpPortKey(extractPK(esi))
-                    .build())
-                .build();
+            .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
+                .setCeLacpMacAddress(extractLacpMac(esi))
+                .setCeLacpPortKey(extractPK(esi))
+                .build())
+            .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
         return new LacpAutoGeneratedCaseBuilder()
-                .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
-                    .setCeLacpMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
-                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-                    .setCeLacpPortKey(ByteBufUtils.readUint16(buffer))
-                    .build())
-                .build();
+            .setLacpAutoGenerated(new LacpAutoGeneratedBuilder()
+                .setCeLacpMacAddress(IetfYangUtil.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                .setCeLacpPortKey(ByteBufUtils.readUint16(buffer))
+                .build())
+            .build();
     }
 }
index d0b33e5dd2313ee96059768891d4167b426a95cc..d43992111c4f866c9429f47a49c2d97578ada05f 100644 (file)
@@ -18,7 +18,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.Esi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.LanAutoGeneratedCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.LanAutoGeneratedCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.lan.auto.generated._case.LanAutoGenerated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.lan.auto.generated._case.LanAutoGeneratedBuilder;
 import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -29,8 +28,8 @@ final class LanParser extends AbstractEsiType {
     public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
         checkArgument(esi instanceof LanAutoGeneratedCase,
             "Unknown esi instance. Passed %s. Needed LanAutoGeneratedCase.", esi);
-        final LanAutoGenerated lan = ((LanAutoGeneratedCase) esi).getLanAutoGenerated();
-        body.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(lan.getRootBridgeMacAddress()));
+        final var lan = ((LanAutoGeneratedCase) esi).getLanAutoGenerated();
+        body.writeBytes(IetfYangUtil.macAddressBytes(lan.getRootBridgeMacAddress()));
         ByteBufUtils.writeOrZero(body, lan.getRootBridgePriority());
         return body.writeByte(0);
     }
@@ -43,21 +42,20 @@ final class LanParser extends AbstractEsiType {
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
         return new LanAutoGeneratedCaseBuilder()
-                .setLanAutoGenerated(new LanAutoGeneratedBuilder()
-                    .setRootBridgeMacAddress(extractBrigeMac(esi))
-                    .setRootBridgePriority(extractBP(esi))
-                    .build())
-                .build();
+            .setLanAutoGenerated(new LanAutoGeneratedBuilder()
+                .setRootBridgeMacAddress(extractBrigeMac(esi))
+                .setRootBridgePriority(extractBP(esi))
+                .build())
+            .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
         return new LanAutoGeneratedCaseBuilder()
-                .setLanAutoGenerated(new LanAutoGeneratedBuilder()
-                    .setRootBridgeMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
-                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-                    .setRootBridgePriority(ByteBufUtils.readUint16(buffer))
-                    .build())
-                .build();
+            .setLanAutoGenerated(new LanAutoGeneratedBuilder()
+                .setRootBridgeMacAddress(IetfYangUtil.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                .setRootBridgePriority(ByteBufUtils.readUint16(buffer))
+                .build())
+            .build();
     }
 }
index ea1b596ecca66ceb61c75312e1c74bff0ee6db04..8c1858e7535e862443aaf72766c303e46c57567d 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.Esi;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.MacAutoGeneratedCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.MacAutoGeneratedCaseBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.mac.auto.generated._case.MacAutoGenerated;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.esi.esi.mac.auto.generated._case.MacAutoGeneratedBuilder;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 
@@ -29,8 +28,8 @@ final class MacParser extends AbstractEsiType {
     public ByteBuf serializeBody(final Esi esi, final ByteBuf body) {
         checkArgument(esi instanceof MacAutoGeneratedCase,
             "Unknown esi instance. Passed %s. Needed MacAutoGeneratedCase.", esi.getClass());
-        final MacAutoGenerated macAuto = ((MacAutoGeneratedCase) esi).getMacAutoGenerated();
-        body.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(macAuto.getSystemMacAddress()));
+        final var macAuto = ((MacAutoGeneratedCase) esi).getMacAutoGenerated();
+        body.writeBytes(IetfYangUtil.macAddressBytes(macAuto.getSystemMacAddress()));
         RFC8294ByteBufUtils.writeUint24(body, macAuto.getLocalDiscriminator());
         return body;
     }
@@ -43,21 +42,20 @@ final class MacParser extends AbstractEsiType {
     @Override
     public Esi serializeEsi(final ContainerNode esi) {
         return new MacAutoGeneratedCaseBuilder()
-                .setMacAutoGenerated(new MacAutoGeneratedBuilder()
-                    .setSystemMacAddress(extractSystmeMac(esi))
-                    .setLocalDiscriminator(extractUint24LD(esi))
-                    .build())
-                .build();
+            .setMacAutoGenerated(new MacAutoGeneratedBuilder()
+                .setSystemMacAddress(extractSystmeMac(esi))
+                .setLocalDiscriminator(extractUint24LD(esi))
+                .build())
+            .build();
     }
 
     @Override
     public Esi parseEsi(final ByteBuf buffer) {
         return new MacAutoGeneratedCaseBuilder()
-                .setMacAutoGenerated(new MacAutoGeneratedBuilder()
-                    .setSystemMacAddress(IetfYangUtil.INSTANCE.macAddressFor(
-                        ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
-                    .setLocalDiscriminator(RFC8294ByteBufUtils.readUint24(buffer))
-                    .build())
-                .build();
+            .setMacAutoGenerated(new MacAutoGeneratedBuilder()
+                .setSystemMacAddress(IetfYangUtil.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                .setLocalDiscriminator(RFC8294ByteBufUtils.readUint24(buffer))
+                .build())
+            .build();
     }
 }
index b438ad1d59ec9b43032647deab789f002857d1e5..f34c3c0d5299fc0b47ff2eb2e2d9b3dbcf24a1c8 100644 (file)
@@ -11,8 +11,6 @@ import com.google.common.base.Preconditions;
 import io.netty.buffer.ByteBuf;
 import org.opendaylight.protocol.util.ByteArray;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.IetfYangUtil;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.es._import.route.extended.community.EsImportRouteExtendedCommunity;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.es._import.route.extended.community.EsImportRouteExtendedCommunityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.routes.evpn.routes.evpn.route.attributes.extended.communities.extended.community.EsImportRouteExtendedCommunityCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120.evpn.routes.evpn.routes.evpn.route.attributes.extended.communities.extended.community.EsImportRouteExtendedCommunityCaseBuilder;
@@ -24,10 +22,11 @@ public final class ESImpRouteTargetExtCom extends AbstractExtendedCommunities {
 
     @Override
     public ExtendedCommunity parseExtendedCommunity(final ByteBuf buffer) {
-        final MacAddress mac = IetfYangUtil.INSTANCE.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH));
-
-        return new EsImportRouteExtendedCommunityCaseBuilder().setEsImportRouteExtendedCommunity(
-                new EsImportRouteExtendedCommunityBuilder().setEsImport(mac).build()).build();
+        return new EsImportRouteExtendedCommunityCaseBuilder()
+            .setEsImportRouteExtendedCommunity(new EsImportRouteExtendedCommunityBuilder()
+                .setEsImport(IetfYangUtil.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH)))
+                .build())
+            .build();
     }
 
     @Override
@@ -35,9 +34,8 @@ public final class ESImpRouteTargetExtCom extends AbstractExtendedCommunities {
         Preconditions.checkArgument(extendedCommunity instanceof EsImportRouteExtendedCommunityCase,
                 "The extended community %s is not EsImportRouteExtendedCommunityCaseCase type.",
                 extendedCommunity);
-        final EsImportRouteExtendedCommunity extCom = ((EsImportRouteExtendedCommunityCase) extendedCommunity)
-                .getEsImportRouteExtendedCommunity();
-        byteAggregator.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(extCom.getEsImport()));
+        final var extCom = ((EsImportRouteExtendedCommunityCase) extendedCommunity).getEsImportRouteExtendedCommunity();
+        byteAggregator.writeBytes(IetfYangUtil.macAddressBytes(extCom.getEsImport()));
     }
 
     @Override
index e1b332e0fb8232d5c447402459d4ab965d52ab05..4bfe806b903cce952e60476af6495097cfd98511 100644 (file)
@@ -49,7 +49,7 @@ final class MACIpAdvRParser extends AbstractEvpnNlri {
         final Esi esi = SimpleEsiTypeRegistry.getInstance().parseEsi(buffer.readSlice(ESI_SIZE));
         final EthernetTagId eti = new EthernetTagIdBuilder().setVlanId(ByteBufUtils.readUint32(buffer)).build();
         buffer.skipBytes(1);
-        final MacAddress mac = IetfYangUtil.INSTANCE.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH));
+        final MacAddress mac = IetfYangUtil.macAddressFor(ByteArray.readBytes(buffer, MAC_ADDRESS_LENGTH));
         final IpAddressNoZone ip = parseIp(buffer);
         final MplsLabel label1 = mplsLabelForByteBuf(buffer);
         MplsLabel label2;
@@ -84,7 +84,7 @@ final class MACIpAdvRParser extends AbstractEvpnNlri {
 
         final MacAddress mac = evpn.getMacAddress();
         body.writeByte(MAC_ADDRESS_LENGTH * BITS_SIZE);
-        body.writeBytes(IetfYangUtil.INSTANCE.macAddressBytes(mac));
+        body.writeBytes(IetfYangUtil.macAddressBytes(mac));
         final ByteBuf ipAddress = serializeIp(evpn.getIpAddress());
         Preconditions.checkArgument(ipAddress.readableBytes() > 0);
         body.writeBytes(ipAddress);
index c677ad389240d50dd644feac0a7d0345ff1d8dad..eca3d3de8a9da30c20ab040727e30e9468e31b59 100644 (file)
@@ -32,8 +32,8 @@
             <artifactId>bgp-inet</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index b0a8567f11396dcfff72ec8c58911efd1aade741..b03e27e88bb86645767548ca11a3521dd2eece55 100644 (file)
@@ -16,7 +16,7 @@ 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.SubsequentAddressFamily;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.KeyAware;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 
@@ -24,7 +24,7 @@ abstract class AbstractFlowspecIpRIBSupport<
         T extends AbstractFlowspecIpNlriParser,
         C extends Routes & DataObject,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<? super S> & Identifiable<?>> extends AbstractFlowspecRIBSupport<T, C, S, R> {
+        R extends Route & ChildOf<? super S> & KeyAware<?>> extends AbstractFlowspecRIBSupport<T, C, S, R> {
     AbstractFlowspecIpRIBSupport(final BindingNormalizedNodeSerializer mappingService, final Class<C> cazeClass,
             final QName cazeQName, final Class<S> containerClass, final QName containerQName, final Class<R> listClass,
             final QName listQName, final AddressFamily afi, final QName afiQName, final SubsequentAddressFamily safi,
index b49a05bab2396472d850e1ba6f8464b94492f791..1181670521fd5b103dce897e196c6dac5988e2c9 100644 (file)
@@ -27,7 +27,7 @@ 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.SubsequentAddressFamily;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.KeyAware;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -39,7 +39,7 @@ public abstract class AbstractFlowspecRIBSupport<
         T extends AbstractFlowspecNlriParser,
         C extends Routes & DataObject,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<? super S> & Identifiable<?>> extends AbstractRIBSupport<C, S, R> {
+        R extends Route & ChildOf<? super S> & KeyAware<?>> extends AbstractRIBSupport<C, S, R> {
     protected final @NonNull T nlriParser;
 
     protected AbstractFlowspecRIBSupport(
index d6ff19ec30a855531a1eb46e44140bbd5578fb4f..9017e8848b4020e69a4efc9df7a0591a642f12f0 100644 (file)
@@ -17,7 +17,7 @@ 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.types.rev200120.AddressFamily;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.KeyAware;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 
@@ -25,7 +25,7 @@ public abstract class AbstractFlowspecL3vpnRIBSupport<
         T extends AbstractFlowspecL3vpnNlriParser,
         C extends Routes & DataObject,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<? super S> & Identifiable<?>> extends AbstractFlowspecRIBSupport<T, C, S, R> {
+        R extends Route & ChildOf<? super S> & KeyAware<?>> extends AbstractFlowspecRIBSupport<T, C, S, R> {
     protected AbstractFlowspecL3vpnRIBSupport(
             final BindingNormalizedNodeSerializer mappingService,
             final Class<C> cazeClass, final QName cazeQName,
index 4506f87b9b615f9e0b5bd149e04f62083d8f6364..c715a86172fea0eb40a9bdd5cfb3c54389883693 100644 (file)
     <name>${project.artifactId}</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.guicedee.services</groupId>
+            <artifactId>javax.inject</artifactId>
+            <optional>true</optional>
+        </dependency>
         <dependency>
             <groupId>org.kohsuke.metainf-services</groupId>
             <artifactId>metainf-services</artifactId>
         </dependency>
         <dependency>
-            <groupId>com.guicedee.services</groupId>
-            <artifactId>javax.inject</artifactId>
-            <optional>true</optional>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
index 4723f52086f9463d615d5f09de1a337bfab44679..274d345dc20f45f716ad751dc47aa6c14bef4d14 100644 (file)
@@ -9,11 +9,11 @@ package org.opendaylight.protocol.bgp.inet;
 
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableSet;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
@@ -27,7 +27,7 @@ import org.opendaylight.yangtools.yang.binding.BindingObject;
 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.KeyAware;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
@@ -45,12 +45,13 @@ import org.slf4j.LoggerFactory;
 abstract class AbstractIPRibSupport<
         C extends Routes & DataObject & ChoiceIn<Tables>,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<S> & Identifiable<?>>
+        R extends Route & ChildOf<S> & KeyAware<?>>
         extends AbstractRIBSupport<C, S, R> {
     private static final Logger LOG = LoggerFactory.getLogger(AbstractIPRibSupport.class);
+
+    private final @NonNull ImmutableSet<Class<? extends BindingObject>> cacheableNlriObjects;
     private final NodeIdentifier prefixNid;
     private final NodeIdentifier nlriRoutesList;
-    private final ImmutableCollection<Class<? extends BindingObject>> cacheableNlriObjects;
 
     AbstractIPRibSupport(
             final BindingNormalizedNodeSerializer mappingService,
@@ -72,7 +73,7 @@ abstract class AbstractIPRibSupport<
     }
 
     @Override
-    public final ImmutableCollection<Class<? extends BindingObject>> cacheableNlriObjects() {
+    public final ImmutableSet<Class<? extends BindingObject>> cacheableNlriObjects() {
         return cacheableNlriObjects;
     }
 
index 72d5491cf65eb987384fc9da80a0e000972fd32f..8604b60f5a301d07ff320f4000f25dec848787d4 100644 (file)
             <artifactId>javax.inject</artifactId>
             <optional>true</optional>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.service.component.annotations</artifactId>
index f4872bdead5270054ce4bc1634407ae421174bce..222ea11080ac6bb095e27e78d98baa804bea65ef 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-rfc8294-netty</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.kohsuke.metainf-services</groupId>
             <artifactId>metainf-services</artifactId>
index ab4b19953082a02f46a5699087ec699aae9fbabf..abf031852d296223333acff55b476537c9ca73ea 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>rsvp-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
index 41f6b35e23543b1315b1d7e04403aab00074f2f0..1ce56fed504c3e282b4d2f1205cc88ab2e9f758b 100644 (file)
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>yang-ext</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
index c8682cd9aa6dcccd6a3c3769cbc1c2da4359ec69..03b5d0c1bcb7bb137c4bbef0337368aced05a0ae 100644 (file)
@@ -63,7 +63,7 @@ public final class OpaqueUtil {
     }
 
     private static byte[] writeOpaqueValue(final HexString opaque) {
-        return IetfYangUtil.INSTANCE.hexStringBytes(opaque);
+        return IetfYangUtil.hexStringBytes(opaque);
     }
 
     public static Opaque parseOpaque(final ByteBuf buffer) {
@@ -93,7 +93,7 @@ public final class OpaqueUtil {
 
     private static HexString buildOpaqueValue(final ByteBuf buffer) {
         final int length = buffer.readUnsignedShort();
-        return IetfYangUtil.INSTANCE.hexStringFor(ByteArray.readBytes(buffer, length));
+        return IetfYangUtil.hexStringFor(ByteArray.readBytes(buffer, length));
     }
 
     public static List<OpaqueValue> parseOpaqueList(final ByteBuf byteBuf) {
index b020c502d626a439871019817d193c74f3ac3545..eec69526ec394c884701b66458f871a0aa6e61b0 100644 (file)
                         <ignoredNonTestScopedDependencies>org.opendaylight.yangtools:yang-data-impl</ignoredNonTestScopedDependencies>
                         <ignoredNonTestScopedDependencies>org.opendaylight.bgpcep:concepts</ignoredNonTestScopedDependencies>
                     </ignoredNonTestScopedDependencies>
-                    <ignoredUnusedDeclaredDependencies>
+                    <ignoredUnusedDeclaredDependencies combine.children="append">
                         <ignoredUnusedDeclaredDependency>org.opendaylight.mdsal.model:yang-ext</ignoredUnusedDeclaredDependency>
                         <ignoredUnusedDeclaredDependency>org.opendaylight.bgpcep:bgp-bmp-api</ignoredUnusedDeclaredDependency>
                     </ignoredUnusedDeclaredDependencies>
index a1407826af596831dbe3d5582032e1ea40485b67..774e0649fd9f3bc1e8394f584850b7020a43c37c 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 415985f5b6fafc3b7d7fe77a9b87ef39dd012bf4..06e7eec3450f90e6d0f46707f6654a03abdedeb1 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>bgp-inet</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>util</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common-netty</artifactId>
index c69d3f82ad439ec08e6348bd6873b42f463a4b56..b565ca13c76ca216eb68fc6220e69b53952ad2d7 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>bgp-parser-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-api</artifactId>
index eefac1951bd34b668b0074992026052d1cdfba0f..5a17fb7aee6b311d5fc1043ea168be90c3fa93a1 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>bgp-parser-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.spotbugs</groupId>
+            <artifactId>spotbugs-annotations</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.checkerframework</groupId>
+            <artifactId>checker-qual</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>yang-binding</artifactId>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.checkerframework</groupId>
-            <artifactId>checker-qual</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>com.guicedee.services</groupId>
             <artifactId>javax.inject</artifactId>
index e1f0449b940dc1c171f726dcf9547e346f264258..a9025ddf99c86ac0f65a06fbe1c6c6f88a6e2dd1 100644 (file)
@@ -190,13 +190,13 @@ final class ActionsRegistryImpl {
                         if (address.getIpv4Address() != null) {
                             nhNew = new Ipv4NextHopCaseBuilder()
                                     .setIpv4NextHop(new Ipv4NextHopBuilder()
-                                        .setGlobal(IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(address.getIpv4Address()))
+                                        .setGlobal(IetfInetUtil.ipv4AddressNoZoneFor(address.getIpv4Address()))
                                         .build())
                                     .build();
                         } else {
                             nhNew = new Ipv6NextHopCaseBuilder()
                                     .setIpv6NextHop(new Ipv6NextHopBuilder()
-                                        .setGlobal(IetfInetUtil.INSTANCE.ipv6AddressNoZoneFor(address.getIpv6Address()))
+                                        .setGlobal(IetfInetUtil.ipv6AddressNoZoneFor(address.getIpv6Address()))
                                         .build())
                                     .build();
                         }
index f8816121f5a8d00ae245608b56d825fa1a91f52b..0bafa8a27c76d9916f9b10f1755b40c9f857709b 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>bgp-rib-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
index eda422859e26995cdf081d92cd7cc8fbe80aece4..59fe34f3979fce70f9a297efedf3276544230e05 100644 (file)
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>yang-binding</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
index 967e0ef0d83675a8c587accc8e8484475203f388..aa56ec941f1d8fd336f61fa0a1225033eea00c34 100644 (file)
@@ -102,14 +102,14 @@ public final class BGPPeerAcceptorImpl implements AutoCloseable {
         @Override
         public void onPeerAdded(final IpAddressNoZone ip, final BGPSessionPreferences prefs) {
             prefs.getMd5Password().ifPresent(password -> {
-                keys.put(IetfInetUtil.INSTANCE.inetAddressForNoZone(ip), password);
+                keys.put(IetfInetUtil.inetAddressForNoZone(ip), password);
                 channelConfig.setOption(EpollChannelOption.TCP_MD5SIG, keys);
             });
         }
 
         @Override
         public void onPeerRemoved(final IpAddressNoZone ip) {
-            if (keys.remove(IetfInetUtil.INSTANCE.inetAddressForNoZone(ip)) != null) {
+            if (keys.remove(IetfInetUtil.inetAddressForNoZone(ip)) != null) {
                 channelConfig.setOption(EpollChannelOption.TCP_MD5SIG, keys);
             }
         }
index e16ec2ba46e0f5087d700be186240dee347786a3..f1f6e3106137a4fd6504726193119f09fe72268b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 91ee04315be9236047792b6013d1ddb8f00864ff..9ffe0cb674bf381177839be8b6bea3b59cc9cd33 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.spotbugs</groupId>
+            <artifactId>spotbugs-annotations</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-lang3</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.checkerframework</groupId>
+            <artifactId>checker-qual</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-dom-api</artifactId>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.checkerframework</groupId>
-            <artifactId>checker-qual</artifactId>
-            <scope>provided</scope>
-        </dependency>
+
         <!--Netty -->
         <dependency>
             <groupId>io.netty</groupId>
index 5081f9046893c198a212c657278c3e888f90240c..3bceb1442829dcde3e94297d39bbe3a68b320257 100644 (file)
@@ -131,13 +131,13 @@ final class AdjRibOutListener implements ClusteredDOMDataTreeChangeListener, Pre
             case DELETE:
             case DISAPPEARED:
                 // FIXME: we can batch deletions into a single batch
-                update = withdraw((MapEntryNode) route.getDataBefore().orElseThrow());
+                update = withdraw((MapEntryNode) route.getDataBefore());
                 LOG.debug("Withdrawing routes {}", update);
                 break;
             case APPEARED:
             case SUBTREE_MODIFIED:
             case WRITE:
-                update = advertise((MapEntryNode) route.getDataAfter().orElseThrow());
+                update = advertise((MapEntryNode) route.getDataAfter());
                 LOG.debug("Advertising routes {}", update);
                 break;
             default:
index 89f9df173ed47951ca34d127d38b3e70fbf3a169..a021c6442f740d73ad1487d4301293a4f4f6ef15 100644 (file)
@@ -186,7 +186,7 @@ public class ApplicationPeer extends AbstractPeer implements ClusteredDOMDataTre
         final DOMDataTreeWriteTransaction tx = chain.newWriteOnlyTransaction();
         LOG.debug("Received data change to ApplicationRib {}", changes);
         for (final DataTreeCandidate tc : changes) {
-            LOG.debug("Modification Type {}", tc.getRootNode().getModificationType());
+            LOG.debug("Modification Type {}", tc.getRootNode().modificationType());
             final YangInstanceIdentifier path = tc.getRootPath();
             final PathArgument lastArg = path.getLastPathArgument();
             verify(lastArg instanceof NodeIdentifierWithPredicates,
@@ -196,10 +196,10 @@ public class ApplicationPeer extends AbstractPeer implements ClusteredDOMDataTre
                 LOG.trace("Skipping received data change for non supported family {}.", tableKey);
                 continue;
             }
-            for (final DataTreeCandidateNode child : tc.getRootNode().getChildNodes()) {
-                final PathArgument childIdentifier = child.getIdentifier();
+            for (final DataTreeCandidateNode child : tc.getRootNode().childNodes()) {
+                final PathArgument childIdentifier = child.name();
                 final YangInstanceIdentifier tableId = adjRibsInId.node(tableKey).node(childIdentifier);
-                switch (child.getModificationType()) {
+                switch (child.modificationType()) {
                     case DELETE:
                     case DISAPPEARED:
                         LOG.trace("App peer -> AdjRibsIn path delete: {}", childIdentifier);
@@ -239,19 +239,20 @@ public class ApplicationPeer extends AbstractPeer implements ClusteredDOMDataTre
 
     private static void processWrite(final DataTreeCandidateNode child, final YangInstanceIdentifier tableId,
             final DOMDataTreeWriteTransaction tx) {
-        child.getDataAfter().ifPresent(dataAfter -> {
+        final var dataAfter = child.dataAfter();
+        if (dataAfter != null) {
             LOG.trace("App peer -> AdjRibsIn path : {}", tableId);
             LOG.trace("App peer -> AdjRibsIn data : {}", dataAfter);
             tx.put(LogicalDatastoreType.OPERATIONAL, tableId, dataAfter);
-        });
+        }
     }
 
     private synchronized void processRoutesTable(final DataTreeCandidateNode node,
             final YangInstanceIdentifier identifier, final DOMDataTreeWriteTransaction tx,
             final YangInstanceIdentifier routeTableIdentifier) {
-        for (final DataTreeCandidateNode child : node.getChildNodes()) {
-            final YangInstanceIdentifier childIdentifier = identifier.node(child.getIdentifier());
-            switch (child.getModificationType()) {
+        for (var child : node.childNodes()) {
+            final YangInstanceIdentifier childIdentifier = identifier.node(child.name());
+            switch (child.modificationType()) {
                 case DELETE:
                     LOG.trace("App peer -> AdjRibsIn path delete: {}", childIdentifier);
                     tx.delete(LogicalDatastoreType.OPERATIONAL, childIdentifier);
@@ -279,11 +280,12 @@ public class ApplicationPeer extends AbstractPeer implements ClusteredDOMDataTre
 
     private static void processRouteWrite(final DataTreeCandidateNode child,
             final YangInstanceIdentifier childIdentifier, final DOMDataTreeWriteTransaction tx) {
-        child.getDataAfter().ifPresent(dataAfter -> {
+        final var dataAfter = child.dataAfter();
+        if (dataAfter != null) {
             LOG.trace("App peer -> AdjRibsIn path : {}", childIdentifier);
             LOG.trace("App peer -> AdjRibsIn data : {}", dataAfter);
             tx.put(LogicalDatastoreType.OPERATIONAL, childIdentifier, dataAfter);
-        });
+        }
     }
 
     @Override
index d2f6d158c62b53f9c7d288c9d880a700048d0ad9..84419ed8bfac9dc0eba9b9e1df455591953a041b 100644 (file)
@@ -16,6 +16,7 @@ import java.util.Set;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingDataObjectCodecTreeNode;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeCachingCodec;
+import org.opendaylight.mdsal.binding.dom.codec.api.CommonDataObjectCodecTreeNode;
 import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.ClusterId;
@@ -96,24 +97,26 @@ public final class CodecsImpl implements Codecs {
     @SuppressWarnings("unchecked")
     public void onCodecTreeUpdated(final BindingCodecTree tree) {
 
-        @SuppressWarnings("rawtypes")
-        final BindingDataObjectCodecTreeNode tableCodecContext = tree.getSubtreeCodec(TABLE_BASE_II);
+        final CommonDataObjectCodecTreeNode<Tables> codecContext = tree.getSubtreeCodec(TABLE_BASE_II);
+        if (!(codecContext instanceof BindingDataObjectCodecTreeNode tableCodecContext)) {
+            throw new IllegalStateException("Unexpected table codec " + codecContext);
+        }
+
         final BindingDataObjectCodecTreeNode<? extends Route> routeListCodec = tableCodecContext
-            .streamChild(Routes.class)
-            .streamChild(ribSupport.routesCaseClass())
-            .streamChild(ribSupport.routesContainerClass())
-            .streamChild(ribSupport.routesListClass());
+            .getStreamChild(Routes.class)
+            .getStreamChild(ribSupport.routesCaseClass())
+            .getStreamChild(ribSupport.routesContainerClass())
+            .getStreamDataObject(ribSupport.routesListClass());
 
-        attributesCodec = routeListCodec.streamChild(Attributes.class)
+        attributesCodec = routeListCodec.getStreamDataObject(Attributes.class)
             .createCachingCodec(cacheableAttributes);
 
-        final var attrCodec = tree.streamChild(Update.class)
-            .streamChild(Attributes.class);
-        reachNlriCodec = attrCodec.streamChild(AttributesReach.class)
-            .streamChild(MpReachNlri.class)
+        final var attrCodec = tree.getStreamChild(Update.class).getStreamChild(Attributes.class);
+        reachNlriCodec = attrCodec.getStreamChild(AttributesReach.class)
+            .getStreamDataObject(MpReachNlri.class)
             .createCachingCodec(ribSupport.cacheableNlriObjects());
-        unreachNlriCodec = attrCodec.streamChild(AttributesUnreach.class)
-            .streamChild(MpUnreachNlri.class)
+        unreachNlriCodec = attrCodec.getStreamChild(AttributesUnreach.class)
+            .getStreamDataObject(MpUnreachNlri.class)
             .createCachingCodec(ribSupport.cacheableNlriObjects());
     }
 
index 3e89777836aaa35c9fbbde4c84768d406bf168aa..0801369e23699251f0e3bc5cfc075a60b9c01b5a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.protocol.bgp.rib.impl;
 import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
-import static org.opendaylight.protocol.bgp.rib.spi.RIBNodeIdentifiers.ADJRIBIN_ATTRIBUTES_AID;
 import static org.opendaylight.protocol.bgp.rib.spi.RIBNodeIdentifiers.ADJRIBIN_NID;
 import static org.opendaylight.protocol.bgp.rib.spi.RIBNodeIdentifiers.ATTRIBUTES_NID;
 import static org.opendaylight.protocol.bgp.rib.spi.RIBNodeIdentifiers.EFFRIBIN_NID;
@@ -35,6 +34,8 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.LongAdder;
 import org.checkerframework.checker.lock.qual.GuardedBy;
 import org.checkerframework.checker.lock.qual.Holding;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener;
@@ -314,7 +315,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
     private void deleteTable(final DOMDataTreeWriteTransaction tx, final RIBSupportContext ribContext,
             final YangInstanceIdentifier effectiveTablePath, final DataTreeCandidateNode table) {
         LOG.debug("Delete Effective Table {}", effectiveTablePath);
-        onDeleteTable(ribContext.getRibSupport(), effectiveTablePath, table.getDataBefore());
+        onDeleteTable(ribContext.getRibSupport(), effectiveTablePath, table.dataBefore());
         tx.delete(LogicalDatastoreType.OPERATIONAL, effectiveTablePath);
     }
 
@@ -322,8 +323,8 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
             final YangInstanceIdentifier effectiveTablePath, final DataTreeCandidateNode table) {
         LOG.debug("Modify Effective Table {}", effectiveTablePath);
 
-        final boolean wasLongLivedStale = isLongLivedStaleTable(table.getDataBefore());
-        final boolean longLivedStale = isLongLivedStaleTable(table.getDataAfter());
+        final boolean wasLongLivedStale = isLongLivedStaleTable(table.findDataBefore());
+        final boolean longLivedStale = isLongLivedStaleTable(table.findDataAfter());
         if (wasLongLivedStale != longLivedStale) {
             LOG.debug("LLGR_STALE flag flipped {}, overwriting table {}", longLivedStale ? "ON" : "OFF",
                     effectiveTablePath);
@@ -331,26 +332,29 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
             return;
         }
 
-        table.getModifiedChild(ATTRIBUTES_NID).ifPresent(modifiedAttrs -> {
+        final var modifiedAttrs = table.modifiedChild(ATTRIBUTES_NID);
+        if (modifiedAttrs != null) {
             final YangInstanceIdentifier effAttrsPath = effectiveTablePath.node(ATTRIBUTES_NID);
-            final Optional<NormalizedNode> optAttrsAfter = modifiedAttrs.getDataAfter();
-            if (optAttrsAfter.isPresent()) {
+            final var attrsAfter = modifiedAttrs.dataAfter();
+            if (attrsAfter != null) {
                 tx.put(LogicalDatastoreType.OPERATIONAL, effAttrsPath,
-                    effectiveAttributes(extractContainer(optAttrsAfter.orElseThrow())));
+                    effectiveAttributes(extractContainer(attrsAfter)));
             } else {
                 tx.delete(LogicalDatastoreType.OPERATIONAL, effAttrsPath);
             }
-        });
+        }
 
-        table.getModifiedChild(ROUTES_NID).ifPresent(modifiedRoutes -> {
+        final var modifiedRoutes = table.modifiedChild(ROUTES_NID);
+        if (modifiedRoutes != null) {
             final RIBSupport<?, ?> ribSupport = ribContext.getRibSupport();
-            switch (modifiedRoutes.getModificationType()) {
+            switch (modifiedRoutes.modificationType()) {
                 case APPEARED:
                 case WRITE:
                     deleteRoutesBefore(tx, ribSupport, effectiveTablePath, modifiedRoutes);
                     // XXX: YANG Tools seems to have an issue stacking DELETE with child WRITE
                     tx.put(LogicalDatastoreType.OPERATIONAL, effectiveTablePath.node(ROUTES_NID), EMPTY_ROUTES);
-                    writeRoutesAfter(tx, ribSupport, effectiveTablePath, modifiedRoutes.getDataAfter(), longLivedStale);
+                    writeRoutesAfter(tx, ribSupport, effectiveTablePath, modifiedRoutes.findDataAfter(),
+                        longLivedStale);
                     break;
                 case DELETE:
                 case DISAPPEARED:
@@ -369,17 +373,16 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
                     LOG.warn("Ignoring modified routes {}", modifiedRoutes);
                     break;
             }
-        });
+        }
     }
 
     private void writeTable(final DOMDataTreeWriteTransaction tx, final RIBSupportContext ribContext,
             final YangInstanceIdentifier effectiveTablePath, final DataTreeCandidateNode table) {
         LOG.debug("Write Effective Table {}", effectiveTablePath);
-        onDeleteTable(ribContext.getRibSupport(), effectiveTablePath, table.getDataBefore());
+        onDeleteTable(ribContext.getRibSupport(), effectiveTablePath, table.dataBefore());
 
-        final Optional<NormalizedNode> maybeTableAfter = table.getDataAfter();
-        if (maybeTableAfter.isPresent()) {
-            final NormalizedNode node = maybeTableAfter.orElseThrow();
+        final var node = table.dataAfter();
+        if (node != null) {
             verify(node instanceof MapEntryNode, "Expected MapEntryNode, got %s", node);
             final MapEntryNode tableAfter = (MapEntryNode) node;
             ribContext.createEmptyTableStructure(tx, effectiveTablePath);
@@ -402,10 +405,9 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
 
     // Performs house-keeping when the contents of a table is deleted
     private void onDeleteTable(final RIBSupport<?, ?> ribSupport, final YangInstanceIdentifier effectiveTablePath,
-            final Optional<NormalizedNode> tableBefore) {
+            final @Nullable NormalizedNode tableBefore) {
         // Routes are special in that we need to process the to keep our counters accurate
-        final Optional<NormalizedNode> maybeRoutesBefore = findRoutesMap(ribSupport,
-                NormalizedNodes.findNode(tableBefore, ROUTES_NID));
+        final var maybeRoutesBefore = findRoutesMap(ribSupport, NormalizedNodes.findNode(tableBefore, ROUTES_NID));
         if (maybeRoutesBefore.isPresent()) {
             onRoutesDeleted(ribSupport, effectiveTablePath, extractMap(maybeRoutesBefore).body());
         }
@@ -413,8 +415,8 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
 
     private void deleteRoutesBefore(final DOMDataTreeWriteTransaction tx, final RIBSupport<?, ?> ribSupport,
             final YangInstanceIdentifier effectiveTablePath, final DataTreeCandidateNode modifiedRoutes) {
-        final Optional<NormalizedNode> maybeRoutesBefore = NormalizedNodes.findNode(
-            modifiedRoutes.getDataBefore(), ribSupport.relativeRoutesPath());
+        final Optional<NormalizedNode> maybeRoutesBefore =
+            NormalizedNodes.findNode(modifiedRoutes.dataBefore(), ribSupport.relativeRoutesPath());
         if (maybeRoutesBefore.isPresent()) {
             onRoutesDeleted(ribSupport, effectiveTablePath, extractMap(maybeRoutesBefore).body());
         }
@@ -428,7 +430,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
         if (maybeRoutesAfter.isPresent()) {
             final YangInstanceIdentifier routesPath = routeMapPath(ribSupport, effectiveTablePath);
             for (MapEntryNode routeAfter : extractMap(maybeRoutesAfter).body()) {
-                writeRoute(tx, ribSupport, routesPath.node(routeAfter.getIdentifier()), Optional.empty(), routeAfter,
+                writeRoute(tx, ribSupport, routesPath.node(routeAfter.getIdentifier()), null, routeAfter,
                     longLivedStale);
             }
         }
@@ -455,7 +457,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
         switch (route.getModificationType()) {
             case DELETE:
             case DISAPPEARED:
-                deleteRoute(tx, ribSupport, routePath, route.getDataBefore().orElse(null));
+                deleteRoute(tx, ribSupport, routePath, route.dataBefore());
                 break;
             case UNMODIFIED:
                 // No-op
@@ -463,8 +465,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
             case APPEARED:
             case SUBTREE_MODIFIED:
             case WRITE:
-                writeRoute(tx, ribSupport, routePath, route.getDataBefore(), route.getDataAfter().orElseThrow(),
-                    longLivedStale);
+                writeRoute(tx, ribSupport, routePath, route.dataBefore(), route.getDataAfter(), longLivedStale);
                 break;
             default:
                 LOG.warn("Ignoring unhandled route {}", route);
@@ -482,8 +483,8 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
     }
 
     private void writeRoute(final DOMDataTreeWriteTransaction tx, final RIBSupport<?, ?> ribSupport,
-            final YangInstanceIdentifier routePath, final Optional<NormalizedNode> routeBefore,
-            final NormalizedNode routeAfter, final boolean longLivedStale) {
+            final YangInstanceIdentifier routePath, final @Nullable NormalizedNode routeBefore,
+            final @NonNull NormalizedNode routeAfter, final boolean longLivedStale) {
         final TablesKey tablesKey = ribSupport.getTablesKey();
         CountersUtil.increment(prefixesReceived.get(tablesKey), tablesKey);
         // Lookup per-table attributes from RIBSupport
@@ -497,7 +498,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
             // LLGR procedures are in effect. If the route is tagged with NO_LLGR, it needs to be removed.
             final List<Communities> effCommunities = routeAttrs.getCommunities();
             if (effCommunities != null && effCommunities.contains(CommunityUtil.NO_LLGR)) {
-                deleteRoute(tx, ribSupport, routePath, routeBefore.orElse(null));
+                deleteRoute(tx, ribSupport, routePath, routeBefore);
                 return;
             }
             optEffAtt = Optional.of(wrapLongLivedStale(routeAttrs));
@@ -506,7 +507,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
                 verifyNotNull(tableTypeRegistry.getAfiSafiType(ribSupport.getTablesKey())));
         }
         if (optEffAtt.isEmpty()) {
-            deleteRoute(tx, ribSupport, routePath, routeBefore.orElse(null));
+            deleteRoute(tx, ribSupport, routePath, routeBefore);
             return;
         }
         handleRouteTarget(ModificationType.WRITE, ribSupport, routePath, routeAfter);
@@ -611,7 +612,7 @@ final class EffectiveRibInWriter implements PrefixesReceivedCounters, PrefixesIn
     }
 
     private static boolean isLongLivedStale(final ContainerNode attributes) {
-        return NormalizedNodes.findNode(attributes, ADJRIBIN_ATTRIBUTES_AID, LLGR_STALE_NID).isPresent();
+        return NormalizedNodes.findNode(attributes, LLGR_STALE_NID).isPresent();
     }
 
     private static boolean isLongLivedStaleTable(final Optional<NormalizedNode> optTable) {
index 95698bbb50f6dcf5dc6de5b625e14a3cdebe9355..227b5cdccb84625a055a46bb81a5044ef98cacfa 100644 (file)
@@ -109,8 +109,8 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
         this.ribIId = requireNonNull(ribIId);
         this.ribSupport = requireNonNull(ribSupport);
 
-        locRibTableIID = ribIId.node(LOCRIB_NID).node(TABLES_NID).node(ribSupport.emptyTable().getIdentifier())
-            .toOptimized();
+        locRibTableIID = ribIId.node(LOCRIB_NID).node(TABLES_NID).node(ribSupport.emptyTable().name()).toOptimized();
+
         this.ourAs = ourAs.toJava();
         this.dataBroker = requireNonNull(dataBroker);
         this.peerTracker = peerTracker;
@@ -233,7 +233,6 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
         }
     }
 
-    @SuppressWarnings("unchecked")
     private Map<RouteUpdateKey, RouteEntry<C, S>> update(final DOMDataTreeWriteOperations tx,
             final Collection<DataTreeCandidate> changes) {
         final Map<RouteUpdateKey, RouteEntry<C, S>> ret = new HashMap<>();
@@ -241,10 +240,8 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
             final DataTreeCandidateNode table = tc.getRootNode();
             final RouterId peerUuid = RouterId.forPeerId(IdentifierUtils.peerKeyToPeerId(tc.getRootPath()));
 
-            /*
-            Initialize Peer with routes under loc rib
-             */
-            if (!routeEntries.isEmpty() && table.getDataBefore().isEmpty()) {
+            // Initialize Peer with routes under loc rib
+            if (!routeEntries.isEmpty() && table.dataBefore() == null) {
                 final org.opendaylight.protocol.bgp.rib.spi.Peer toPeer
                         = peerTracker.getPeer(peerUuid.getPeerId());
                 if (toPeer != null && toPeer.supportsTable(entryDep.getLocalTablesKey())) {
@@ -258,9 +255,7 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
                     toPeer.initializeRibOut(entryDep, routesToStore);
                 }
             }
-            /*
-            Process new routes from Peer
-             */
+            // Process new routes from Peer
             updateNodes(table, peerUuid, tx, ret);
         }
         return ret;
@@ -268,14 +263,18 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
 
     private void updateNodes(final DataTreeCandidateNode table, final RouterId peerUuid,
             final DOMDataTreeWriteOperations tx, final Map<RouteUpdateKey, RouteEntry<C, S>> routes) {
-        table.getModifiedChild(ATTRIBUTES_NID).flatMap(DataTreeCandidateNode::getDataAfter).ifPresent(newAttValue -> {
-            LOG.trace("Uptodate found for {}", newAttValue);
-            tx.put(LogicalDatastoreType.OPERATIONAL, locRibTableIID.node(ATTRIBUTES_NID), newAttValue);
-        });
-
-        table.getModifiedChild(ROUTES_NID).ifPresent(modifiedRoutes -> {
+        final var modifiedAttrs = table.modifiedChild(ATTRIBUTES_NID);
+        if (modifiedAttrs != null) {
+            final var newAttValue = modifiedAttrs.dataAfter();
+            if (newAttValue != null) {
+                LOG.trace("Uptodate found for {}", newAttValue);
+                tx.put(LogicalDatastoreType.OPERATIONAL, locRibTableIID.node(ATTRIBUTES_NID), newAttValue);
+            }
+        }
+        final var modifiedRoutes = table.modifiedChild(ROUTES_NID);
+        if (modifiedRoutes != null) {
             updateRoutesEntries(ribSupport.changedRoutes(modifiedRoutes), peerUuid, routes);
-        });
+        }
     }
 
     private void updateRoutesEntries(final Collection<DataTreeCandidateNode> collection,
@@ -310,7 +309,7 @@ final class LocRibWriter<C extends Routes & DataObject & ChoiceIn<Tables>, S ext
                         entry = createEntry(routeKey);
                     }
 
-                    final NormalizedNode routeAfter = route.getDataAfter().orElseThrow();
+                    final NormalizedNode routeAfter = route.getDataAfter();
                     verify(routeAfter instanceof MapEntryNode, "Unexpected route %s", routeAfter);
                     entry.addRoute(routerId, pathId, (MapEntryNode) routeAfter);
                     totalPathsCounter.increment();
index 2abebb59467c13bbb0edccbbe0ecf88f3dd389d6..5067b1a10af25264addacb7b857763d0a52bd838 100644 (file)
@@ -89,14 +89,14 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
     public synchronized void addPeer(final IpAddressNoZone oldIp, final BGPSessionListener peer,
             final BGPSessionPreferences preferences) {
         IpAddressNoZone fullIp = getFullIp(oldIp);
-        Preconditions.checkArgument(!this.peers.containsKey(fullIp),
+        Preconditions.checkArgument(!peers.containsKey(fullIp),
                 "Peer for %s already present", fullIp);
-        this.peers.put(fullIp, requireNonNull(peer));
+        peers.put(fullIp, requireNonNull(peer));
         requireNonNull(preferences.getMyAs());
         requireNonNull(preferences.getParams());
         requireNonNull(preferences.getBgpId());
-        this.peerPreferences.put(fullIp, preferences);
-        for (final PeerRegistryListener peerRegistryListener : this.listeners) {
+        peerPreferences.put(fullIp, preferences);
+        for (final PeerRegistryListener peerRegistryListener : listeners) {
             peerRegistryListener.onPeerAdded(fullIp, preferences);
         }
     }
@@ -109,8 +109,8 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
     @Override
     public synchronized void removePeer(final IpAddressNoZone oldIp) {
         IpAddressNoZone fullIp = getFullIp(oldIp);
-        this.peers.remove(fullIp);
-        for (final PeerRegistryListener peerRegistryListener : this.listeners) {
+        peers.remove(fullIp);
+        for (final PeerRegistryListener peerRegistryListener : listeners) {
             peerRegistryListener.onPeerRemoved(fullIp);
         }
     }
@@ -118,8 +118,8 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
     @Override
     public synchronized void removePeerSession(final IpAddressNoZone oldIp) {
         IpAddressNoZone fullIp = getFullIp(oldIp);
-        this.sessionIds.remove(fullIp);
-        for (final PeerRegistrySessionListener peerRegistrySessionListener : this.sessionListeners) {
+        sessionIds.remove(fullIp);
+        for (final PeerRegistrySessionListener peerRegistrySessionListener : sessionListeners) {
             peerRegistrySessionListener.onSessionRemoved(fullIp);
         }
     }
@@ -127,13 +127,13 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
     @Override
     public boolean isPeerConfigured(final IpAddressNoZone oldIp) {
         IpAddressNoZone fullIp = getFullIp(oldIp);
-        return this.peers.containsKey(fullIp);
+        return peers.containsKey(fullIp);
     }
 
     private void checkPeerConfigured(final IpAddressNoZone ip) {
         Preconditions.checkState(isPeerConfigured(ip),
                 "BGP peer with ip: %s not configured, configured peers are: %s",
-                ip, this.peers.keySet());
+                ip, peers.keySet());
     }
 
     @Override
@@ -150,9 +150,9 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
         checkPeerConfigured(ip);
 
         final BGPSessionId currentConnection = new BGPSessionId(sourceId, remoteId, remoteAsNumber);
-        final BGPSessionListener p = this.peers.get(ip);
+        final BGPSessionListener p = peers.get(ip);
 
-        final BGPSessionId previousConnection = this.sessionIds.get(ip);
+        final BGPSessionId previousConnection = sessionIds.get(ip);
 
         if (previousConnection != null) {
 
@@ -180,8 +180,8 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
             } else if (currentConnection.isHigherDirection(previousConnection)
                     || currentConnection.hasHigherAsNumber(previousConnection)) {
                 LOG.warn("BGP session with {} {} released. Replaced by opposite session", ip, previousConnection);
-                this.peers.get(ip).releaseConnection();
-                return this.peers.get(ip);
+                peers.get(ip).releaseConnection();
+                return peers.get(ip);
                 // Session reestablished with same source bgp id, dropping current as duplicate
             } else {
                 LOG.warn("BGP session with {} initiated from {} to {} has to be dropped. Same session already present",
@@ -194,8 +194,8 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
         validateAs(remoteAsNumber, openObj, prefs);
 
         // Map session id to peer IP address
-        this.sessionIds.put(ip, currentConnection);
-        for (final PeerRegistrySessionListener peerRegistrySessionListener : this.sessionListeners) {
+        sessionIds.put(ip, currentConnection);
+        for (final PeerRegistrySessionListener peerRegistrySessionListener : sessionListeners) {
             peerRegistrySessionListener.onSessionCreated(ip);
         }
         return p;
@@ -254,7 +254,7 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
     public BGPSessionPreferences getPeerPreferences(final IpAddressNoZone ip) {
         requireNonNull(ip);
         checkPeerConfigured(ip);
-        return this.peerPreferences.get(ip);
+        return peerPreferences.get(ip);
     }
 
     /**
@@ -274,21 +274,21 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
         Preconditions.checkArgument(inetAddress instanceof Inet4Address
                 || inetAddress instanceof Inet6Address, "Expecting %s or %s but was %s",
                 Inet4Address.class, Inet6Address.class, inetAddress.getClass());
-        return IetfInetUtil.INSTANCE.ipAddressNoZoneFor(inetAddress);
+        return IetfInetUtil.ipAddressNoZoneFor(inetAddress);
     }
 
     @Deactivate
     @PreDestroy
     @Override
     public synchronized void close() {
-        this.peers.clear();
-        this.sessionIds.clear();
+        peers.clear();
+        sessionIds.clear();
     }
 
     @Override
     public String toString() {
         return MoreObjects.toStringHelper(this)
-            .add("peers", this.peers.keySet())
+            .add("peers", peers.keySet())
             .toString();
     }
 
@@ -322,10 +322,10 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
 
             final BGPSessionId bGPSessionId = (BGPSessionId) obj;
 
-            if (!this.from.equals(bGPSessionId.from) && !this.from.equals(bGPSessionId.to)) {
+            if (!from.equals(bGPSessionId.from) && !from.equals(bGPSessionId.to)) {
                 return false;
             }
-            if (!this.to.equals(bGPSessionId.to) && !this.to.equals(bGPSessionId.from)) {
+            if (!to.equals(bGPSessionId.to) && !to.equals(bGPSessionId.from)) {
                 return false;
             }
 
@@ -335,7 +335,7 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
         @Override
         public int hashCode() {
             final int prime = 31;
-            int result = this.from.hashCode() + this.to.hashCode();
+            int result = from.hashCode() + to.hashCode();
             result = prime * result;
             return result;
         }
@@ -344,11 +344,11 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
          * Check if this connection is equal to other and if it contains higher source bgp id.
          */
         boolean isHigherDirection(final BGPSessionId other) {
-            return toLong(this.from) > toLong(other.from);
+            return toLong(from) > toLong(other.from);
         }
 
         boolean hasHigherAsNumber(final BGPSessionId other) {
-            return this.asNumber.getValue().compareTo(other.asNumber.getValue()) > 0;
+            return asNumber.getValue().compareTo(other.asNumber.getValue()) > 0;
         }
 
         private static long toLong(final Ipv4Address from) {
@@ -359,44 +359,44 @@ public final class StrictBGPPeerRegistry implements BGPPeerRegistry, AutoCloseab
         @Override
         public String toString() {
             return MoreObjects.toStringHelper(this)
-                .add("from", this.from)
-                .add("to", this.to)
+                .add("from", from)
+                .add("to", to)
                 .toString();
         }
     }
 
     @Override
     public synchronized Registration registerPeerRegisterListener(final PeerRegistryListener listener) {
-        this.listeners.add(listener);
-        for (final Entry<IpAddressNoZone, BGPSessionPreferences> entry : this.peerPreferences.entrySet()) {
+        listeners.add(listener);
+        for (final Entry<IpAddressNoZone, BGPSessionPreferences> entry : peerPreferences.entrySet()) {
             listener.onPeerAdded(entry.getKey(), entry.getValue());
         }
         return new AbstractRegistration() {
             @Override
             protected void removeRegistration() {
-                StrictBGPPeerRegistry.this.listeners.remove(listener);
+                listeners.remove(listener);
             }
         };
     }
 
     @Override
     public synchronized Registration registerPeerSessionListener(final PeerRegistrySessionListener listener) {
-        this.sessionListeners.add(listener);
-        for (final IpAddressNoZone ipAddress : this.sessionIds.keySet()) {
+        sessionListeners.add(listener);
+        for (final IpAddressNoZone ipAddress : sessionIds.keySet()) {
             listener.onSessionCreated(ipAddress);
         }
         return new AbstractRegistration() {
             @Override
             protected void removeRegistration() {
-                StrictBGPPeerRegistry.this.sessionListeners.remove(listener);
+                sessionListeners.remove(listener);
             }
         };
     }
 
     @Override
     public void updatePeerPreferences(final IpAddressNoZone address, final BGPSessionPreferences preferences) {
-        if (this.peerPreferences.containsKey(address)) {
-            this.peerPreferences.put(address, preferences);
+        if (peerPreferences.containsKey(address)) {
+            peerPreferences.put(address, preferences);
         }
     }
 }
index 85209aa11957f93ed037115beac631c2b28e9be6..948512ae2087835e756778c4f541208517fc04c0 100644 (file)
@@ -72,8 +72,7 @@ final class AppPeer extends PeerBean {
         LOG.info("Starting AppPeer instance {}", neighbor.getNeighborAddress());
         currentConfiguration = neighbor;
         bgpAppPeerSingletonService = new BgpAppPeerSingletonService(rib, createAppRibId(neighbor),
-            IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(neighbor.getNeighborAddress().getIpv4Address()),
-            tableTypeRegistry);
+            IetfInetUtil.ipv4AddressNoZoneFor(neighbor.getNeighborAddress().getIpv4Address()), tableTypeRegistry);
         stateProviderRegistration = stateProviderRegistry.register(this);
     }
 
index f8daa59db557f80d4251a9353ec0d7eafd23e62a..65a618e90d91727dc001140908b117456602a62f 100644 (file)
@@ -18,8 +18,6 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.rib.impl.BgpPeerUtil;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
@@ -38,11 +36,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParametersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.LlGracefulRestartCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.Tables.AfiFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.TablesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
-import org.opendaylight.yangtools.yang.binding.Identifiable;
+import org.opendaylight.yangtools.yang.binding.util.BindingMap;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -59,7 +56,7 @@ public final class GracefulRestartUtil {
     private static final Logger LOG = LoggerFactory.getLogger(GracefulRestartUtil.class);
 
     private GracefulRestartUtil() {
-
+        // Hidden on purpose
     }
 
     public static CParameters getGracefulCapability(final Map<TablesKey, Boolean> tables,
@@ -70,7 +67,7 @@ public final class GracefulRestartUtil {
                 final TablesKey key = entry.getKey();
                 return gracefulRestartTable(key.getAfi(), key.getSafi(), entry.getValue());
             })
-            .collect(Collectors.toMap(Identifiable::key, Function.identity())), restartTime, localRestarting);
+            .collect(BindingMap.toMap()), restartTime, localRestarting);
     }
 
     public static CParameters getLlGracefulCapability(final Set<BgpPeerUtil.LlGracefulRestartDTO> llGracefulRestarts) {
@@ -84,7 +81,7 @@ public final class GracefulRestartUtil {
                                 .setAfiFlags(new AfiFlags(dto.isForwarding()))
                                 .setLongLivedStaleTime(new Uint24(Uint32.valueOf(dto.getStaleTime())))
                                 .build())
-                            .collect(Collectors.toMap(Tables::key, Function.identity())))
+                            .collect(BindingMap.toMap()))
                         .build())
                     .build())
                 .build();
index 7121bb0a8201de94354590e4590c302cc5c7ca34..f9d5816ee461920e79801e5b8354a8d60e4a8d9a 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.protocol.bgp.rib.impl.config;
 
 import static com.google.common.base.Preconditions.checkState;
-import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil.INSTANCE;
 
 import com.google.common.collect.Maps;
 import java.util.ArrayList;
@@ -99,7 +98,7 @@ final class OpenConfigMappingUtil {
         if (config != null) {
             final String authPassword = config.getAuthPassword();
             if (authPassword != null) {
-                return KeyMapping.of(INSTANCE.inetAddressFor(neighbor.getNeighborAddress()), authPassword);
+                return KeyMapping.of(IetfInetUtil.inetAddressFor(neighbor.getNeighborAddress()), authPassword);
             }
         }
         return null;
@@ -117,11 +116,11 @@ final class OpenConfigMappingUtil {
         }
         final Ipv4Address ipv4 = addr.getIpv4Address();
         if (ipv4 != null) {
-            return new IpAddressNoZone(INSTANCE.ipv4AddressNoZoneFor(ipv4));
+            return new IpAddressNoZone(IetfInetUtil.ipv4AddressNoZoneFor(ipv4));
         }
         final Ipv6Address ipv6 = addr.getIpv6Address();
         checkState(ipv6 != null, "Unexpected address %s", addr);
-        return new IpAddressNoZone(INSTANCE.ipv6AddressNoZoneFor(ipv6));
+        return new IpAddressNoZone(IetfInetUtil.ipv6AddressNoZoneFor(ipv6));
     }
 
     static String getNeighborInstanceName(final InstanceIdentifier<?> rootIdentifier) {
@@ -154,7 +153,7 @@ final class OpenConfigMappingUtil {
         } else {
             addr = globalConfig.getRouterId();
         }
-        return new ClusterIdentifier(IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(addr));
+        return new ClusterIdentifier(IetfInetUtil.ipv4AddressNoZoneFor(addr));
     }
 
     static @Nullable ClusterIdentifier getNeighborClusterIdentifier(
@@ -174,7 +173,7 @@ final class OpenConfigMappingUtil {
             final org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.route
                     .reflector.Config config = routeReflector.getConfig();
             if (config != null && config.getRouteReflectorClusterId() != null) {
-                return new ClusterIdentifier(IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(
+                return new ClusterIdentifier(IetfInetUtil.ipv4AddressNoZoneFor(
                     config.getRouteReflectorClusterId().getIpv4Address()));
             }
         }
@@ -486,16 +485,11 @@ final class OpenConfigMappingUtil {
         if (!enabled.orElse(Boolean.FALSE)) {
             return null;
         }
-        switch (role) {
-            case Ebgp:
-                return RevisedErrorHandlingSupportImpl.forExternalPeer();
-            case Ibgp:
-            case Internal:
-            case RrClient:
-                return RevisedErrorHandlingSupportImpl.forInternalPeer();
-            default:
-                throw new IllegalStateException("Unhandled role " + role);
-        }
+        return switch (role) {
+            case Ebgp -> RevisedErrorHandlingSupportImpl.forExternalPeer();
+            case Ibgp, Internal, RrClient -> RevisedErrorHandlingSupportImpl.forInternalPeer();
+            default -> throw new IllegalStateException("Unhandled role " + role);
+        };
     }
 
     private static Optional<Boolean> getRevisedErrorHandling(final BgpNeighborGroup group) {
index ac09a0db9d3f218f9a184751c00a972783ef33d8..c3eb1ce25df0ea37be8621adc5fbd4031571e578 100644 (file)
@@ -233,7 +233,7 @@ public final class RibImpl implements RIB, BGPRibStateProvider {
         afiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true).values();
         final Config globalConfig = global.getConfig();
         asNumber = globalConfig.getAs();
-        routerId = IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(globalConfig.getRouterId());
+        routerId = IetfInetUtil.ipv4AddressNoZoneFor(globalConfig.getRouterId());
         clusterId = getGlobalClusterIdentifier(globalConfig);
         final Map<TablesKey, PathSelectionMode> pathSelectionModes = OpenConfigMappingUtil
                 .toPathSelectionMode(afiSafi, tableTypeRegistry).entrySet()
index 117946c94f0797b394edd273446bde2568062adc..cb5e0524ac5b932a287992543922de0eca31375e 100644 (file)
@@ -110,7 +110,7 @@ public class AbstractBGPDispatcherTest {
         capas.add(new OptionalCapabilitiesBuilder()
                 .setCParameters(BgpExtendedMessageUtil.EXTENDED_MESSAGE_CAPABILITY).build());
         tlvs.add(new BgpParametersBuilder().setOptionalCapabilities(capas).build());
-        final BgpId bgpId = new BgpId(IetfInetUtil.INSTANCE.ipv4AddressFor(socketAddress.getAddress()));
+        final BgpId bgpId = new BgpId(IetfInetUtil.ipv4AddressFor(socketAddress.getAddress()));
         return new BGPSessionPreferences(AS_NUMBER, HOLD_TIMER, bgpId, AS_NUMBER, tlvs);
     }
 
index 55464e22a635267567a5dd5978b5a463c5edc6b4..bfda537920765ffc06b841fcb3f51c4b483e8afb 100644 (file)
@@ -155,7 +155,7 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
         final DataTreeCandidate candidate = mock(DataTreeCandidate.class);
         final DataTreeCandidateNode rootNode = mock(DataTreeCandidateNode.class);
         doReturn(rootNode).when(candidate).getRootNode();
-        doReturn(type).when(rootNode).getModificationType();
+        doReturn(type).when(rootNode).modificationType();
         doCallRealMethod().when(rootNode).toString();
         doReturn(target).when(candidate).getRootPath();
         doCallRealMethod().when(candidate).toString();
@@ -170,12 +170,12 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
                     .withNodeIdentifier(new NodeIdentifier(PREFIX_QNAME)).withValue(p).build());
 
             final DataTreeCandidateNode child = mock(DataTreeCandidateNode.class);
-            doReturn(createIdentifier(p)).when(child).getIdentifier();
-            doReturn(java.util.Optional.of(b.build())).when(child).getDataAfter();
-            doReturn(type).when(child).getModificationType();
+            doReturn(createIdentifier(p)).when(child).name();
+            doReturn(b.build()).when(child).dataAfter();
+            doReturn(type).when(child).modificationType();
             children.add(child);
         }
-        doReturn(children).when(rootNode).getChildNodes();
+        doReturn(children).when(rootNode).childNodes();
         col.add(candidate);
         return col;
     }
index b91c156fd8f4148b0a7dd542bd6d3573933b9284..77486f24943e97679a3c21b402d08e2733c93f64 100644 (file)
@@ -98,7 +98,7 @@ public class PeerTest extends AbstractRIBTestSetup {
     private void overrideMockedBehaviour() {
         doAnswer(invocation -> {
             final var node = invocation.getArgument(2, NormalizedNode.class);
-            final var nodeType = node.getIdentifier().getNodeType();
+            final var nodeType = node.name().getNodeType();
             if (nodeType.equals(Ipv4Route.QNAME) || nodeType.equals(PREFIX_QNAME)) {
                 routes.put(invocation.getArgument(1), node);
             }
index b2ddabe37825ef8272237d995ec2ce2cc1fa9a44..a73930b0b57dd99e0857e089251fb1bc42dc871a 100644 (file)
@@ -21,7 +21,6 @@ import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.SHORT;
 import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.createAfiSafi;
 import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.createNeighborExpected;
 import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUtil.HOLDTIMER;
-import static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil.INSTANCE;
 
 import com.google.common.collect.ImmutableMap;
 import java.math.BigDecimal;
@@ -78,6 +77,7 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.re
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.network.instance.protocols.ProtocolKey;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.policy.types.rev151009.BGP;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.AsNumber;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
@@ -242,7 +242,7 @@ public class OpenConfigMappingUtilTest {
     @Test
     public void testGetNeighborKey() {
         assertArrayEquals(MD5_PASSWORD.getBytes(StandardCharsets.US_ASCII),
-            OpenConfigMappingUtil.getNeighborKey(NEIGHBOR).asMap().get(INSTANCE.inetAddressFor(NEIGHBOR_ADDRESS)));
+            OpenConfigMappingUtil.getNeighborKey(NEIGHBOR).asMap().get(IetfInetUtil.inetAddressFor(NEIGHBOR_ADDRESS)));
         assertNull(OpenConfigMappingUtil.getNeighborKey(EMPTY_NEIGHBOR));
         assertNull(OpenConfigMappingUtil.getNeighborKey(new NeighborBuilder().setNeighborAddress(NEIGHBOR_ADDRESS)
                 .setConfig(new ConfigBuilder().build()).build()));
index 4785925f6875c128b919afcc4c2b06a535b27ff7..3162ea8876820f68f252954d5ab9c4826d6cf0c6 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>util</artifactId>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>bgp-concepts</artifactId>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>bgp-parser-api</artifactId>
index 65a1fd2ce9acced8d29231b9c96ade828908d0b6..d92f69744583ef42aa534897a2aa3e9be8497664 100644 (file)
@@ -24,8 +24,8 @@ import com.google.common.cache.CacheLoader;
 import com.google.common.cache.LoadingCache;
 import com.google.common.collect.ImmutableList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
+import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.bgp.concepts.RouteDistinguisherUtil;
@@ -63,8 +63,8 @@ import org.opendaylight.yangtools.util.ImmutableOffsetMapTemplate;
 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.binding.KeyAware;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.common.Uint32;
@@ -90,7 +90,7 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractRIBSupport<
         C extends Routes & DataObject & ChoiceIn<Tables>,
         S extends ChildOf<? super C>,
-        R extends Route & ChildOf<? super S> & Identifiable<?>>
+        R extends Route & ChildOf<? super S> & KeyAware<?>>
         implements RIBSupport<C, S> {
     public static final String ROUTE_KEY = "route-key";
     private static final Logger LOG = LoggerFactory.getLogger(AbstractRIBSupport.class);
@@ -171,14 +171,13 @@ public abstract class AbstractRIBSupport<
         routeKeyQname = QName.create(module, ROUTE_KEY).intern();
         routesListIdentifier = NodeIdentifier.create(routeQname);
 
-        emptyTable = (MapEntryNode) this.mappingService
-                .toNormalizedNode(TABLES_II, new TablesBuilder().withKey(tk)
-                        .setAttributes(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib
-                                .rev180329.rib.tables.AttributesBuilder().build()).build()).getValue();
+        emptyTable = (MapEntryNode) mappingService.toNormalizedDataObject(TABLES_II, new TablesBuilder().withKey(tk)
+            .setAttributes(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329
+                .rib.tables.AttributesBuilder().build()).build()).node();
         pathIdNid = NodeIdentifier.create(QName.create(routeQName(), "path-id").intern());
         prefixTypeNid = NodeIdentifier.create(QName.create(destContainerQname, "prefix").intern());
         rdNid = NodeIdentifier.create(QName.create(destContainerQname, "route-distinguisher").intern());
-        routeDefaultYii = YangInstanceIdentifier.create(BGPRIB_NID, RIB_NID, RIB_NID, LOCRIB_NID,
+        routeDefaultYii = YangInstanceIdentifier.of(BGPRIB_NID, RIB_NID, RIB_NID, LOCRIB_NID,
             TABLES_NID, TABLES_NID, ROUTES_NID, routesContainerIdentifier, routesListIdentifier, routesListIdentifier);
         relativeRoutesPath = ImmutableList.of(routesContainerIdentifier, routesListIdentifier);
         routeKeyTemplate = ImmutableOffsetMapTemplate.ordered(
@@ -355,12 +354,16 @@ public abstract class AbstractRIBSupport<
 
     @Override
     public final Collection<DataTreeCandidateNode> changedRoutes(final DataTreeCandidateNode routes) {
-        return routes.getModifiedChild(routesContainerIdentifier)
-            .flatMap(myRoutes -> myRoutes.getModifiedChild(routeNid()))
-            // Well, given the remote possibility of augmentation, we should perform a filter here,
-            // to make sure the type matches what routeType() reports.
-            .map(DataTreeCandidateNode::getChildNodes)
-            .orElse(Collections.emptySet());
+        final var myRoutes = routes.modifiedChild(routesContainerIdentifier);
+        if (myRoutes != null) {
+            final var route = myRoutes.modifiedChild(routeNid());
+            if (route != null) {
+                // Well, given the remote possibility of augmentation, we should perform a filter here,
+                // to make sure the type matches what routeType() reports.
+                return route.childNodes();
+            }
+        }
+        return Set.of();
     }
 
     @Override
@@ -491,16 +494,10 @@ public abstract class AbstractRIBSupport<
                 final NodeIdentifierWithPredicates routeKey, final DataContainerNode route,
                 final ContainerNode attributes) {
             // Build the DataContainer data
-            final DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> b =
-                    ImmutableNodes.mapEntryBuilder();
-            b.withNodeIdentifier(routeKey);
-
+            final var b = ImmutableNodes.mapEntryBuilder().withNodeIdentifier(routeKey);
             route.body().forEach(b::withChild);
             // Add attributes
-            final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> cb =
-                    Builders.containerBuilder(attributes);
-            cb.withNodeIdentifier(routeAttributesIdentifier());
-            b.withChild(cb.build());
+            b.withChild(Builders.containerBuilder(attributes).withNodeIdentifier(routeAttributesIdentifier()).build());
             tx.put(LogicalDatastoreType.OPERATIONAL, base.node(routeKey), b.build());
         }
     }
@@ -540,8 +537,8 @@ public abstract class AbstractRIBSupport<
 
     @Override
     public ContainerNode attributeToContainerNode(final YangInstanceIdentifier attPath, final Attributes attributes) {
-        final InstanceIdentifier<DataObject> iid = mappingService.fromYangInstanceIdentifier(attPath);
-        return (ContainerNode) verifyNotNull(mappingService.toNormalizedNode(iid, attributes).getValue());
+        final var iid = mappingService.fromYangInstanceIdentifier(attPath);
+        return (ContainerNode) verifyNotNull(mappingService.toNormalizedDataObject(iid, attributes).node());
     }
 
     @Override
index 056253275f82f9ed723d3c434a953be522375c5c..372406a60c1b69ed6e0a0ea11896e97099d1bf7d 100644 (file)
@@ -7,10 +7,6 @@
  */
 package org.opendaylight.protocol.bgp.rib.spi;
 
-import static org.opendaylight.protocol.bgp.rib.spi.RIBQNames.LLGR_STALE_QNAME;
-
-import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableSet;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.BgpRib;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.Rib;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.bgp.rib.rib.LocRib;
@@ -21,13 +17,11 @@ 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.rib.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Attributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 
 /**
  * Utility constant {@link NodeIdentifier}s for various RIB constructs.
  */
-@Beta
 public final class RIBNodeIdentifiers {
     public static final NodeIdentifier BGPRIB_NID = NodeIdentifier.create(BgpRib.QNAME);
     public static final NodeIdentifier RIB_NID = NodeIdentifier.create(Rib.QNAME);
@@ -41,14 +35,10 @@ public final class RIBNodeIdentifiers {
     public static final NodeIdentifier ROUTES_NID = NodeIdentifier.create(Routes.QNAME);
     public static final NodeIdentifier ATTRIBUTES_NID = NodeIdentifier.create(Attributes.QNAME);
 
-    // Unfortunate side-effect of how yang-data-api operates, we need to deal with the augmentation identifier
-    public static final AugmentationIdentifier ADJRIBIN_ATTRIBUTES_AID = new AugmentationIdentifier(
-        ImmutableSet.of(LLGR_STALE_QNAME));
-
     public static final NodeIdentifier UPTODATE_NID = NodeIdentifier.create(RIBQNames.UPTODATE_QNAME);
     public static final NodeIdentifier LLGR_STALE_NID = NodeIdentifier.create(RIBQNames.LLGR_STALE_QNAME);
 
     private RIBNodeIdentifiers() {
-
+        // Hidden on purpose
     }
 }
index 458d1e9f0f72ee7ecb78e657dc54ed83164464bd..c0e7d7d1418d08a8ccd25ec27d14d0623a13a8f3 100644 (file)
@@ -25,6 +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.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;
@@ -52,8 +53,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.
 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.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;
@@ -66,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();
 
@@ -115,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());
@@ -128,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());
@@ -142,13 +143,13 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
         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(abstractRIBSupport.getTablesKey()).setRoutes(routes).build();
         return (ChoiceNode) verifyNotNull(((MapEntryNode) adapter.currentSerializer()
-            .toNormalizedNode(tablesIId(), tables).getValue())
+            .toNormalizedDataObject(tablesIId(), tables).node())
             .childByArg(new NodeIdentifier(Routes.QNAME)));
     }
 
@@ -156,9 +157,8 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
         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 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();
     }
@@ -184,6 +184,6 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
 
     protected final NodeIdentifierWithPredicates createRouteNIWP(final S routes) {
         final Collection<MapEntryNode> map = createRoutes(routes);
-        return Iterables.getOnlyElement(map).getIdentifier();
+        return Iterables.getOnlyElement(map).name();
     }
 }
index d5aaff10dd9e9398b11f865c46bcf6655e04bb3c..b695d64c7c7df6b02f62249f48de97f1ae07e0d8 100644 (file)
@@ -19,7 +19,6 @@ import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
-import java.util.Optional;
 import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
@@ -105,15 +104,14 @@ public class RIBSupportTest extends AbstractConcurrentDataBrokerTest {
         subTree = Mockito.mock(DataTreeCandidateNode.class);
         final DataTreeCandidateNode emptyNode = Mockito.mock(DataTreeCandidateNode.class);
         final DataTreeCandidateNode node = Mockito.mock(DataTreeCandidateNode.class);
-        doReturn(Optional.empty()).when(emptyTree).getModifiedChild(IPV4_ROUTES_IDENTIFIER);
+        doReturn(null).when(emptyTree).modifiedChild(IPV4_ROUTES_IDENTIFIER);
 
-        doReturn(Optional.of(emptyNode)).when(emptySubTree).getModifiedChild(IPV4_ROUTES_IDENTIFIER);
-        doReturn(Optional.empty()).when(emptyNode).getModifiedChild(new NodeIdentifier(Ipv4Route.QNAME));
+        doReturn(emptyNode).when(emptySubTree).modifiedChild(IPV4_ROUTES_IDENTIFIER);
+        doReturn(null).when(emptyNode).modifiedChild(new NodeIdentifier(Ipv4Route.QNAME));
 
-        doReturn(Optional.of(node)).when(subTree).getModifiedChild(IPV4_ROUTES_IDENTIFIER);
-        doReturn(Optional.of(node)).when(node).getModifiedChild(new NodeIdentifier(Ipv4Route.QNAME));
-        final Collection<DataTreeCandidateNode> emptyCollection = new HashSet<>();
-        doReturn(emptyCollection).when(node).getChildNodes();
+        doReturn(node).when(subTree).modifiedChild(IPV4_ROUTES_IDENTIFIER);
+        doReturn(node).when(node).modifiedChild(new NodeIdentifier(Ipv4Route.QNAME));
+        doReturn(Set.of()).when(node).childNodes();
 
         tx = Mockito.mock(DOMDataTreeWriteTransaction.class);
         nlri = Mockito.mock(ContainerNode.class);
@@ -129,12 +127,12 @@ public class RIBSupportTest extends AbstractConcurrentDataBrokerTest {
         doReturn(destination).when(nlri).childByArg(new NodeIdentifier(AdvertizedRoutes.QNAME));
         doReturn(destinations).when(destination).childByArg(new NodeIdentifier(DestinationType.QNAME));
         doReturn(route).when(destinations).childByArg(new NodeIdentifier(Ipv4Prefixes.QNAME));
-        doReturn(emptyCollection).when(route).body();
+        doReturn(Set.of()).when(route).body();
 
         doAnswer(invocation -> {
-            final Object[] args = invocation.getArguments();
-            routesMap.remove(args[1]);
-            return args[1];
+            final var arg = invocation.getArgument(1);
+            routesMap.remove(arg);
+            return arg;
         }).when(tx).delete(Mockito.eq(LogicalDatastoreType.OPERATIONAL), any(YangInstanceIdentifier.class));
         doAnswer(invocation -> {
             final Object[] args = invocation.getArguments();
index 31546701704f6a3b05099baf548f988edd6d1678..c417bda1b41cfaf8b6b98cb38e5981cb1c24ad14 100644 (file)
@@ -270,10 +270,10 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         final var attr = edge.getEdgeAttributes();
         PrefixBuilder prefBuilder = new PrefixBuilder().setVertexId(srcId);
         if (attr.getLocalAddress() != null) {
-            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv4PrefixFor(attr.getLocalAddress())));
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.ipv4PrefixFor(attr.getLocalAddress())));
         }
         if (attr.getLocalAddress6() != null) {
-            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.INSTANCE.ipv6PrefixFor(attr.getLocalAddress6())));
+            prefBuilder.setPrefix(new IpPrefix(IetfInetUtil.ipv6PrefixFor(attr.getLocalAddress6())));
         }
         Prefix prefix = prefBuilder.build();
 
@@ -660,12 +660,12 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
     }
 
     private static Uint64 ipv4ToKey(final Ipv4InterfaceIdentifier ifId) {
-        return Uint32.fromIntBits(IetfInetUtil.INSTANCE.ipv4AddressNoZoneBits(ifId)).toUint64();
+        return Uint32.fromIntBits(IetfInetUtil.ipv4AddressNoZoneBits(ifId)).toUint64();
     }
 
     @VisibleForTesting
     static Uint64 ipv6ToKey(final Ipv6InterfaceIdentifier ifId) {
-        final byte[] ip = IetfInetUtil.INSTANCE.ipv6AddressNoZoneBytes(ifId);
+        final byte[] ip = IetfInetUtil.ipv6AddressNoZoneBytes(ifId);
         // Keep only the lower 64bits from the IP address, i.e. we skip first Long.BYTES bytes
         return Uint64.fromLongBits(ByteBuffer.wrap(ip, Long.BYTES, Long.BYTES).getLong());
     }
index 1ba7b7c6ed44603ff51d164135bbaa93f6b4b4f1..f4add5c2e3baa41a3a465b4d28fba70ab1604daa 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>11.0.9</version>
+        <version>12.0.0-SNAPSHOT</version>
         <relativePath/>
     </parent>
 
index 1b085af0a19a3ba0b960db914ca8b2c7896dcead..d70722ab3de9e8e5c1709a86db0da1cc105b9b8c 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 8a7475896a497c8534f9e9a8fa120dfdb5cd78c0..8b4f53ae19aa477304c1daf04210411ba5739b9e 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index b79568c61099f134c215910a09ea526ec3a18ef5..10e01044fd6ad47fdd5d7cf0e829aa4c33cdaeb7 100644 (file)
@@ -117,7 +117,7 @@ public final class BmpMonitoringStationImpl implements BmpMonitoringStation, Clu
             if (mr != null) {
                 final Rfc2385Key password = mr.getPassword();
                 if (password != null && !password.getValue().isEmpty()) {
-                    passwords.put(IetfInetUtil.INSTANCE.inetAddressForNoZone(mr.getAddress()), password.getValue());
+                    passwords.put(IetfInetUtil.inetAddressForNoZone(mr.getAddress()), password.getValue());
                 }
             }
         }
index e9e78e46d82f6616dc5ced4d5ee700ad98635698..3c49af073fbfd12a215dc2b23fcccaae48ef3523 100644 (file)
@@ -145,8 +145,8 @@ public final class BmpRouterPeerImpl implements BmpRouterPeer {
         this.peerId = peerId;
         peerYangIId = YangInstanceIdentifier.builder(peersYangIId).nodeWithKey(Peer.QNAME, PEER_ID_QNAME,
                 this.peerId.getValue()).build();
-        sentOpenCodec = tree.getSubtreeCodec(SENT_OPEN_IID);
-        receivedOpenCodec = tree.getSubtreeCodec(RECEIVED_OPEN_IID);
+        sentOpenCodec = (BindingDataObjectCodecTreeNode<SentOpen>) tree.getSubtreeCodec(SENT_OPEN_IID);
+        receivedOpenCodec = (BindingDataObjectCodecTreeNode<ReceivedOpen>) tree.getSubtreeCodec(RECEIVED_OPEN_IID);
 
         final Set<TablesKey> peerTables = setPeerTables(peerUp.getReceivedOpen());
         final DOMDataTreeWriteTransaction wTx = this.domTxChain.newWriteOnlyTransaction();
@@ -420,14 +420,11 @@ public final class BmpRouterPeerImpl implements BmpRouterPeer {
     }
 
     private static String toDom(final MirrorInformationCode informationCode) {
-        switch (informationCode) {
-            case ErroredPdu:
-                return "errored-pdu";
-            case MessageLost:
-                return "message-lost";
-            default:
-                return null;
-        }
+        return switch (informationCode) {
+            case ErroredPdu -> "errored-pdu";
+            case MessageLost -> "message-lost";
+            default -> null;
+        };
     }
 
     private static String getStringIpAddress(final IpAddressNoZone ipAddress) {
index 0f3eb15aaa84c1686a92e729610434e0f8e42e41..3f2cd16f30b014f597c63d932170436ee4b07759 100644 (file)
@@ -56,21 +56,21 @@ final class TableContext {
 
         checkState(tableCodecContext instanceof BindingDataObjectCodecTreeNode);
         final BindingDataObjectCodecTreeNode<?> routeListCodec = ((BindingDataObjectCodecTreeNode)tableCodecContext)
-            .streamChild(Routes.class)
-            .streamChild(this.tableSupport.routesCaseClass())
-            .streamChild(this.tableSupport.routesContainerClass())
-            .streamChild(this.tableSupport.routesListClass());
+            .getStreamChild(Routes.class)
+            .getStreamChild(this.tableSupport.routesCaseClass())
+            .getStreamChild(this.tableSupport.routesContainerClass())
+            .getStreamDataObject(this.tableSupport.routesListClass());
 
-        attributesCodec = routeListCodec.streamChild(Attributes.class)
+        attributesCodec = routeListCodec.getStreamDataObject(Attributes.class)
                 .createCachingCodec(this.tableSupport.cacheableAttributeObjects());
 
-        final var updateAttributesCodec = tree.streamChild(Update.class)
-                .streamChild(Attributes.class);
-        reachNlriCodec = updateAttributesCodec.streamChild(AttributesReach.class)
-            .streamChild(MpReachNlri.class)
+        final var updateAttributesCodec = tree.getStreamChild(Update.class)
+                .getStreamDataObject(Attributes.class);
+        reachNlriCodec = updateAttributesCodec.getStreamChild(AttributesReach.class)
+            .getStreamDataObject(MpReachNlri.class)
             .createCachingCodec(this.tableSupport.cacheableNlriObjects());
-        unreachNlriCodec = updateAttributesCodec.streamChild(AttributesUnreach.class)
-            .streamChild(MpUnreachNlri.class)
+        unreachNlriCodec = updateAttributesCodec.getStreamChild(AttributesUnreach.class)
+            .getStreamDataObject(MpUnreachNlri.class)
             .createCachingCodec(this.tableSupport.cacheableNlriObjects());
     }
 
index d7cac1eacf2caecf7f363d8e917b2f6b52957254..0501f40b79bf18d2e6f24161baa794cd8b24d7b8 100644 (file)
@@ -16,7 +16,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 1b49afd5eb9e43adb052f07d4ee00d97662497be..3b80ac3a7b072b26d4ac54d341b46d35c90f9d0b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 28daef84fc20c9a50dd7e6607f9ef402c7cfc8b7..3061d851803578c31caeab2afd70801e2be2d1f4 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>config-loader-spi</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.spotbugs</groupId>
+            <artifactId>spotbugs-annotations</artifactId>
+            <optional>true</optional>
+        </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.checkerframework</groupId>
+            <artifactId>checker-qual</artifactId>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-api</artifactId>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-runtime-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.checkerframework</groupId>
-            <artifactId>checker-qual</artifactId>
-            <scope>provided</scope>
-        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.service.component.annotations</artifactId>
index 0206ae46d932c07716657679ea0ac0ab13978e00..30efb881e0cd9ae21a56920e818c05c182784a01 100644 (file)
@@ -13,7 +13,6 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.RandomAccessFile;
-import java.net.URISyntaxException;
 import java.nio.channels.FileChannel;
 import java.nio.channels.FileLock;
 import java.util.ArrayList;
@@ -36,13 +35,12 @@ 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.codec.xml.XmlParserStream;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
-import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
+import org.opendaylight.yangtools.yang.data.impl.schema.NormalizationResultHolder;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.EffectiveStatementInference;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
 
 /**
  * Reference implementation of configuration loading bits, without worrying where files are actually coming from.
@@ -98,7 +96,7 @@ abstract class AbstractConfigLoader implements ConfigLoader {
         context.updateSchemaNode(currentContext);
 
         final ProcessorRegistration reg = new ProcessorRegistration();
-        this.configServices.put(reg, context);
+        configServices.put(reg, context);
 
         final File[] fList = directory().listFiles();
         if (fList != null) {
@@ -160,8 +158,8 @@ abstract class AbstractConfigLoader implements ConfigLoader {
     @Holding("this")
     private NormalizedNode parseDefaultConfigFile(final EffectiveStatementInference schema, final String filename)
             throws IOException, XMLStreamException {
-        final NormalizedNodeResult result = new NormalizedNodeResult();
-        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(result);
+        final NormalizationResultHolder resultHolder = new NormalizationResultHolder();
+        final NormalizedNodeStreamWriter streamWriter = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
 
         final File newFile = new File(directory(), filename);
         try (RandomAccessFile raf = new RandomAccessFile(newFile, READ)) {
@@ -189,7 +187,7 @@ abstract class AbstractConfigLoader implements ConfigLoader {
 
                 try (XmlParserStream xmlParser = XmlParserStream.create(streamWriter, schema)) {
                     xmlParser.parse(reader);
-                } catch (final URISyntaxException | XMLStreamException | IOException | SAXException e) {
+                } catch (XMLStreamException | IOException e) {
                     LOG.warn("Failed to parse xml", e);
                 } finally {
                     reader.close();
@@ -197,6 +195,6 @@ abstract class AbstractConfigLoader implements ConfigLoader {
             }
         }
 
-        return result.getResult();
+        return resultHolder.getResult().data();
     }
 }
index 5c101f1e672612f1cbc6d5a07ef28277cd3d2e91..26de5b4479e7896e975f9df1a7fdfb1199569fde 100644 (file)
     <name>${project.artifactId}</name>
 
     <dependencies>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>concepts</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>concepts</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-api</artifactId>
index 8da30e9b9a4f9cd1edc5a13af63669a02c694027..3116ee8a8789b3d9abab16762e276a2929f2467f 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 4abb7941291e0361f74abe0a0ad91c9a16e6aa43..dd296ef3585543fcbed5ad2393926c87599a1f39 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>config-loader-spi</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-model-api</artifactId>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-common-api</artifactId>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-dom-api</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>org.osgi.service.component.annotations</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-api</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>testtool-util</artifactId>
index 7a255ac1efe50fadf263729f82deba107fa90107..4c84e4852ab4373f6e0c75586815fcd55d87733d 100644 (file)
@@ -9,7 +9,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>karaf4-parent</artifactId>
-    <version>12.0.5</version>
+    <version>13.0.3</version>
     <relativePath/>
   </parent>
 
@@ -98,7 +98,7 @@
     </dependency>
     <dependency>
       <groupId>org.opendaylight.netconf</groupId>
-      <artifactId>features-restconf</artifactId>
+      <artifactId>features-netconf</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
       <scope>runtime</scope>
index 6bb48875a776670df6078e25f6fd93184536027b..c2e5b5bbf851a98d21e05be23883c01336028353 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>feature-repo-parent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 1a9a75aabb1d563f6a348b81e7e32cf5b3dc72ab..136cfa0bdef9aaff8cbdb730a6bc583198287770 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index a16336109d78f889bc7edd94a3d4539746aaedbf..7af481c38038805da033871b7c8600a9f74246a4 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-benchmark" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
-        <feature version="[7,8)">odl-controller-blueprint</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-controller-blueprint</feature>
     </feature>
 </features>
index a0905dc28f55af57930041e7b74f8c0d92e529ef..b7ae84bb1bb9cb0637b1ed008647e57f682c60ff 100644 (file)
@@ -8,6 +8,6 @@
   -->
 <features name="odl-bgpcep-bgp-dependencies-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
     <feature name="odl-bgpcep-bgp-dependencies" version="${project.version}">
-        <feature version="[10,11)">odl-yangtools-data-api</feature>
+        <feature version="[11,12)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index d221f6aa2d23267c39876faca20b5a3e9248195d..80969130231ba1ed1e8603521d5d38d2d85f5a7f 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-evpn" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-rfc8294-netty</feature>
+        <feature version="[12,13)">odl-mdsal-rfc8294-netty</feature>
     </feature>
 </features>
index d2ea29626a87468115789ae330012c9f7d0be508..62b9bf9f68d911f365bafc8a1e3bcca5d996e3b8 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-labeled-unicast" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-rfc8294-netty</feature>
+        <feature version="[12,13)">odl-mdsal-rfc8294-netty</feature>
     </feature>
 </features>
index 045bfc0627d3c34a1766d860f5399f91a415bfa4..721e4dd6ca7741a407c506e4ee82006b6dbf6673 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-linkstate" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
-        <feature version="[11,12)">odl-mdsal-rfc8294-netty</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
+        <feature version="[12,13)">odl-mdsal-rfc8294-netty</feature>
     </feature>
 </features>
index f89185e824b513412b5e691ec8cb7ca2a40aeec7..ccb4d08964f329e9a20d22ac56627c420ad2c146 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-openconfig-rp-impl" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index 104579468393711e15dad7836169702a4c11d5be..a1982781c3a3fea7d68005e00dd016f5d8d9cac5 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-openconfig-rp-statement" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index 0c866cf88348c9632adefa91e31af0bc3b21e3e4..ae408a7f030ad78100674d1803bde151e6003465 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-parser-api" version="${project.version}">
-        <feature version="[10,11)">odl-yangtools-data</feature>
-        <feature version="[10,11)">odl-yangtools-netty</feature>
+        <feature version="[11,12)">odl-yangtools-data</feature>
+        <feature version="[11,12)">odl-yangtools-netty</feature>
     </feature>
 </features>
index 625de8cae6f4c33c6ec90d150fac9e9fdce54d1a..81acbf6e3d439809da93986a8cc4163580e29b06 100644 (file)
@@ -11,9 +11,9 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-rib-api" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-rfc8343</feature>
-        <feature version="[11,12)">odl-mdsal-singleton-common</feature>
-        <feature version="[11,12)">odl-mdsal-dom-api</feature>
-        <feature version="[11,12)">odl-mdsal-binding-runtime</feature>
+        <feature version="[12,13)">odl-mdsal-model-rfc8343</feature>
+        <feature version="[12,13)">odl-mdsal-singleton-common</feature>
+        <feature version="[12,13)">odl-mdsal-dom-api</feature>
+        <feature version="[12,13)">odl-mdsal-binding-runtime</feature>
     </feature>
 </features>
index c8d13300ebd2b02666b5215df2b96f2f6104b160..a3863066bb96e23ae9440b0369784eba4e97e410 100644 (file)
@@ -11,8 +11,8 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bgp-rib-impl" version="${project.version}">
-        <feature version="[7,8)">odl-controller-blueprint</feature>
-        <feature version="[7,8)">odl-controller-exp-netty-config</feature>
+        <feature version="[8,9)">odl-controller-blueprint</feature>
+        <feature version="[8,9)">odl-controller-exp-netty-config</feature>
         <configfile finalname="etc/opendaylight/bgpcep/routing-policy-default-config.xml">mvn:org.opendaylight.bgpcep/bgp-config-example/${project.version}/xml/routing-policy-default-config</configfile>
     </feature>
 </features>
index 966b31f3e4e2e4750945496f3ad6563f72e65e6d..9bec032628ce2639612d6c9495346700f0ffc917 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 2290b4dafe34d00f25dcdb3a03664c76c4fca186..f7dc754addc7b301c871c2f187d9ac2d4cd48a90 100644 (file)
@@ -8,7 +8,7 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-bgpcep-data-change-counter-${project.version}">
     <feature name="odl-bgpcep-data-change-counter" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[12,13)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index ba943c6feea6c28ad0171f910294384e542c6617..02d5b54e6243590b86b576c3615f26109bac06f5 100644 (file)
@@ -8,6 +8,6 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-bgpcep-${project.version}">
     <feature name="odl-bgpcep-extras-dependencies" version="${project.version}">
-        <feature version="[12,13)">odl-netty-4</feature>
+        <feature version="[13,14)">odl-netty-4</feature>
     </feature>
 </features>
index 5097b3b9cbec40d2afb5d52dde562ee579cf5cc2..4bd99a6c7a2e1452d4382e78263d307e5fde24b1 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 3a1479a460613776b58bf6e8d9365590ebf46bd2..341fffa1d3f62861ea849ed812afd972ab7c7b06 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index ae1d350bfbb5f434e2d06c66692a39dd75093d27..54e899a81744b8610c69b120b745324c49be1df0 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-concepts" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-rfc6991</feature>
-        <feature version="[11,12)">odl-mdsal-model-rfc8294</feature>
+        <feature version="[12,13)">odl-mdsal-model-rfc6991</feature>
+        <feature version="[12,13)">odl-mdsal-model-rfc8294</feature>
     </feature>
 </features>
index fc6b455a5ef3e278533161c76fdbf438a0e79a2a..7196f05ff35bc051b4cbc09dec1c663828ea0e24 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index a9a38e09f481335db0de08b315f7bccd6334e3c3..4a3b5fc2e4f2944d4efeedb22830a121164f7501 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-bmp-config-loader" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index b8a58a304ebae497e35d6fa25156634075ab0a70..85dd87da74fb294e0e6eb896f14511e16ad19a1f 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-config-loader-impl" version="${project.version}">
-        <feature version="[10,11)">odl-yangtools-codec</feature>
+        <feature version="[11,12)">odl-yangtools-codec</feature>
     </feature>
 </features>
index 8c36d99b435313d18ffa0527b1e619528161e7a2..1b7f976e8a487618ebb842344c935e893b795b5b 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-config-loader-spi" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-binding-runtime</feature>
+        <feature version="[12,13)">odl-mdsal-binding-runtime</feature>
     </feature>
 </features>
index 21545f2628db817affd110291b32e380fe3b3d03..0cfb78a07994df72ec7d30eea95228dcdfdf9729 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-topology-config-loader" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index 383a379546dd3c3cb9b76e52d0c2d0da54febd73..5c6556f9ea2a5d61f4e3451b064dfd9a018b33f9 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 35e5580ea910c7c0c487ebec2595899bab309d4a..5d1396dde306e5daf39ea4ea8325794ef73b2f47 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-graph-api" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-rfc6991</feature>
-        <feature version="[11,12)">odl-mdsal-model-rfc8294</feature>
+        <feature version="[12,13)">odl-mdsal-model-rfc6991</feature>
+        <feature version="[12,13)">odl-mdsal-model-rfc8294</feature>
     </feature>
 </features>
index 7f9c5eae2002ab403b3bcdaedb2edc9ab9d64439..78b5baf3e0f2081bf8051e4f40bea710fc7c6169 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-graph" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index 1f3ed0c5c954424a5119acbf7e0fa1b2c26c0f3a..64d9c1ada37a1267afcbbc53109ef54cd507b72c 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index f1e03511a08dce0d4184da2f9c106b766a6c70cb..1ff0ad1ace8628b3b8c6f68d8755250fca7e2502 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-pcep-impl" version="${project.version}">
-        <feature version="[7,8)">odl-controller-exp-netty-config</feature>
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-controller-exp-netty-config</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index c675cc2999e141c30a5d4a2e6e0a840357d4a48e..bc1697db9330695871052fc967e6dc472e97e8be 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-pcep-p2mp-te-lsp" version="${project.version}">
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index fdceb2ec8bb722c028bfede0cade4632421d6f6e..c41720fa30e82c0e4da688498d26a84f3392c634 100644 (file)
@@ -8,6 +8,6 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-bgpcep-${project.version}">
     <feature name="odl-bgpcep-pcep-tunnel-provider" version="${project.version}">
-        <feature version="[12,13)">odl-apache-commons-lang3</feature>
+        <feature version="[13,14)">odl-apache-commons-lang3</feature>
     </feature>
 </features>
index 5a3cf6d5eb9ded05cb507710c384663d84a61a8e..6a237bd8eb7a5769a994be3c4306cd13bfb69708 100644 (file)
@@ -8,6 +8,6 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-bgpcep-programming-api-${project.version}">
     <feature name="odl-bgpcep-programming-api" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-singleton-common</feature>
+        <feature version="[12,13)">odl-mdsal-singleton-common</feature>
     </feature>
 </features>
index f122e49b0115ee2885aa489d2bc81ce225ee59b5..8bbae521342074c3b7def5eeda5f1ee342f18603 100644 (file)
@@ -11,7 +11,7 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-programming-impl" version="${project.version}">
-        <feature version="[7,8)">odl-controller-exp-netty-config</feature>
-        <feature version="[7,8)">odl-mdsal-broker</feature>
+        <feature version="[8,9)">odl-controller-exp-netty-config</feature>
+        <feature version="[8,9)">odl-mdsal-broker</feature>
     </feature>
 </features>
index 374401d402cea1b46e3000223338c6021d371870..c573e89335521a30a3ed587b70ac7494af01d4f3 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 86b3e337835dfdcfad160c0d397f81edbaf4183c..e7cf4e32c0b04de3a21bf57cfb9a07f6e1884d8c 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 8ea56205212fedf78330a843e68e8999410eb9bc..bf2939369c41a676d91edf571d7c126b50fc151f 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-rsvp-api" version="${project.version}">
-        <feature version="[10,11)">odl-yangtools-netty</feature>
+        <feature version="[11,12)">odl-yangtools-netty</feature>
     </feature>
 </features>
index 730fbcfc85f5cce14545e78d662a3d626ac27b94..4be1f1d8500aba4af653b07da1f8405b677482db 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index e881cb32ab1975863129c43b67e6fbf60c6c3e24..24d319bb1d76f5a8d8d29923be38c8028a2773e9 100644 (file)
@@ -11,6 +11,6 @@
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
     <feature name="odl-bgpcep-topology-api" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+        <feature version="[12,13)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
     </feature>
 </features>
index 963ef8bbb94d613ef01f338756238703e109dc00..ce16a8443fc197dde9027ed476da46583d2fa1c5 100644 (file)
@@ -8,6 +8,6 @@
   -->
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl-bgpcep-topology-tunnel-api-${project.version}">
     <feature name="odl-bgpcep-topology-tunnel-api" version="${project.version}">
-        <feature version="[11,12)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
+        <feature version="[12,13)">odl-mdsal-model-draft-clemm-netmod-yang-network-topo-01-minimal</feature>
     </feature>
 </features>
index cb4143c942f65909e73dc9cc0277fec30fd262f2..5e0f6978da1dd0152b05e6d92119c5dcafaa698b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 414dcdd9acd42570061fdeaa17911daffa88e5f3..fcd09a9e4c756103c2c709b431aa09768cc0091c 100644 (file)
     <name>${project.artifactId}</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>ietf-topology</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-common</artifactId>
-        </dependency>
     </dependencies>
 </project>
index b8c3c2eaaf59f2ab3208d1d15ea4d5d905b6ba2e..1a2154f459aeb18b06ae45a614491453d1e3e773 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index c8679b70dc7e5909a6a28b06b541c02d79c27aa4..0c634fc1b5c0f9d82efd77ca8f8fa9e0bf19f169 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>graph-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
index 9604591b31afa3580cf3dc1d8d3d552f10785082..ab8ca79478bd3056ae917c6344b2cb51908be625 100644 (file)
@@ -39,7 +39,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.re
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev220720.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yangtools.yang.common.Uint32;
-import org.opendaylight.yangtools.yang.common.Uint64;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,9 +71,9 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     private final ConnectedGraphServer connectedGraphServer;
 
     public ConnectedGraphImpl(final Graph newGraph, final ConnectedGraphServer server) {
-        this.graph = newGraph;
+        graph = newGraph;
         createConnectedGraph();
-        this.connectedGraphServer = server;
+        connectedGraphServer = server;
     }
 
     /**
@@ -83,21 +82,21 @@ public class ConnectedGraphImpl implements ConnectedGraph {
      *
      */
     private void createConnectedGraph() {
-        if (this.graph == null) {
+        if (graph == null) {
             return;
         }
         /* Add all vertices */
-        for (Vertex vertex : this.graph.nonnullVertex().values()) {
+        for (Vertex vertex : graph.nonnullVertex().values()) {
             ConnectedVertexImpl cvertex = new ConnectedVertexImpl(vertex);
             vertices.put(cvertex.getKey(), cvertex);
         }
         /* Add all edges */
-        for (Edge edge : this.graph.nonnullEdge().values()) {
+        for (Edge edge : graph.nonnullEdge().values()) {
             ConnectedEdgeImpl cedge = new ConnectedEdgeImpl(edge);
             edges.put(cedge.getKey(), cedge);
         }
         /* Add all prefixes */
-        for (Prefix prefix : this.graph.nonnullPrefix().values()) {
+        for (Prefix prefix : graph.nonnullPrefix().values()) {
             ConnectedVertexImpl cvertex = vertices.get(prefix.getVertexId().longValue());
             if (cvertex != null) {
                 cvertex.addPrefix(prefix);
@@ -161,12 +160,12 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public Graph getGraph() {
-        return this.graph;
+        return graph;
     }
 
     @Override
     public List<ConnectedVertex> getVertices() {
-        return new ArrayList<>(this.vertices.values());
+        return new ArrayList<>(vertices.values());
     }
 
     @Override
@@ -201,7 +200,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<ConnectedEdge> getEdges() {
-        return new ArrayList<>(this.edges.values());
+        return new ArrayList<>(edges.values());
     }
 
     @Override
@@ -225,21 +224,14 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public ConnectedEdge getConnectedEdge(final Ipv4Address address) {
-        if (address == null) {
-            return null;
-        }
-        final Uint64 key = Uint32.fromIntBits(IetfInetUtil.INSTANCE.ipv4AddressBits(address)).toUint64();
-        return getConnectedEdge(key.longValue());
+        return address == null ? null : getConnectedEdge(
+            Uint32.fromIntBits(IetfInetUtil.ipv4AddressBits(address)).longValue());
     }
 
     @Override
     public ConnectedEdge getConnectedEdge(final Ipv6Address address) {
-        if (address == null) {
-            return null;
-        }
-        final byte[] ip = IetfInetUtil.INSTANCE.ipv6AddressBytes(address);
-        final Uint64 key = Uint64.fromLongBits(ByteBuffer.wrap(ip, Long.BYTES, Long.BYTES).getLong());
-        return getConnectedEdge(key.longValue());
+        return address == null ? null : getConnectedEdge(
+            ByteBuffer.wrap(IetfInetUtil.ipv6AddressBytes(address), Long.BYTES, Long.BYTES).getLong());
     }
 
     @Override
@@ -249,21 +241,21 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<Prefix> getPrefixes() {
-        return new ArrayList<>(this.prefixes.values());
+        return new ArrayList<>(prefixes.values());
     }
 
     @Override
     public Prefix getPrefix(final IpPrefix prefix) {
-        return this.prefixes.get(prefix);
+        return prefixes.get(prefix);
     }
 
-    private void callVertexTrigger(ConnectedVertexImpl cvertex, Vertex vertex) {
+    private void callVertexTrigger(final ConnectedVertexImpl cvertex, final Vertex vertex) {
         List<ConnectedVertexTrigger> vertexTriggers = cvertex.getTriggers();
         if (vertexTriggers == null || vertexTriggers.isEmpty()) {
             return;
         }
         for (ConnectedGraphTrigger trigger : graphTriggers.values()) {
-            this.exec.submit(() -> trigger.verifyVertex(vertexTriggers, cvertex, vertex));
+            exec.submit(() -> trigger.verifyVertex(vertexTriggers, cvertex, vertex));
         }
     }
 
@@ -272,7 +264,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
         checkArgument(vertex != null, "Provided Vertex is a null object");
         ConnectedVertexImpl cvertex = updateConnectedVertex(vertex.getVertexId().longValue());
         Vertex old = cvertex.getVertex();
-        this.connectedGraphServer.addVertex(this.graph, vertex, old);
+        connectedGraphServer.addVertex(graph, vertex, old);
         cvertex.setVertex(vertex);
         if (old != null) {
             callVertexTrigger(cvertex, old);
@@ -287,19 +279,19 @@ public class ConnectedGraphImpl implements ConnectedGraph {
         if (cvertex != null) {
             cvertex.disconnect();
             vertices.remove(cvertex.getKey());
-            this.connectedGraphServer.deleteVertex(this.graph, cvertex.getVertex());
+            connectedGraphServer.deleteVertex(graph, cvertex.getVertex());
             cvertex.setVertex(null);
             callVertexTrigger(cvertex, null);
         }
     }
 
-    private void callEdgeTrigger(ConnectedEdgeImpl cedge, Edge edge) {
+    private void callEdgeTrigger(final ConnectedEdgeImpl cedge, final Edge edge) {
         List<ConnectedEdgeTrigger> edgeTriggers = cedge.getTriggers();
         if (edgeTriggers == null || edgeTriggers.isEmpty()) {
             return;
         }
         for (ConnectedGraphTrigger trigger : graphTriggers.values()) {
-            this.exec.submit(() -> trigger.verifyEdge(edgeTriggers, cedge, edge));
+            exec.submit(() -> trigger.verifyEdge(edgeTriggers, cedge, edge));
         }
     }
 
@@ -319,7 +311,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
             }
             connectVertices(source, destination, cedge);
         }
-        this.connectedGraphServer.addEdge(this.graph, edge, old);
+        connectedGraphServer.addEdge(graph, edge, old);
         cedge.setEdge(edge);
         callEdgeTrigger(cedge, old);
         return cedge;
@@ -334,7 +326,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
         checkArgument(key != null, "Provided Edge Key is a null object");
         ConnectedEdgeImpl cedge = edges.get(key.getEdgeId().longValue());
         if (cedge != null) {
-            this.connectedGraphServer.deleteEdge(this.graph, cedge.getEdge());
+            connectedGraphServer.deleteEdge(graph, cedge.getEdge());
             cedge.disconnect();
             cedge.setEdge(null);
             callEdgeTrigger(cedge, null);
@@ -347,7 +339,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
         ConnectedVertexImpl cvertex = updateConnectedVertex(prefix.getVertexId().longValue());
         cvertex.addPrefix(prefix);
         prefixes.putIfAbsent(prefix.getPrefix(), prefix);
-        this.connectedGraphServer.addPrefix(this.graph, prefix);
+        connectedGraphServer.addPrefix(graph, prefix);
     }
 
     @Override
@@ -360,18 +352,18 @@ public class ConnectedGraphImpl implements ConnectedGraph {
                 cvertex.removePrefix(prefix);
             }
             prefixes.remove(prefix.getPrefix());
-            this.connectedGraphServer.deletePrefix(this.graph, prefix);
+            connectedGraphServer.deletePrefix(graph, prefix);
         }
     }
 
     @Override
     public void clear() {
         LOG.info("Reset Connected Graph({})", graph.getName());
-        this.vertices.clear();
-        this.edges.clear();
-        this.prefixes.clear();
-        this.connectedGraphServer.clearGraph(this.graph);
-        this.graph = null;
+        vertices.clear();
+        edges.clear();
+        prefixes.clear();
+        connectedGraphServer.clearGraph(graph);
+        graph = null;
     }
 
     @Override
@@ -380,12 +372,12 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public boolean registerTrigger(ConnectedGraphTrigger trigger, TopologyKey key) {
+    public boolean registerTrigger(final ConnectedGraphTrigger trigger, final TopologyKey key) {
         return graphTriggers.putIfAbsent(key, trigger) == null;
     }
 
     @Override
-    public boolean unRegisterTrigger(ConnectedGraphTrigger trigger, TopologyKey key) {
+    public boolean unRegisterTrigger(final ConnectedGraphTrigger trigger, final TopologyKey key) {
         return graphTriggers.remove(key, trigger);
     }
 
@@ -396,6 +388,6 @@ public class ConnectedGraphImpl implements ConnectedGraph {
      */
     @Override
     public String toString() {
-        return this.graph.getName();
+        return graph.getName();
     }
 }
index 56772888d39b7a0d6b7dc46c8a5606ab522a3b57..3341362be2c5fcf8c87feaadb79994332e356a5c 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index ef31a4fcc0a0fd662d409337dcf35922384c163c..5f67f298cb7dd10533bbfef08b3a52f978ccd444 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>bundle-parent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
@@ -47,7 +47,7 @@
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
                 <artifactId>controller-artifacts</artifactId>
-                <version>7.0.6</version>
+                <version>8.0.0-SNAPSHOT</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -55,7 +55,7 @@
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>yangtools-artifacts</artifactId>
-                <version>10.0.6</version>
+                <version>11.0.0</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -63,7 +63,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>11.0.9</version>
+                <version>12.0.0-SNAPSHOT</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
@@ -71,7 +71,7 @@
             <dependency>
                 <groupId>org.opendaylight.netconf</groupId>
                 <artifactId>netconf-artifacts</artifactId>
-                <version>5.0.6</version>
+                <version>6.0.0-SNAPSHOT</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
@@ -79,7 +79,7 @@
             <dependency>
                 <groupId>org.opendaylight.infrautils</groupId>
                 <artifactId>infrautils-artifacts</artifactId>
-                <version>5.0.4</version>
+                <version>6.0.1</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 3974a4d1b58303b71bbf6d016c6528860ddb0d59..283019cd63af838be711d3f0828d463e3e837fe2 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index e0571ef207a3814d62d7bb0b9aaf262f200bd7c6..5b38aaf14149a9ef4d74d562a1c1541098c733c8 100644 (file)
             <artifactId>testtool-util</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>com.github.spotbugs</groupId>
+            <artifactId>spotbugs-annotations</artifactId>
+            <optional>true</optional>
+        </dependency>
         <dependency>
             <groupId>io.netty</groupId>
             <artifactId>netty-buffer</artifactId>
index 2cc6fe4043c0a0d2e488af288b5b6615a8ee8170..852bc26663ec1de4f1f6fbd9619025b40002f02b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 4a4db254ce526d581bc1c7def34453f6d8b52b84..2b1f9a6e9ffdf43bd730c0faba3b780f553f1d63 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 6595518e4f0e347a5d96f03b45db55c44e8dc9ca..16afd4467aa725830fb53066a36a2f5528e2ca1a 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index c5efc02e0bd1733b6acc932d92276ebeef35723e..bf0e7f2c45af7d02608c0f0cb41d636914b629cb 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>topology-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.yangtools</groupId>
+            <artifactId>yang-common</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-common-api</artifactId>
index 5246afad4baa7c090e15927a1c9285039c313cd0..d570b7635e2ec4439ecef329041e71fcb1716d94 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-buffer</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>yang-binding</artifactId>
         </dependency>
-        <dependency>
-            <groupId>io.netty</groupId>
-            <artifactId>netty-buffer</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
         <dependency>
             <groupId>com.guicedee.services</groupId>
             <artifactId>javax.inject</artifactId>
index d12e737ff32e83a0eab16f1670ba233df6225d15..5422458415f31dbbbc8f6eadb100667b07440348 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index cdce51e91b0a6e97c7c92fb6df7b2ee5f98b9d52..b86e9095dc3d071dc9d255e4810eec3d4731e059 100644 (file)
@@ -158,7 +158,7 @@ public abstract class AbstractTopologySessionListener implements TopologySession
 
                 // Our augmentation in the topology node
                 final PathComputationClientBuilder pccBuilder = new PathComputationClientBuilder()
-                    .setIpAddress(IetfInetUtil.INSTANCE.ipAddressNoZoneFor(peerAddress));
+                    .setIpAddress(IetfInetUtil.ipAddressNoZoneFor(peerAddress));
 
                 // Let subclass fill the details
                 updateStatefulCapabilities(pccBuilder, peerAddress, psession.getRemoteTlvs());
index 7cff6b5c877c1cd08150285d0e003841ab2d744a..83e09177d9c918b8aca365c9883e2108cbce2605 100644 (file)
@@ -200,7 +200,7 @@ final class PCEPTopologyConfiguration implements Immutable {
 
     private static @NonNull InetSocketAddress getInetSocketAddress(final IpAddressNoZone address,
             final PortNumber port) {
-        return new InetSocketAddress(IetfInetUtil.INSTANCE.inetAddressForNoZone(requireNonNull(address)),
+        return new InetSocketAddress(IetfInetUtil.inetAddressForNoZone(requireNonNull(address)),
             port.getValue().toJava());
     }
 }
index 3850de6869d55c459dfdee289e8e68e7ab79dd0d..df15d64d647a7abbde3ff5ca977da154190b73c5 100644 (file)
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
 
         <!-- Testing dependencies -->
         <dependency>
index 6948303588ef21e6bbda9405bcc0f54d60f681b6..64e108eb340952cf7af0ca2d52dbacd917d65230 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
diff --git a/pom.xml b/pom.xml
index 914a4eaa2616faa74d4afbedbf55513b9ff7c665..cd33250c8a6e5b30be7388f155cca891aaa0e758 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 6187b662767ab8459e1645a308175cb63d566600..79696a4eaf70e868920dba49e09683e8d18821ac 100644 (file)
     <name>${project.artifactId}</name>
 
     <dependencies>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
     </dependencies>
 
     <scm>
index cd09213f073af413a62741413a8455ada7f8352f..c3fa7d31fd54db8140b8fd465d7a3b8cae6007ac 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 089e07c4344df6cce012bd1870b9c5b25aec1d36..56402450d574d7d77ea1d96ef9949b78e62bce83 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 0af7c4869257c6607bca10981d681095ae9c7290..40c9ae18e85551c2860f2f72cdd03e784371c6f7 100644 (file)
             <artifactId>programming-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.spotbugs</groupId>
+            <artifactId>spotbugs-annotations</artifactId>
+            <optional>true</optional>
+        </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>concepts</artifactId>
index ed8350f63f393f6426840c043a4d7ddbb1683f0a..b50ef2e837a9e77ce32ef23ade8ee4f0bdc31aa1 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
     </dependencies>
 
     <scm>
index 637a1297902ba564f36cee9eb581110661197cca..c0d3882acc5e6ac24b9ed11ad5c3e104612c6ff2 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index d972a14d9b6abb1cab119519c58166464a12a9b2..b87946278080ba63fe16e421c22c4e0f9351943a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 0b45fd0116f8aff34cc0671dffb0da463cdabe6d..c8f9b33816a9d261354559f875e54de897fa6767 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 0871fef3f2b40cb847fa61f8caae6b9c755372c0..93a3e3a8aa6f143f6f0dff0956651222ed9ae381 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index a6088c57d039dc65513aac2304228d4b6a8de30e..94cb869c75f1ea1c2a5b68b87a1d4ba479ff8061 100644 (file)
             <groupId>${project.groupId}</groupId>
             <artifactId>concepts</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.eclipse.jdt</groupId>
+            <artifactId>org.eclipse.jdt.annotation</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
     </dependencies>
 
     <build>
@@ -56,7 +60,7 @@
             <plugin>
                 <artifactId>maven-dependency-plugin</artifactId>
                 <configuration>
-                    <ignoredUnusedDeclaredDependencies>
+                    <ignoredUnusedDeclaredDependencies combine.children="append">
                         <ignoredUnusedDeclaredDependency>org.opendaylight.mdsal.model:yang-ext</ignoredUnusedDeclaredDependency>
                     </ignoredUnusedDeclaredDependencies>
                 </configuration>
index 876474ec8a1312489c3da1b18c0f6c499df48b4a..e2b8800ab30c51905f0f3c801218477cd6e941c9 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 7d7222fe15ac68c884c85aad61c2f110cfe1e5a4..0d5c5dda97a374ca3a8dec708086be3bec8621ef 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>12.0.5</version>
+        <version>13.0.3</version>
         <relativePath/>
     </parent>
 
index 30aeb186a07a640613d1453a0195b83fb31579df..362e4e96d5fd6c8895092b43df1b5a414509cd77 100644 (file)
@@ -16,9 +16,7 @@ import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
-import java.util.Map.Entry;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
@@ -47,7 +45,7 @@ public final class Ipv4Util {
      * @return Ipv4AddressNoZone
      */
     public static Ipv4AddressNoZone addressForByteBuf(final ByteBuf buffer) {
-        return IetfInetUtil.INSTANCE.ipv4AddressFor(ByteArray.readBytes(buffer, IP4_LENGTH));
+        return IetfInetUtil.ipv4AddressFor(ByteArray.readBytes(buffer, IP4_LENGTH));
     }
 
     /**
@@ -67,14 +65,12 @@ public final class Ipv4Util {
      * @return byte array
      */
     public static byte[] bytesForAddress(final Ipv4AddressNoZone address) {
-        return IetfInetUtil.INSTANCE.ipv4AddressNoZoneBytes(address);
+        return IetfInetUtil.ipv4AddressNoZoneBytes(address);
     }
 
     public static int prefixBitsToBytes(final int bits) {
-        if (bits % Byte.SIZE != 0) {
-            return bits / Byte.SIZE + 1;
-        }
-        return bits / Byte.SIZE;
+        final int bytes = bits / Byte.SIZE;
+        return bits % Byte.SIZE == 0 ? bytes : bytes + 1;
     }
 
     /**
@@ -91,7 +87,7 @@ public final class Ipv4Util {
      * @return byte array with prefix length at the end
      */
     public static byte[] bytesForPrefix(final Ipv4Prefix prefix) {
-        return IetfInetUtil.INSTANCE.ipv4PrefixToBytes(prefix);
+        return IetfInetUtil.ipv4PrefixToBytes(prefix);
     }
 
     /**
@@ -103,15 +99,8 @@ public final class Ipv4Util {
      */
     public static Ipv4Prefix prefixForBytes(final byte[] bytes, final int length) {
         checkArgument(length <= bytes.length * Byte.SIZE);
-
-        final byte[] tmp;
-        if (bytes.length != IP4_LENGTH) {
-            tmp = Arrays.copyOfRange(bytes, 0, IP4_LENGTH);
-        } else {
-            tmp = bytes;
-        }
-
-        return IetfInetUtil.INSTANCE.ipv4PrefixFor(tmp, length);
+        return IetfInetUtil.ipv4PrefixFor(
+            bytes.length == IP4_LENGTH ? bytes : Arrays.copyOfRange(bytes, 0, IP4_LENGTH), length);
     }
 
     /**
@@ -133,13 +122,13 @@ public final class Ipv4Util {
      * @return Ipv4Prefix object
      */
     public static Ipv4Prefix prefixForByteBuf(final ByteBuf buf, final int prefixLength) {
-        final int size = prefixLength / Byte.SIZE + (prefixLength % Byte.SIZE == 0 ? 0 : 1);
+        final int size = prefixBitsToBytes(prefixLength);
         final int readable = buf.readableBytes();
         checkArgument(size <= readable, "Illegal length of IP prefix: %s/%s", size, readable);
 
-        final byte[] bytes = new byte[IP4_LENGTH];
+        final var bytes = new byte[IP4_LENGTH];
         buf.readBytes(bytes, 0, size);
-        return IetfInetUtil.INSTANCE.ipv4PrefixFor(bytes, prefixLength);
+        return IetfInetUtil.ipv4PrefixFor(bytes, prefixLength);
     }
 
     /**
@@ -150,9 +139,9 @@ public final class Ipv4Util {
      */
     public static List<Ipv4Prefix> prefixListForBytes(final byte[] bytes) {
         if (bytes.length == 0) {
-            return Collections.emptyList();
+            return List.of();
         }
-        final List<Ipv4Prefix> list = new ArrayList<>();
+        final var list = new ArrayList<Ipv4Prefix>();
         int byteOffset = 0;
         while (byteOffset < bytes.length) {
             final int bitLength = Byte.toUnsignedInt(bytes[byteOffset]);
@@ -163,7 +152,7 @@ public final class Ipv4Util {
                 continue;
             }
 
-            list.add(IetfInetUtil.INSTANCE.ipv4PrefixForShort(bytes, byteOffset, bitLength));
+            list.add(IetfInetUtil.ipv4PrefixForShort(bytes, byteOffset, bitLength));
             byteOffset += bitLength / Byte.SIZE;
             if (bitLength % Byte.SIZE != 0) {
                 byteOffset++;
@@ -191,7 +180,7 @@ public final class Ipv4Util {
      * @return IpAddressNoZone
      */
     public static IpAddressNoZone getIpAddress(final InetAddress inetAddress) {
-        return IetfInetUtil.INSTANCE.ipAddressNoZoneFor(inetAddress);
+        return IetfInetUtil.ipAddressNoZoneFor(inetAddress);
     }
 
     /**
@@ -227,9 +216,8 @@ public final class Ipv4Util {
     }
 
     public static Ipv4Prefix incrementIpv4Prefix(final Ipv4Prefix ipv4Prefix) {
-        final Entry<Ipv4AddressNoZone, Integer> splitIpv4Prefix = IetfInetUtil.INSTANCE.splitIpv4Prefix(ipv4Prefix);
-        return IetfInetUtil.INSTANCE.ipv4PrefixFor(incrementIpv4Address(splitIpv4Prefix.getKey()),
-                splitIpv4Prefix.getValue());
+        final var splitIpv4Prefix = IetfInetUtil.splitIpv4Prefix(ipv4Prefix);
+        return IetfInetUtil.ipv4PrefixFor(incrementIpv4Address(splitIpv4Prefix.getKey()), splitIpv4Prefix.getValue());
     }
 
     /**
@@ -239,10 +227,8 @@ public final class Ipv4Util {
      * @return String value of Ipv4Address or Ipv6Address
      */
     public static String toStringIP(final IpAddressNoZone ipAddress) {
-        if (ipAddress.getIpv4AddressNoZone() != null) {
-            return ipAddress.getIpv4AddressNoZone().getValue();
-        }
-        return ipAddress.getIpv6AddressNoZone().getValue();
+        final var ipv4 = ipAddress.getIpv4AddressNoZone();
+        return ipv4 != null ? ipv4.getValue() : ipAddress.getIpv6AddressNoZone().getValue();
     }
 
     /**
@@ -256,7 +242,7 @@ public final class Ipv4Util {
      */
     public static void writeIpv4Address(final Ipv4AddressNoZone ipv4Address, final ByteBuf output) {
         if (ipv4Address != null) {
-            output.writeBytes(IetfInetUtil.INSTANCE.ipv4AddressNoZoneBytes(ipv4Address));
+            output.writeBytes(IetfInetUtil.ipv4AddressNoZoneBytes(ipv4Address));
         } else {
             output.writeInt(0);
         }
@@ -281,7 +267,7 @@ public final class Ipv4Util {
     }
 
     public static void writeMinimalPrefix(final Ipv4Prefix ipv4Prefix, final ByteBuf output) {
-        final byte[] bytes = IetfInetUtil.INSTANCE.ipv4PrefixToBytes(ipv4Prefix);
+        final var bytes = IetfInetUtil.ipv4PrefixToBytes(ipv4Prefix);
         writeMinimalPrefix(output, bytes, bytes[IP4_LENGTH]);
     }
 
index 3da2cab4e078f9ad516459f4b7ec3e2038189673..1130718af4cd8d40f1a1c30430064798202229b3 100644 (file)
@@ -14,7 +14,6 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
@@ -52,7 +51,7 @@ public final class Ipv6Util {
      * @return Ipv6Address
      */
     public static Ipv6AddressNoZone addressForByteBuf(final ByteBuf buffer) {
-        return IetfInetUtil.INSTANCE.ipv6AddressFor(ByteArray.readBytes(buffer, IPV6_LENGTH));
+        return IetfInetUtil.ipv6AddressFor(ByteArray.readBytes(buffer, IPV6_LENGTH));
     }
 
     /**
@@ -71,7 +70,7 @@ public final class Ipv6Util {
      * @return byte array
      */
     public static byte[] bytesForAddress(final Ipv6AddressNoZone address) {
-        return IetfInetUtil.INSTANCE.ipv6AddressNoZoneBytes(address);
+        return IetfInetUtil.ipv6AddressNoZoneBytes(address);
     }
 
     /**
@@ -81,7 +80,7 @@ public final class Ipv6Util {
      * @return byte array with prefix length at the end
      */
     public static byte[] bytesForPrefix(final Ipv6Prefix prefix) {
-        return IetfInetUtil.INSTANCE.ipv6PrefixToBytes(prefix);
+        return IetfInetUtil.ipv6PrefixToBytes(prefix);
     }
 
     /**
@@ -93,15 +92,8 @@ public final class Ipv6Util {
      */
     public static Ipv6Prefix prefixForBytes(final byte[] bytes, final int length) {
         checkArgument(length <= bytes.length * Byte.SIZE);
-
-        final byte[] tmp;
-        if (bytes.length != IPV6_LENGTH) {
-            tmp = Arrays.copyOfRange(bytes, 0, IPV6_LENGTH);
-        } else {
-            tmp = bytes;
-        }
-
-        return IetfInetUtil.INSTANCE.ipv6PrefixFor(tmp, length);
+        return IetfInetUtil.ipv6PrefixFor(
+            bytes.length == IPV6_LENGTH ? bytes : Arrays.copyOfRange(bytes, 0, IPV6_LENGTH), length);
     }
 
     /**
@@ -113,13 +105,13 @@ public final class Ipv6Util {
      */
     public static Ipv6Prefix prefixForByteBuf(final ByteBuf buf) {
         final int prefixLength = buf.readUnsignedByte();
-        final int size = prefixLength / Byte.SIZE + (prefixLength % Byte.SIZE == 0 ? 0 : 1);
+        final int size = Ipv4Util.prefixBitsToBytes(prefixLength);
         final int readable = buf.readableBytes();
         checkArgument(size <= readable, "Illegal length of IP prefix: %s/%s", size, readable);
 
         final byte[] bytes = new byte[IPV6_LENGTH];
         buf.readBytes(bytes, 0, size);
-        return IetfInetUtil.INSTANCE.ipv6PrefixFor(bytes, prefixLength);
+        return IetfInetUtil.ipv6PrefixFor(bytes, prefixLength);
     }
 
     /**
@@ -130,9 +122,9 @@ public final class Ipv6Util {
      */
     public static List<Ipv6Prefix> prefixListForBytes(final byte[] bytes) {
         if (bytes.length == 0) {
-            return Collections.emptyList();
+            return List.of();
         }
-        final List<Ipv6Prefix> list = new ArrayList<>();
+        final var list = new ArrayList<Ipv6Prefix>();
         int byteOffset = 0;
         while (byteOffset < bytes.length) {
             final int bitLength = Byte.toUnsignedInt(bytes[byteOffset]);
@@ -142,7 +134,7 @@ public final class Ipv6Util {
                 list.add(EMPTY_PREFIX);
                 continue;
             }
-            list.add(IetfInetUtil.INSTANCE.ipv6PrefixForShort(bytes, byteOffset, bitLength));
+            list.add(IetfInetUtil.ipv6PrefixForShort(bytes, byteOffset, bitLength));
             byteOffset += bitLength / Byte.SIZE;
             if (bitLength % Byte.SIZE != 0) {
                 byteOffset++;
@@ -162,7 +154,7 @@ public final class Ipv6Util {
      */
     public static void writeIpv6Address(final Ipv6AddressNoZone ipv6Address, final ByteBuf output) {
         if (ipv6Address != null) {
-            output.writeBytes(IetfInetUtil.INSTANCE.ipv6AddressNoZoneBytes(ipv6Address));
+            output.writeBytes(IetfInetUtil.ipv6AddressNoZoneBytes(ipv6Address));
         } else {
             output.writeZero(IPV6_LENGTH);
         }
@@ -187,7 +179,7 @@ public final class Ipv6Util {
     }
 
     public static void writeMinimalPrefix(final Ipv6Prefix ipv6Prefix, final ByteBuf output) {
-        final byte[] bytes = IetfInetUtil.INSTANCE.ipv6PrefixToBytes(ipv6Prefix);
+        final var bytes = IetfInetUtil.ipv6PrefixToBytes(ipv6Prefix);
         Ipv4Util.writeMinimalPrefix(output, bytes, bytes[IPV6_LENGTH]);
     }
 }