Update MRI projects for Aluminium 29/89329/20
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 23 Apr 2020 08:33:18 +0000 (10:33 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Tue, 12 May 2020 12:02:00 +0000 (14:02 +0200)
This bumps versions to the following:
- odlparent-7.0.1
- yangtools-5.0.1
- mdsal-6.0.0
- controller-2.0.0

Change-Id: I019a7cfcca9b986ee4562d787c823604a3d99ec4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
224 files changed:
algo/algo-artifacts/pom.xml
algo/pom.xml
artifacts/pom.xml
bgp/benchmark-app/pom.xml
bgp/bgp-artifacts/pom.xml
bgp/cli/pom.xml
bgp/cli/src/main/java/org/opendaylight/protocol/bgp/cli/utils/BGPOperationalStateUtils.java
bgp/cli/src/main/java/org/opendaylight/protocol/bgp/cli/utils/GlobalStateCliUtils.java
bgp/cli/src/main/java/org/opendaylight/protocol/bgp/cli/utils/NeighborStateCliUtils.java
bgp/cli/src/main/java/org/opendaylight/protocol/bgp/cli/utils/PeerGroupStateCliUtils.java
bgp/config-example/pom.xml
bgp/extensions/evpn/src/main/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupport.java
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/EvpnRibSupportTest.java
bgp/extensions/evpn/src/test/java/org/opendaylight/protocol/bgp/evpn/impl/RIBActivatorTest.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupport.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupport.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv4/FlowspecL3vpnIpv4RIBSupport.java
bgp/extensions/flowspec/src/main/java/org/opendaylight/protocol/bgp/flowspec/l3vpn/ipv6/FlowspecL3vpnIpv6RIBSupport.java
bgp/extensions/flowspec/src/test/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv4RIBSupportTest.java
bgp/extensions/flowspec/src/test/java/org/opendaylight/protocol/bgp/flowspec/FlowspecIpv6RIBSupportTest.java
bgp/extensions/flowspec/src/test/java/org/opendaylight/protocol/bgp/flowspec/FlowspecL3vpnIpv4RIBSupportTest.java
bgp/extensions/flowspec/src/test/java/org/opendaylight/protocol/bgp/flowspec/FlowspecL3vpnIpv6RIBSupportTest.java
bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupport.java
bgp/extensions/inet/src/main/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupport.java
bgp/extensions/inet/src/test/java/org/opendaylight/protocol/bgp/inet/IPv4RIBSupportTest.java
bgp/extensions/inet/src/test/java/org/opendaylight/protocol/bgp/inet/IPv6RIBSupportTest.java
bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/L3VpnMcastIpv4RIBSupport.java
bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/mcast/L3VpnMcastIpv6RIBSupport.java
bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupport.java
bgp/extensions/l3vpn/src/main/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupport.java
bgp/extensions/l3vpn/src/test/java/org/opendaylight/protocol/bgp/l3vpn/RIBActivatorTest.java
bgp/extensions/l3vpn/src/test/java/org/opendaylight/protocol/bgp/l3vpn/mcast/L3vpnMcastIpv4RIBSupportTest.java
bgp/extensions/l3vpn/src/test/java/org/opendaylight/protocol/bgp/l3vpn/mcast/L3vpnMcastIpv6RIBSupportTest.java
bgp/extensions/l3vpn/src/test/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv4/VpnIpv4RIBSupportTest.java
bgp/extensions/l3vpn/src/test/java/org/opendaylight/protocol/bgp/l3vpn/unicast/ipv6/VpnIpv6RIBSupportTest.java
bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/LabeledUnicastIpv4RIBSupport.java
bgp/extensions/labeled-unicast/src/main/java/org/opendaylight/protocol/bgp/labeled/unicast/LabeledUnicastIpv6RIBSupport.java
bgp/extensions/labeled-unicast/src/test/java/org/opendaylight/protocol/bgp/labeled/unicast/LabeledUnicastIpv4RIBSupportTest.java
bgp/extensions/labeled-unicast/src/test/java/org/opendaylight/protocol/bgp/labeled/unicast/LabeledUnicastIpv6RIBSupportTest.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/LinkstateRIBSupport.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/impl/attribute/LinkAttributesParser.java
bgp/extensions/linkstate/src/main/java/org/opendaylight/protocol/bgp/linkstate/spi/pojo/SimpleBindingSubTlvsRegistry.java
bgp/extensions/linkstate/src/test/java/org/opendaylight/protocol/bgp/linkstate/ActivatorTest.java
bgp/extensions/linkstate/src/test/java/org/opendaylight/protocol/bgp/linkstate/LinkstateRIBSupportTest.java
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv4RIBSupport.java
bgp/extensions/mvpn/src/main/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv6RIBSupport.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv4RIBSupportTest.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/MvpnIpv6RIBSupportTest.java
bgp/extensions/mvpn/src/test/java/org/opendaylight/protocol/bgp/mvpn/impl/RIBActivatorTest.java
bgp/extensions/parent/pom.xml
bgp/extensions/pom.xml
bgp/extensions/route-target/src/main/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupport.java
bgp/extensions/route-target/src/test/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/RouteTargetConstrainRIBSupportTest.java
bgp/extensions/route-target/src/test/java/org/opendaylight/protocol/bgp/route/targetcontrain/impl/activators/RIBActivatorTest.java
bgp/openconfig-rp-spi/pom.xml
bgp/openconfig-rp-statement/pom.xml
bgp/openconfig-rp-statement/src/main/java/org/opendaylight/protocol/bgp/openconfig/routing/policy/statement/actions/NonTransitiveAttributesFilterHandler.java
bgp/openconfig-rp-statement/src/main/java/org/opendaylight/protocol/bgp/openconfig/routing/policy/statement/conditions/MatchBgpNeighborSetHandler.java
bgp/openconfig-state/pom.xml
bgp/openconfig-state/src/test/java/org/opendaylight/protocol/bgp/state/StateProviderImplTest.java
bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/AsNumberUtil.java
bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/BgpExtendedMessageUtil.java
bgp/parser-api/src/main/java/org/opendaylight/protocol/bgp/parser/GracefulRestartUtil.java
bgp/parser-api/src/test/java/org/opendaylight/protocol/bgp/parser/APITest.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/BGPOpenMessageParser.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/GracefulCapabilityHandler.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/open/LlGracefulCapabilityHandler.java
bgp/parser-impl/src/main/java/org/opendaylight/protocol/bgp/parser/impl/message/update/UnrecognizedAttributesSerializer.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ComplementaryTest.java
bgp/parser-impl/src/test/java/org/opendaylight/protocol/bgp/parser/impl/ParserTest.java
bgp/parser-spi/src/test/java/org/opendaylight/protocol/bgp/parser/spi/pojo/UnrecognizedAttributesTest.java
bgp/pom.xml
bgp/rib-impl/pom.xml
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPPeer.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/BgpPeerUtil.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsRegistryImpl.java [deleted file]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ConstantCodecsRegistry.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/OSGiCodecsRegistry.java [new file with mode: 0644]
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/RIBImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImpl.java
bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeer.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/main/java/org/opendaylight/protocol/bgp/rib/impl/state/BGPSessionStateImpl.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AbstractAddPathTest.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/AddPathAllPathsTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AddPathBasePathsTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/AddPathNPathsTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BGPSessionImplTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/BgpPeerUtilTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/GracefulRestartTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/ParserToSalTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/SynchronizationAndExceptionTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpDeployerImplTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/BgpPeerTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/GracefulRestartUtilTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/OpenConfigMappingUtilTest.java
bgp/rib-impl/src/test/java/org/opendaylight/protocol/bgp/rib/impl/config/RibImplTest.java
bgp/rib-spi/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/RIBExtensionConsumerContext.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupport.java
bgp/rib-spi/src/main/java/org/opendaylight/protocol/bgp/rib/spi/SimpleRIBExtensionProviderContext.java
bgp/rib-spi/src/main/resources/OSGI-INF/blueprint/bgp-rib-spi.xml
bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/AbstractRIBActivatorTest.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/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/RIBSupportTestImp.java
bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/SimpleRIBExtensionProviderContextActivatorTest.java
bgp/rib-spi/src/test/java/org/opendaylight/protocol/bgp/rib/spi/SimpleRIBExtensionTest.java
bgp/topology-provider/pom.xml
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/AbstractReachabilityTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateGraphBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilder.java
bgp/topology-provider/src/main/java/org/opendaylight/bgpcep/bgp/topology/provider/ProtocolUtil.java
bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv4ReachabilityTopologyBuilderTest.java
bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/Ipv6ReachabilityTopologyBuilderTest.java
bgp/topology-provider/src/test/java/org/opendaylight/bgpcep/bgp/topology/provider/LinkstateTopologyBuilderTest.java
binding-parent/pom.xml
bmp/bmp-artifacts/pom.xml
bmp/bmp-config-example/pom.xml
bmp/bmp-impl/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/KeyConstructorUtil.java
bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/config/BmpDeployerDependencies.java
bmp/bmp-impl/src/main/java/org/opendaylight/protocol/bmp/impl/config/BmpDeployerImpl.java
bmp/bmp-impl/src/main/resources/OSGI-INF/blueprint/bgp-bmp.xml
bmp/bmp-impl/src/test/java/org/opendaylight/protocol/bmp/impl/app/BmpMonitorImplTest.java
bmp/pom.xml
config-loader/bmp-monitors-config-loader/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/ConfigLoaderImpl.java
config-loader/config-loader-impl/src/test/java/org/opendaylight/bgpcep/config/loader/impl/AbstractConfigLoader.java
config-loader/config-loader-spi/pom.xml
config-loader/pom.xml
config-loader/protocols-config-loader/pom.xml
config-loader/routing-policy-config-loader/pom.xml
config-loader/topology-config-loader/pom.xml
data-change-counter/pom.xml
distribution-karaf/pom.xml
feature-repo-parent/pom.xml
features/algo/pom.xml
features/bgp/odl-bgpcep-bgp-dependencies/src/main/feature/feature.xml
features/bgp/odl-bgpcep-bgp-rib-impl/pom.xml
features/bgp/odl-bgpcep-bgp-rib-impl/src/main/feature/feature.xml
features/bgp/pom.xml
features/bgpcep-extras/odl-bgpcep-extras-dependencies/src/main/feature/feature.xml
features/bgpcep-extras/pom.xml
features/bmp/pom.xml
features/concepts/pom.xml
features/config-loader/pom.xml
features/graph/pom.xml
features/pcep/odl-bgpcep-pcep-impl/pom.xml
features/pcep/odl-bgpcep-pcep-impl/src/main/feature/feature.xml [new file with mode: 0644]
features/pcep/odl-bgpcep-pcep-tunnel-provider/src/main/feature/feature.xml
features/pcep/odl-bgpcep-programming-impl/pom.xml
features/pcep/odl-bgpcep-programming-impl/src/main/feature/feature.xml [new file with mode: 0644]
features/pcep/pom.xml
features/pom.xml
features/rsvp/pom.xml
features/topology/pom.xml
graph/graph-api/src/main/java/org/opendaylight/graph/ConnectedGraph.java
graph/graph-artifacts/pom.xml
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedGraphImpl.java
graph/graph-impl/src/main/java/org/opendaylight/graph/impl/ConnectedGraphServer.java
graph/pom.xml
parent/pom.xml
pcep/auto-bandwidth-extension/pom.xml
pcep/base-parser/src/main/java/org/opendaylight/protocol/pcep/parser/message/PCEPRequestMessageParser.java
pcep/config-example/pom.xml
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPDispatcherImplTest.java
pcep/impl/src/test/java/org/opendaylight/protocol/pcep/impl/PCEPObjectParserTest.java
pcep/pcep-artifacts/pom.xml
pcep/pom.xml
pcep/segment-routing/pom.xml
pcep/segment-routing/src/main/java/org/opendaylight/protocol/pcep/segment/routing/PCEPSegmentRoutingCapability.java
pcep/segment-routing/src/main/java/org/opendaylight/protocol/pcep/segment/routing/PcepOpenObjectWithSpcTlvParser.java
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing/PCEPSegmentRoutingCapabilityTest.java
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing/SrObjectParserTest.java
pcep/segment-routing/src/test/java/org/opendaylight/protocol/pcep/segment/routing/TopologyProviderTest.java
pcep/server/pom.xml
pcep/topology/cli/pom.xml
pcep/topology/pom.xml
pcep/topology/topology-provider/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/Stateful07TopologySessionListener.java
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/config/PCEPTopologyProviderUtil.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/AbstractPCEPSessionTest.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/IncrementalSynchronizationProcedureTest.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPTriggeredReSynchronizationProcedureTest.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/PCETriggeredInitialSyncProcedureTest.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/StateSynchronizationAvoidanceProcedureTest.java
pcep/topology/topology-provider/src/test/java/org/opendaylight/bgpcep/pcep/topology/provider/Stateful07TopologySessionListenerTest.java
pcep/topology/topology-stats/pom.xml
pcep/topology/topology-stats/src/main/java/org/opendaylight/bgpcep/pcep/topology/stats/rpc/TopologyStatsRpcServiceImpl.java
pcep/topology/topology-stats/src/test/java/org/opendaylight/bgpcep/pcep/topology/stats/rpc/TopologyStatsRpcServiceImplTest.java
pcep/tunnel/pom.xml
pcep/tunnel/tunnel-provider/pom.xml
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/CreateTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/DestroyTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/NodeChangedListener.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/PCEPTunnelTopologyProvider.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunelProgrammingUtil.java
pcep/tunnel/tunnel-provider/src/main/java/org/opendaylight/bgpcep/pcep/tunnel/provider/UpdateTunnelInstructionExecutor.java
pcep/tunnel/tunnel-provider/src/test/java/org/opendaylight/bgpcep/pcep/tunnel/provider/NodeChangedListenerTest.java
pcep/tunnel/tunnel-provider/src/test/java/org/opendaylight/bgpcep/pcep/tunnel/provider/TunnelProgrammingTest.java
pom.xml
programming/impl/pom.xml
programming/pom.xml
programming/programming-artifacts/pom.xml
rsvp/pom.xml
rsvp/rsvp-artifacts/pom.xml
rsvp/spi/src/main/java/org/opendaylight/protocol/rsvp/parser/spi/subobjects/EROSubobjectListParser.java
single-feature-parent/pom.xml
testtool-parent/pom.xml
testtool-util/pom.xml
topology/pom.xml
topology/topology-artifacts/pom.xml

index 51792aa96bfdb259730984ad637ef553b7805057..5baa399ec2aacb01b815f365165f898bcc22e40a 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 1b09ec9657766854fa1e41bb901f84a59cedffa6..5f8585fe5bed60c56b201b98a9b012ef40bee107 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index d512c6fb9e5eb10e3dbd2066c1f0ec0bb990e55d..f7533e8d22d00801527865d54e8121b41cddb10b 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
       <groupId>org.opendaylight.odlparent</groupId>
       <artifactId>odlparent-lite</artifactId>
-      <version>6.0.4</version>
+      <version>7.0.1</version>
       <relativePath/>
     </parent>
 
index 2719bfc56ab63570b3a7e24ca81938ea817db7e6..12ae3e94607c0a51a602423466e35be697cd50b3 100644 (file)
             <artifactId>testtool-util</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 9609eb6df36a9550c3828fd88aea03eb7eb7fb4f..275868770954f122c14619b9fc3366aa9308729d 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 6e3aa923ae3155775b9a5f842526cc3a4ddda47e..fe9e9b7a2297e8c9a6619619b09c287c3b97d832 100644 (file)
             <artifactId>guava</artifactId>
         </dependency>
         <!--Test dependencies-->
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 3007201c4e70a39637446e5a26ec48a95ad5f1e0..bc66cfe7935a4e4a018eafebf5c15ff72fb78467 100644 (file)
@@ -66,12 +66,12 @@ public final class BGPOperationalStateUtils {
             displayRibOperationalState(ribId, globalBgp.getGlobal(), stream);
         } else {
             if (neighbor != null) {
-                globalBgp.getNeighbors().getNeighbor().stream()
+                globalBgp.getNeighbors().nonnullNeighbor().values().stream()
                         .filter(neig -> toString(neig.key().getNeighborAddress()).matches(neighbor))
                         .findFirst()
                         .ifPresent(neighbor1 -> displayNeighborOperationalState(neighbor, neighbor1, stream));
             } else {
-                displayPeerOperationalState(globalBgp.getPeerGroups().getPeerGroup(), stream);
+                displayPeerOperationalState(globalBgp.getPeerGroups().nonnullPeerGroup().values(), stream);
             }
         }
     }
index f2c9cffab7b5aef94f03dfe9c1addc763df0eefc..cf99bcea846cb1c76b1874791a19f0782a15bbe5 100644 (file)
@@ -36,7 +36,7 @@ final class GlobalStateCliUtils {
         table.addRow().addContent("As", globalState.getAs());
         table.addRow().addContent("Total Paths", globalState.getTotalPaths());
         table.addRow().addContent("Total Prefixes", globalState.getTotalPrefixes());
-        global.getAfiSafis().getAfiSafi().forEach(afiSafi -> displayAfiSafi(afiSafi, table));
+        global.getAfiSafis().nonnullAfiSafi().values().forEach(afiSafi -> displayAfiSafi(afiSafi, table));
         table.print(stream);
     }
 
index a07f3e152e8df2908e46b431e9ca3da6531afb39..1d9e8d34ddf9b079b27a84869eab284f14595b6a 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.protocol.bgp.cli.utils;
 
 import java.io.PrintStream;
+import java.util.Collection;
 import java.util.List;
 import org.apache.karaf.shell.support.table.ShellTable;
 import org.eclipse.jdt.annotation.NonNull;
@@ -56,7 +57,7 @@ final class NeighborStateCliUtils {
         printTimerState(neighbor.getTimers(), table);
         printTransportState(neighbor.getTransport(), table);
         printMessagesState(neighborState, table);
-        printAfiSafisState(neighbor.getAfiSafis().getAfiSafi(), table);
+        printAfiSafisState(neighbor.getAfiSafis().nonnullAfiSafi().values(), table);
 
         table.print(stream);
     }
@@ -76,7 +77,7 @@ final class NeighborStateCliUtils {
         table.addRow().addContent("======================", "");
     }
 
-    private static void printAfiSafisState(final List<AfiSafi> afiSafis, final ShellTable table) {
+    private static void printAfiSafisState(final Collection<AfiSafi> afiSafis, final ShellTable table) {
         afiSafis.forEach(afiSafi -> printAfiSafiState(afiSafi, table));
 
     }
index e411c3bf6dcb01b55dd37f600199499f33ea0250..63ce5dd86cfbb8bd7dd809546cfef855c8025c66 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.bgp.cli.utils;
 import static org.opendaylight.protocol.bgp.cli.utils.NeighborStateCliUtils.addHeader;
 
 import java.io.PrintStream;
-import java.util.List;
+import java.util.Collection;
 import org.apache.karaf.shell.support.table.ShellTable;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.State;
@@ -23,7 +23,7 @@ final class PeerGroupStateCliUtils {
         // Hidden on purpose
     }
 
-    static void displayPeerOperationalState(@NonNull final List<PeerGroup> peerGroupList,
+    static void displayPeerOperationalState(@NonNull final Collection<PeerGroup> peerGroupList,
             @NonNull final PrintStream stream) {
         final ShellTable table = new ShellTable();
         table.column("Attribute").alignLeft();
index 5c7e0276bca788a6c23d48a3cb6de53a3ee58a97..9bc596963d2d1c74d181e1f5023191283ef5cf0a 100644 (file)
@@ -15,7 +15,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index cdd390c0bd3e0ac59619e3b1979f667f123a3082..2a6589cf4ad5d7f4415aab389ec5e332d53b77d7 100644 (file)
@@ -15,6 +15,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -166,7 +167,7 @@ final class EvpnRibSupport extends AbstractRIBSupport<EvpnRoutesCase, EvpnRoutes
     }
 
     @Override
-    public List<EvpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<EvpnRouteKey, EvpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.EvpnRoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.evpn.rev200120
index 741ef9f04db9de141290134a13cc6a4a5774b1e8..084f72c2400daeae92e84eaf11bbb9b56fc696e8 100644 (file)
@@ -96,7 +96,7 @@ public final class EvpnRibSupportTest extends AbstractRIBSupportTest<EvpnRoutesC
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = EvpnRibSupport.getInstance(this.mappingService);
+        this.ribSupport = EvpnRibSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 60bb44be75ef9e84de97033fa68f1193f508b40e..64c788a33694645829a3394fc828cd7122c67c58 100644 (file)
@@ -23,7 +23,7 @@ public class RIBActivatorTest extends AbstractRIBActivatorTest {
         final RIBActivator ribAct = new RIBActivator();
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
         assertNull(context.getRIBSupport(L2vpnAddressFamily.class, EvpnSubsequentAddressFamily.class));
-        ribAct.startRIBExtensionProvider(context, this.mappingService);
+        ribAct.startRIBExtensionProvider(context, this.context.currentSerializer());
         assertNotNull(context.getRIBSupport(L2vpnAddressFamily.class, EvpnSubsequentAddressFamily.class));
         ribAct.close();
     }
index 335f67b0839313d699499230c60eb1130be18ff0..883b76eeaf18163302abc35e087ef0e5d8850136 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.bgp.flowspec;
 import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120.FlowspecSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120.bgp.rib.rib.loc.rib.tables.routes.FlowspecRoutesCase;
@@ -93,7 +93,7 @@ public final class FlowspecIpv4RIBSupport
     }
 
     @Override
-    public List<FlowspecRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<FlowspecRouteKey, FlowspecRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.FlowspecRoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
index fc71b20a9e350f11a8ea0c7b178ef20e6dc8c010..78332eeced3a49ad81a333c443a4869a35b93a8c 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.bgp.flowspec;
 import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120.FlowspecSubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120.bgp.rib.rib.loc.rib.tables.routes.FlowspecIpv6RoutesCase;
@@ -93,7 +93,7 @@ public final class FlowspecIpv6RIBSupport
     }
 
     @Override
-    public List<FlowspecRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<FlowspecRouteKey, FlowspecRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.FlowspecIpv6RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
index 019523a14e9c94120524d5e66e1ecca555870905..48d7ecc0a8d8b47afa8c9c5d540f14353a015b25 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.bgp.flowspec.l3vpn.ipv4;
 import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.flowspec.SimpleFlowspecExtensionProviderContext;
 import org.opendaylight.protocol.bgp.flowspec.l3vpn.AbstractFlowspecL3vpnRIBSupport;
@@ -94,7 +94,7 @@ public final class FlowspecL3vpnIpv4RIBSupport
     }
 
     @Override
-    public List<FlowspecL3vpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<FlowspecL3vpnRouteKey, FlowspecL3vpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.FlowspecL3vpnIpv4RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
index 8422d9963d3092d98b74d4d9835d8c50430b1444..87bb5eaf27ec832d5ad7eb457cd6c0dd37c588d6 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.protocol.bgp.flowspec.l3vpn.ipv6;
 import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.flowspec.SimpleFlowspecExtensionProviderContext;
 import org.opendaylight.protocol.bgp.flowspec.l3vpn.AbstractFlowspecL3vpnRIBSupport;
@@ -94,7 +94,7 @@ public final class FlowspecL3vpnIpv6RIBSupport
     }
 
     @Override
-    public List<FlowspecL3vpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<FlowspecL3vpnRouteKey, FlowspecL3vpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.FlowspecL3vpnIpv6RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.flowspec.rev200120
index db90634d6ab2762d8ad37549c1e797052b6e4407..b600b7174eb4437b9ce5d57c48ee9f81b206cb83 100644 (file)
@@ -81,7 +81,7 @@ public class FlowspecIpv4RIBSupportTest extends AbstractRIBSupportTest<FlowspecR
         final BGPActivator act = new BGPActivator(activator);
         final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
         act.start(context);
-        this.ribSupport = FlowspecIpv4RIBSupport.getInstance(fsContext, this.mappingService);
+        this.ribSupport = FlowspecIpv4RIBSupport.getInstance(fsContext, this.adapter.currentSerializer());
 
         final SimpleFlowspecIpv4NlriParser parser = new SimpleFlowspecIpv4NlriParser(
                 fsContext.getFlowspecTypeRegistry(SimpleFlowspecExtensionProviderContext.AFI.IPV4,
index 5427db1730c72e76aaabcd5f1099616db1d63e83..6ee2e2e13cf9988c590a14e02f2eb9a07d5651cd 100644 (file)
@@ -88,7 +88,7 @@ public class FlowspecIpv6RIBSupportTest extends AbstractRIBSupportTest<FlowspecI
         this.route = new FlowspecRouteBuilder().withKey(this.routeKey).setPathId(PATH_ID).setFlowspec(FLOW_LIST)
                 .setAttributes(new AttributesBuilder().build()).build();
         this.routes = new FlowspecIpv6RoutesBuilder().setFlowspecRoute(Collections.singletonList(this.route)).build();
-        this.ribSupport = FlowspecIpv6RIBSupport.getInstance(fsContext, this.mappingService);
+        this.ribSupport = FlowspecIpv6RIBSupport.getInstance(fsContext, this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 4096ac79f64f25aa6da3f2659311f2375c6edeaf..ab91a6695a31955b30a65c9eb83849f1964c11b9 100644 (file)
@@ -85,7 +85,7 @@ public class FlowspecL3vpnIpv4RIBSupportTest extends AbstractRIBSupportTest<Flow
     public void setUp() throws Exception {
         super.setUp();
         this.ribSupport = FlowspecL3vpnIpv4RIBSupport
-                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.mappingService);
+                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index e6836cdf23e004bd87d2f1c35373b5ae5b9fdbdf..56aa2d98425e9c1605cc6f58c510bb135493ef5d 100644 (file)
@@ -85,7 +85,7 @@ public class FlowspecL3vpnIpv6RIBSupportTest extends AbstractRIBSupportTest<Flow
     public void setUp() throws Exception {
         super.setUp();
         this.ribSupport = FlowspecL3vpnIpv6RIBSupport
-                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.mappingService);
+                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 873b8596f474e3b5f41749c6a30094f7e037616e..02ea19bca16711c3a60aaba6934ab8d99cb59592 100644 (file)
@@ -13,6 +13,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
@@ -122,7 +123,7 @@ final class IPv4RIBSupport extends AbstractIPRibSupport<Ipv4RoutesCase, Ipv4Rout
     }
 
     @Override
-    public List<Ipv4Route> extractAdjRibInRoutes(final Routes routes) {
+    public Map<Ipv4RouteKey, Ipv4Route> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.Ipv4RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.bgp.rib.rib.peer
index 01226332c124f958c0eac8854509ad1a5d0c5aad..e825ad6f92df2631cfa2cd068a6e9996dd01884f 100644 (file)
@@ -13,6 +13,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.PathIdUtil;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
@@ -118,7 +119,7 @@ final class IPv6RIBSupport extends AbstractIPRibSupport<Ipv6RoutesCase, Ipv6Rout
     }
 
     @Override
-    public List<Ipv6Route> extractAdjRibInRoutes(final Routes routes) {
+    public Map<Ipv6RouteKey, Ipv6Route> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.Ipv6RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.bgp.rib.rib.peer
index a39137b02bfaf257b50a484c7a0dc8fb5b27aecd..e78d62285ce9c386923ba3acf7041be884fa381a 100644 (file)
@@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
 import org.junit.Assert;
 import org.junit.Test;
 import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
@@ -71,12 +72,13 @@ public final class IPv4RIBSupportTest extends AbstractRIBSupportTest<Ipv4RoutesC
             .setPathId(PATH_ID)
             .setPrefix(PREFIX).build();
     private static final Ipv4Routes ROUTES = new Ipv4RoutesBuilder()
-            .setIpv4Route(Collections.singletonList(ROUTE)).build();
+            .setIpv4Route(Map.of(ROUTE.key(), ROUTE))
+            .build();
 
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = IPv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = IPv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 2db46b0e705b30b842703938661afc2a90314eb1..bfd0c36fc0e3da3478aefdf889a3ad8111bacbfb 100644 (file)
@@ -76,7 +76,7 @@ public final class IPv6RIBSupportTest extends AbstractRIBSupportTest<Ipv6RoutesC
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = IPv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = IPv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index c9505cd3adea368c23b36e1a91f7c1c460d1789b..2a1a33a494453129577b01ff8d5cb2f4aa338a57 100644 (file)
@@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.l3vpn.mcast.nlri.L3vpnMcastNlriSerializer;
@@ -24,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.bgp.rib.rib.loc.rib.tables.routes.L3vpnMcastRoutesIpv4Case;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.destination.L3vpnMcastDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.L3vpnMcastRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.L3vpnMcastRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.ipv4.L3vpnMcastRoutesIpv4;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.ipv4.L3vpnMcastRoutesIpv4Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationL3vpnMcastIpv4AdvertizedCase;
@@ -107,7 +108,7 @@ public final class L3VpnMcastIpv4RIBSupport
     }
 
     @Override
-    public List<L3vpnMcastRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<L3vpnMcastRouteKey, L3vpnMcastRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast
             .rev180417.bgp.rib.rib.peer.adj.rib.in.tables.routes.L3vpnMcastRoutesIpv4Case, "Unrecognized routes %s",
             routes);
index d327ebddd6ada1d4167b5dc279585e0f9683b449..61fc805c3c37b626438e86342d0aaea43b2bc1b3 100644 (file)
@@ -13,7 +13,7 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.l3vpn.mcast.nlri.L3vpnMcastNlriSerializer;
@@ -24,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.bgp.rib.rib.loc.rib.tables.routes.L3vpnMcastRoutesIpv6Case;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.destination.L3vpnMcastDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.L3vpnMcastRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.L3vpnMcastRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.ipv6.L3vpnMcastRoutesIpv6;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.l3vpn.mcast.routes.ipv6.L3vpnMcastRoutesIpv6Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast.rev180417.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationL3vpnMcastIpv6AdvertizedCase;
@@ -107,7 +108,7 @@ public final class L3VpnMcastIpv6RIBSupport
     }
 
     @Override
-    public List<L3vpnMcastRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<L3vpnMcastRouteKey, L3vpnMcastRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.l3vpn.mcast
             .rev180417.bgp.rib.rib.peer.adj.rib.in.tables.routes.L3vpnMcastRoutesIpv6Case, "Unrecognized routes %s",
             routes);
index f3d96dbffeaeb2d315258b2111d8589f4173819c..46b1ca2caf5f1c65c35947287bc86dc71b27a045 100644 (file)
@@ -11,6 +11,7 @@ import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.l3vpn.unicast.AbstractVpnRIBSupport;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -25,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv4.rev180329.l3vpn.ipv4.routes.VpnIpv4RoutesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.destination.type.VpnDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.route.VpnRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.route.VpnRouteKey;
 
 public final class VpnIpv4RIBSupport extends AbstractVpnRIBSupport<VpnIpv4RoutesCase, VpnIpv4Routes> {
     private static final VpnIpv4Routes EMPTY_CONTAINER
@@ -77,7 +79,7 @@ public final class VpnIpv4RIBSupport extends AbstractVpnRIBSupport<VpnIpv4Routes
     }
 
     @Override
-    public List<VpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<VpnRouteKey, VpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv4.rev180329
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.VpnIpv4RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv4.rev180329
index 7b277174e184a053a47cd3e0e4f4840c10c9ee0b..3e0767cc47db4d0bd2f271a363c0c80a406c608e 100644 (file)
@@ -11,6 +11,7 @@ import static com.google.common.base.Verify.verify;
 
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.protocol.bgp.l3vpn.unicast.AbstractVpnRIBSupport;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
@@ -25,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv6.rev180329.l3vpn.ipv6.routes.VpnIpv6RoutesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.destination.type.VpnDestination;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.route.VpnRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.rev180329.l3vpn.ip.route.VpnRouteKey;
 
 public final class VpnIpv6RIBSupport extends AbstractVpnRIBSupport<VpnIpv6RoutesCase, VpnIpv6Routes> {
     private static final VpnIpv6Routes EMPTY_CONTAINER
@@ -77,7 +79,7 @@ public final class VpnIpv6RIBSupport extends AbstractVpnRIBSupport<VpnIpv6Routes
     }
 
     @Override
-    public List<VpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<VpnRouteKey, VpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv6.rev180329
             .bgp.rib.rib.peer.adj.rib.in.tables.routes.VpnIpv6RoutesCase, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.vpn.ipv6.rev180329
index daa1008113a2d77eff89337135b91908e4d32c89..89341605a73e9e603d037914cee0106212d01d37 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.l3vpn;
 
 import static org.junit.Assert.assertNotNull;
@@ -26,7 +25,7 @@ public class RIBActivatorTest extends AbstractRIBActivatorTest {
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
         assertNull(context.getRIBSupport(Ipv4AddressFamily.class, McastMplsLabeledVpnSubsequentAddressFamily.class));
         assertNull(context.getRIBSupport(Ipv6AddressFamily.class, McastMplsLabeledVpnSubsequentAddressFamily.class));
-        ribAct.startRIBExtensionProvider(context, this.mappingService);
+        ribAct.startRIBExtensionProvider(context, this.context.currentSerializer());
         assertNotNull(context.getRIBSupport(Ipv4AddressFamily.class, McastMplsLabeledVpnSubsequentAddressFamily.class));
         assertNotNull(context.getRIBSupport(Ipv6AddressFamily.class, McastMplsLabeledVpnSubsequentAddressFamily.class));
         ribAct.close();
index b4a53e46aaf1732340e4859cce4b81ad449a7328..6d8ab7003eec54653324bf83464449679f2469b1 100644 (file)
@@ -89,7 +89,7 @@ public class L3vpnMcastIpv4RIBSupportTest extends AbstractRIBSupportTest<L3vpnMc
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        ribSupport = L3VpnMcastIpv4RIBSupport.getInstance(this.mappingService);
+        ribSupport = L3VpnMcastIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
index 97d72982e5041a282bcf8ed6843a3a8c0043aeeb..1054f912c31692d6ec93274449c52bf90bbfcb69 100644 (file)
@@ -89,7 +89,7 @@ public class L3vpnMcastIpv6RIBSupportTest extends AbstractRIBSupportTest<L3vpnMc
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        ribSupport = L3VpnMcastIpv6RIBSupport.getInstance(this.mappingService);
+        ribSupport = L3VpnMcastIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
index 55602f08b933eaf80e1c957812e528c293098a1a..4aff23e8839c90a9a77bbea30a29221dd3fefbe5 100644 (file)
@@ -71,7 +71,7 @@ public class VpnIpv4RIBSupportTest extends AbstractRIBSupportTest<VpnIpv4RoutesC
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = VpnIpv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = VpnIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index b7b95b68bdf8fe6afc9bc6e81ce405913a290ba5..acc5a38e66ec61caa56e9dacc98959263ec7b858 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.l3vpn.unicast.ipv6;
 
 import static org.junit.Assert.assertEquals;
@@ -71,7 +70,7 @@ public class VpnIpv6RIBSupportTest extends AbstractRIBSupportTest<VpnIpv6RoutesC
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = VpnIpv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = VpnIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 041f326b8e74846ad3da4f70efc64d17ba7a2a09..1ec70877404db216f5087f882b246cf8bc137a0b 100644 (file)
@@ -11,7 +11,7 @@ import static com.google.common.base.Verify.verify;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
@@ -19,6 +19,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labe
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.LabeledUnicastRoutes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.LabeledUnicastRoutesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.list.LabeledUnicastRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.list.LabeledUnicastRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationLabeledUnicastCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.labeled.unicast._case.DestinationLabeledUnicast;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.labeled.unicast._case.DestinationLabeledUnicastBuilder;
@@ -85,7 +86,7 @@ public final class LabeledUnicastIpv4RIBSupport
     }
 
     @Override
-    public List<LabeledUnicastRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<LabeledUnicastRouteKey, LabeledUnicastRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast
             .rev180329.bgp.rib.rib.peer.adj.rib.in.tables.routes.LabeledUnicastRoutesCase, "Unrecognized routes %s",
             routes);
index 29d1fc4e02118d147f159ebe5a2bd09a16553350..2733c1bb1aafbf8d78a42be77377d800ef21a2a3 100644 (file)
@@ -11,7 +11,7 @@ import static com.google.common.base.Verify.verify;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
@@ -19,6 +19,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labe
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.ipv6.routes.LabeledUnicastIpv6Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.ipv6.routes.LabeledUnicastIpv6RoutesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.list.LabeledUnicastRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.labeled.unicast.routes.list.LabeledUnicastRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationIpv6LabeledUnicastCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.ipv6.labeled.unicast._case.DestinationIpv6LabeledUnicast;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.ipv6.labeled.unicast._case.DestinationIpv6LabeledUnicastBuilder;
@@ -85,7 +86,7 @@ final class LabeledUnicastIpv6RIBSupport
     }
 
     @Override
-    public List<LabeledUnicastRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<LabeledUnicastRouteKey, LabeledUnicastRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.labeled.unicast
             .rev180329.bgp.rib.rib.peer.adj.rib.in.tables.routes.LabeledUnicastIpv6RoutesCase, "Unrecognized routes %s",
             routes);
index 43013b6f23110ad1928e14b694efd45c23971116..707e458ff58073509b9bfc7a8ccd4be9003c6fef 100644 (file)
@@ -102,7 +102,7 @@ public class LabeledUnicastIpv4RIBSupportTest extends AbstractRIBSupportTest<Lab
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LabeledUnicastIpv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LabeledUnicastIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 480afda65bc52a53c320046e1a2d28756bfe1d5b..66b61be63d508768acbf073f41c4dfdbdf23ff70 100644 (file)
@@ -100,7 +100,7 @@ public class LabeledUnicastIpv6RIBSupportTest extends AbstractRIBSupportTest<Lab
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LabeledUnicastIpv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LabeledUnicastIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
index 79ca0fb029d08fc5a5c8f9ab018a59a99d2a2156..335a4d9f17d1d4a117ff207ae8f4cf4757389eef 100644 (file)
@@ -15,6 +15,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -180,7 +181,7 @@ public final class LinkstateRIBSupport
     }
 
     @Override
-    public List<LinkstateRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<LinkstateRouteKey, LinkstateRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(
             routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120
                 .bgp.rib.rib.peer.adj.rib.in.tables.routes.LinkstateRoutesCase, "Unrecognized routes %s", routes);
index b16591954e5e71cc3e96d51711f632ac7ee250fc..1516b73c3995a66d29e429b582c8bef06527525d 100644 (file)
@@ -15,6 +15,7 @@ import io.netty.buffer.Unpooled;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Map.Entry;
 import org.opendaylight.protocol.bgp.linkstate.impl.attribute.sr.SrLinkAttributesParser;
 import org.opendaylight.protocol.bgp.linkstate.spi.TlvUtil;
@@ -44,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.link
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.attribute.SrLanAdjIds;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.attribute.UnreservedBandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.attribute.UnreservedBandwidthBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.attribute.UnreservedBandwidthKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.path.attribute.LinkStateAttribute;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.path.attribute.link.state.attribute.LinkAttributesCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.path.attribute.link.state.attribute.LinkAttributesCaseBuilder;
@@ -343,11 +345,12 @@ public final class LinkAttributesParser {
         LOG.trace("Finished serializing Link Attributes");
     }
 
-    private static void serializeUnreservedBw(final List<UnreservedBandwidth> ubList, final ByteBuf byteAggregator) {
+    private static void serializeUnreservedBw(final Map<UnreservedBandwidthKey, UnreservedBandwidth> ubList,
+            final ByteBuf byteAggregator) {
         // this sub-TLV contains eight 32-bit IEEE floating point numbers
         if (ubList != null) {
             final ByteBuf unreservedBandwithBuf = Unpooled.buffer();
-            for (final UnreservedBandwidth unreservedBandwidth : ubList) {
+            for (final UnreservedBandwidth unreservedBandwidth : ubList.values()) {
                 unreservedBandwithBuf.writeBytes(unreservedBandwidth.getBandwidth().getValue());
             }
             TlvUtil.writeTLV(UNRESERVED_BANDWIDTH, unreservedBandwithBuf, byteAggregator);
index e0d3807330e7cc7b19ca3dc3167cf666b479c7a2..29e6822c502fc82d1dbb4c1a17937453dada4fd5 100644 (file)
@@ -31,7 +31,6 @@ public final class SimpleBindingSubTlvsRegistry {
     private SimpleBindingSubTlvsRegistry() {
     }
 
-
     public static SimpleBindingSubTlvsRegistry getInstance() {
         return SINGLETON;
     }
@@ -46,15 +45,17 @@ public final class SimpleBindingSubTlvsRegistry {
     }
 
     public void serializeBindingSubTlvs(final List<BindingSubTlvs> bindingSubTlvs, final ByteBuf aggregator) {
-        for (final BindingSubTlvs subTlv : bindingSubTlvs) {
-            final BindingSubTlv bindingSubTlv = subTlv.getBindingSubTlv();
-            final BindingSubTlvsSerializer serializer = this.handlers.getSerializer(
-                bindingSubTlv.implementedInterface());
-            if (serializer == null) {
-                LOG.info("Unknown binding sub Tlv type {}", subTlv);
-                return;
+        if (bindingSubTlvs != null) {
+            for (final BindingSubTlvs subTlv : bindingSubTlvs) {
+                final BindingSubTlv bindingSubTlv = subTlv.getBindingSubTlv();
+                final BindingSubTlvsSerializer serializer = this.handlers.getSerializer(
+                    bindingSubTlv.implementedInterface());
+                if (serializer == null) {
+                    LOG.info("Unknown binding sub Tlv type {}", subTlv);
+                    return;
+                }
+                serializer.serializeSubTlv(bindingSubTlv, aggregator);
             }
-            serializer.serializeSubTlv(bindingSubTlv, aggregator);
         }
     }
 
index 19ce9599412e88f5736fce9327dba0a0bf438818..55d623e9e67db4a7b4e53060cc9982be900aefe2 100644 (file)
@@ -48,7 +48,7 @@ public class ActivatorTest extends AbstractRIBActivatorTest {
 
         assertNull(context.getRIBSupport(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class));
 
-        ribAct.startRIBExtensionProvider(context, this.mappingService);
+        ribAct.startRIBExtensionProvider(context, this.context.currentSerializer());
 
         assertNotNull(context.getRIBSupport(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class));
 
index 315a378801892f7714f1571abf68a4130c7fa8c5..5a97f238474ff97d64f01b951be79c7794da527c 100644 (file)
@@ -125,7 +125,7 @@ public final class LinkstateRIBSupportTest extends AbstractRIBSupportTest<Linkst
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LinkstateRIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LinkstateRIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
index c14cdebae5ff28d730462ed742dec3f78d8f1b93..6c22f34633eb9b6378d8ff2f44331b4d5060b8e7 100644 (file)
@@ -14,6 +14,7 @@ import io.netty.buffer.Unpooled;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -31,6 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.mvpn.ipv4.advertized._case.DestinationMvpnBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.update.attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationMvpnIpv4WithdrawnCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.routes.MvpnRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.routes.MvpnRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -111,7 +113,7 @@ final class MvpnIpv4RIBSupport extends AbstractMvpnRIBSupport<MvpnRoutesIpv4Case
     }
 
     @Override
-    public List<MvpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<MvpnRouteKey, MvpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4
             .rev180417.bgp.rib.rib.peer.adj.rib.in.tables.routes.MvpnRoutesIpv4Case, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417
index 52aecb9bf828296a5a347fe360e5f95084b7fda9..83e81b3a0a4f19784158c97a3abeef19f4cb9921 100644 (file)
@@ -14,6 +14,7 @@ import io.netty.buffer.Unpooled;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -31,6 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.update.attributes.mp.reach.nlri.advertized.routes.destination.type.destination.mvpn.ipv6.advertized._case.DestinationMvpnBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417.update.attributes.mp.unreach.nlri.withdrawn.routes.destination.type.DestinationMvpnIpv6WithdrawnCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.routes.MvpnRoute;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.rev200120.mvpn.routes.MvpnRouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.tables.Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv6AddressFamily;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -112,7 +114,7 @@ final class MvpnIpv6RIBSupport extends AbstractMvpnRIBSupport<MvpnRoutesIpv6Case
     }
 
     @Override
-    public List<MvpnRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<MvpnRouteKey, MvpnRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6
             .rev180417.bgp.rib.rib.peer.adj.rib.in.tables.routes.MvpnRoutesIpv6Case, "Unrecognized routes %s", routes);
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv6.rev180417
index 072c4672991bf8e7f14551b74f89632ef310b248..bfbc9b343c05580ae497917d63054c0a070295c9 100644 (file)
@@ -89,7 +89,7 @@ public class MvpnIpv4RIBSupportTest extends AbstractRIBSupportTest<MvpnRoutesIpv
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = MvpnIpv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = MvpnIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
         NlriActivator.registerNlriParsers(new ArrayList<>());
     }
index 3b1001bce0dc3c5513d81f224909e3d659f46603..bec873a5b811b35661006b6ab7c8dc8bede84f04 100644 (file)
@@ -90,7 +90,7 @@ public final class MvpnIpv6RIBSupportTest extends AbstractRIBSupportTest<MvpnRou
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = MvpnIpv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = MvpnIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
         NlriActivator.registerNlriParsers(new ArrayList<>());
     }
index 7a235818815ac33c6082d26a468d8b4f3003bb1e..65fdad1b7ccab5a1d6355cf3e95e9d202f31f1fe 100644 (file)
@@ -26,7 +26,7 @@ public class RIBActivatorTest extends AbstractRIBActivatorTest {
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
         assertNull(context.getRIBSupport(Ipv4AddressFamily.class, McastVpnSubsequentAddressFamily.class));
         assertNull(context.getRIBSupport(Ipv6AddressFamily.class, McastVpnSubsequentAddressFamily.class));
-        ribAct.startRIBExtensionProvider(context, this.mappingService);
+        ribAct.startRIBExtensionProvider(context, this.context.currentSerializer());
         assertNotNull(context.getRIBSupport(Ipv4AddressFamily.class, McastVpnSubsequentAddressFamily.class));
         assertNotNull(context.getRIBSupport(Ipv6AddressFamily.class, McastVpnSubsequentAddressFamily.class));
         ribAct.close();
index 74ec320b2d43b5dd60eef630e3c8d617cf212110..9f3cc71e7b550f19b9e320eba1bba53b154c1b43 100644 (file)
@@ -75,7 +75,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index fb5708c7f4d15a8dced61ba14f9b6ad910de5340..b4a3aa10a226f7b9aaca70a9d34b806afebe31b2 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index f0254e3c0bcab1fec2c3eccef7ddccde50a7177d..e2dfd67497ef09898675dbbd3ab4d838443426bc 100644 (file)
@@ -17,6 +17,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
@@ -224,7 +225,7 @@ public final class RouteTargetConstrainRIBSupport
     }
 
     @Override
-    public List<RouteTargetConstrainRoute> extractAdjRibInRoutes(final Routes routes) {
+    public Map<RouteTargetConstrainRouteKey, RouteTargetConstrainRoute> extractAdjRibInRoutes(final Routes routes) {
         verify(routes instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.route.target
             .constrain.rev180618.bgp.rib.rib.peer.adj.rib.in.tables.routes.RouteTargetConstrainRoutesCase,
             "Unrecognized routes %s", routes);
index a6050e07e26bc829b9689cf51275c585e3992eea..7c4eff8d98abd8590a0a7e4eaee14344767d53fe 100644 (file)
@@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableSet;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBSupportTest;
@@ -78,9 +79,9 @@ public class RouteTargetConstrainRIBSupportTest extends AbstractRIBSupportTest<R
             .setRouteTargetConstrainChoice(RT)
             .setOriginAs(ORIGIN_AS)
             .build();
-    private static final RouteTargetConstrainRoutes RT_ROUTES
-            = new RouteTargetConstrainRoutesBuilder()
-            .setRouteTargetConstrainRoute(Collections.singletonList(ROUTE)).build();
+    private static final RouteTargetConstrainRoutes RT_ROUTES = new RouteTargetConstrainRoutesBuilder()
+            .setRouteTargetConstrainRoute(Map.of(ROUTE.key(), ROUTE))
+            .build();
 
     private static final RouteTargetConstrainDestination RT_DESTINATION = new RouteTargetConstrainDestinationBuilder()
             .setRouteTargetConstrainChoice(RT)
@@ -104,7 +105,7 @@ public class RouteTargetConstrainRIBSupportTest extends AbstractRIBSupportTest<R
     public void setUp() throws Exception {
         super.setUp();
         NlriActivator.registerNlriParsers(new ArrayList<>());
-        this.ribSupport = RouteTargetConstrainRIBSupport.getInstance(this.mappingService);
+        this.ribSupport = RouteTargetConstrainRIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
@@ -172,7 +173,7 @@ public class RouteTargetConstrainRIBSupportTest extends AbstractRIBSupportTest<R
 
     @Test
     public void testRouteAttributesIdentifier() {
-        assertEquals(new NodeIdentifier(Attributes.QNAME.withModule(BindingReflections
+        assertEquals(new NodeIdentifier(Attributes.QNAME.bindTo(BindingReflections
                         .getQNameModule(RouteTargetConstrainRoutesCase.class))),
                 this.ribSupport.routeAttributesIdentifier());
     }
index a3957481d4a925efb92bff1b4940a750ed904c15..eb4ec342ba4d726b9cf59bb6c81a5a1399cb834f 100644 (file)
@@ -24,7 +24,7 @@ public class RIBActivatorTest extends AbstractRIBActivatorTest {
         final RIBActivator ribAct = new RIBActivator();
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
         assertNull(context.getRIBSupport(Ipv4AddressFamily.class, RouteTargetConstrainSubsequentAddressFamily.class));
-        ribAct.startRIBExtensionProvider(context, this.mappingService);
+        ribAct.startRIBExtensionProvider(context, this.context.currentSerializer());
         assertNotNull(context.getRIBSupport(Ipv4AddressFamily.class,
                 RouteTargetConstrainSubsequentAddressFamily.class));
         ribAct.close();
index 97a739f7d0a7d79fa870a1e83a982718d3983861..95533d5f97b9db8941aaee337dfbe228f773e595 100644 (file)
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index e01eb6e85941db032ef49f3b7d1731aef631603e..8dc0311e3c0c47ef71c56efe2979bd3d4e43d3de 100644 (file)
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 09781723f7e87d4803d110d0f92d63d1822b8ebc..d25065da9ae7b1b7fc60196763eaae3158ce55b6 100644 (file)
@@ -8,7 +8,10 @@
 
 package org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions;
 
+import com.google.common.collect.ImmutableMap;
 import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.RouteEntryBaseAttributes;
 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.policy.action.BgpActionAugPolicy;
@@ -18,6 +21,7 @@ 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.path.attributes.AttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.ExtendedCommunities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.UnrecognizedAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.UnrecognizedAttributesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.ExtendedCommunity;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp._default.policy.rev200120.NonTransitiveAttributesFilter;
 
@@ -51,11 +55,13 @@ public final class NonTransitiveAttributesFilterHandler implements BgpActionAugP
                 .setAsPath(attributes.getAsPath())
                 .setCommunities(attributes.getCommunities());
 
-        final List<UnrecognizedAttributes> oldAtt = attributes.getUnrecognizedAttributes();
+        final Map<UnrecognizedAttributesKey, UnrecognizedAttributes> oldAtt = attributes.getUnrecognizedAttributes();
         if (oldAtt != null) {
-            builder.setUnrecognizedAttributes(attributes.getUnrecognizedAttributes().stream()
+            // TODO: consider using Maps.filterValues(attributes.getUnrecognizedAttributes(),
+            //                                        UnrecognizedAttributes::isTransitive)) ?
+            builder.setUnrecognizedAttributes(attributes.getUnrecognizedAttributes().values().stream()
                     .filter(UnrecognizedAttributes::isTransitive)
-                    .collect(Collectors.toList()));
+                    .collect(ImmutableMap.toImmutableMap(UnrecognizedAttributes::key, Function.identity())));
         }
         final List<ExtendedCommunities> oldExt = attributes.getExtendedCommunities();
         if (oldExt != null) {
index 19301b3a30f2f01f12121dffa90ac4148340f0e6..73c45e4aa1904cd852fd761893458d8ef9008fb1 100644 (file)
@@ -72,7 +72,7 @@ public final class MatchBgpNeighborSetHandler
         if (!result.isPresent()) {
             return Collections.emptyList();
         }
-        return result.get().getNeighbor().stream()
+        return result.get().getNeighbor().values().stream()
                 .map(nei -> RouterIds.createPeerId(nei.getAddress()))
                 .collect(Collectors.toList());
     }
index c966710ee713ef1cc11d1baf7fa3d52244ad2219..f6e28c47c7aefb87e133facf6bbfeb5d82dea198 100644 (file)
             <artifactId>mdsal-binding-dom-adapter</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 7f5e58802d0091172cafe9a994a772a3e6fdf965..dcfd59d66dab1bd931f63b0d18127c9eba16302a 100644 (file)
@@ -361,8 +361,8 @@ public class StateProviderImplTest extends AbstractDataBrokerTest {
         readDataOperational(getDataBroker(), this.bgpInstanceIdentifier, bgpRib -> {
             final Neighbors neighbors = bgpRib.getNeighbors();
             Assert.assertNotNull(neighbors);
-            assertEquals(peerGroupExpected, bgpRib.getPeerGroups().getPeerGroup().get(0));
-            final Neighbor neighborResult = neighbors.getNeighbor().get(0);
+            assertEquals(peerGroupExpected, bgpRib.getPeerGroups().nonnullPeerGroup().values().iterator().next());
+            final Neighbor neighborResult = neighbors.nonnullNeighbor().values().iterator().next();
             assertEquals(new IpAddress(neighborAddress.getIpv4AddressNoZone()), neighborResult.getNeighborAddress());
             assertEquals(expectedAfiSafis, neighborResult.getAfiSafis());
             assertEquals(expectedErrorHandling, neighborResult.getErrorHandling());
index bf5a64b4059a2bba0213d6892177440e0f72b7d3..3a856f87270e542c543bbaa033a4f9ebbe809f10 100644 (file)
@@ -13,6 +13,8 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Open;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilities;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapability;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
@@ -35,9 +37,13 @@ public final class AsNumberUtil {
         final List<BgpParameters> params = open.getBgpParameters();
         if (params != null) {
             for (final BgpParameters p : params) {
-                for (final OptionalCapabilities oc : p.getOptionalCapabilities()) {
-                    if (oc.getCParameters() != null && oc.getCParameters().getAs4BytesCapability() != null) {
-                        return oc.getCParameters().getAs4BytesCapability().getAsNumber();
+                for (final OptionalCapabilities oc : p.nonnullOptionalCapabilities()) {
+                    final CParameters cparams = oc.getCParameters();
+                    if (cparams != null) {
+                        final As4BytesCapability as4 = cparams.getAs4BytesCapability();
+                        if (as4 != null) {
+                            return as4.getAsNumber();
+                        }
                     }
                 }
             }
index 8da9deecd08b00fe982371058c2353451e326709..47241e153528cf18e12b8774f6d1887e90ed54d2 100644 (file)
@@ -35,8 +35,9 @@ public final class BgpExtendedMessageUtil {
         final List<BgpParameters> params = open.getBgpParameters();
         if (params != null) {
             for (final BgpParameters p : params) {
-                for (final OptionalCapabilities oc : p.getOptionalCapabilities()) {
-                    if (oc.getCParameters() != null && oc.getCParameters().getBgpExtendedMessageCapability() != null) {
+                for (final OptionalCapabilities oc : p.nonnullOptionalCapabilities()) {
+                    final CParameters cparams = oc.getCParameters();
+                    if (cparams != null && cparams.getBgpExtendedMessageCapability() != null) {
                         return true;
                     }
                 }
index 25b3b05eb9e8152a3c0afb9bd1f09ed3bb8a053f..71f0870e311e675e221139dd7b6446c9dd726bde 100644 (file)
@@ -8,12 +8,10 @@
 package org.opendaylight.protocol.bgp.parser;
 
 import com.google.common.annotations.Beta;
-import com.google.common.collect.ImmutableList;
-import java.util.List;
+import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.optional.capabilities.CParameters;
 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.CParameters1;
 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.GracefulRestartCapability;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapability.RestartFlags;
@@ -26,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.SubsequentAddressFamily;
+import org.opendaylight.yangtools.yang.common.Uint16;
 
 /**
  * Utility class for dealing with Graceful Restart.
@@ -35,16 +34,15 @@ public final class GracefulRestartUtil {
      * GR capability advertizing inactive GR.
      */
     public static final @NonNull GracefulRestartCapability EMPTY_GR_CAPABILITY = new GracefulRestartCapabilityBuilder()
-            .setTables(ImmutableList.of())
             .setRestartFlags(new RestartFlags(Boolean.FALSE))
-            .setRestartTime(0)
+            .setRestartTime(Uint16.ZERO)
             .build();
 
     /**
      * LLGR capability advertizing no tables.
      */
     public static final @NonNull LlGracefulRestartCapability EMPTY_LLGR_CAPABILITY =
-            new LlGracefulRestartCapabilityBuilder().setTables(ImmutableList.of()).build();
+            new LlGracefulRestartCapabilityBuilder().build();
 
     private GracefulRestartUtil() {
 
@@ -62,12 +60,12 @@ public final class GracefulRestartUtil {
     }
 
     @Beta
-    public static @NonNull CParameters gracefulRestartCapability(final List<Tables> tables, final int restartTime,
-            final boolean localRestarting) {
-        return new CParametersBuilder().addAugmentation(CParameters1.class, new CParameters1Builder()
+    public static @NonNull CParameters gracefulRestartCapability(final Map<TablesKey, Tables> tables,
+            final int restartTime, final boolean localRestarting) {
+        return new CParametersBuilder().addAugmentation(new CParameters1Builder()
             .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder()
                 .setRestartFlags(new RestartFlags(localRestarting))
-                .setRestartTime(restartTime)
+                .setRestartTime(Uint16.valueOf(restartTime))
                 .setTables(tables)
                 .build())
             .build()).build();
index 2d9f72e41a8b5ca0193bae86875c5ceedc52f36a..90dab89fcf5ccf1daf760263e765f18b5aa7f84c 100644 (file)
@@ -23,7 +23,6 @@ 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.OptionalCapabilitiesBuilder;
 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.message.rev200120.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
 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.MultiprotocolCapabilityBuilder;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -61,9 +60,13 @@ public class APITest {
     public void testAsNumberUtil() {
         final List<BgpParameters> params = new ArrayList<>();
         final List<OptionalCapabilities> capas = new ArrayList<>();
-        capas.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(
-                CParameters1.class, new CParameters1Builder().setMultiprotocolCapability(
-                        new MultiprotocolCapabilityBuilder().build()).build()).build()).build());
+        capas.add(new OptionalCapabilitiesBuilder()
+            .setCParameters(new CParametersBuilder()
+                .addAugmentation(new CParameters1Builder()
+                    .setMultiprotocolCapability(new MultiprotocolCapabilityBuilder().build())
+                    .build())
+                .build())
+            .build());
         capas.add(new OptionalCapabilitiesBuilder().setCParameters(
                 new CParametersBuilder().setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(
                         new AsNumber(Uint32.valueOf(35))).build()).build()).build());
@@ -79,10 +82,13 @@ public class APITest {
     public void testBgpExtendedMessageUtil() {
         final List<BgpParameters> params = new ArrayList<>();
         final List<OptionalCapabilities> capas = new ArrayList<>();
-        capas.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder().addAugmentation(
-                CParameters1.class, new CParameters1Builder()
-                        .setMultiprotocolCapability(new MultiprotocolCapabilityBuilder()
-                                .build()).build()).build()).build());
+        capas.add(new OptionalCapabilitiesBuilder()
+            .setCParameters(new CParametersBuilder()
+                .addAugmentation(new CParameters1Builder()
+                    .setMultiprotocolCapability(new MultiprotocolCapabilityBuilder().build())
+                    .build())
+                .build())
+            .build());
         capas.add(new OptionalCapabilitiesBuilder().setCParameters(
                 BgpExtendedMessageUtil.EXTENDED_MESSAGE_CAPABILITY).build());
         params.add(new BgpParametersBuilder().setOptionalCapabilities(capas).build());
index be27558ae47bf4139cb86776084a208c9cf9e8a2..e87e7dbf89a575fadf60cd7af67d6a1e32204cae 100644 (file)
@@ -42,6 +42,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mess
 import org.opendaylight.yangtools.yang.binding.Notification;
 import org.opendaylight.yangtools.yang.common.Uint16;
 import org.opendaylight.yangtools.yang.common.Uint32;
+import org.opendaylight.yangtools.yang.common.netty.ByteBufUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -189,8 +190,8 @@ public final class BGPOpenMessageParser implements MessageParser, MessageSeriali
                     BGPError.VERSION_NOT_SUPPORTED);
         }
         final AsNumber as = new AsNumber(Uint32.valueOf(body.readUnsignedShort()));
-        final int holdTime = body.readUnsignedShort();
-        if (holdTime == 1 || holdTime == 2) {
+        final Uint16 holdTime = ByteBufUtils.readUint16(body);
+        if (Uint16.ONE.equals(holdTime) || Uint16.TWO.equals(holdTime)) {
             throw new BGPDocumentedException("Hold time value not acceptable.", BGPError.HOLD_TIME_NOT_ACC);
         }
         final Ipv4AddressNoZone bgpId;
index 083230736455f7b9d5e6273906c5138bbcdc415e..d2c04694f8447ac8daf37550e202338586d4884f 100644 (file)
@@ -14,6 +14,7 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.protocol.bgp.parser.BGPDocumentedException;
 import org.opendaylight.protocol.bgp.parser.BGPParsingException;
 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
@@ -31,6 +32,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.Tables.AfiFlags;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.TablesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.SubsequentAddressFamily;
 import org.opendaylight.yangtools.yang.common.Uint16;
@@ -69,11 +71,11 @@ public final class GracefulCapabilityHandler implements CapabilityParser, Capabi
         this.safiReg = requireNonNull(safiReg);
     }
 
-    private void serializeTables(final List<Tables> tables, final ByteBuf bytes) {
+    private void serializeTables(final Map<TablesKey, Tables> tables, final ByteBuf bytes) {
         if (tables == null) {
             return;
         }
-        for (final Tables t : tables) {
+        for (final Tables t : tables.values()) {
             final Class<? extends AddressFamily> afi = t.getAfi();
             final Integer afival = this.afiReg.numberForClass(afi);
             Preconditions.checkArgument(afival != null, "Unhandled address family " + afi);
@@ -91,7 +93,7 @@ public final class GracefulCapabilityHandler implements CapabilityParser, Capabi
     }
 
     private ByteBuf serializeCapability(final GracefulRestartCapability grace) {
-        final List<Tables> tables = grace.getTables();
+        final Map<TablesKey, Tables> tables = grace.getTables();
         final int tablesSize = tables != null ? tables.size() : 0;
         final ByteBuf bytes = Unpooled.buffer(HEADER_SIZE + PER_AFI_SAFI_SIZE * tablesSize);
         Uint16 time = grace.getRestartTime();
@@ -131,7 +133,7 @@ public final class GracefulCapabilityHandler implements CapabilityParser, Capabi
         cb.setRestartFlags(new RestartFlags((flagBits & Byte.SIZE) != 0));
 
         final int timer = ((buffer.readUnsignedByte() & TIMER_TOPBITS_MASK) << Byte.SIZE) + buffer.readUnsignedByte();
-        cb.setRestartTime(timer);
+        cb.setRestartTime(Uint16.valueOf(timer));
 
         final List<Tables> tables = new ArrayList<>();
         while (buffer.readableBytes() != 0) {
index a7898ad272f5c35b422108ae522938a3c6a82406..efbf6e6a9d1f9cda9398e1f6d373fe7e3b1ae1eb 100644 (file)
@@ -14,6 +14,7 @@ import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilityParser;
 import org.opendaylight.protocol.bgp.parser.spi.CapabilitySerializer;
@@ -27,6 +28,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 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.TablesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.ll.graceful.restart.capability.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.SubsequentAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.uint24.rev200104.Uint24;
@@ -111,13 +113,13 @@ public final class LlGracefulCapabilityHandler implements CapabilityParser, Capa
     }
 
     private ByteBuf serializeCapability(final LlGracefulRestartCapability cap) {
-        final List<Tables> tables = cap.getTables();
+        final Map<TablesKey, Tables> tables = cap.getTables();
         if (tables == null || tables.isEmpty()) {
             return Unpooled.EMPTY_BUFFER;
         }
 
         final ByteBuf buffer = Unpooled.buffer(PER_TABLE_SIZE * tables.size());
-        for (Tables table : tables) {
+        for (Tables table : tables.values()) {
             final Class<? extends AddressFamily> afi = table.getAfi();
             final Class<? extends SubsequentAddressFamily> safi = table.getSafi();
             final Integer afival = this.afiReg.numberForClass(afi);
index 948e43b77c2f9be74537d3f5b6ffe1047cf03feb..40b0a6e05bcd67b5acd982411c7edb356086fa9e 100644 (file)
@@ -10,11 +10,12 @@ package org.opendaylight.protocol.bgp.parser.impl.message.update;
 
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.Unpooled;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.AttributeUtil;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.Attributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.UnrecognizedAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.attributes.UnrecognizedAttributesKey;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -23,11 +24,12 @@ public class UnrecognizedAttributesSerializer implements AttributeSerializer {
 
     @Override
     public void serializeAttribute(final Attributes attributes, final ByteBuf byteAggregator) {
-        final List<UnrecognizedAttributes> unrecognizedAttrs = attributes.getUnrecognizedAttributes();
+        final Map<UnrecognizedAttributesKey, UnrecognizedAttributes> unrecognizedAttrs =
+                attributes.getUnrecognizedAttributes();
         if (unrecognizedAttrs == null) {
             return;
         }
-        for (final UnrecognizedAttributes unrecognizedAttr : unrecognizedAttrs) {
+        for (final UnrecognizedAttributes unrecognizedAttr : unrecognizedAttrs.values()) {
             LOG.trace("Serializing unrecognized attribute of type {}", unrecognizedAttr.getType());
             int flags = AttributeUtil.OPTIONAL;
             if (unrecognizedAttr.isPartial()) {
index cb539772483649e87549d9eb585302f286fb01e4..09dea6870b61c5426cedf5713b1dd9e755a8ff66 100644 (file)
@@ -12,6 +12,7 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotSame;
 
+import com.google.common.collect.Maps;
 import java.util.ArrayList;
 import java.util.List;
 import org.junit.Test;
@@ -73,7 +74,7 @@ public class ComplementaryTest {
 
         assertNotSame(tlv2.toString(), tlv3.toString());
 
-        assertEquals(tlv3.getTables(), tt);
+        assertEquals(Maps.uniqueIndex(tt, Tables::key), tlv3.getTables());
 
         assertEquals(cap.getSafi(), cap1.getSafi());
 
index 75577bff2a00e4e81f2fddaaa6eaacc322c77329..c23ac6e005e85f1ab1d49e15ea96604efaa8d0e0 100644 (file)
@@ -215,7 +215,7 @@ public class ParserTest {
         assertEquals(100, mo.getMyAsNumber().intValue());
         assertEquals(180, mo.getHoldTimer().intValue());
         assertEquals(new Ipv4Address("20.20.20.20"), mo.getBgpIdentifier());
-        assertTrue(mo.getBgpParameters().isEmpty());
+        assertNull(mo.getBgpParameters());
     }
 
     @Test
index fd474797494a6ca95d97797276ac1eeeef0cd06e..6ab7ae1ce2afb85a326d7789c926b15688e26f35 100644 (file)
@@ -12,7 +12,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import io.netty.buffer.Unpooled;
-import java.util.List;
+import java.util.Map;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -45,10 +45,10 @@ public class UnrecognizedAttributesTest {
     @Test
     public void testUnrecognizedAttributes() throws BGPDocumentedException, BGPParsingException {
         final byte[] attributeBytes = { (byte)0xe0, 0x00, 0x05, 0x01, 0x02, 0x03, 0x04, 0x05 };
-        final List<UnrecognizedAttributes> unrecogAttribs = SIMPLE_ATTR_REG.parseAttributes(
+        final Map<UnrecognizedAttributesKey, UnrecognizedAttributes> unrecogAttribs = SIMPLE_ATTR_REG.parseAttributes(
             Unpooled.wrappedBuffer(attributeBytes), null).getAttributes().getUnrecognizedAttributes();
         assertEquals(UNRECOGNIZED_ATTRIBUTE_COUNT, unrecogAttribs.size());
-        final UnrecognizedAttributes unrecogAttrib = unrecogAttribs.get(FIRST_ATTRIBUTE);
+        final UnrecognizedAttributes unrecogAttrib = unrecogAttribs.values().iterator().next();
         final UnrecognizedAttributesKey expectedAttribKey =
             new UnrecognizedAttributesKey(unrecogAttrib.getType());
 
index 083ea1a7103dc68919347fce241e498c0ce5ac83..c759bd1fc3c996973817e47baba07885d389446c 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index d5f0344f1b5be2967fe449ab122307e04dc51137..ca111507f64e33ad283f6059ff5d696883dfc524 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-impl</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-model-api</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-common</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-generator-impl</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>odl-uint24</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-spec-util</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>netty-transport-native-epoll</artifactId>
             <classifier>linux-x86_64</classifier>
         </dependency>
-
-        <!-- OSGi, FIXME: remove this -->
         <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.core</artifactId>
+            <groupId>javax.inject</groupId>
+            <artifactId>javax.inject</artifactId>
+            <scope>provided</scope>
+            <optional>true</optional>
         </dependency>
         <dependency>
             <groupId>org.osgi</groupId>
             <artifactId>osgi.cmpn</artifactId>
         </dependency>
 
+        <!-- OSGi, FIXME: remove this -->
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+
         <!-- Testing dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>mdsal-dom-broker</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 937382a0f9a71c5ae1eede7e28d7eff88dd949fd..3bb2ffb3fb8cacb7e766709fadac2f485d81462d 100644 (file)
@@ -361,12 +361,8 @@ public class BGPPeer extends AbstractPeer implements BGPSessionListener {
         }
         final GracefulRestartCapability advertisedGracefulRestartCapability =
                 session.getAdvertisedGracefulRestartCapability();
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp
-                .capabilities.graceful.restart.capability.Tables> advertisedTables =
-                    advertisedGracefulRestartCapability.getTables();
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp
-                .capabilities.ll.graceful.restart.capability.Tables> advertisedLLTables =
-                    session.getAdvertisedLlGracefulRestartCapability().getTables();
+        final var advertisedTables = advertisedGracefulRestartCapability.getTables();
+        final var advertisedLLTables = session.getAdvertisedLlGracefulRestartCapability().getTables();
 
         final List<AddressFamilies> addPathTablesType = session.getAdvertisedAddPathTableTypes();
         final Set<BgpTableType> advertizedTableTypes = session.getAdvertisedTableTypes();
@@ -405,7 +401,7 @@ public class BGPPeer extends AbstractPeer implements BGPSessionListener {
             if (advertisedTables == null) {
                 forwardingTables = Collections.emptySet();
             } else {
-                forwardingTables = advertisedTables.stream()
+                forwardingTables = advertisedTables.values().stream()
                         .filter(table -> table.getAfiFlags() != null)
                         .filter(table -> table.getAfiFlags().isForwardingState())
                         .map(table -> new TablesKey(table.getAfi(), table.getSafi()))
@@ -422,7 +418,7 @@ public class BGPPeer extends AbstractPeer implements BGPSessionListener {
         if (advertisedTables == null || advertisedTables.isEmpty()) {
             setAdvertizedGracefulRestartTableTypes(Collections.emptyList());
         } else {
-            setAdvertizedGracefulRestartTableTypes(advertisedTables.stream()
+            setAdvertizedGracefulRestartTableTypes(advertisedTables.values().stream()
                     .map(t -> new TablesKey(t.getAfi(), t.getSafi())).collect(Collectors.toList()));
         }
         setAfiSafiGracefulRestartState(advertisedGracefulRestartCapability.getRestartTime().toJava(), false,
@@ -431,8 +427,7 @@ public class BGPPeer extends AbstractPeer implements BGPSessionListener {
         final Map<TablesKey, Integer> llTablesReceived;
         if (advertisedLLTables != null) {
             llTablesReceived = new HashMap<>();
-            for (org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp
-                    .capabilities.ll.graceful.restart.capability.Tables table : advertisedLLTables) {
+            for (var table : advertisedLLTables.values()) {
                 llTablesReceived.put(new TablesKey(table.getAfi(), table.getSafi()),
                     table.getLongLivedStaleTime().getValue().intValue());
             }
index 71f9aa9e9933b2d9f3f0926bf90d2e4b74b764eb..9c685214fa6b620a840940fedbde08ebd8ac2290 100644 (file)
@@ -155,7 +155,7 @@ public class BGPSessionImpl extends SimpleChannelInboundHandler<Notification> im
         final List<BgpParameters> bgpParameters = remoteOpen.getBgpParameters();
         if (bgpParameters != null) {
             for (final BgpParameters param : bgpParameters) {
-                for (final OptionalCapabilities optCapa : param.getOptionalCapabilities()) {
+                for (final OptionalCapabilities optCapa : param.nonnullOptionalCapabilities()) {
                     final CParameters cParam = optCapa.getCParameters();
                     final CParameters1 cParam1 = cParam.augmentation(CParameters1.class);
                     if (cParam1 != null) {
index a58818faa29d37744f216946a1cb31d6d6adf6bb..84ea228b6cae9561ed27846f8d390ee319e58b7c 100644 (file)
@@ -34,14 +34,16 @@ public final class BgpPeerUtil {
      */
     public static Update createEndOfRib(final TablesKey key) {
         return key.getAfi() == Ipv4AddressFamily.class && key.getSafi() == UnicastSubsequentAddressFamily.class
-                ? new UpdateBuilder().build() :
-                new UpdateBuilder()
+                ? new UpdateBuilder().build() : new UpdateBuilder()
                         .setAttributes(new AttributesBuilder()
-                                .addAugmentation(Attributes2.class, new Attributes2Builder()
-                                        .setMpUnreachNlri(new MpUnreachNlriBuilder()
-                                                .setAfi(key.getAfi())
-                                                .setSafi(key.getSafi())
-                                                .build()).build()).build()).build();
+                            .addAugmentation(new Attributes2Builder()
+                                .setMpUnreachNlri(new MpUnreachNlriBuilder()
+                                    .setAfi(key.getAfi())
+                                    .setSafi(key.getSafi())
+                                    .build())
+                                .build())
+                            .build())
+                        .build();
     }
 
     /**
diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsRegistryImpl.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/CodecsRegistryImpl.java
deleted file mode 100644 (file)
index fefa55b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.protocol.bgp.rib.impl;
-
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
-import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
-import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
-import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class CodecsRegistryImpl implements CodecsRegistry {
-
-    private static final Logger LOG = LoggerFactory.getLogger(CodecsRegistryImpl.class);
-
-    private final LoadingCache<RIBSupport<?, ?, ?, ?>, Codecs> contexts = CacheBuilder.newBuilder()
-        .build(new CacheLoader<RIBSupport<?, ?, ?, ?>, Codecs>() {
-            @Override
-            public Codecs load(final RIBSupport<?, ?, ?, ?> key) {
-                return createContext(key);
-            }
-        });
-    private final BindingCodecTreeFactory codecFactory;
-    private final GeneratedClassLoadingStrategy classContext;
-    private volatile BindingCodecTree latestCodecTree;
-
-    private CodecsRegistryImpl(final BindingCodecTreeFactory codecFactory,
-            final GeneratedClassLoadingStrategy strategy) {
-        this.codecFactory = requireNonNull(codecFactory);
-        this.classContext = requireNonNull(strategy);
-    }
-
-    public static CodecsRegistryImpl create(final BindingCodecTreeFactory codecFactory,
-            final GeneratedClassLoadingStrategy classStrategy) {
-        return new CodecsRegistryImpl(codecFactory, classStrategy);
-    }
-
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-            justification = "https://github.com/spotbugs/spotbugs/issues/811")
-    private Codecs createContext(final RIBSupport<?, ?, ?, ?> ribSupport) {
-        final Codecs codecs = new CodecsImpl(ribSupport);
-        if (this.latestCodecTree != null) {
-            // FIXME: Do we need to recalculate latestCodecTree? E.g. new rib support was added
-            // after bgp was started.
-            codecs.onCodecTreeUpdated(this.latestCodecTree);
-        }
-        return codecs;
-    }
-
-    @SuppressWarnings("checkstyle:illegalCatch")
-    void onSchemaContextUpdated(final SchemaContext context) {
-        final BindingRuntimeContext runtimeContext = BindingRuntimeContext.create(this.classContext, context);
-        this.latestCodecTree  = this.codecFactory.create(runtimeContext);
-        for (final Codecs codecs : this.contexts.asMap().values()) {
-            try {
-                codecs.onCodecTreeUpdated(this.latestCodecTree);
-            } catch (final Exception e) {
-                LOG.error("Failed to propagate SchemaContext to codec {}", codecs, e);
-            }
-        }
-    }
-
-    @Override
-    public Codecs getCodecs(final RIBSupport<?, ?, ?, ?> ribSupport) {
-        return this.contexts.getUnchecked(ribSupport);
-    }
-}
diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ConstantCodecsRegistry.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/ConstantCodecsRegistry.java
new file mode 100644 (file)
index 0000000..bc6ca13
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.rib.impl;
+
+import static java.util.Objects.requireNonNull;
+
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
+import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
+import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
+
+@Singleton
+public final class ConstantCodecsRegistry implements CodecsRegistry {
+    private final ConcurrentMap<RIBSupport<?, ?, ?, ?>, Codecs> contexts = new ConcurrentHashMap<>();
+    private final BindingCodecTree codecTree;
+
+    @Inject
+    public ConstantCodecsRegistry(final BindingCodecTree codecTree) {
+        this.codecTree = requireNonNull(codecTree);
+    }
+
+    @Override
+    public Codecs getCodecs(final RIBSupport<?, ?, ?, ?> ribSupport) {
+        return contexts.computeIfAbsent(ribSupport, this::createCodecs);
+    }
+
+    private Codecs createCodecs(final RIBSupport<?, ?, ?, ?> key) {
+        final Codecs codecs = new CodecsImpl(key);
+        codecs.onCodecTreeUpdated(codecTree);
+        return codecs;
+    }
+}
diff --git a/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/OSGiCodecsRegistry.java b/bgp/rib-impl/src/main/java/org/opendaylight/protocol/bgp/rib/impl/OSGiCodecsRegistry.java
new file mode 100644 (file)
index 0000000..a72bac2
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.protocol.bgp.rib.impl;
+
+import static java.util.Objects.requireNonNull;
+
+import com.google.common.annotations.Beta;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
+import org.opendaylight.protocol.bgp.rib.impl.spi.Codecs;
+import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
+import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
+import org.osgi.service.component.annotations.Activate;
+import org.osgi.service.component.annotations.Component;
+import org.osgi.service.component.annotations.Deactivate;
+import org.osgi.service.component.annotations.Reference;
+import org.osgi.service.component.annotations.ReferencePolicy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Beta
+@Component(immediate = true)
+public final class OSGiCodecsRegistry implements CodecsRegistry {
+    private static final Logger LOG = LoggerFactory.getLogger(OSGiCodecsRegistry.class);
+
+    private final ConcurrentMap<RIBSupport<?, ?, ?, ?>, Codecs> contexts = new ConcurrentHashMap<>();
+    private volatile BindingCodecTree codecTree;
+
+    @Override
+    public Codecs getCodecs(final RIBSupport<?, ?, ?, ?> ribSupport) {
+        return contexts.computeIfAbsent(ribSupport, this::createCodecs);
+    }
+
+    @Reference(policy = ReferencePolicy.DYNAMIC)
+    void bindCodecTree(final BindingCodecTree newCodecTree) {
+        this.codecTree = requireNonNull(newCodecTree);
+    }
+
+    void unbindCodecTree(final BindingCodecTree unused) {
+        this.codecTree = null;
+    }
+
+    void updatedCodecTree(final BindingCodecTree newCodecTree) {
+        this.codecTree = requireNonNull(newCodecTree);
+        contexts.values().forEach(codecs -> codecs.onCodecTreeUpdated(newCodecTree));
+    }
+
+    @Activate
+    @SuppressWarnings("static-method")
+    void activate() {
+        LOG.info("BGP codec registry started");
+    }
+
+    @Deactivate
+    void deactivate() {
+        contexts.clear();
+        LOG.info("BGP codec registry stopped");
+    }
+
+    private Codecs createCodecs(final RIBSupport<?, ?, ?, ?> key) {
+        final Codecs codecs = new CodecsImpl(key);
+        codecs.onCodecTreeUpdated(codecTree);
+        return codecs;
+    }
+}
index 43945412c88180048ed7d73a45863c2904dee6ba..41c45994b03a696d71fbd932ed35a625d0abe7b5 100644 (file)
@@ -79,14 +79,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 // This class is thread-safe
 public final class RIBImpl extends BGPRibStateImpl implements RIB, TransactionChainListener,
-        DOMTransactionChainListener, SchemaContextListener, AutoCloseable {
+        DOMTransactionChainListener, AutoCloseable {
     private static final Logger LOG = LoggerFactory.getLogger(RIBImpl.class);
     private static final QName RIB_ID_QNAME = QName.create(Rib.QNAME, "id").intern();
 
@@ -100,7 +98,7 @@ public final class RIBImpl extends BGPRibStateImpl implements RIB, TransactionCh
     private final RIBExtensionConsumerContext extensions;
     private final YangInstanceIdentifier yangRibId;
     private final RIBSupportContextRegistryImpl ribContextRegistry;
-    private final CodecsRegistryImpl codecsRegistry;
+    private final CodecsRegistry codecsRegistry;
     private final BGPTableTypeRegistryConsumer tableTypeRegistry;
     private final DOMDataBrokerExtension domService;
     private final Map<TransactionChain, LocRibWriter> txChainToLocRibWriter = new HashMap<>();
@@ -123,7 +121,7 @@ public final class RIBImpl extends BGPRibStateImpl implements RIB, TransactionCh
             final BgpId localBgpId,
             final RIBExtensionConsumerContext extensions,
             final BGPDispatcher dispatcher,
-            final CodecsRegistryImpl codecsRegistry,
+            final CodecsRegistry codecsRegistry,
             final DOMDataBroker domDataBroker,
             final DataBroker dataBroker,
             final BGPRibRoutingPolicy ribPolicies,
@@ -335,11 +333,6 @@ public final class RIBImpl extends BGPRibStateImpl implements RIB, TransactionCh
         return this.ribContextRegistry;
     }
 
-    @Override
-    public void onGlobalContextUpdated(final SchemaContext context) {
-        this.codecsRegistry.onSchemaContextUpdated(context);
-    }
-
     @Override
     public CodecsRegistry getCodecsRegistry() {
         return this.codecsRegistry;
index 22a9daadd6fef2d40aab7cca7cd6ffa7c2b08916..47b9848b88eee4baf79739e764fc373a332f08e0 100644 (file)
@@ -209,7 +209,7 @@ public final class BgpDeployerImpl implements ClusteredDataTreeChangeListener<Bg
         if (extPeerGroups == null) {
             return;
         }
-        for (final PeerGroup peerGroup : extPeerGroups.getPeerGroup()) {
+        for (final PeerGroup peerGroup : extPeerGroups.nonnullPeerGroup().values()) {
             this.bgpCss.values().forEach(css -> css.restartNeighbors(peerGroup.getPeerGroupName()));
         }
     }
index 95e4ed1c9c8c2f557916cfec5cd4988f0b7a4f3f..5bf5a1cc1250c33b1e2e141731454ee26802e3b6 100644 (file)
@@ -16,6 +16,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import io.netty.util.concurrent.Future;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
@@ -99,9 +100,9 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
         caps.add(new OptionalCapabilitiesBuilder()
                 .setCParameters(MultiprotocolCapabilitiesUtil.RR_CAPABILITY).build());
 
-        final List<AfiSafi> afiSafi = OpenConfigMappingUtil.getAfiSafiWithDefault(afiSafis, false);
-        final List<AddressFamilies> addPathCapability = OpenConfigMappingUtil
-                .toAddPathCapability(afiSafi, tableTypeRegistry);
+        final Collection<AfiSafi> afiSafi = OpenConfigMappingUtil.getAfiSafiWithDefault(afiSafis, false).values();
+        final List<AddressFamilies> addPathCapability = OpenConfigMappingUtil.toAddPathCapability(afiSafi,
+            tableTypeRegistry);
         if (!addPathCapability.isEmpty()) {
             caps.add(new OptionalCapabilitiesBuilder()
                     .setCParameters(new CParametersBuilder().addAugmentation(CParameters1.class,
@@ -189,8 +190,10 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
         }
         final AfiSafis actAfiSafi = this.currentConfiguration.getAfiSafis();
         final AfiSafis extAfiSafi = neighbor.getAfiSafis();
-        final List<AfiSafi> actualSafi = actAfiSafi != null ? actAfiSafi.getAfiSafi() : Collections.emptyList();
-        final List<AfiSafi> extSafi = extAfiSafi != null ? extAfiSafi.getAfiSafi() : Collections.emptyList();
+        final Collection<AfiSafi> actualSafi = actAfiSafi != null ? actAfiSafi.nonnullAfiSafi().values()
+                : Collections.emptyList();
+        final Collection<AfiSafi> extSafi = extAfiSafi != null ? extAfiSafi.nonnullAfiSafi().values()
+                : Collections.emptyList();
         return actualSafi.containsAll(extSafi) && extSafi.containsAll(actualSafi)
                 && Objects.equals(this.currentConfiguration.getConfig(), neighbor.getConfig())
                 && Objects.equals(this.currentConfiguration.getNeighborAddress(), neighbor.getNeighborAddress())
@@ -264,8 +267,8 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
                 afisSafis = requireNonNull(neighbor.getAfiSafis(), "Missing mandatory AFIs/SAFIs");
             }
 
-            final Set<TablesKey> afiSafisAdvertized = OpenConfigMappingUtil
-                    .toTableKey(afisSafis.getAfiSafi(), tableTypeRegistry);
+            final Set<TablesKey> afiSafisAdvertized = OpenConfigMappingUtil.toTableKey(afisSafis.getAfiSafi(),
+                tableTypeRegistry);
             final PeerRole role = OpenConfigMappingUtil.toPeerRole(neighbor, peerGroup);
 
             final ClusterIdentifier clusterId = OpenConfigMappingUtil
@@ -273,10 +276,10 @@ public class BgpPeer implements PeerBean, BGPPeerStateConsumer {
             final int hold = OpenConfigMappingUtil.getHoldTimer(neighbor, peerGroup);
             this.gracefulRestartTimer = OpenConfigMappingUtil.getGracefulRestartTimer(neighbor,
                     peerGroup, hold);
-            final Set<TablesKey> gracefulTables = GracefulRestartUtil.getGracefulTables(afisSafis.getAfiSafi(),
-                    tableTypeRegistry);
-            final Map<TablesKey, Integer> llGracefulTimers = GracefulRestartUtil
-                    .getLlGracefulTimers(afisSafis.getAfiSafi(), tableTypeRegistry);
+            final Set<TablesKey> gracefulTables = GracefulRestartUtil.getGracefulTables(
+                afisSafis.nonnullAfiSafi().values(), tableTypeRegistry);
+            final Map<TablesKey, Integer> llGracefulTimers = GracefulRestartUtil.getLlGracefulTimers(
+                afisSafis.nonnullAfiSafi().values(), tableTypeRegistry);
             this.finalCapabilities = getBgpCapabilities(afisSafis, rib, tableTypeRegistry);
             final List<BgpParameters> bgpParameters = getInitialBgpParameters(gracefulTables, llGracefulTimers);
             final KeyMapping keyMapping = OpenConfigMappingUtil.getNeighborKey(neighbor);
index ab5ffee015fab09a07d2206f15a1d806ccb840e1..ef10ef8294a08db9ed46dd6490b51d4015395283 100644 (file)
@@ -12,12 +12,14 @@ import static org.opendaylight.protocol.bgp.parser.GracefulRestartUtil.gracefulR
 
 import com.google.common.collect.Maps;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 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;
@@ -42,6 +44,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 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.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.uint24.rev200104.Uint24;
+import org.opendaylight.yangtools.yang.binding.Identifiable;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -69,7 +72,7 @@ public final class GracefulRestartUtil {
                 final TablesKey key = entry.getKey();
                 return gracefulRestartTable(key.getAfi(), key.getSafi(), entry.getValue());
             })
-            .collect(Collectors.toList()), restartTime, localRestarting);
+            .collect(Collectors.toMap(Identifiable::key, Function.identity())), restartTime, localRestarting);
     }
 
     public static CParameters getLlGracefulCapability(final Set<BgpPeerUtil.LlGracefulRestartDTO> llGracefulRestarts) {
@@ -88,19 +91,21 @@ public final class GracefulRestartUtil {
                         .build()).build()).build();
     }
 
-    static Set<TablesKey> getGracefulTables(final List<AfiSafi> afiSafis,
+    static Set<TablesKey> getGracefulTables(final Collection<? extends AfiSafi> afiSafis,
                                             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         Set<TablesKey> gracefulTables = new HashSet<>();
         for (final AfiSafi afiSafi : afiSafis) {
-            if (afiSafi.getGracefulRestart() != null
-                    && afiSafi.getGracefulRestart().getConfig() != null
-                    && afiSafi.getGracefulRestart().getConfig().isEnabled()) {
-                final Class<? extends AfiSafiType> afiSafiName = afiSafi.getAfiSafiName();
-                if (afiSafiName != null) {
-                    final Optional<TablesKey> tableKey = tableTypeRegistry.getTableKey(afiSafiName);
-                    if (tableKey.isPresent()) {
-                        final TablesKey tablesKey = tableKey.get();
-                        gracefulTables.add(tablesKey);
+            final GracefulRestart gr = afiSafi.getGracefulRestart();
+            if (gr != null) {
+                final Config config = gr.getConfig();
+                if (config != null && Boolean.TRUE.equals(config.isEnabled())) {
+                    final Class<? extends AfiSafiType> afiSafiName = afiSafi.getAfiSafiName();
+                    if (afiSafiName != null) {
+                        final Optional<TablesKey> tableKey = tableTypeRegistry.getTableKey(afiSafiName);
+                        if (tableKey.isPresent()) {
+                            final TablesKey tablesKey = tableKey.get();
+                            gracefulTables.add(tablesKey);
+                        }
                     }
                 }
             }
@@ -108,7 +113,7 @@ public final class GracefulRestartUtil {
         return gracefulTables;
     }
 
-    static Map<TablesKey, Integer> getLlGracefulTimers(final List<AfiSafi> afiSafis,
+    static Map<TablesKey, Integer> getLlGracefulTimers(final Collection<? extends AfiSafi> afiSafis,
                                                        final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final Map<TablesKey, Integer> timers = new HashMap<>();
         afiSafis.forEach(afiSafi -> {
index 1f2326b7b2ddcd7b02556b31464deae3419626bd..6503f6a9b07dae160423bbaaf694d54b51c44ce9 100644 (file)
@@ -10,14 +10,17 @@ 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.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Maps;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
@@ -32,6 +35,7 @@ import org.opendaylight.protocol.util.Ipv4Util;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.BgpCommonAfiSafiList;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiKey;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.BgpNeighborAddPathsConfig;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.BgpNeighborGroup;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.BgpNeighborTransportConfig;
@@ -70,7 +74,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.open
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.PeerRole;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.ClusterIdentifier;
-import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.Uint16;
 
@@ -79,7 +82,7 @@ final class OpenConfigMappingUtil {
     static final Optional<String> APPLICATION_PEER_GROUP_NAME_OPT = Optional.of(APPLICATION_PEER_GROUP_NAME);
     static final int HOLDTIMER = 90;
     private static final AfiSafi IPV4_AFISAFI = new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build();
-    private static final List<AfiSafi> DEFAULT_AFISAFI = ImmutableList.of(IPV4_AFISAFI);
+    private static final Map<AfiSafiKey, AfiSafi> DEFAULT_AFISAFI = ImmutableMap.of(IPV4_AFISAFI.key(), IPV4_AFISAFI);
     private static final int CONNECT_RETRY = 30;
     private static final PortNumber PORT = new PortNumber(Uint16.valueOf(179).intern());
 
@@ -125,21 +128,17 @@ final class OpenConfigMappingUtil {
     }
 
     //make sure IPv4 Unicast (RFC 4271) when required
-    static List<AfiSafi> getAfiSafiWithDefault(
+    static Map<AfiSafiKey, AfiSafi> getAfiSafiWithDefault(
             final BgpCommonAfiSafiList afiSAfis, final boolean setDeafultIPv4) {
         if (afiSAfis == null || afiSAfis.getAfiSafi() == null) {
-            return setDeafultIPv4 ? DEFAULT_AFISAFI : Collections.emptyList();
-        }
-        final List<AfiSafi> afiSafi = afiSAfis.getAfiSafi();
-        if (setDeafultIPv4) {
-            final boolean anyMatch = afiSafi.stream()
-                    .anyMatch(input -> input.getAfiSafiName().equals(IPV4UNICAST.class));
-            if (!anyMatch) {
-                final List<AfiSafi> newAfiSafi = new ArrayList<>(afiSafi.size() + 1);
-                newAfiSafi.addAll(afiSafi);
-                newAfiSafi.add(IPV4_AFISAFI);
-                return newAfiSafi;
-            }
+            return setDeafultIPv4 ? DEFAULT_AFISAFI : Collections.emptyMap();
+        }
+        final Map<AfiSafiKey, AfiSafi> afiSafi = afiSAfis.nonnullAfiSafi();
+        if (setDeafultIPv4 && !afiSafi.containsKey(IPV4_AFISAFI.key())) {
+            final Map<AfiSafiKey, AfiSafi> newAfiSafi = Maps.newHashMapWithExpectedSize(afiSafi.size() + 1);
+            newAfiSafi.putAll(afiSafi);
+            newAfiSafi.put(IPV4_AFISAFI.key(), IPV4_AFISAFI);
+            return newAfiSafi;
         }
         return afiSafi;
     }
@@ -181,7 +180,7 @@ final class OpenConfigMappingUtil {
         return null;
     }
 
-    static Map<BgpTableType, PathSelectionMode> toPathSelectionMode(final List<AfiSafi> afiSafis,
+    static Map<BgpTableType, PathSelectionMode> toPathSelectionMode(final Collection<AfiSafi> afiSafis,
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final Map<BgpTableType, PathSelectionMode> pathSelectionModes = new HashMap<>();
         for (final AfiSafi afiSafi : afiSafis) {
@@ -216,7 +215,7 @@ final class OpenConfigMappingUtil {
         return false;
     }
 
-    static List<AddressFamilies> toAddPathCapability(final List<AfiSafi> afiSafis,
+    static List<AddressFamilies> toAddPathCapability(final Collection<AfiSafi> afiSafis,
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final List<AddressFamilies> addPathCapability = new ArrayList<>();
         for (final AfiSafi afiSafi : afiSafis) {
@@ -249,7 +248,7 @@ final class OpenConfigMappingUtil {
         return false;
     }
 
-    static List<BgpTableType> toTableTypes(final List<AfiSafi> afiSafis,
+    static List<BgpTableType> toTableTypes(final Collection<AfiSafi> afiSafis,
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         return afiSafis.stream()
                 .map(afiSafi -> tableTypeRegistry.getTableType(afiSafi.getAfiSafiName()))
@@ -258,9 +257,9 @@ final class OpenConfigMappingUtil {
                 .collect(Collectors.toList());
     }
 
-    static Set<TablesKey> toTableKey(final List<AfiSafi> afiSafis, final BGPTableTypeRegistryConsumer
+    static Set<TablesKey> toTableKey(final Map<AfiSafiKey, AfiSafi> afiSafis, final BGPTableTypeRegistryConsumer
             tableTypeRegistry) {
-        return afiSafis.stream()
+        return afiSafis.values().stream()
                 .map(afiSafi -> tableTypeRegistry.getTableKey(afiSafi.getAfiSafiName()))
                 .filter(Optional::isPresent)
                 .map(Optional::get)
@@ -442,11 +441,11 @@ final class OpenConfigMappingUtil {
     static @NonNull PortNumber getPort(final Neighbor neighbor, final PeerGroup peerGroup) {
         PortNumber port = null;
         if (peerGroup != null) {
-            port = getPort(peerGroup.getTransport(), PeerGroupTransportConfig.class);
+            port = getPort(peerGroup.getTransport(), config -> config.augmentation(PeerGroupTransportConfig.class));
         }
 
         if (port == null) {
-            port = getPort(neighbor.getTransport(), NeighborTransportConfig.class);
+            port = getPort(neighbor.getTransport(), config -> config.augmentation(NeighborTransportConfig.class));
         }
 
         if (port == null) {
@@ -456,12 +455,12 @@ final class OpenConfigMappingUtil {
         return port;
     }
 
-    private static <T extends TransportConfig & Augmentation<Config>> @Nullable PortNumber getPort(
-            final @Nullable Transport transport, final Class<T> augment) {
+    private static @Nullable PortNumber getPort(final @Nullable Transport transport,
+            final Function<Config, TransportConfig> extractConfig) {
         if (transport != null) {
             final Config config = transport.getConfig();
             if (config != null) {
-                final T peerTc = config.augmentation(augment);
+                final TransportConfig peerTc = extractConfig.apply(config);
                 if (peerTc != null) {
                     return peerTc.getRemotePort();
                 }
index d94427cf2a2e7425d1732aa2d01bd395ceba20c5..934271c525fa3f01c77570df591f312d39651a4f 100644 (file)
@@ -13,24 +13,21 @@ import static org.opendaylight.protocol.bgp.rib.impl.config.OpenConfigMappingUti
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
-import java.util.List;
+import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.TransactionChain;
 import org.opendaylight.mdsal.binding.api.TransactionChainListener;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
 import org.opendaylight.protocol.bgp.mode.api.PathSelectionMode;
 import org.opendaylight.protocol.bgp.openconfig.routing.policy.spi.BGPRibRoutingPolicyFactory;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
-import org.opendaylight.protocol.bgp.rib.impl.CodecsRegistryImpl;
 import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
 import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
@@ -56,10 +53,8 @@ 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.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.BgpId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.ClusterIdentifier;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
 import org.osgi.framework.ServiceRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -70,14 +65,12 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
 
     private final RIBExtensionConsumerContext extensions;
     private final BGPDispatcher dispatcher;
-    private final BindingCodecTreeFactory codecTreeFactory;
+    private final CodecsRegistry codecsRegistry;
     private final DOMDataBroker domBroker;
-    private final DOMSchemaService domSchemaService;
     private final BGPRibRoutingPolicyFactory policyProvider;
     private RIBImpl ribImpl;
     private ServiceRegistration<?> serviceRegistration;
-    private ListenerRegistration<SchemaContextListener> schemaContextRegistration;
-    private List<AfiSafi> afiSafi;
+    private Collection<AfiSafi> afiSafi;
     private AsNumber asNumber;
     private Ipv4AddressNoZone routerId;
 
@@ -88,17 +81,15 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
             final RIBExtensionConsumerContext contextProvider,
             final BGPDispatcher dispatcher,
             final BGPRibRoutingPolicyFactory policyProvider,
-            final BindingCodecTreeFactory codecTreeFactory,
+            final CodecsRegistry codecsRegistry,
             final DOMDataBroker domBroker,
-            final DataBroker dataBroker,
-            final DOMSchemaService domSchemaService
+            final DataBroker dataBroker
     ) {
         this.extensions = contextProvider;
         this.dispatcher = dispatcher;
-        this.codecTreeFactory = codecTreeFactory;
+        this.codecsRegistry = codecsRegistry;
         this.domBroker = domBroker;
         this.dataBroker = dataBroker;
-        this.domSchemaService = domSchemaService;
         this.policyProvider = policyProvider;
     }
 
@@ -106,11 +97,10 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
         Preconditions.checkState(this.ribImpl == null,
                 "Previous instance %s was not closed.", this);
         this.ribImpl = createRib(global, instanceName, tableTypeRegistry);
-        this.schemaContextRegistration = this.domSchemaService.registerSchemaContextListener(this.ribImpl);
     }
 
     Boolean isGlobalEqual(final Global global) {
-        final List<AfiSafi> globalAfiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true);
+        final Collection<AfiSafi> globalAfiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true).values();
         final Config globalConfig = global.getConfig();
         final AsNumber globalAs = globalConfig.getAs();
         final Ipv4Address globalRouterId = global.getConfig().getRouterId();
@@ -199,10 +189,6 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
             this.ribImpl.close();
             this.ribImpl = null;
         }
-        if (this.schemaContextRegistration != null) {
-            this.schemaContextRegistration.close();
-            this.schemaContextRegistration = null;
-        }
         if (this.serviceRegistration != null) {
             try {
                 this.serviceRegistration.unregister();
@@ -246,7 +232,7 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
             final Global global,
             final String bgpInstanceName,
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
-        this.afiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true);
+        this.afiSafi = getAfiSafiWithDefault(global.getAfiSafis(), true).values();
         final Config globalConfig = global.getConfig();
         this.asNumber = globalConfig.getAs();
         this.routerId = IetfInetUtil.INSTANCE.ipv4AddressNoZoneFor(globalConfig.getRouterId());
@@ -259,8 +245,6 @@ public final class RibImpl implements RIB, BGPRibStateConsumer, AutoCloseable {
 
         final BGPRibRoutingPolicy ribPolicy = this.policyProvider.buildBGPRibPolicy(this.asNumber.getValue().toJava(),
                 this.routerId, this.clusterId, RoutingPolicyUtil.getApplyPolicy(global.getApplyPolicy()));
-        final CodecsRegistryImpl codecsRegistry = CodecsRegistryImpl.create(codecTreeFactory,
-                this.extensions.getClassLoadingStrategy());
 
         return new RIBImpl(
                 tableTypeRegistry,
index 9fffe935a6333195ad97391e59e65f3c927c56af..187c7b6e26e8f94467c61a0a2fed15cf07e35ca0 100644 (file)
@@ -78,9 +78,9 @@ public final class BGPSessionStateImpl implements BGPSessionState, BGPTimersStat
     @Override
     public synchronized void advertizeCapabilities(final int newHoldTimerValue, final SocketAddress newRemoteAddress,
         final SocketAddress localAddress, final Set<BgpTableType> tableTypes, final List<BgpParameters> bgpParameters) {
-        if (bgpParameters != null && !bgpParameters.isEmpty()) {
+        if (bgpParameters != null) {
             for (final BgpParameters parameters : bgpParameters) {
-                for (final OptionalCapabilities optionalCapabilities : parameters.getOptionalCapabilities()) {
+                for (final OptionalCapabilities optionalCapabilities : parameters.nonnullOptionalCapabilities()) {
                     final CParameters cParam = optionalCapabilities.getCParameters();
                     final CParameters1 capabilities = cParam.augmentation(CParameters1.class);
                     if (capabilities != null) {
index 3359cbbbf0f2a0ccb6f4643060375a38e586e6b4..9b2c108a0f842141963c6d3013cbc4f393922700 100644 (file)
@@ -56,6 +56,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.ipv4.prefixes.destination.ipv4.Ipv4PrefixesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.ipv4.routes.Ipv4Routes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.ipv4.routes.ipv4.routes.Ipv4Route;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.ipv4.routes.ipv4.routes.Ipv4RouteKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev180329.update.attributes.mp.reach.nlri.advertized.routes.destination.type.DestinationIpv4CaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.NotifyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Open;
@@ -135,7 +136,7 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
     private NioEventLoopGroup boss;
     private org.opendaylight.protocol.bgp.inet.BGPActivator inetActivator;
     protected StrictBGPPeerRegistry serverRegistry;
-    protected CodecsRegistryImpl codecsRegistry;
+    protected ConstantCodecsRegistry codecsRegistry;
 
     private List<BGPDispatcherImpl> clientDispatchers;
 
@@ -146,7 +147,7 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
         this.ribActivator = new RIBActivator();
         this.ribExtension = new SimpleRIBExtensionProviderContext();
 
-        this.ribActivator.startRIBExtensionProvider(this.ribExtension, this.mappingService);
+        this.ribActivator.startRIBExtensionProvider(this.ribExtension, this.mappingService.currentSerializer());
 
         this.bgpActivator = new BGPActivator();
         this.inetActivator = new org.opendaylight.protocol.bgp.inet.BGPActivator();
@@ -163,8 +164,7 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
         doReturn(Mockito.mock(ClusterSingletonServiceRegistration.class)).when(this.clusterSingletonServiceProvider)
             .registerClusterSingletonService(any(ClusterSingletonService.class));
 
-        this.codecsRegistry = CodecsRegistryImpl.create(this.mappingService.getCodecFactory(),
-                this.ribExtension.getClassLoadingStrategy());
+        this.codecsRegistry = new ConstantCodecsRegistry(mappingService.currentSerializer());
         this.clientDispatchers = new ArrayList<>();
     }
 
@@ -176,7 +176,6 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
             this.worker.shutdownGracefully(0, 0, TimeUnit.SECONDS);
             this.boss.shutdownGracefully(0, 0, TimeUnit.SECONDS);
         }
-        this.mappingService.close();
         this.ribActivator.close();
         this.inetActivator.close();
         this.bgpActivator.close();
@@ -213,13 +212,13 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
         // FIXME: remove this sleep
         Thread.sleep(100);
         readDataOperational(getDataBroker(), BGP_IID, bgpRib -> {
-            final Ipv4RoutesCase routes = (Ipv4RoutesCase) bgpRib.getRib().get(0).getLocRib().getTables().get(0)
-                .getRoutes();
+            final Ipv4RoutesCase routes = (Ipv4RoutesCase) bgpRib.getRib().values().iterator().next().getLocRib()
+                    .getTables().values().iterator().next().getRoutes();
             final int size;
             if (routes != null) {
                 final Ipv4Routes routesCase = routes.getIpv4Routes();
                 if (routesCase != null) {
-                    final List<Ipv4Route> routeList = routesCase.getIpv4Route();
+                    final Map<Ipv4RouteKey, Ipv4Route> routeList = routesCase.getIpv4Route();
                     size = routeList == null ? 0 : routeList.size();
                 } else {
                     size = 0;
@@ -235,7 +234,7 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
 
     void checkPeersPresentOnDataStore(final int numberOfPeers) throws Exception {
         readDataOperational(getDataBroker(), BGP_IID, bgpRib -> {
-            Assert.assertEquals(numberOfPeers, bgpRib.getRib().get(0).getPeer().size());
+            Assert.assertEquals(numberOfPeers, bgpRib.getRib().values().iterator().next().getPeer().size());
             return bgpRib;
         });
     }
index 41269a014acb0880bf6799b2c4166dcdd534ec51..1eb44500d45599d1bea940e1dceac85f56a3292b 100644 (file)
@@ -31,12 +31,7 @@ import org.mockito.MockitoAnnotations;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.binding.api.TransactionChain;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
-import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
+import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.ClusteredDOMDataTreeChangeListener;
@@ -53,7 +48,6 @@ import org.opendaylight.protocol.bgp.mode.impl.base.BasePathSelectionModeFactory
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
-import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext;
 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.Ipv4Prefix;
@@ -86,7 +80,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
 
@@ -97,9 +90,7 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
     static final QName PREFIX_QNAME = QName.create(Ipv4Route.QNAME, "prefix").intern();
     private static final BgpId RIB_ID = new BgpId("127.0.0.1");
     private RIBImpl rib;
-    private BindingCodecTreeFactory codecFactory;
     private RIBActivator a1;
-    private RIBSupport<?, ?, ?, ?> ribSupport;
     @Mock
     private BGPDispatcher dispatcher;
 
@@ -127,12 +118,6 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
     @Mock
     private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
 
-    private static ModuleInfoBackedContext createClassLoadingStrategy() throws Exception {
-        final ModuleInfoBackedContext ctx = ModuleInfoBackedContext.create();
-        ctx.registerModuleInfo(BindingReflections.getModuleInfo(Ipv4Route.class));
-        return ctx;
-    }
-
     @Override
     @Before
     public void setUp() throws Exception {
@@ -142,29 +127,21 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
 
     public void mockRib() throws Exception {
         final RIBExtensionProviderContext context = new SimpleRIBExtensionProviderContext();
-        final ModuleInfoBackedContext strategy = createClassLoadingStrategy();
-        final SchemaContext schemaContext = strategy.tryToCreateSchemaContext().get();
-        this.codecFactory = new BindingNormalizedNodeCodecRegistry(
-            BindingRuntimeContext.create(strategy, schemaContext));
         final List<BgpTableType> localTables = new ArrayList<>();
         localTables.add(new BgpTableTypeImpl(IPV4_AFI, SAFI));
         localTables.add(new BgpTableTypeImpl(IPV6_AFI, SAFI));
 
+        final CurrentAdapterSerializer serializer = mappingService.currentSerializer();
         this.a1 = new RIBActivator();
-        this.a1.startRIBExtensionProvider(context, this.mappingService);
-
-        final CodecsRegistryImpl codecsRegistry = CodecsRegistryImpl.create(this.codecFactory,
-                GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy());
+        this.a1.startRIBExtensionProvider(context, serializer);
 
         mockedMethods();
         doReturn(mock(ClusterSingletonServiceRegistration.class)).when(this.clusterSingletonServiceProvider)
                 .registerClusterSingletonService(any(ClusterSingletonService.class));
         this.rib = new RIBImpl(this.tableRegistry, new RibId("test"), new AsNumber(Uint32.valueOf(5)), RIB_ID, context,
-                this.dispatcher, codecsRegistry, this.dom, getDataBroker(), this.policies,
+                this.dispatcher, new ConstantCodecsRegistry(serializer), this.dom, getDataBroker(), this.policies,
                 localTables, Collections.singletonMap(KEY,
                 BasePathSelectionModeFactory.createBestPathSelectionStrategy()));
-        this.rib.onGlobalContextUpdated(schemaContext);
-        this.ribSupport = getRib().getRibSupportContext().getRIBSupport(KEY);
     }
 
     @SuppressWarnings("unchecked")
@@ -194,8 +171,8 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
         doReturn(Optional.empty()).when(this.future).get();
         doReturn(this.future).when(this.domTransWrite).commit();
         doNothing().when(this.future).addListener(any(Runnable.class), any(Executor.class));
-        doNothing().when(this.transWrite).put(eq(LogicalDatastoreType.OPERATIONAL),
-                any(InstanceIdentifier.class), any(DataObject.class), eq(true));
+        doNothing().when(this.transWrite).mergeParentStructurePut(eq(LogicalDatastoreType.OPERATIONAL),
+                any(InstanceIdentifier.class), any(DataObject.class));
         doNothing().when(this.transWrite).put(eq(LogicalDatastoreType.OPERATIONAL),
                 any(InstanceIdentifier.class), any(DataObject.class));
         doReturn(this.future).when(this.transWrite).commit();
index b441dfe96fa87bcc823d6aaec920f45158b5b126..200dd45a84d627bf7a861552650a6c20286fa54c 100644 (file)
@@ -60,7 +60,6 @@ public class AddPathAllPathsTest extends AbstractAddPathTest {
             getDomBroker(), getDataBroker(), this.policies, TABLES_TYPE, pathTables);
 
         this.ribImpl.instantiateServiceInstance();
-        this.ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         final ChannelFuture channelFuture = this.serverDispatcher.createServer(
             new InetSocketAddress(RIB_ID, PORT.toJava()));
         waitFutureSuccess(channelFuture);
index 9fca78001019ccb380c08ce9b6bb2a276f84e893..d80259d8c4fdea728a471f48d9ce3b79b9334a8e 100644 (file)
@@ -46,7 +46,6 @@ public class AddPathBasePathsTest extends AbstractAddPathTest {
                 this.serverDispatcher, this.codecsRegistry, getDomBroker(), getDataBroker(), this.policies,
                 TABLES_TYPE, pathTables);
         this.ribImpl.instantiateServiceInstance();
-        this.ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         final ChannelFuture channelFuture = this.serverDispatcher.createServer(
             new InetSocketAddress(RIB_ID, PORT.toJava()));
         waitFutureSuccess(channelFuture);
index 4d3df06c8f68ede839007504f94a8b9ede235a35..72ee0d0900aafd9d2339f0bd75c2eb34666471e4 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.bgp.rib.impl;
 
 import static org.junit.Assert.assertEquals;
@@ -47,7 +46,6 @@ public class AddPathNPathsTest extends AbstractAddPathTest {
                 TABLES_TYPE,  pathTables);
 
         this.ribImpl.instantiateServiceInstance();
-        this.ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         final ChannelFuture channelFuture = this.serverDispatcher.createServer(
             new InetSocketAddress(RIB_ID, PORT.toJava()));
         waitFutureSuccess(channelFuture);
index 8bb07efe230cee8fa4be9e04eec1937abb4e6c73..f21e6dfcf870e965a1a662e63ade2076f16a7d1f 100644 (file)
@@ -28,7 +28,6 @@ import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelPipeline;
 import io.netty.channel.EventLoop;
-import io.netty.channel.embedded.EmbeddedChannel;
 import io.netty.util.concurrent.GlobalEventExecutor;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -57,14 +56,12 @@ 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.ProtocolVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Update;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.UpdateBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParametersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
 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.message.rev200120.open.message.bgp.parameters.optional.capabilities.c.parameters.As4BytesCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
 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.GracefulRestartCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.MultiprotocolCapabilityBuilder;
@@ -104,27 +101,25 @@ public class BGPSessionImplTest {
 
     @Before
     public void setUp() throws UnknownHostException {
-        new EmbeddedChannel();
         MockitoAnnotations.initMocks(this);
-        final List<BgpParameters> tlvs = new ArrayList<>();
-        this.classicOpen = new OpenBuilder()
-                .setMyAsNumber(Uint16.valueOf(AS_NUMBER.getValue()))
-                .setHoldTimer(HOLD_TIMER)
-                .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
-                .setBgpParameters(tlvs)
-                .setBgpIdentifier(BGP_ID)
-                .build();
 
         final List<OptionalCapabilities> capa = new ArrayList<>();
         capa.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder()
-            .addAugmentation(CParameters1.class, new CParameters1Builder()
+            .addAugmentation(new CParameters1Builder()
                 .setMultiprotocolCapability(new MultiprotocolCapabilityBuilder()
                     .setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build())
                 .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder().build()).build())
             .setAs4BytesCapability(new As4BytesCapabilityBuilder().setAsNumber(AS_NUMBER).build()).build()).build());
         capa.add(new OptionalCapabilitiesBuilder().setCParameters(BgpExtendedMessageUtil.EXTENDED_MESSAGE_CAPABILITY)
             .build());
-        tlvs.add(new BgpParametersBuilder().setOptionalCapabilities(capa).build());
+
+        this.classicOpen = new OpenBuilder()
+                .setMyAsNumber(Uint16.valueOf(AS_NUMBER.getValue()))
+                .setHoldTimer(HOLD_TIMER)
+                .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
+                .setBgpParameters(List.of(new BgpParametersBuilder().setOptionalCapabilities(capa).build()))
+                .setBgpIdentifier(BGP_ID)
+                .build();
 
         final ChannelFuture f = mock(ChannelFuture.class);
         doReturn(null).when(f).addListener(any());
index fbfc78a9fab0efdf22ca8cb4e8692c1cf3b90c77..ca29446ba6004c9ab94b6a09b40ba9a1ae82e7d5 100644 (file)
@@ -15,10 +15,12 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.Collections;
 import org.junit.Test;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.Update;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.UpdateBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.Attributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.update.message.NlriBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpUnreachNlri;
@@ -69,27 +71,23 @@ public class BgpPeerUtilTest {
                 .build();
         final Update ipv6EOT = new UpdateBuilder()
                 .setAttributes(new AttributesBuilder()
-                        .addAugmentation(Attributes2.class, new Attributes2Builder()
-                                .setMpUnreachNlri(ipv6EOTnlri)
-                                .build())
-                        .build())
+                    .addAugmentation(new Attributes2Builder().setMpUnreachNlri(ipv6EOTnlri).build())
+                    .build())
                 .build();
 
         assertTrue(BgpPeerUtil.isEndOfRib(ipv4EOT));
         assertTrue(BgpPeerUtil.isEndOfRib(ipv6EOT));
 
         final Update ipv4NonEOT = new UpdateBuilder()
-                .setNlri(Collections.emptyList())
+                .setNlri(Collections.singletonList(new NlriBuilder().setPrefix(new Ipv4Prefix("0.0.0.0/32")).build()))
                 .build();
         final MpUnreachNlri ipv6NonEOTnlri = new MpUnreachNlriBuilder(ipv6EOTnlri)
                 .setWithdrawnRoutes(new WithdrawnRoutesBuilder().build())
                 .build();
         final Update ipv6NonEOT = new UpdateBuilder()
                 .setAttributes(new AttributesBuilder()
-                        .addAugmentation(Attributes2.class, new Attributes2Builder()
-                                .setMpUnreachNlri(ipv6NonEOTnlri)
-                                .build())
-                        .build())
+                    .addAugmentation(new Attributes2Builder().setMpUnreachNlri(ipv6NonEOTnlri).build())
+                    .build())
                 .build();
 
         assertFalse(BgpPeerUtil.isEndOfRib(ipv4NonEOT));
index ea0f8d14dde3366a8eacece9040bbdfd76063ef6..73a6ba9d41dcbe03486d1e4e4c09f347c87e3b71 100644 (file)
@@ -113,7 +113,6 @@ public class GracefulRestartTest extends AbstractAddPathTest {
                 getDomBroker(), getDataBroker(), this.policies, tableTypes, pathTables);
 
         this.ribImpl.instantiateServiceInstance();
-        this.ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         final ChannelFuture channelFuture = this.serverDispatcher.createServer(
             new InetSocketAddress(RIB_ID, PORT.toJava()));
         waitFutureSuccess(channelFuture);
index 6b2468827c9bdc466ede3094d655a49b8daab76c..d4022dc1c5e41ff1ebc1bb420bedb630461c74f9 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.protocol.bgp.rib.impl;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -32,7 +32,7 @@ import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
+import org.opendaylight.mdsal.binding.dom.adapter.CurrentAdapterSerializer;
 import org.opendaylight.protocol.bgp.inet.RIBActivator;
 import org.opendaylight.protocol.bgp.mode.impl.base.BasePathSelectionModeFactory;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
@@ -74,7 +74,7 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
     private RIBExtensionProviderContext ext2;
     @Mock
     private BGPDispatcher dispatcher;
-    private CodecsRegistryImpl codecsRegistry;
+    private ConstantCodecsRegistry codecsRegistry;
 
     @Override
     @Before
@@ -95,10 +95,10 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
         this.baseact = new RIBActivator();
         this.lsact = new org.opendaylight.protocol.bgp.linkstate.impl.RIBActivator();
 
-        this.baseact.startRIBExtensionProvider(this.ext1, this.mappingService);
-        this.lsact.startRIBExtensionProvider(this.ext2, this.mappingService);
-        this.codecsRegistry = CodecsRegistryImpl.create(this.bindingCodecTreeFactory,
-                GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy());
+        final CurrentAdapterSerializer serializer = mappingService.currentSerializer();
+        this.baseact.startRIBExtensionProvider(this.ext1, serializer);
+        this.lsact.startRIBExtensionProvider(this.ext2, serializer);
+        this.codecsRegistry = new ConstantCodecsRegistry(serializer);
     }
 
     @Override
@@ -119,7 +119,6 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
                 .createBestPathSelectionStrategy()));
         rib.instantiateServiceInstance();
         assertTablesExists(tables);
-        rib.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         final BGPPeer peer = AbstractAddPathTest.configurePeer(this.tableRegistry,
             this.localAddress.getIpv4AddressNoZone(), rib, null, PeerRole.Ibgp, new StrictBGPPeerRegistry());
         peer.instantiateServiceInstance();
@@ -136,7 +135,6 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
                 tables, Collections.singletonMap(TABLE_KEY,
                 BasePathSelectionModeFactory.createBestPathSelectionStrategy()));
         rib.instantiateServiceInstance();
-        rib.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         assertTablesExists(tables);
         final BGPPeer peer = AbstractAddPathTest.configurePeer(this.tableRegistry,
             this.localAddress.getIpv4AddressNoZone(), rib, null, PeerRole.Ibgp, new StrictBGPPeerRegistry());
@@ -158,12 +156,12 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
     private void assertTablesExists(final List<BgpTableType> expectedTables) throws InterruptedException,
             ExecutionException {
         readDataOperational(getDataBroker(), BGP_IID, bgpRib -> {
-            final List<Tables> tables = bgpRib.getRib().get(0).getLocRib().getTables();
-            assertFalse(tables.isEmpty());
+            final var tables = bgpRib.getRib().values().iterator().next().getLocRib().getTables();
+            assertNotNull(tables);
 
             for (final BgpTableType tableType : expectedTables) {
                 boolean found = false;
-                for (final Tables table : tables) {
+                for (final Tables table : tables.values()) {
                     if (table.getAfi().equals(tableType.getAfi()) && table.getSafi().equals(tableType.getSafi())) {
                         found = true;
                         assertEquals(Boolean.TRUE, table.getAttributes().isUptodate());
index ad96e68e7b89323471746b624daa6f0b2c412c54..a9b0f2835b781083e92add3ca5c3924cb9f61a8b 100644 (file)
@@ -32,7 +32,6 @@ import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelHandler;
 import io.netty.channel.ChannelPipeline;
 import io.netty.channel.EventLoop;
-import io.netty.channel.embedded.EmbeddedChannel;
 import io.netty.util.concurrent.GlobalEventExecutor;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
@@ -66,7 +65,6 @@ 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.OpenBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.ProtocolVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.UpdateBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParameters;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.BgpParametersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilities;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.open.message.bgp.parameters.OptionalCapabilitiesBuilder;
@@ -81,7 +79,6 @@ 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.update.message.Nlri;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.update.message.NlriBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.CParameters1;
 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.GracefulRestartCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.MultiprotocolCapabilityBuilder;
@@ -142,19 +139,10 @@ public class SynchronizationAndExceptionTest extends AbstractAddPathTest {
     @Before
     public void setUp() throws Exception {
         super.setUp();
-        new EmbeddedChannel();
-        final List<BgpParameters> tlvs = new ArrayList<>();
-        this.classicOpen = new OpenBuilder()
-                .setMyAsNumber(Uint16.valueOf(AS_NUMBER.getValue()))
-                .setHoldTimer(Uint16.valueOf(HOLD_TIMER))
-                .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
-                .setBgpParameters(tlvs)
-                .setBgpIdentifier(BGP_ID)
-                .build();
 
         final List<OptionalCapabilities> capa = new ArrayList<>();
         capa.add(new OptionalCapabilitiesBuilder().setCParameters(new CParametersBuilder()
-                .addAugmentation(CParameters1.class, new CParameters1Builder()
+                .addAugmentation(new CParameters1Builder()
                         .setMultiprotocolCapability(new MultiprotocolCapabilityBuilder()
                                 .setAfi(this.ipv4tt.getAfi()).setSafi(this.ipv4tt.getSafi()).build())
                         .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder().setRestartTime(Uint16.ZERO)
@@ -163,7 +151,16 @@ public class SynchronizationAndExceptionTest extends AbstractAddPathTest {
                 .build());
         capa.add(new OptionalCapabilitiesBuilder()
                 .setCParameters(BgpExtendedMessageUtil.EXTENDED_MESSAGE_CAPABILITY).build());
-        tlvs.add(new BgpParametersBuilder().setOptionalCapabilities(capa).build());
+
+        this.classicOpen = new OpenBuilder()
+                .setMyAsNumber(Uint16.valueOf(AS_NUMBER.getValue()))
+                .setHoldTimer(Uint16.valueOf(HOLD_TIMER))
+                .setVersion(new ProtocolVersion(Uint8.valueOf(4)))
+                .setBgpParameters(List.of(new BgpParametersBuilder()
+                    .setOptionalCapabilities(capa)
+                    .build()))
+                .setBgpIdentifier(BGP_ID)
+                .build();
 
         doReturn(null).when(mock(ChannelFuture.class)).addListener(any());
         doReturn(this.eventLoop).when(this.speakerListener).eventLoop();
@@ -220,7 +217,6 @@ public class SynchronizationAndExceptionTest extends AbstractAddPathTest {
                 this.serverDispatcher, this.codecsRegistry, this.domBroker, getDataBroker(), this.policies,
                 ImmutableList.of(this.ipv4tt), pathTables);
         ribImpl.instantiateServiceInstance();
-        ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
 
         final BGPPeer bgpPeer = AbstractAddPathTest.configurePeer(this.tableRegistry, neighbor.getIpv4AddressNoZone(),
             ribImpl, null, PeerRole.Ibgp, this.serverRegistry, AFI_SAFIS_ADVERTIZED, Collections.emptySet());
@@ -269,7 +265,6 @@ public class SynchronizationAndExceptionTest extends AbstractAddPathTest {
                 this.serverDispatcher, this.codecsRegistry, this.domBroker, getDataBroker(), this.policies,
                 ImmutableList.of(this.ipv4tt), pathTables);
         ribImpl.instantiateServiceInstance();
-        ribImpl.onGlobalContextUpdated(this.schemaService.getGlobalContext());
 
         final BGPPeer bgpPeer = AbstractAddPathTest.configurePeer(this.tableRegistry, neighbor.getIpv4AddressNoZone(),
             ribImpl, null, PeerRole.Ibgp, this.serverRegistry, AFI_SAFIS_ADVERTIZED, Collections.emptySet());
index 7a61c5387f491201e15ca73214f69046e443e480..ff38c83b9ff3e33e9b2d1c7168c389a5cc1571ff 100644 (file)
@@ -31,16 +31,14 @@ import org.mockito.Mock;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
 import org.opendaylight.protocol.bgp.openconfig.spi.BGPTableTypeRegistryConsumer;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
 import org.opendaylight.protocol.bgp.rib.impl.DefaultRibPoliciesMockTest;
 import org.opendaylight.protocol.bgp.rib.impl.spi.BGPDispatcher;
+import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
 import org.opendaylight.protocol.bgp.rib.impl.spi.InstanceType;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.top.Bgp;
@@ -57,7 +55,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.NetworkInstanceProtocol;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
 import org.osgi.framework.BundleContext;
@@ -88,8 +85,6 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
     @Mock
     private DataTreeModification<Bgp> modification;
     @Mock
-    private ListenerRegistration<?> dataTreeRegistration;
-    @Mock
     private ServiceRegistration<?> registration;
     @Mock
     private ClusterSingletonServiceProvider singletonServiceProvider;
@@ -109,22 +104,15 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         doReturn(this.registration).when(this.bundleContext).registerService(eq(InstanceType.PEER.getServices()),
                 any(), any(Dictionary.class));
 
-        doNothing().when(this.dataTreeRegistration).close();
         doReturn("bgpPeer").when(this.modification).toString();
         final RIBExtensionConsumerContext extension = mock(RIBExtensionConsumerContext.class);
-        doReturn(GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy()).when(extension).getClassLoadingStrategy();
 
         final ClusterSingletonServiceRegistration serviceRegistration = mock(ClusterSingletonServiceRegistration.class);
         doReturn(serviceRegistration).when(this.singletonServiceProvider).registerClusterSingletonService(any());
         doNothing().when(serviceRegistration).close();
 
-        schemaService = mock(DOMSchemaService.class);
-        doNothing().when(this.dataTreeRegistration).close();
-
-        doReturn(this.dataTreeRegistration).when(schemaService).registerSchemaContextListener(any());
-
         final RibImpl ribImpl = new RibImpl(extension, mock(BGPDispatcher.class), this.policyProvider,
-            mock(BindingCodecTreeFactory.class), getDomBroker(), getDataBroker(), schemaService);
+            mock(CodecsRegistry.class), getDomBroker(), getDataBroker());
         doReturn(ribImpl).when(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
 
         doReturn(new BgpPeer(mock(RpcProviderService.class))).when(this.blueprintContainer)
@@ -155,7 +143,6 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         verify(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
         verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS).times(2)).registerService(
             eq(InstanceType.RIB.getServices()), any(), any(Dictionary.class));
-        verify(this.dataTreeRegistration).close();
         verify(this.registration).unregister();
 
         //Delete for existing rib
@@ -164,7 +151,6 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
         verify(this.blueprintContainer).getComponentInstance(eq("ribImpl"));
         verify(this.bundleContext, timeout(VERIFY_TIMEOUT_MILIS).times(2))
                 .registerService(eq(InstanceType.RIB.getServices()), any(), any(Dictionary.class));
-        verify(this.dataTreeRegistration, timeout(VERIFY_TIMEOUT_MILIS).times(2)).close();
         verify(this.registration, timeout(VERIFY_TIMEOUT_MILIS).times(2)).unregister();
 
         deployer.close();
@@ -205,7 +191,7 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
 
     private void createRib(final Global global) throws ExecutionException, InterruptedException {
         final WriteTransaction wr = getDataBroker().newWriteOnlyTransaction();
-        wr.put(LogicalDatastoreType.CONFIGURATION, GLOBAL_II, global, true);
+        wr.mergeParentStructurePut(LogicalDatastoreType.CONFIGURATION, GLOBAL_II, global);
         wr.commit().get();
     }
 
@@ -217,7 +203,7 @@ public class BgpDeployerImplTest extends DefaultRibPoliciesMockTest {
 
     private void createNeighbor(final Neighbors neighbors) throws ExecutionException, InterruptedException {
         final WriteTransaction wr = getDataBroker().newWriteOnlyTransaction();
-        wr.put(LogicalDatastoreType.CONFIGURATION, NEIGHBORS_II, neighbors, true);
+        wr.mergeParentStructurePut(LogicalDatastoreType.CONFIGURATION, NEIGHBORS_II, neighbors);
         wr.commit().get();
     }
 
index 552d391efb22e7f7d91816e3d73eaa4a33ee9581..58887cd3a18ff8dab1ba23ee4e631f8573bf440d 100644 (file)
@@ -21,13 +21,14 @@ import static org.mockito.Mockito.verify;
 import java.math.BigDecimal;
 import java.net.InetSocketAddress;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.mdsal.binding.api.RpcProviderService;
 import org.opendaylight.protocol.concepts.KeyMapping;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiKey;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AddPaths;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AddPathsBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AfiSafis;
@@ -64,7 +65,7 @@ public class BgpPeerTest extends AbstractConfig {
     static final AfiSafi AFI_SAFI_IPV4 = new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class)
             .addAugmentation(NeighborAddPathsConfig.class, new NeighborAddPathsConfigBuilder()
                        .setReceive(true).setSendMax(Uint8.ZERO).build()).build();
-    static final List<AfiSafi> AFI_SAFI = Collections.singletonList(AFI_SAFI_IPV4);
+    static final Map<AfiSafiKey, AfiSafi> AFI_SAFI = Collections.singletonMap(AFI_SAFI_IPV4.key(), AFI_SAFI_IPV4);
     private static final BigDecimal DEFAULT_TIMERS = BigDecimal.valueOf(30);
     private BgpPeer bgpPeer;
 
index 452242d4e225e78fe12a4e66a7ec2688b260ce49..4c27092594a5636c72959792d2442109b5e795da 100644 (file)
@@ -46,7 +46,6 @@ 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.multiprotocol.rev180329.CParameters1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.GracefulRestartCapability;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.LlGracefulRestartCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.graceful.restart.capability.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv6AddressFamily;
@@ -108,10 +107,10 @@ public class GracefulRestartUtilTest {
         assertNotNull(gracefulCapability);
         assertTrue(gracefulCapability.getRestartFlags().isRestartState());
         assertEquals(RESTART_TIME, gracefulCapability.getRestartTime().intValue());
-        final List<Tables> tables = gracefulCapability.getTables();
+        final var tables = gracefulCapability.getTables();
         assertNotNull(tables);
         assertEquals(2, tables.size());
-        tables.forEach(table -> {
+        tables.values().forEach(table -> {
             assertTrue(isSameKey(IPV4_KEY, table.key()) && table.getAfiFlags().isForwardingState()
                 || isSameKey(IPV6_KEY, table.key()) && !table.getAfiFlags().isForwardingState());
         });
@@ -172,12 +171,11 @@ public class GracefulRestartUtilTest {
         assertNotNull(params);
         final LlGracefulRestartCapability llGracefulCapability = params.getLlGracefulRestartCapability();
         assertNotNull(llGracefulCapability);
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp
-                .capabilities.ll.graceful.restart.capability.Tables> tables = llGracefulCapability.getTables();
+        final var tables = llGracefulCapability.getTables();
         assertNotNull(tables);
         assertEquals(2, tables.size());
-        assertEquals(STALE_TIME, tables.get(0).getLongLivedStaleTime().getValue().intValue());
-        tables.forEach(table -> {
+        assertEquals(STALE_TIME, tables.values().iterator().next().getLongLivedStaleTime().getValue().intValue());
+        tables.values().forEach(table -> {
             assertTrue(isSameKey(IPV4_KEY, table.key()) && table.getAfiFlags().isForwardingState()
                 || isSameKey(IPV6_KEY, table.key()) && !table.getAfiFlags().isForwardingState());
         });
index ba8d12c799e06f69bda307899d5a8aa55489147b..ca8b4dfb341f8123668a04c5e957f8a429c4c88f 100644 (file)
@@ -25,7 +25,7 @@ import static org.opendaylight.protocol.bgp.rib.impl.config.BgpPeerTest.createNe
 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.ImmutableList;
+import com.google.common.collect.ImmutableMap;
 import java.math.BigDecimal;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -45,6 +45,7 @@ import org.opendaylight.protocol.bgp.parser.spi.pojo.RevisedErrorHandlingSupport
 import org.opendaylight.protocol.bgp.rib.impl.spi.RIB;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiBuilder;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafiKey;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.BgpNeighborTransportConfig;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.graceful.restart.GracefulRestartBuilder;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.neighbor.group.AfiSafis;
@@ -85,7 +86,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mult
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.SendReceive;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.add.path.capability.AddressFamilies;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.mp.capabilities.add.path.capability.AddressFamiliesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAddPathsConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAddPathsConfigBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalConfigAugmentation;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalConfigAugmentationBuilder;
@@ -152,10 +152,10 @@ public class OpenConfigMappingUtilTest {
         TABLE_TYPES.add(new BgpTableTypeImpl(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
         TABLE_TYPES.add(new BgpTableTypeImpl(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class));
         AFISAFIS.add(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class)
-                .addAugmentation(GlobalAddPathsConfig.class, new GlobalAddPathsConfigBuilder().setReceive(Boolean.TRUE)
+                .addAugmentation(new GlobalAddPathsConfigBuilder().setReceive(Boolean.TRUE)
                         .setSendMax(N_PATHS).build()).build());
         AFISAFIS.add(new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class)
-                .addAugmentation(GlobalAddPathsConfig.class, new GlobalAddPathsConfigBuilder().setReceive(Boolean.TRUE)
+                .addAugmentation(new GlobalAddPathsConfigBuilder().setReceive(Boolean.TRUE)
                         .setSendMax(ALL_PATHS).build()).build());
     }
 
@@ -324,8 +324,8 @@ public class OpenConfigMappingUtilTest {
 
     @Test
     public void testGetAfiSafiWithDefault() {
-        final ImmutableList<AfiSafi> defaultValue
-                = ImmutableList.of(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build());
+        final AfiSafi v4afi = new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build();
+        final ImmutableMap<AfiSafiKey, AfiSafi> defaultValue = ImmutableMap.of(v4afi.key(), v4afi);
         assertEquals(defaultValue, OpenConfigMappingUtil.getAfiSafiWithDefault(null, true));
         final AfiSafis afiSafi = new AfiSafisBuilder().build();
         assertEquals(defaultValue, OpenConfigMappingUtil.getAfiSafiWithDefault(afiSafi, true));
@@ -338,17 +338,18 @@ public class OpenConfigMappingUtilTest {
 
         final List<AfiSafi> expected = new ArrayList<>(afiSafiIpv6List);
         expected.add(AFI_SAFI_IPV4);
-        assertEquals(afiSafiIpv6, OpenConfigMappingUtil.getAfiSafiWithDefault(new AfiSafisBuilder()
-                .setAfiSafi(afiSafiIpv6List).build(), true).get(0));
-        assertEquals(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build(),
-                OpenConfigMappingUtil.getAfiSafiWithDefault(new AfiSafisBuilder().setAfiSafi(afiSafiIpv6List).build(),
-                        true).get(1));
+
+        final Map<AfiSafiKey, AfiSafi> v6 = OpenConfigMappingUtil.getAfiSafiWithDefault(new AfiSafisBuilder()
+            .setAfiSafi(afiSafiIpv6List).build(), true);
+        assertEquals(2, v6.size());
+        assertTrue(v6.containsValue(afiSafiIpv6));
+        assertTrue(v6.containsValue(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class).build()));
         assertEquals(AFI_SAFI, OpenConfigMappingUtil.getAfiSafiWithDefault(createAfiSafi(), true));
 
         assertTrue(OpenConfigMappingUtil.getAfiSafiWithDefault(null, false).isEmpty());
         assertTrue(OpenConfigMappingUtil.getAfiSafiWithDefault(afiSafi, false).isEmpty());
         assertEquals(afiSafiIpv6, OpenConfigMappingUtil.getAfiSafiWithDefault(new AfiSafisBuilder()
-                .setAfiSafi(afiSafiIpv6List).build(), false).get(0));
+                .setAfiSafi(afiSafiIpv6List).build(), false).values().iterator().next());
         assertEquals(AFI_SAFI, OpenConfigMappingUtil.getAfiSafiWithDefault(createAfiSafi(), false));
     }
 
@@ -402,11 +403,9 @@ public class OpenConfigMappingUtilTest {
     public void toPathSelectionMode() {
         final List<AfiSafi> families = new ArrayList<>();
         families.add(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class)
-            .addAugmentation(GlobalAddPathsConfig.class, new GlobalAddPathsConfigBuilder()
-                    .setSendMax(N_PATHS).build()).build());
+            .addAugmentation(new GlobalAddPathsConfigBuilder().setSendMax(N_PATHS).build()).build());
         families.add(new AfiSafiBuilder().setAfiSafiName(IPV6UNICAST.class)
-            .addAugmentation(GlobalAddPathsConfig.class, new GlobalAddPathsConfigBuilder()
-                    .setSendMax(ALL_PATHS).build()).build());
+            .addAugmentation(new GlobalAddPathsConfigBuilder().setSendMax(ALL_PATHS).build()).build());
         final Map<BgpTableType, PathSelectionMode> result = OpenConfigMappingUtil
                 .toPathSelectionMode(families, this.tableTypeRegistry);
         final Map<BgpTableType, PathSelectionMode> expected = new HashMap<>();
@@ -414,6 +413,7 @@ public class OpenConfigMappingUtilTest {
                 ADD_PATH_BEST_N_PATH_SELECTION);
         expected.put(new BgpTableTypeImpl(Ipv6AddressFamily.class, UnicastSubsequentAddressFamily.class),
                 ADD_PATH_BEST_ALL_PATH_SELECTION);
+        // FIXME: these assertions are wrong, as they perform lookup on non-existing keys
         assertEquals(expected.get(0), result.get(0));
         assertEquals(expected.get(1), result.get(1));
     }
index 14028bf02dd57c4ca7f1c3418213b369d1c21ff5..9e9d3116e6170ad3ffeb37b6a41b3ada560a6d00 100644 (file)
@@ -23,13 +23,10 @@ import java.util.List;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.protocol.bgp.parser.BgpTableTypeImpl;
-import org.opendaylight.protocol.bgp.rib.impl.RIBImpl;
+import org.opendaylight.protocol.bgp.rib.impl.spi.CodecsRegistry;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
 import org.opendaylight.protocol.bgp.rib.spi.RIBSupport;
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.multiprotocol.rev151009.bgp.common.afi.safi.list.AfiSafi;
@@ -40,7 +37,6 @@ import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.rev151009.bgp.t
 import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.bgp.types.rev151009.IPV4UNICAST;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.BgpTableType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAddPathsConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev180329.GlobalAddPathsConfigBuilder;
 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.rib.TablesKey;
@@ -63,21 +59,17 @@ public class RibImplTest extends AbstractConfig {
 
     static {
         AFISAFIS.add(new AfiSafiBuilder().setAfiSafiName(IPV4UNICAST.class)
-                .addAugmentation(GlobalAddPathsConfig.class, new GlobalAddPathsConfigBuilder().setReceive(true)
-                        .setSendMax(Uint8.ZERO).build()).build());
+                .addAugmentation(new GlobalAddPathsConfigBuilder().setReceive(true).setSendMax(Uint8.ZERO).build())
+                .build());
     }
 
     @Mock
     private RIBExtensionConsumerContext extension;
     @Mock
-    private BindingCodecTreeFactory bindingCodecTreeFactory;
+    private CodecsRegistry codecsRegistry;
     @Mock
     private DOMDataBroker domDataBroker;
     @Mock
-    private DOMSchemaService domSchemaService;
-    @Mock
-    private ListenerRegistration<?> dataTreeRegistration;
-    @Mock
     private RIBSupport<?, ?, ?, ?> ribSupport;
     @Mock
     private ServiceRegistration<?> serviceRegistration;
@@ -87,7 +79,6 @@ public class RibImplTest extends AbstractConfig {
     public void setUp() throws Exception {
         super.setUp();
 
-        doReturn(mock(GeneratedClassLoadingStrategy.class)).when(this.extension).getClassLoadingStrategy();
         doReturn(this.ribSupport).when(this.extension).getRIBSupport(any(TablesKey.class));
         final NodeIdentifier nii = new NodeIdentifier(QName.create("", "test").intern());
         doReturn(nii).when(this.ribSupport).routeAttributesIdentifier();
@@ -102,8 +93,6 @@ public class RibImplTest extends AbstractConfig {
         final DOMDataTreeChangeService dOMDataTreeChangeService = mock(DOMDataTreeChangeService.class);
         doReturn(ImmutableClassToInstanceMap.of(DOMDataTreeChangeService.class, dOMDataTreeChangeService))
                 .when(this.domDataBroker).getExtensions();
-        doReturn(this.dataTreeRegistration).when(this.domSchemaService).registerSchemaContextListener(any());
-        doNothing().when(this.dataTreeRegistration).close();
         doReturn(mock(ListenerRegistration.class)).when(dOMDataTreeChangeService)
                 .registerDataTreeChangeListener(any(), any());
         doNothing().when(this.serviceRegistration).unregister();
@@ -115,15 +104,12 @@ public class RibImplTest extends AbstractConfig {
                 this.extension,
                 this.dispatcher,
                 this.policyProvider,
-                this.bindingCodecTreeFactory,
+                this.codecsRegistry,
                 this.domDataBroker,
-                getDataBroker(),
-                this.domSchemaService);
+                getDataBroker());
         ribImpl.setServiceRegistration(this.serviceRegistration);
         ribImpl.start(createGlobal(), "rib-test", this.tableTypeRegistry);
-        verify(this.extension).getClassLoadingStrategy();
         verify(this.domDataBroker).getExtensions();
-        verify(this.domSchemaService).registerSchemaContextListener(any(RIBImpl.class));
         assertEquals("RIBImpl{bgpId=Ipv4Address{_value=127.0.0.1}, localTables=[BgpTableTypeImpl ["
                 + "getAfi()=interface org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types."
                 + "rev200120.Ipv4AddressFamily, "
@@ -142,8 +128,6 @@ public class RibImplTest extends AbstractConfig {
         assertNotNull(ribImpl.getCodecsRegistry());
 
         ribImpl.close();
-        verify(this.dataTreeRegistration).close();
-        verify(this.dataTreeRegistration).close();
         verify(this.serviceRegistration).unregister();
     }
 
index fb9c694e2f18f83f113747da96d2fef19ab352c1..18f5d261cb2dcdb083c4a29a6ac5445ff980574c 100644 (file)
@@ -83,7 +83,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-generator-impl</artifactId>
+            <artifactId>mdsal-binding-dom-adapter</artifactId>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.checkerframework</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-adapter</artifactId>
+            <artifactId>mdsal-binding-runtime-spi</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
index c4e10c253c004c015a3f388c99388ec5e91bc626..94862226575afe9bb08513e91ecdf6005452fa4d 100644 (file)
@@ -32,9 +32,7 @@ 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.UpdateBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.Attributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.path.attributes.AttributesBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.Attributes2Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.destination.DestinationType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev180329.update.attributes.MpReachNlri;
@@ -153,13 +151,13 @@ public abstract class AbstractRIBSupport<
             final QName destContainerQname) {
         final QNameModule module = BindingReflections.getQNameModule(cazeClass);
         this.routesContainerIdentifier = NodeIdentifier.create(
-            BindingReflections.findQName(containerClass).withModule(module));
-        this.routeAttributesIdentifier = NodeIdentifier.create(Attributes.QNAME.withModule(module));
+            BindingReflections.findQName(containerClass).bindTo(module));
+        this.routeAttributesIdentifier = NodeIdentifier.create(Attributes.QNAME.bindTo(module));
         this.cazeClass = requireNonNull(cazeClass);
         this.mappingService = requireNonNull(mappingService);
         this.containerClass = requireNonNull(containerClass);
         this.listClass = requireNonNull(listClass);
-        this.routeQname = BindingReflections.findQName(listClass).withModule(module);
+        this.routeQname = BindingReflections.findQName(listClass).bindTo(module);
         this.routesListIdentifier = NodeIdentifier.create(this.routeQname);
         this.tk = new TablesKey(afiClass, safiClass);
         this.emptyTable = (MapEntryNode) this.mappingService
@@ -425,12 +423,12 @@ public abstract class AbstractRIBSupport<
 
         if (!advertised.isEmpty()) {
             final MpReachNlri mb = buildReach(advertised, hop);
-            ab.addAugmentation(Attributes1.class, new Attributes1Builder().setMpReachNlri(mb).build());
+            ab.addAugmentation(new Attributes1Builder().setMpReachNlri(mb).build());
             LOG.debug("mpreach nexthop={}", mb);
         }
         if (!withdrawn.isEmpty()) {
             final MpUnreachNlri mb = buildUnreach(withdrawn);
-            ab.addAugmentation(Attributes2.class, new Attributes2Builder().setMpUnreachNlri(mb).build());
+            ab.addAugmentation(new Attributes2Builder().setMpUnreachNlri(mb).build());
             LOG.debug("mpunrach mb={}", mb);
         }
 
index b539aeefb5e3837ad2800aa2eb2c2bc2e096062d..491ae1438f457c695967a868be4816f43a0008f6 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.bgp.rib.spi;
 
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
 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.TablesKey;
@@ -62,13 +61,4 @@ public interface RIBExtensionConsumerContext {
     <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<C>,
         R extends Route & ChildOf<S> & Identifiable<I>, I extends Identifier<R>> @Nullable RIBSupport<C, S, R, I>
             getRIBSupport(@NonNull NodeIdentifierWithPredicates key);
-
-
-    /**
-     * Returns class loading strategy for loading YANG modeled classes
-     * associated with registered RIB supports.
-     *
-     * @return Class loading strategy for loading YANG modeled classes.
-     */
-    @NonNull GeneratedClassLoadingStrategy getClassLoadingStrategy();
 }
index fde397f1ddbf298f7d3355362988d4c72d1c1fcc..2735952c600fef85be5b8961bf13ab86755f18f5 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableCollection;
 import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
@@ -320,5 +321,5 @@ public interface RIBSupport<
      * @param routes Table route choice
      * @return A potentially empty list of routes
      */
-    @NonNull List<R> extractAdjRibInRoutes(Routes routes);
+    @NonNull Map<I, R> extractAdjRibInRoutes(Routes routes);
 }
index 7a502bae1050182d49188a8398f1bcfdb4f97478..9fbc413c38f7f1747ec2840c1d8150832da6cbf3 100644 (file)
@@ -10,13 +10,8 @@ package org.opendaylight.protocol.bgp.rib.spi;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.Preconditions;
-import java.util.HashSet;
-import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
-import org.opendaylight.mdsal.binding.generator.impl.GeneratedClassLoadingStrategy;
-import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
-import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
 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.TablesKey;
@@ -28,21 +23,17 @@ 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.Identifier;
-import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class SimpleRIBExtensionProviderContext implements RIBExtensionProviderContext {
-
     private static final Logger LOG = LoggerFactory.getLogger(SimpleRIBExtensionProviderContext.class);
 
     private final ConcurrentMap<TablesKey, RIBSupport<?, ?, ?, ?>> supports = new ConcurrentHashMap<>();
     private final ConcurrentMap<NodeIdentifierWithPredicates, RIBSupport<?, ?, ?, ?>> domSupports =
             new ConcurrentHashMap<>();
 
-    private final ModuleInfoBackedContext classLoadingStrategy = ModuleInfoBackedContext.create();
-
     @Override
     public <T extends RIBSupport<?, ?, ?, ?>> RIBSupportRegistration<T> registerRIBSupport(
             final Class<? extends AddressFamily> afi, final Class<? extends SubsequentAddressFamily> safi,
@@ -52,36 +43,15 @@ public class SimpleRIBExtensionProviderContext implements RIBExtensionProviderCo
         Preconditions.checkArgument(prev == null, "AFI %s SAFI %s is already registered with %s",
                 afi, safi, prev);
         this.domSupports.put(RibSupportUtils.toYangTablesKey(afi, safi), support);
-        addClassLoadingSupport(afi, safi, support);
-        return new AbstractRIBSupportRegistration<T>(support) {
+        return new AbstractRIBSupportRegistration<>(support) {
             @Override
             protected void removeRegistration() {
+                // FIXME: clean up registrations, too
                 SimpleRIBExtensionProviderContext.this.supports.remove(key);
             }
         };
     }
 
-    private void addClassLoadingSupport(final Class<?> afi, final Class<?> safi, final RIBSupport<?, ?, ?, ?> support) {
-        final Set<YangModuleInfo> moduleInfos = getModuleInfos(afi, safi, support.routesListClass(),
-                support.routesContainerClass(), support.routesCaseClass());
-        if (!moduleInfos.isEmpty()) {
-            this.classLoadingStrategy.addModuleInfos(moduleInfos);
-        }
-    }
-
-    @SuppressWarnings("checkstyle:IllegalCatch")
-    private static Set<YangModuleInfo> getModuleInfos(final Class<?>... clazzes) {
-        final Set<YangModuleInfo> moduleInfos = new HashSet<>();
-        for (final Class<?> clz : clazzes) {
-            try {
-                moduleInfos.add(BindingReflections.getModuleInfo(clz));
-            } catch (final Exception e) {
-                LOG.debug("Could not find module info for class {}", clz, e);
-            }
-        }
-        return moduleInfos;
-    }
-
     @Override
     public <C extends Routes & DataObject & ChoiceIn<Tables>, S extends ChildOf<C>,
         R extends Route & ChildOf<S> & Identifiable<I>, I extends Identifier<R>> RIBSupport<C, S, R, I> getRIBSupport(
@@ -104,9 +74,4 @@ public class SimpleRIBExtensionProviderContext implements RIBExtensionProviderCo
             final NodeIdentifierWithPredicates key) {
         return (RIBSupport<C, S, R, I>) this.domSupports.get(key);
     }
-
-    @Override
-    public GeneratedClassLoadingStrategy getClassLoadingStrategy() {
-        return this.classLoadingStrategy;
-    }
 }
index acbffe0e3f470bc67f23299fb854a3006e175232..7359224d7e7b17e45ce2df3b33a5d227a03ebcc8 100644 (file)
@@ -13,8 +13,8 @@
        META-INF/services/org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator resources.
   -->
   <odl:specific-reference-list id="extensionActivators" interface="org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator"/>
-  <odl:static-reference id="mappingCodec"
-                        interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer"/>
+  <odl:static-reference id="mappingCodec" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer"/>
+
   <bean id="extensionProviderContext" class="org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContext"/>
 
   <bean id="extensionProviderContextActivator" class="org.opendaylight.protocol.bgp.rib.spi.SimpleRIBExtensionProviderContextActivator"
@@ -30,4 +30,4 @@
       <value>org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext</value>
     </interfaces>
   </service>
-</blueprint>
\ No newline at end of file
+</blueprint>
index e60cf7c1f546db7f38cd8bc96a68a543df61473f..51fde6d7653c13519cc3814a5d12b0a378017f8b 100644 (file)
@@ -7,17 +7,17 @@
  */
 package org.opendaylight.protocol.bgp.rib.spi;
 
+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.BindingNormalizedNodeSerializer;
 
 public abstract class AbstractRIBActivatorTest extends AbstractConcurrentDataBrokerTest {
-    protected BindingNormalizedNodeSerializer mappingService;
+    protected AdapterContext context;
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
+        this.context = customizer.getAdapterContext();
         return customizer;
     }
 }
index 9cb3ba9e5322fe0840bccbc437fd64d08329c89c..744a8d6e3d6eb47167b887412741a5bb6af7a8ef 100644 (file)
@@ -14,15 +14,16 @@ import static org.mockito.MockitoAnnotations.initMocks;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Iterables;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import org.junit.Before;
 import org.mockito.Mock;
+import org.opendaylight.binding.runtime.spi.ModuleInfoBackedContext;
+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.BindingNormalizedNodeSerializer;
-import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
@@ -85,18 +86,16 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     protected List<InstanceIdentifier<R>> deletedRoutes;
     protected List<Map.Entry<InstanceIdentifier<?>, DataObject>> insertedRoutes;
 
-    protected BindingNormalizedNodeSerializer mappingService;
+    protected AdapterContext adapter;
     private AbstractRIBSupport<C, S, R, I> abstractRIBSupport;
     private ModuleInfoBackedContext moduleInfoBackedContext;
 
     protected final void setUpTestCustomizer(final AbstractRIBSupport<C, S, R, I> ribSupport) throws Exception {
         this.abstractRIBSupport = ribSupport;
-        this.moduleInfoBackedContext
-                .registerModuleInfo(BindingReflections.getModuleInfo(this.abstractRIBSupport.routesContainerClass()));
-        this.moduleInfoBackedContext
-                .registerModuleInfo(BindingReflections.getModuleInfo(this.abstractRIBSupport.routesCaseClass()));
-        this.moduleInfoBackedContext
-                .registerModuleInfo(BindingReflections.getModuleInfo(this.abstractRIBSupport.routesListClass()));
+        this.moduleInfoBackedContext.registerModuleInfos(Arrays.asList(
+            BindingReflections.getModuleInfo(this.abstractRIBSupport.routesContainerClass()),
+            BindingReflections.getModuleInfo(this.abstractRIBSupport.routesCaseClass()),
+            BindingReflections.getModuleInfo(this.abstractRIBSupport.routesListClass())));
     }
 
     @Before
@@ -104,7 +103,7 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
         initMocks(this);
         doAnswer(invocation -> {
             final Object[] args = invocation.getArguments();
-            AbstractRIBSupportTest.this.insertedRoutes.add(AbstractRIBSupportTest.this.mappingService
+            AbstractRIBSupportTest.this.insertedRoutes.add(adapter.currentSerializer()
                     .fromNormalizedNode((YangInstanceIdentifier) args[1], (NormalizedNode<?, ?>) args[2]));
             return args[1];
         }).when(this.tx).put(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class),
@@ -113,7 +112,7 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
         doAnswer(invocation -> {
             final Object[] args = invocation.getArguments();
             AbstractRIBSupportTest.this.deletedRoutes.add((InstanceIdentifier)
-                    this.mappingService.fromYangInstanceIdentifier((YangInstanceIdentifier) args[1]));
+                adapter.currentSerializer().fromYangInstanceIdentifier((YangInstanceIdentifier) args[1]));
             return args[1];
         }).when(this.tx).delete(any(LogicalDatastoreType.class), any(YangInstanceIdentifier.class));
         this.deletedRoutes = new ArrayList<>();
@@ -124,14 +123,14 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
+        this.adapter = customizer.getAdapterContext();
         return customizer;
     }
 
     protected final ContainerNode createNlriWithDrawnRoute(final DestinationType destUnreach) {
         final MpUnreachNlri mpReach = new MpUnreachNlriBuilder().setWithdrawnRoutes(new WithdrawnRoutesBuilder()
                 .setDestinationType(destUnreach).build()).build();
-        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> result = this.mappingService
+        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> result = this.adapter.currentSerializer()
                 .toNormalizedNode(MP_UNREACH_IID, mpReach);
         return (ContainerNode) result.getValue();
     }
@@ -139,33 +138,33 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
     protected final ContainerNode createNlriAdvertiseRoute(final DestinationType destReach) {
         final MpReachNlri mpReach = new MpReachNlriBuilder().setAdvertizedRoutes(new AdvertizedRoutesBuilder()
                 .setDestinationType(destReach).build()).build();
-        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> result = this.mappingService
+        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> result = this.adapter.currentSerializer()
                 .toNormalizedNode(MP_REACH_IID, mpReach);
         return (ContainerNode) result.getValue();
     }
 
     protected final ContainerNode createAttributes() {
-        return (ContainerNode) this.mappingService.toNormalizedNode(ATTRIBUTES_IID, ATTRIBUTES).getValue();
+        return (ContainerNode) this.adapter.currentSerializer().toNormalizedNode(ATTRIBUTES_IID, ATTRIBUTES).getValue();
     }
 
     protected final MapEntryNode createEmptyTable() {
         final Tables tables = new TablesBuilder().withKey(getTablesKey())
             .setAttributes(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329
                 .rib.tables.AttributesBuilder().build()).build();
-        return (MapEntryNode) this.mappingService.toNormalizedNode(tablesIId(), tables).getValue();
+        return (MapEntryNode) this.adapter.currentSerializer().toNormalizedNode(tablesIId(), tables).getValue();
     }
 
     protected final ChoiceNode createRoutes(final Routes routes) {
         final Tables tables = new TablesBuilder().withKey(getTablesKey()).setRoutes(routes).build();
-        return (ChoiceNode) ((MapEntryNode) this.mappingService.toNormalizedNode(tablesIId(), tables).getValue())
-            .getChild(new NodeIdentifier(BindingReflections.findQName(Routes.class))).get();
+        return (ChoiceNode) ((MapEntryNode) this.adapter.currentSerializer().toNormalizedNode(tablesIId(), tables)
+                .getValue()).getChild(new NodeIdentifier(BindingReflections.findQName(Routes.class))).get();
     }
 
     protected final Collection<MapEntryNode> createRoutes(final S routes) {
         Preconditions.checkArgument(routes.implementedInterface()
                 .equals(this.abstractRIBSupport.routesContainerClass()));
         final InstanceIdentifier<S> routesIId = routesIId();
-        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedNode = this.mappingService
+        final Map.Entry<YangInstanceIdentifier, NormalizedNode<?, ?>> normalizedNode = this.adapter.currentSerializer()
                 .toNormalizedNode(routesIId, routes);
         final ContainerNode container = (ContainerNode) normalizedNode.getValue();
         final NodeIdentifier routeNid = new NodeIdentifier(getRouteListQname());
@@ -187,12 +186,12 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
 
     protected final YangInstanceIdentifier getTablePath() {
         final InstanceIdentifier<Tables> tables = tablesIId();
-        return this.mappingService.toYangInstanceIdentifier(tables);
+        return this.adapter.currentSerializer().toYangInstanceIdentifier(tables);
     }
 
     protected final YangInstanceIdentifier getRoutePath() {
         final InstanceIdentifier<S> routesIId = routesIId();
-        return this.mappingService.toYangInstanceIdentifier(routesIId).node(getRouteListQname());
+        return this.adapter.currentSerializer().toYangInstanceIdentifier(routesIId).node(getRouteListQname());
     }
 
     private QName getRouteListQname() {
index 5561d4da4272958e1526a3762b02a087468e9df7..5ef587438fbe7db277c1f782d7ad0d261bf45fae 100644 (file)
@@ -25,7 +25,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
-import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
+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.common.api.LogicalDatastoreType;
@@ -94,13 +94,13 @@ public class RIBSupportTest extends AbstractConcurrentDataBrokerTest {
     private final Map<YangInstanceIdentifier, NormalizedNode<?, ?>> routesMap = new HashMap<>();
     private ContainerNode attributes;
     private MapEntryNode mapEntryNode;
-    private BindingToNormalizedNodeCodec mappingService;
+    private AdapterContext context;
 
     @Before
     public void setUp() throws Exception {
         super.setup();
         MockitoAnnotations.initMocks(this);
-        this.ribSupportTestImp = new RIBSupportTestImp(this.mappingService);
+        this.ribSupportTestImp = new RIBSupportTestImp(context.currentSerializer());
         this.emptyTree = Mockito.mock(DataTreeCandidateNode.class);
         this.emptySubTree = Mockito.mock(DataTreeCandidateNode.class);
         this.subTree = Mockito.mock(DataTreeCandidateNode.class);
@@ -153,7 +153,7 @@ public class RIBSupportTest extends AbstractConcurrentDataBrokerTest {
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
+        this.context = customizer.getAdapterContext();
         return customizer;
     }
 
index 51da7dd5ea8b2b191d85a36865eed382a5aa7789..0ccfc1b562d6a775ab7d0133498c8abdcd37d3f6 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.protocol.bgp.rib.spi;
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev200120.PathId;
@@ -88,7 +88,7 @@ public final class RIBSupportTestImp extends AbstractRIBSupport<Ipv4RoutesCase,
     }
 
     @Override
-    public List<Ipv4Route> extractAdjRibInRoutes(final Routes routes) {
+    public Map<Ipv4RouteKey, Ipv4Route> extractAdjRibInRoutes(final Routes routes) {
         return ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.test.rev180515.bgp.rib.rib.peer
                 .adj.rib.in.tables.routes.Ipv4RoutesCase) routes).getIpv4Routes().nonnullIpv4Route();
     }
index 974b1f7e5071dddcfb9bf5f77cf62053f5a3becc..cb57674e8c28c78f6355f681c73760f24569dbb8 100644 (file)
@@ -25,7 +25,7 @@ public class SimpleRIBExtensionProviderContextActivatorTest extends AbstractRIBA
         final List<RIBExtensionProviderActivator> extensionActivators = Collections.singletonList(new RibActivator());
         final SimpleRIBExtensionProviderContextActivator activator =
                 new SimpleRIBExtensionProviderContextActivator(new SimpleRIBExtensionProviderContext(),
-                        extensionActivators, this.mappingService);
+                        extensionActivators, context.currentSerializer());
         activator.start();
         assertTrue(RIBACTIVATED);
         activator.close();
index 45d117cb5ca53b76393dc7adc8e27dfd092940f7..3b9bb1271bd4a30c2245bcba76991076deb29a3b 100644 (file)
@@ -12,7 +12,7 @@ import java.util.List;
 import org.junit.Assert;
 import org.junit.Test;
 import org.mockito.Mockito;
-import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
+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.BindingNormalizedNodeSerializer;
@@ -23,22 +23,23 @@ import org.opendaylight.yangtools.concepts.Registration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 
 public class SimpleRIBExtensionTest extends AbstractConcurrentDataBrokerTest {
-    private BindingToNormalizedNodeCodec codec;
+    private AdapterContext adapter;
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.codec = customizer.getBindingToNormalized();
+        this.adapter = customizer.getAdapterContext();
         return customizer;
     }
 
     @Test
     public void testExtensionProvider() {
+        final BindingNormalizedNodeSerializer codec = adapter.currentSerializer();
         final ServiceLoaderRIBExtensionConsumerContext ctx =
-                ServiceLoaderRIBExtensionConsumerContext.createConsumerContext(this.codec);
+                ServiceLoaderRIBExtensionConsumerContext.createConsumerContext(codec);
         Assert.assertNull(ctx.getRIBSupport(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
         final TestActivator act = new TestActivator();
-        act.startRIBExtensionProvider(ctx, this.codec);
+        act.startRIBExtensionProvider(ctx, codec);
         Assert.assertNotNull(ctx.getRIBSupport(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
         act.close();
         Assert.assertNull(ctx.getRIBSupport(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
index e5df53dfa740e71e7c5a5b251e9a20b2a4b811e1..71155f090fd06fedd8325867c26bb70378f72a32 100644 (file)
             <scope>test</scope>
             <type>test-jar</type>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <!-- junit/mockito default -->
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index b11ea16f5085349725b08218f8b39af48be84d7a..e09714299ae5bfe3fcc4ebbcaa7acf52fcbeb37b 100644 (file)
@@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.base.Preconditions;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
@@ -115,7 +114,7 @@ abstract class AbstractReachabilityTopologyBuilder<T extends Route> extends Abst
                 .child(IgpNodeAttributes.class).build();
 
         trans.merge(LogicalDatastoreType.OPERATIONAL, nii, new NodeBuilder().withKey(nii.getKey()).setNodeId(ni)
-            .addAugmentation(Node1.class, new Node1Builder().setIgpNodeAttributes(
+            .addAugmentation(new Node1Builder().setIgpNodeAttributes(
                 new IgpNodeAttributesBuilder().setPrefix(Collections.emptyList()).build()).build()).build());
 
         this.nodes.put(ni, new NodeUsage(ret));
@@ -172,8 +171,7 @@ abstract class AbstractReachabilityTopologyBuilder<T extends Route> extends Abst
         if (present.useCount == 0) {
             final IgpNodeAttributes attrs = read(trans, present.attrId);
             if (attrs != null) {
-                final List<Prefix> prefix = attrs.getPrefix();
-                present.useCount = prefix == null ? 0 : prefix.size();
+                present.useCount = attrs.nonnullPrefix().size();
             } else {
                 present.useCount = 0;
             }
index 4edceb7430a21e937a2c4d683584228894b78445..e64366ea65debd66572ad7f04c09950fc5876b59 100644 (file)
@@ -17,7 +17,6 @@ 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.rib.rev180329.rib.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.bgp.ipv4.reachability.topology.type.BgpIpv4ReachabilityTopologyBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -27,7 +26,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public final class Ipv4ReachabilityTopologyBuilder extends AbstractReachabilityTopologyBuilder<Ipv4Route> {
     public static final TopologyTypes IPV4_TOPOLOGY_TYPE = new TopologyTypesBuilder()
-            .addAugmentation(TopologyTypes1.class, new TopologyTypes1Builder()
+            .addAugmentation(new TopologyTypes1Builder()
                     .setBgpIpv4ReachabilityTopology(new BgpIpv4ReachabilityTopologyBuilder().build()).build()).build();
 
     public Ipv4ReachabilityTopologyBuilder(final DataBroker dataProvider, final RibReference locRibReference,
index af31938ad73360a3b3cc4810894977506a582180..07f39639e6a68a5079116b6ecd2ef30a3b996277 100644 (file)
@@ -17,7 +17,6 @@ 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.rib.rev180329.rib.Tables;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv6AddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.bgp.ipv6.reachability.topology.type.BgpIpv6ReachabilityTopologyBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -27,7 +26,7 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 
 public final class Ipv6ReachabilityTopologyBuilder extends AbstractReachabilityTopologyBuilder<Ipv6Route> {
     public static final TopologyTypes IPV6_TOPOLOGY_TYPE = new TopologyTypesBuilder()
-            .addAugmentation(TopologyTypes1.class, new TopologyTypes1Builder()
+            .addAugmentation(new TopologyTypes1Builder()
                     .setBgpIpv6ReachabilityTopology(new BgpIpv6ReachabilityTopologyBuilder().build()).build()).build();
 
     public Ipv6ReachabilityTopologyBuilder(final DataBroker dataProvider, final RibReference locRibReference,
index cc268d40344fc7d38c0088479ddb1142d395e25a..807528fe6213e411d560b1a0416beb423cde4b8b 100644 (file)
@@ -80,7 +80,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.rev191125.graph.topology.graph.VertexKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.vertex.SrgbBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.bgp.linkstate.topology.type.BgpLinkstateTopologyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.SrlgId;
@@ -105,7 +104,6 @@ import org.slf4j.LoggerFactory;
 
 public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRoute> {
     private static final TopologyTypes LINKSTATE_TOPOLOGY_TYPE = new TopologyTypesBuilder().addAugmentation(
-            TopologyTypes1.class,
             new TopologyTypes1Builder().setBgpLinkstateTopology(new BgpLinkstateTopologyBuilder().build()).build())
             .build();
 
@@ -113,11 +111,11 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
 
     private static final Logger LOG = LoggerFactory.getLogger(LinkstateGraphBuilder.class);
 
-    private ConnectedGraphProvider graphProvider;
-    private ConnectedGraph cgraph;
+    private final ConnectedGraphProvider graphProvider;
+    private final ConnectedGraph cgraph;
 
     public LinkstateGraphBuilder(final DataBroker dataProvider, final RibReference locRibReference,
-            final TopologyId topologyId, ConnectedGraphProvider provider) {
+            final TopologyId topologyId, final ConnectedGraphProvider provider) {
         super(dataProvider, locRibReference, topologyId, LINKSTATE_TOPOLOGY_TYPE, LinkstateAddressFamily.class,
                 LinkstateSubsequentAddressFamily.class);
         this.graphProvider = requireNonNull(provider);
@@ -131,7 +129,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
 
     @VisibleForTesting
     LinkstateGraphBuilder(final DataBroker dataProvider, final RibReference locRibReference,
-            final TopologyId topologyId, ConnectedGraphProvider provider, final long listenerResetLimitInMillsec,
+            final TopologyId topologyId, final ConnectedGraphProvider provider, final long listenerResetLimitInMillsec,
             final int listenerResetEnforceCounter) {
         super(dataProvider, locRibReference, topologyId, LINKSTATE_TOPOLOGY_TYPE, LinkstateAddressFamily.class,
                 LinkstateSubsequentAddressFamily.class, listenerResetLimitInMillsec, listenerResetEnforceCounter);
@@ -169,7 +167,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return True if all information are present, false otherwise
      */
-    private boolean checkLinkState(final LinkCase linkCase) {
+    private static boolean checkLinkState(final LinkCase linkCase) {
         if (linkCase.getLocalNodeDescriptors() == null || linkCase.getRemoteNodeDescriptors() == null) {
             LOG.warn("Missing Local or Remote Node descriptor in link {}, skipping it", linkCase);
             return false;
@@ -188,7 +186,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return Link Attributes
      */
-    private LinkAttributes getLinkAttributes(final Attributes attributes) {
+    private static LinkAttributes getLinkAttributes(final Attributes attributes) {
         final LinkAttributes la;
         final Attributes1 attr = attributes.augmentation(Attributes1.class);
         if (attr != null) {
@@ -212,7 +210,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return Unique key
      */
-    private Uint64 getEdgeId(LinkCase linkCase) {
+    private static Uint64 getEdgeId(final LinkCase linkCase) {
         long key = 0;
         if (linkCase.getLinkDescriptors().getIpv4InterfaceAddress() != null) {
             key = ipv4ToKey(linkCase.getLinkDescriptors().getIpv4InterfaceAddress().getValue());
@@ -282,6 +280,8 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         cgraph.addPrefix(prefix);
     }
 
+    private static final int MAX_PRIORITY = 8;
+
     /**
      * Create Edge Attributes from Link attributes.
      *
@@ -290,9 +290,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return EdgeAttributes
      */
-    private static final int MAX_PRIORITY = 8;
-
-    private EdgeAttributes createEdgeAttributes(LinkAttributes la, final LinkDescriptors linkDesc) {
+    private static EdgeAttributes createEdgeAttributes(final LinkAttributes la, final LinkDescriptors linkDesc) {
         EdgeAttributesBuilder builder = new EdgeAttributesBuilder();
 
         if (linkDesc.getIpv4InterfaceAddress() != null) {
@@ -330,7 +328,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
             final List<UnreservedBandwidth> unRsvBw = new ArrayList<>(upperBound);
 
             for (final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120
-                    .UnreservedBandwidth bandwidth : la.getUnreservedBandwidth()) {
+                    .UnreservedBandwidth bandwidth : la.nonnullUnreservedBandwidth().values()) {
                 unRsvBw.add(new UnreservedBandwidthBuilder()
                         .setBandwidth(bandwithToDecimalBandwidth(bandwidth.getBandwidth()))
                         .withKey(new UnreservedBandwidthKey(bandwidth.getPriority())).build());
@@ -365,7 +363,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
             builder.setUtilizedBandwidth(bandwithToDecimalBandwidth(la.getUtilizedBandwidth()));
         }
         if (la.getSharedRiskLinkGroups() != null) {
-            List<Uint32> srlgs = new ArrayList<Uint32>();
+            List<Uint32> srlgs = new ArrayList<>();
             for (SrlgId srlg : la.getSharedRiskLinkGroups()) {
                 srlgs.add(srlg.getValue());
             }
@@ -399,7 +397,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return Node Attributes
      */
-    private NodeAttributes getNodeAttributes(final Attributes attributes) {
+    private static NodeAttributes getNodeAttributes(final Attributes attributes) {
         final NodeAttributes na;
         final Attributes1 attr = attributes.augmentation(Attributes1.class);
         if (attr != null) {
@@ -424,7 +422,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return New Vertex
      */
-    private Vertex getVertex(NodeAttributes na, Uint64 id, int as) {
+    private static Vertex getVertex(final NodeAttributes na, final Uint64 id, final int as) {
         VertexBuilder builder = new VertexBuilder().setVertexId(id).setAsn(Uint32.valueOf(as));
         if (na.getIpv4RouterId() != null) {
             builder.setRouterId(new IpAddress(new Ipv4Address(na.getIpv4RouterId().getValue())));
@@ -440,7 +438,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         } else {
             int key = id.intValue();
             builder.setName(
-                    ((key << 24) & 0xFF) + "." + ((key << 16) & 0xFF) + "." + ((key << 8) & 0xFF) + "." + (key & 0xFF));
+                    (key << 24 & 0xFF) + "." + (key << 16 & 0xFF) + "." + (key << 8 & 0xFF) + "." + (key & 0xFF));
         }
         if (na.getSrCapabilities() != null) {
             builder.setSrgb(new SrgbBuilder()
@@ -585,14 +583,14 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         }
     }
 
-    private void removeEdge(LinkCase linkCase) {
+    private void removeEdge(final LinkCase linkCase) {
         /* Get Source and Destination Connected Vertex */
         if (linkCase.getLinkDescriptors() == null) {
             LOG.warn("Missing Link descriptor in link {}, skipping it", linkCase);
             return;
         }
         EdgeKey edgeKey = new EdgeKey(getEdgeId(linkCase));
-        if ((edgeKey == null) || (edgeKey.getEdgeId() == Uint64.ZERO)) {
+        if (edgeKey == null || edgeKey.getEdgeId() == Uint64.ZERO) {
             LOG.warn("Unable to get the Edge Key from link {}, skipping it", linkCase);
             return;
         }
@@ -601,9 +599,9 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         cgraph.deleteEdge(edgeKey);
     }
 
-    private void removeVertex(NodeCase nodeCase) {
+    private void removeVertex(final NodeCase nodeCase) {
         VertexKey vertexKey = new VertexKey(getVertexId(nodeCase.getNodeDescriptors().getCRouterIdentifier()));
-        if ((vertexKey == null) || (vertexKey.getVertexId() == Uint64.ZERO)) {
+        if (vertexKey == null || vertexKey.getVertexId() == Uint64.ZERO) {
             LOG.warn("Unable to get Vertex Key from descriptor {}, skipping it", nodeCase.getNodeDescriptors());
             return;
         }
@@ -612,7 +610,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         cgraph.deleteVertex(vertexKey);
     }
 
-    private void removePrefix(PrefixCase prefixCase) {
+    private void removePrefix(final PrefixCase prefixCase) {
         final IpPrefix ippfx = prefixCase.getPrefixDescriptors().getIpReachabilityInformation();
         if (ippfx == null) {
             LOG.warn("IP reachability not present in prefix {}, skipping it", prefixCase);
@@ -630,7 +628,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return Vertex in the Connected Graph that corresponds to this Router ID. Vertex is created if not found.
      */
-    private Uint64 getVertexId(CRouterIdentifier routerID) {
+    private static Uint64 getVertexId(final CRouterIdentifier routerID) {
         Long rid = 0L;
 
         if (routerID instanceof IsisNodeCase) {
@@ -646,21 +644,21 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         return Uint64.valueOf(rid);
     }
 
-    private DecimalBandwidth bandwithToDecimalBandwidth(Bandwidth bw) {
+    private static DecimalBandwidth bandwithToDecimalBandwidth(final Bandwidth bw) {
         return new DecimalBandwidth(BigDecimal.valueOf(ByteBuffer.wrap(bw.getValue()).getFloat()));
     }
 
-    private long ipv4ToKey(String str) {
+    private static long ipv4ToKey(final String str) {
         byte[] ip;
         try {
             ip = ((Inet4Address) Inet4Address.getByName(str)).getAddress();
         } catch (UnknownHostException e) {
             return 0;
         }
-        return (((0xFF & ip[0]) << 24) | ((0xFF & ip[1]) << 16) | ((0xFF & ip[2]) << 8) | (0xFF & ip[3]));
+        return (0xFF & ip[0]) << 24 | (0xFF & ip[1]) << 16 | (0xFF & ip[2]) << 8 | 0xFF & ip[3];
     }
 
-    private Long ipv6ToKey(String str) {
+    private static Long ipv6ToKey(final String str) {
         byte[] ip;
         try {
             ip = ((Inet6Address) Inet6Address.getByName(str)).getAddress();
@@ -681,5 +679,4 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
     protected void clearTopology() {
         cgraph.clear();
     }
-
 }
index b141b4b6a91bf968e9e60488635ff3ec9e2a51f6..8f6509f33caff7aed3e01a00f30858e1cd34571d 100644 (file)
@@ -57,7 +57,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segm
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.SidLabelIndex;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.sid.label.index.LocalLabelCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.segment.routing.ext.rev200120.sid.label.index.sid.label.index.SidCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.odl.bgp.topology.types.rev160524.bgp.linkstate.topology.type.BgpLinkstateTopologyBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.SegmentId;
@@ -86,11 +85,9 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.Link1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.Link1Builder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.Node1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.Node1Builder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.TerminationPoint1Builder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.link.attributes.IgpLinkAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.node.attributes.IgpNodeAttributes;
@@ -110,13 +107,11 @@ import org.slf4j.LoggerFactory;
 public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateRoute> {
     @VisibleForTesting
     static final TopologyTypes LINKSTATE_TOPOLOGY_TYPE = new TopologyTypesBuilder()
-            .addAugmentation(TopologyTypes1.class, new TopologyTypes1Builder()
+            .addAugmentation(new TopologyTypes1Builder()
                     .setBgpLinkstateTopology(new BgpLinkstateTopologyBuilder().build()).build()).build();
     @VisibleForTesting
     static final TopologyTypes SR_AWARE_LINKSTATE_TOPOLOGY_TYPE = new TopologyTypesBuilder(LINKSTATE_TOPOLOGY_TYPE)
-            .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
-                .TopologyTypes1.class,
-                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
+            .addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
                 .TopologyTypes1Builder().setTopologySr(new TopologySrBuilder().build()).build())
             .build();
 
@@ -206,13 +201,11 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
 
             // Write the node out
             if (this.sr != null && this.sr.getSegmentCount() > 0) {
-                this.nb.addAugmentation(
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class,
-                    new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
-                        .Node1Builder().setSegments(this.sr.getSegments()).build());
+                this.nb.addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr
+                    .rev130819.Node1Builder().setSegments(this.sr.getSegments()).build());
             }
             final Node n = this.nb
-                    .addAugmentation(Node1.class, new Node1Builder().setIgpNodeAttributes(this.inab.build()).build())
+                    .addAugmentation(new Node1Builder().setIgpNodeAttributes(this.inab.build()).build())
                     .build();
             trans.put(LogicalDatastoreType.OPERATIONAL, nid, n);
             LOG.trace("Created node {} at {}", n, nid);
@@ -291,13 +284,13 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
     }
 
     private final class NodeSrHolder {
-        private NodeId nodeId;
+        private final NodeId nodeId;
         private Long srgbFirstValue = null;
         private Integer srgbRangeSize = null;
-        private List<Segments> segments = new ArrayList<>();
-        private Map<IpPrefix, SrPrefix> srPrefixes = new HashMap<>();
-        private Map<IpPrefix, Segments> prefixSegments = new HashMap<>();
-        private Map<LinkId, Segments> adjSegments = new HashMap<>();
+        private final List<Segments> segments = new ArrayList<>();
+        private final Map<IpPrefix, SrPrefix> srPrefixes = new HashMap<>();
+        private final Map<IpPrefix, Segments> prefixSegments = new HashMap<>();
+        private final Map<LinkId, Segments> adjSegments = new HashMap<>();
 
         NodeSrHolder(final NodeId nodeId) {
             this.nodeId = nodeId;
@@ -528,9 +521,11 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
         stpb.setTpId(id);
 
         if (type != null) {
-            stpb.addAugmentation(TerminationPoint1.class, new TerminationPoint1Builder()
-                    .setIgpTerminationPointAttributes(
-                    new IgpTerminationPointAttributesBuilder().setTerminationPointType(type).build()).build());
+            stpb.addAugmentation(new TerminationPoint1Builder()
+                    .setIgpTerminationPointAttributes(new IgpTerminationPointAttributesBuilder()
+                        .setTerminationPointType(type)
+                        .build())
+                    .build());
         }
 
         return stpb.build();
@@ -643,9 +638,9 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
         }
         ProtocolUtil.augmentProtocolId(value, ilab, la, linkCase.getLinkDescriptors());
 
-        final LinkBuilder lb = new LinkBuilder();
-        lb.setLinkId(buildLinkId(base, linkCase));
-        lb.addAugmentation(Link1.class, new Link1Builder().setIgpLinkAttributes(ilab.build()).build());
+        final LinkBuilder lb = new LinkBuilder()
+                .setLinkId(buildLinkId(base, linkCase))
+                .addAugmentation(new Link1Builder().setIgpLinkAttributes(ilab.build()).build());
 
         final NodeId srcNode = buildNodeId(base, linkCase.getLocalNodeDescriptors());
         LOG.trace("Link {} implies source node {}", linkCase, srcNode);
@@ -680,10 +675,8 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
             trans.put(LogicalDatastoreType.OPERATIONAL, nid.child(TerminationPoint.class, srcTp.key()), srcTp);
         }
         if (adjSid != null) {
-            lb.addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
-                    .Link1.class,
-                new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819
-                    .Link1Builder().setSegment(new SegmentId(Uint32.valueOf(adjSid))).build());
+            lb.addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr
+                .rev130819.Link1Builder().setSegment(new SegmentId(Uint32.valueOf(adjSid))).build());
         }
 
         LOG.debug("Created TP {} as link destination", dstTp);
index 9305cdae95387f4b1a16c394b84bc3e8c16b50cf..e134b5077258e5eee229e04f6a369164a10ad44e 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.io.BaseEncoding;
 import java.math.BigDecimal;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.stream.Collectors;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.IsisAreaIdentifier;
@@ -47,7 +48,6 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.ted.rev13
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.link.attributes.IgpLinkAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.node.attributes.IgpNodeAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.node.attributes.igp.node.attributes.PrefixBuilder;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021.Prefix1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021.Prefix1Builder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021.ospf.link.attributes.OspfLinkAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021.ospf.node.attributes.OspfNodeAttributesBuilder;
@@ -72,7 +72,7 @@ public final class ProtocolUtil {
             case Static:
             case Ospf:
                 if (pa != null && pa.getOspfForwardingAddress() != null) {
-                    pb.addAugmentation(Prefix1.class, new Prefix1Builder().setOspfPrefixAttributes(
+                    pb.addAugmentation(new Prefix1Builder().setOspfPrefixAttributes(
                             new OspfPrefixAttributesBuilder().setForwardingAddress(pa.getOspfForwardingAddress()
                                     .getIpv4AddressNoZone()).build()).build());
                 }
@@ -89,13 +89,10 @@ public final class ProtocolUtil {
             case Static:
             case IsisLevel1:
             case IsisLevel2:
-                inab.addAugmentation(
-                        org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.isis.topology.rev131021
-                                .IgpNodeAttributes1.class, isisNodeAttributes(nd, na));
+                inab.addAugmentation(isisNodeAttributes(nd, na));
                 break;
             case Ospf:
-                inab.addAugmentation(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021
-                        .IgpNodeAttributes1.class, ospfNodeAttributes(nd, na));
+                inab.addAugmentation(ospfNodeAttributes(nd, na));
                 break;
             default:
                 break;
@@ -109,14 +106,11 @@ public final class ProtocolUtil {
             case Static:
             case IsisLevel1:
             case IsisLevel2:
-                ilab.addAugmentation(
-                        org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.isis.topology.rev131021
-                                .IgpLinkAttributes1.class, isisLinkAttributes(ld.getMultiTopologyId(), la));
+                ilab.addAugmentation(isisLinkAttributes(ld.getMultiTopologyId(), la));
                 break;
             case OspfV3:
             case Ospf:
-                ilab.addAugmentation(org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.ospf.topology.rev131021
-                        .IgpLinkAttributes1.class, ospfLinkAttributes(ld.getMultiTopologyId(), la));
+                ilab.addAugmentation(ospfLinkAttributes(ld.getMultiTopologyId(), la));
                 break;
             default:
                 break;
@@ -238,7 +232,7 @@ public final class ProtocolUtil {
                 tb.setTeDefaultMetric(la.getTeMetric().getValue());
             }
             if (la.getUnreservedBandwidth() != null) {
-                tb.setUnreservedBandwidth(unreservedBandwidthList(la.getUnreservedBandwidth()));
+                tb.setUnreservedBandwidth(unreservedBandwidthList(la.nonnullUnreservedBandwidth().values()));
             }
             if (la.getMaxLinkBandwidth() != null) {
                 tb.setMaxLinkBandwidth(bandwidthToBigDecimal(la.getMaxLinkBandwidth()));
@@ -281,7 +275,7 @@ public final class ProtocolUtil {
                 tb.setTeDefaultMetric(la.getTeMetric().getValue());
             }
             if (la.getUnreservedBandwidth() != null) {
-                tb.setUnreservedBandwidth(unreservedBandwidthList(la.getUnreservedBandwidth()));
+                tb.setUnreservedBandwidth(unreservedBandwidthList(la.nonnullUnreservedBandwidth().values()));
             }
             if (la.getMaxLinkBandwidth() != null) {
                 tb.setMaxLinkBandwidth(bandwidthToBigDecimal(la.getMaxLinkBandwidth()));
@@ -317,7 +311,7 @@ public final class ProtocolUtil {
     }
 
     private static List<UnreservedBandwidth> unreservedBandwidthList(
-            final List<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
+            final Collection<? extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
                 .bgp.linkstate.rev200120.UnreservedBandwidth> input) {
         final List<UnreservedBandwidth> ret = new ArrayList<>(input.size());
 
index 1e1816b33db4004c1b643af24c15c61025c8b81e..98b30ac64d1af24e86d2f6d0a8ba5ef6e7a3a88b 100644 (file)
@@ -76,22 +76,22 @@ public class Ipv4ReachabilityTopologyBuilderTest extends AbstractTopologyBuilder
             final TopologyTypes1 topologyTypes = topology.getTopologyTypes().augmentation(TopologyTypes1.class);
             assertNotNull(topologyTypes);
             assertNotNull(topologyTypes.getBgpIpv4ReachabilityTopology());
-            assertEquals(1, topology.getNode().size());
-            final Node node = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node node = topology.nonnullNode().values().iterator().next();
             assertEquals(NEXT_HOP, node.getNodeId().getValue());
-            assertEquals(ROUTE_IP4PREFIX, node.augmentation(Node1.class).getIgpNodeAttributes().getPrefix().get(0)
-                .getPrefix().getIpv4Prefix().getValue());
+            assertEquals(ROUTE_IP4PREFIX, node.augmentation(Node1.class).getIgpNodeAttributes().nonnullPrefix().values()
+                .iterator().next().getPrefix().getIpv4Prefix().getValue());
             return topology;
         });
 
         // update route
         updateIpv4Route(createIpv4Route(NEW_NEXT_HOP));
         readDataOperational(getDataBroker(), this.ipv4TopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getNode().size());
-            final Node nodeUpdated = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node nodeUpdated = topology.nonnullNode().values().iterator().next();
             assertEquals(NEW_NEXT_HOP, nodeUpdated.getNodeId().getValue());
             assertEquals(ROUTE_IP4PREFIX, nodeUpdated.augmentation(Node1.class).getIgpNodeAttributes()
-                .getPrefix().get(0).getPrefix().getIpv4Prefix().getValue());
+                .nonnullPrefix().values().iterator().next().getPrefix().getIpv4Prefix().getValue());
             return topology;
         });
 
index f5b66f50eca528b2ac253810cfddb8eb91395d97..107148f8b8a2c12c590344461c7b56de99731829 100644 (file)
@@ -73,11 +73,11 @@ public class Ipv6ReachabilityTopologyBuilderTest extends AbstractTopologyBuilder
             final TopologyTypes1 topologyType = topology.getTopologyTypes().augmentation(TopologyTypes1.class);
             assertNotNull(topologyType);
             assertNotNull(topologyType.getBgpIpv6ReachabilityTopology());
-            assertEquals(1, topology.getNode().size());
-            final Node node = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node node = topology.nonnullNode().values().iterator().next();
             assertEquals(NEXT_HOP, node.getNodeId().getValue());
-            assertEquals(ROUTE_IP6PREFIX, node.augmentation(Node1.class).getIgpNodeAttributes().getPrefix()
-                .get(0).getPrefix().getIpv6Prefix().getValue());
+            assertEquals(ROUTE_IP6PREFIX, node.augmentation(Node1.class).getIgpNodeAttributes().nonnullPrefix()
+                .values().iterator().next().getPrefix().getIpv6Prefix().getValue());
             return topology;
         });
 
@@ -85,11 +85,11 @@ public class Ipv6ReachabilityTopologyBuilderTest extends AbstractTopologyBuilder
         updateIpv6Route(createIpv6Route(NEW_NEXT_HOP));
 
         readDataOperational(getDataBroker(), this.ipv6TopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getNode().size());
-            final Node nodeUpdated = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node nodeUpdated = topology.nonnullNode().values().iterator().next();
             assertEquals(NEW_NEXT_HOP, nodeUpdated.getNodeId().getValue());
-            assertEquals(ROUTE_IP6PREFIX, nodeUpdated.augmentation(Node1.class).getIgpNodeAttributes().getPrefix()
-                .get(0).getPrefix().getIpv6Prefix().getValue());
+            assertEquals(ROUTE_IP6PREFIX, nodeUpdated.augmentation(Node1.class).getIgpNodeAttributes().nonnullPrefix()
+                .values().iterator().next().getPrefix().getIpv6Prefix().getValue());
             return topology;
         });
 
index f3ba073f70d794b9ee119535d6b125eaa2cdd85f..17f3b67f0a74907109f0fb54947e63a4f876b787 100644 (file)
@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify;
 import static org.opendaylight.protocol.util.CheckUtil.checkNotPresentOperational;
 import static org.opendaylight.protocol.util.CheckUtil.readDataOperational;
 
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import io.netty.buffer.Unpooled;
 import java.nio.charset.StandardCharsets;
@@ -70,7 +71,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.link
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.LinkstateRoute;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.LinkstateRouteBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.LinkstateRouteKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.linkstate.route.Attributes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.linkstate.routes.linkstate.routes.linkstate.route.Attributes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.IsisNodeCaseBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev200120.node.identifier.c.router.identifier.isis.node._case.IsisNodeBuilder;
@@ -171,14 +171,13 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
     }
 
     @Test
-    @SuppressWarnings("checkstyle:LineLength")
     public void testIsisLinkstateTopologyBuilder() throws InterruptedException, ExecutionException {
         // create node
         updateLinkstateRoute(this.linkstateNodeRouteIID,
                 createLinkstateNodeRoute(ProtocolId.IsisLevel2, "node1", NODE_1_AS, ROUTER_1_ID));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getNode().size());
-            final Node node1 = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node node1 = topology.nonnullNode().values().iterator().next();
             assertEquals(NODE_1_ISIS_ID, node1.getNodeId().getValue());
             final IgpNodeAttributes igpNode1 = node1.augmentation(Node1.class).getIgpNodeAttributes();
             assertEquals(ROUTER_1_ID, igpNode1.getRouterId().get(0).getIpv4Address().getValue());
@@ -194,7 +193,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                     .topology.rev131021.IgpNodeAttributes1.class));
             assertEquals(LinkstateTopologyBuilder.LINKSTATE_TOPOLOGY_TYPE, topology.getTopologyTypes());
             assertNull(node1.augmentation(
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class));
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class));
             return topology;
         });
 
@@ -202,11 +201,11 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
         updateLinkstateRoute(this.linkstateLinkRouteIID,
                 createLinkstateLinkRoute(ProtocolId.IsisLevel2, NODE_1_AS, NODE_2_AS, "link1"));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getLink().size());
-            final Link link1 = topology.getLink().get(0);
-            assertEquals(2, topology.getNode().size());
-            assertEquals(1, topology.getNode().get(0).getTerminationPoint().size());
-            assertEquals(1, topology.getNode().get(1).getTerminationPoint().size());
+            assertEquals(1, topology.nonnullLink().size());
+            final Link link1 = topology.nonnullLink().values().iterator().next();
+            assertEquals(2, topology.nonnullNode().size());
+            assertEquals(1, Iterables.get(topology.getNode().values(), 0).getTerminationPoint().size());
+            assertEquals(1, Iterables.get(topology.getNode().values(), 1).getTerminationPoint().size());
             assertEquals("bgpls://IsisLevel2:1/type=link&local-as=1&local-router=0000.0102.0304&remote-as"
                     + "=2&mt=1", link1.getLinkId().getValue());
             assertEquals(NODE_1_ISIS_ID, link1.getSource().getSourceNode().getValue());
@@ -220,10 +219,10 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
             assertEquals(LinkstateTopologyBuilder.SR_AWARE_LINKSTATE_TOPOLOGY_TYPE, topology.getTopologyTypes());
             assertEquals(2, topology.getNode().size());
             final Node srcNode;
-            if (topology.getNode().get(0).getNodeId().getValue().contains("0000.0102.0304")) {
-                srcNode = topology.getNode().get(0);
+            if (topology.getNode().values().iterator().next().getNodeId().getValue().contains("0000.0102.0304")) {
+                srcNode = topology.getNode().values().iterator().next();
             } else {
-                srcNode = topology.getNode().get(1);
+                srcNode = Iterables.get(topology.getNode().values(), 1);
             }
             assertEquals(1, srcNode.augmentation(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class)
@@ -240,7 +239,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                 createLinkstateNodeRoute(ProtocolId.IsisLevel2, "updated-node", NODE_1_AS, ROUTER_2_ID));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
             assertEquals(1, topology.getNode().size());
-            final IgpNodeAttributes igpNode2 = topology.getNode().get(0).augmentation(Node1.class)
+            final IgpNodeAttributes igpNode2 = topology.getNode().values().iterator().next().augmentation(Node1.class)
                     .getIgpNodeAttributes();
             assertEquals(ROUTER_2_ID, igpNode2.getRouterId().get(0).getIpv4Address().getValue());
             assertEquals("updated-node", igpNode2.getName().getValue());
@@ -258,14 +257,13 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
     }
 
     @Test
-    @SuppressWarnings("checkstyle:LineLength")
     public void testOspfLinkstateTopologyBuilder() throws InterruptedException, ExecutionException {
         // create node
         updateLinkstateRoute(this.linkstateNodeRouteIID,
                 createLinkstateNodeRoute(ProtocolId.Ospf, "node1", NODE_1_AS, ROUTER_1_ID));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getNode().size());
-            final Node node1 = topology.getNode().get(0);
+            assertEquals(1, topology.nonnullNode().size());
+            final Node node1 = topology.nonnullNode().values().iterator().next();
             assertEquals(NODE_1_OSPF_ID, node1.getNodeId().getValue());
             final IgpNodeAttributes igpNode1 = node1.augmentation(Node1.class).getIgpNodeAttributes();
             assertEquals(ROUTER_1_ID, igpNode1.getRouterId().get(0).getIpv4Address().getValue());
@@ -276,7 +274,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                     .getTeRouterIdIpv4().getValue());
             assertEquals(LinkstateTopologyBuilder.LINKSTATE_TOPOLOGY_TYPE, topology.getTopologyTypes());
             assertNull(node1.augmentation(
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class));
+                org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class));
             return topology;
         });
 
@@ -284,19 +282,19 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
         updateLinkstateRoute(this.linkstatePrefixRouteIID,
                 createLinkstatePrefixRoute(ProtocolId.Ospf, NODE_1_AS, NODE_1_PREFIX, 500L, ROUTER_1_ID));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
-            final Node node1 = topology.getNode().get(0);
+            final Node node1 = topology.nonnullNode().values().iterator().next();
             final IgpNodeAttributes igpNode1 = node1.augmentation(Node1.class).getIgpNodeAttributes();
-            assertEquals(1, igpNode1.getPrefix().size());
-            final Prefix prefix = igpNode1.getPrefix().get(0);
+            assertEquals(1, igpNode1.nonnullPrefix().size());
+            final Prefix prefix = igpNode1.nonnullPrefix().values().iterator().next();
             assertEquals(NODE_1_PREFIX, prefix.getPrefix().getIpv4Prefix().getValue());
             assertEquals(500L, prefix.getMetric().longValue());
             assertEquals(LinkstateTopologyBuilder.SR_AWARE_LINKSTATE_TOPOLOGY_TYPE, topology.getTopologyTypes());
             assertEquals(1, node1.augmentation(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class)
-                    .getSegments().size());
+                    .nonnullSegments().size());
             assertEquals(SRGB_START + NODE_SID_INDEX, node1.augmentation(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class)
-                    .getSegments().get(0).getSegmentId().getValue().intValue());
+                    .nonnullSegments().values().iterator().next().getSegmentId().getValue().intValue());
             return topology;
         });
 
@@ -304,11 +302,11 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
         updateLinkstateRoute(this.linkstateLinkRouteIID,
                 createLinkstateLinkRoute(ProtocolId.Ospf, NODE_1_AS, NODE_2_AS, "link1"));
         readDataOperational(getDataBroker(), this.linkstateTopoBuilder.getInstanceIdentifier(), topology -> {
-            assertEquals(1, topology.getLink().size());
-            final Link link1 = topology.getLink().get(0);
+            assertEquals(1, topology.nonnullLink().size());
+            final Link link1 = topology.nonnullLink().values().iterator().next();
             assertEquals(2, topology.getNode().size());
-            assertEquals(1, topology.getNode().get(0).getTerminationPoint().size());
-            assertEquals(1, topology.getNode().get(1).getTerminationPoint().size());
+            assertEquals(1, Iterables.get(topology.getNode().values(), 0).getTerminationPoint().size());
+            assertEquals(1, Iterables.get(topology.getNode().values(), 1).getTerminationPoint().size());
             assertEquals("bgpls://Ospf:1/type=link&local-as=1&local-router=0000.0102.0304&remote-as=2&mt=1",
                     link1.getLinkId().getValue());
             assertEquals(NODE_1_OSPF_ID, link1.getSource().getSourceNode().getValue());
@@ -325,10 +323,10 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
             assertEquals(LinkstateTopologyBuilder.SR_AWARE_LINKSTATE_TOPOLOGY_TYPE, topology.getTopologyTypes());
             assertEquals(2, topology.getNode().size());
             final Node srcNode;
-            if (topology.getNode().get(0).getNodeId().getValue().contains("0000.0102.0304")) {
-                srcNode = topology.getNode().get(0);
+            if (topology.getNode().values().iterator().next().getNodeId().getValue().contains("0000.0102.0304")) {
+                srcNode = topology.getNode().values().iterator().next();
             } else {
-                srcNode = topology.getNode().get(1);
+                srcNode = Iterables.get(topology.getNode().values(), 1);
             }
             assertEquals(2, srcNode.augmentation(
                     org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.sr.rev130819.Node1.class)
@@ -449,7 +447,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                                 .setAsNumber(asNumber).build()).build())
                 .setAttributes(new AttributesBuilder()
                         .setOrigin(new OriginBuilder().setValue(BgpOrigin.Igp).build())
-                        .addAugmentation(Attributes1.class, new Attributes1Builder()
+                        .addAugmentation(new Attributes1Builder()
                                 .setLinkStateAttribute(new NodeAttributesCaseBuilder()
                                         .setNodeAttributes(new NodeAttributesBuilder()
                                                 .setDynamicHostname(nodeName)
@@ -479,7 +477,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                         .setIpReachabilityInformation(new IpPrefix(new Ipv4Prefix(ipv4Prefix))).build()).build())
             .setAttributes(new AttributesBuilder()
                 .setOrigin(new OriginBuilder().setValue(BgpOrigin.Igp).build())
-                .addAugmentation(Attributes1.class, new Attributes1Builder()
+                .addAugmentation(new Attributes1Builder()
                         .setLinkStateAttribute(new PrefixAttributesCaseBuilder()
                             .setPrefixAttributes(new PrefixAttributesBuilder()
                                 .setOspfForwardingAddress(new IpAddressNoZone(new Ipv4AddressNoZone(ospfFwdAddress)))
@@ -510,7 +508,7 @@ public class LinkstateTopologyBuilderTest extends AbstractTopologyBuilderTest {
                                 .setMultiTopologyId(new TopologyIdentifier(Uint16.ONE)).build()).build())
                 .setAttributes(new AttributesBuilder()
                         .setOrigin(new OriginBuilder().setValue(BgpOrigin.Igp).build())
-                        .addAugmentation(Attributes1.class, new Attributes1Builder()
+                        .addAugmentation(new Attributes1Builder()
                                 .setLinkStateAttribute(new LinkAttributesCaseBuilder()
                                     .setLinkAttributes(new LinkAttributesBuilder()
                                         .setSharedRiskLinkGroups(Lists.newArrayList(
index 04d1b1d14c69263fd7de1418f15d36fbf0058351..dee41072bc4b292861989c35b3f8b273ed1c3b23 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>5.0.9</version>
+        <version>6.0.0</version>
         <relativePath/>
     </parent>
 
index 88ab3d4f0158b8680a84a2c2453e50b70d16f8b9..b467bfc07e81ab7a2ef5e02e3cb5aa2638fa10c3 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 9ccb0009d7723da493ea2918024c4beb48bde0f2..24c4beb7e58c64217359343b0c9eac1a6eace160 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 53585d7f8f61237d32f39ceb49c6efb7c21df458..a977008815cf79c81316af1c6d2403687b2973d7 100644 (file)
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>yang-model-api</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.checkerframework</groupId>
             <artifactId>checker-qual</artifactId>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>mockito-configuration</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 45d213d92d9d98201920b9c5223cc2872bad9213..d0f61387b3ecf909b0e46da5d7413c9d445ca5bf 100644 (file)
@@ -18,7 +18,7 @@ import io.netty.channel.ChannelFuture;
 import io.netty.channel.ChannelFutureListener;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
-import java.util.List;
+import java.util.Collection;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -55,7 +55,7 @@ public final class BmpMonitoringStationImpl implements BmpMonitoringStation, Clu
     private final DOMDataBroker domDataBroker;
     private final InetSocketAddress address;
     private final MonitorId monitorId;
-    private final List<MonitoredRouter> monitoredRouters;
+    private final Collection<MonitoredRouter> monitoredRouters;
     private final BmpDispatcher dispatcher;
     private final RouterSessionManager sessionManager;
     private final YangInstanceIdentifier yangMonitorId;
@@ -64,7 +64,7 @@ public final class BmpMonitoringStationImpl implements BmpMonitoringStation, Clu
 
     public BmpMonitoringStationImpl(final BmpDeployerDependencies bmpDeployerDependencies,
             final BmpDispatcher dispatcher, final MonitorId monitorId, final InetSocketAddress address,
-            final List<MonitoredRouter> mrs) {
+            final Collection<MonitoredRouter> mrs) {
         this.domDataBroker = requireNonNull(bmpDeployerDependencies.getDomDataBroker());
         this.dispatcher = requireNonNull(dispatcher);
         this.monitorId = monitorId;
index 8ec8d506fed64620dde462ba7376fd7e0fbfddd3..44c0b052128dcc363a12545d5dab60d451a47a9f 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.protocol.bmp.impl.app;
 
 import java.nio.charset.StandardCharsets;
-import java.util.List;
+import java.util.Collection;
 import java.util.Objects;
 import org.opendaylight.protocol.concepts.KeyMapping;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
@@ -20,7 +20,7 @@ public final class KeyConstructorUtil {
         // Hidden on purpose
     }
 
-    public static KeyMapping constructKeys(final List<MonitoredRouter> mrs) {
+    public static KeyMapping constructKeys(final Collection<MonitoredRouter> mrs) {
         final KeyMapping ret = KeyMapping.getKeyMapping();
         if (mrs != null) {
             mrs.stream().filter(Objects::nonNull).filter(KeyConstructorUtil::isNotNullorEmpty)
index 99ae3fbd52f8bfd73592195b007c2f2b2d0e81c9..5dcc4b0e583ffa31501405a2e02807930b79da99 100644 (file)
@@ -11,11 +11,9 @@ import static java.util.Objects.requireNonNull;
 
 import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree;
-import org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
 public final class BmpDeployerDependencies {
     private final DataBroker dataBroker;
@@ -25,12 +23,12 @@ public final class BmpDeployerDependencies {
     private final ClusterSingletonServiceProvider singletonProvider;
 
     public BmpDeployerDependencies(final DataBroker dataBroker, final DOMDataBroker domDataBroker,
-            final RIBExtensionConsumerContext extensions, final BindingCodecTreeFactory codecTreeFactory,
-            final SchemaContext schemaContext, final ClusterSingletonServiceProvider singletonProvider) {
+            final RIBExtensionConsumerContext extensions, final BindingCodecTree codecTree,
+            final ClusterSingletonServiceProvider singletonProvider) {
         this.dataBroker = requireNonNull(dataBroker);
         this.domDataBroker = requireNonNull(domDataBroker);
         this.extensions = requireNonNull(extensions);
-        this.tree = requireNonNull(codecTreeFactory).create(schemaContext);
+        this.tree = requireNonNull(codecTree);
         this.singletonProvider = requireNonNull(singletonProvider);
     }
 
index 8bd4c83886ada9eb94e3ba9c6e47dd0c53cc0f22..ec9f20db0d8c6cb6c35687fe2f985a0568f46dc9 100644 (file)
@@ -130,7 +130,7 @@ public final class BmpDeployerImpl implements ClusteredDataTreeChangeListener<Od
             final InetSocketAddress inetAddress =
                     Ipv4Util.toInetSocketAddress(server.getBindingAddress(), server.getBindingPort());
             final BmpMonitoringStationImpl monitor = new BmpMonitoringStationImpl(this.bmpDeployerDependencies,
-                    this.dispatcher, monitorId, inetAddress, bmpConfig.getMonitoredRouter());
+                    this.dispatcher, monitorId, inetAddress, bmpConfig.nonnullMonitoredRouter().values());
             this.bmpMonitorServices.put(monitorId, monitor);
         } catch (final Exception e) {
             LOG.error("Failed to create Bmp Monitor {}.", monitorId, e);
index 9c6a2e5e7c44d1d97398446b7e10727b31361a61..d7c05d6a3f47dd604a853ccea25ad36d17859a65 100644 (file)
   <reference id="dataBroker" interface="org.opendaylight.mdsal.binding.api.DataBroker" odl:type="default"/>
   <reference id="domDataBroker" interface="org.opendaylight.mdsal.dom.api.DOMDataBroker" odl:type="default"/>
   <reference id="globalBgpExtensions" interface="org.opendaylight.protocol.bgp.rib.spi.RIBExtensionConsumerContext"/>
-  <reference id="codecTreeFactory" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTreeFactory"/>
-  <odl:static-reference id="domSchemaService" interface="org.opendaylight.mdsal.dom.api.DOMSchemaService"/>
+  <reference id="codecTree" interface="org.opendaylight.mdsal.binding.dom.codec.api.BindingCodecTree"/>
   <reference id="clusterSingletonServiceProvider" interface="org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider"/>
 
   <bean id="bmpDeployerDependecies" class="org.opendaylight.protocol.bmp.impl.config.BmpDeployerDependencies">
     <argument ref="dataBroker"/>
     <argument ref="domDataBroker"/>
     <argument ref="globalBgpExtensions"/>
-    <argument ref="codecTreeFactory"/>
-    <argument>
-      <bean factory-ref="domSchemaService" factory-method="getGlobalContext"/>
-    </argument>
+    <argument ref="codecTree"/>
     <argument ref="clusterSingletonServiceProvider"/>
   </bean>
 
index 1a921a057a1146c64bf9a43c4310b559fefeb42c..5b426e2dcdc5e9e31e844ada455a987c81533b32 100644 (file)
@@ -33,19 +33,18 @@ import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.SocketChannel;
 import io.netty.channel.socket.nio.NioSocketChannel;
 import java.net.InetSocketAddress;
-import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
+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.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
-import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration;
@@ -115,7 +114,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         .create(BmpMonitor.class).child(Monitor.class, new MonitorKey(MONITOR_ID));
     private static final PeerId PEER_ID = new PeerId(PEER1.getValue());
     private static final InstanceIdentifier<BmpMonitor> BMP_II = InstanceIdentifier.create(BmpMonitor.class);
-    private BindingToNormalizedNodeCodec mappingService;
+    private AdapterContext mappingService;
     private RIBActivator ribActivator;
     private BGPActivator bgpActivator;
     private BmpActivator bmpActivator;
@@ -133,7 +132,6 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
     private ClusterSingletonServiceProvider clusterSSProv;
     @Mock
     private ClusterSingletonServiceProvider clusterSSProv2;
-    private DOMSchemaService schemaService;
 
     @Before
     public void setUp() throws Exception {
@@ -159,10 +157,9 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         doAnswer(invocationOnMock -> BmpMonitorImplTest.this.singletonService2.closeServiceInstance())
             .when(this.singletonServiceRegistration2).close();
 
-        this.mappingService.onGlobalContextUpdated(this.schemaService.getGlobalContext());
         this.ribActivator = new RIBActivator();
         this.ribExtension = new SimpleRIBExtensionProviderContext();
-        this.ribActivator.startRIBExtensionProvider(this.ribExtension, this.mappingService);
+        this.ribActivator.startRIBExtensionProvider(this.ribExtension, this.mappingService.currentSerializer());
 
         this.bgpActivator = new BGPActivator();
         final BGPExtensionProviderContext context = new SimpleBGPExtensionProviderContext();
@@ -186,16 +183,15 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         wTx.commit().get();
 
         final BmpDeployerDependencies bmpDependecies = new BmpDeployerDependencies(getDataBroker(), getDomBroker(),
-            this.ribExtension, this.mappingService.getCodecFactory(), this.schemaService.getGlobalContext(),
-            this.clusterSSProv);
+            this.ribExtension, this.mappingService.currentSerializer(), this.clusterSSProv);
         this.bmpApp = new BmpMonitoringStationImpl(bmpDependecies, this.dispatcher, MONITOR_ID, inetAddress, null);
         readDataOperational(getDataBroker(), BMP_II, monitor -> {
-            assertEquals(1, monitor.getMonitor().size());
-            final Monitor bmpMonitor = monitor.getMonitor().get(0);
+            assertEquals(1, monitor.nonnullMonitor().size());
+            final Monitor bmpMonitor = monitor.getMonitor().values().iterator().next();
             assertEquals(MONITOR_ID, bmpMonitor.getMonitorId());
-            assertEquals(0, bmpMonitor.getRouter().size());
+            assertEquals(0, bmpMonitor.nonnullRouter().size());
             assertEquals(MONITOR_ID, bmpMonitor.getMonitorId());
-            assertEquals(0, bmpMonitor.getRouter().size());
+            assertEquals(0, bmpMonitor.nonnullRouter().size());
             return monitor;
         });
     }
@@ -203,8 +199,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
-        this.schemaService = customizer.getSchemaService();
+        this.mappingService = customizer.getAdapterContext();
         return customizer;
     }
 
@@ -215,7 +210,6 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         this.bmpActivator.close();
         this.dispatcher.close();
         this.bmpApp.close();
-        this.mappingService.close();
 
         checkNotPresentOperational(getDataBroker(), BMP_II);
     }
@@ -285,7 +279,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             assertNotNull(monitor.getRouter());
             // now find the current router instance
             Router router = null;
-            for (final Router r : monitor.getRouter()) {
+            for (final Router r : monitor.getRouter().values()) {
                 if (routerId.equals(r.getRouterId())) {
                     router = r;
                     break;
@@ -293,7 +287,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             }
             assertNotNull(router);
             assertEquals(Status.Down, router.getStatus());
-            assertTrue(router.getPeer().isEmpty());
+            assertNull(router.getPeer());
             return router;
         });
 
@@ -303,7 +297,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         readDataOperational(getDataBroker(), MONITOR_IID, monitor -> {
             assertNotNull(monitor.getRouter());
             Router retRouter = null;
-            for (final Router r : monitor.getRouter()) {
+            for (final Router r : monitor.getRouter().values()) {
                 if (routerId.equals(r.getRouterId())) {
                     retRouter = r;
                     break;
@@ -314,7 +308,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             assertEquals("name", retRouter.getName());
             assertEquals("description", retRouter.getDescription());
             assertEquals(routerId, retRouter.getRouterId());
-            assertTrue(retRouter.getPeer().isEmpty());
+            assertNull(retRouter.getPeer());
             assertEquals(Status.Up, retRouter.getStatus());
             return retRouter;
         });
@@ -324,10 +318,10 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
                 MONITOR_IID.child(Router.class, new RouterKey(routerId));
 
         readDataOperational(getDataBroker(), routerIId, router -> {
-            final List<Peer> peers = router.getPeer();
-            assertNotNull(peers.size());
+            final Map<PeerKey, Peer> peers = router.getPeer();
+            assertNotNull(peers);
             assertEquals(1, peers.size());
-            final Peer peer = peers.get(0);
+            final Peer peer = peers.values().iterator().next();
             assertEquals(PeerType.Global, peer.getType());
             assertEquals(PEER_ID, peer.getPeerId());
             assertEquals(PEER1, peer.getBgpId());
@@ -337,15 +331,15 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             assertNull(peer.getStats());
 
             assertNotNull(peer.getPrePolicyRib());
-            assertEquals(1, peer.getPrePolicyRib().getTables().size());
-            final Tables prePolicyTable = peer.getPrePolicyRib().getTables().get(0);
+            assertEquals(1, peer.getPrePolicyRib().nonnullTables().size());
+            final Tables prePolicyTable = peer.getPrePolicyRib().nonnullTables().values().iterator().next();
             assertEquals(Ipv4AddressFamily.class, prePolicyTable.getAfi());
             assertEquals(UnicastSubsequentAddressFamily.class, prePolicyTable.getSafi());
             assertFalse(prePolicyTable.getAttributes().isUptodate());
 
             assertNotNull(peer.getPostPolicyRib());
-            assertEquals(1, peer.getPostPolicyRib().getTables().size());
-            final Tables postPolicyTable = peer.getPrePolicyRib().getTables().get(0);
+            assertEquals(1, peer.getPostPolicyRib().nonnullTables().size());
+            final Tables postPolicyTable = peer.getPrePolicyRib().nonnullTables().values().iterator().next();
             assertEquals(Ipv4AddressFamily.class, postPolicyTable.getAfi());
             assertEquals(UnicastSubsequentAddressFamily.class, postPolicyTable.getSafi());
             assertFalse(postPolicyTable.getAttributes().isUptodate());
@@ -381,9 +375,11 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             assertEquals(tlvs.getLocRibRoutesTlv().getCount(), peerStats.getLocRibRoutes());
             assertEquals(tlvs.getRejectedPrefixesTlv().getCount(), peerStats.getRejectedPrefixes());
             assertEquals(tlvs.getPerAfiSafiAdjRibInTlv().getCount().toString(),
-                    peerStats.getPerAfiSafiAdjRibInRoutes().getAfiSafi().get(0).getCount().toString());
+                    peerStats.getPerAfiSafiAdjRibInRoutes().getAfiSafi().values().iterator().next().getCount()
+                    .toString());
             assertEquals(tlvs.getPerAfiSafiLocRibTlv().getCount().toString(),
-                    peerStats.getPerAfiSafiLocRibRoutes().getAfiSafi().get(0).getCount().toString());
+                    peerStats.getPerAfiSafiLocRibRoutes().getAfiSafi().values().iterator().next().getCount()
+                    .toString());
             return peerStats;
         });
 
@@ -402,8 +398,8 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
                 AdjRibInType.PrePolicy)));
 
         readDataOperational(getDataBroker(), peerIId.child(PrePolicyRib.class), prePolicyRib -> {
-            assertTrue(!prePolicyRib.getTables().isEmpty());
-            final Tables tables = prePolicyRib.getTables().get(0);
+            assertFalse(prePolicyRib.getTables().isEmpty());
+            final Tables tables = prePolicyRib.getTables().values().iterator().next();
             assertTrue(tables.getAttributes().isUptodate());
             assertEquals(3, ((Ipv4RoutesCase) tables.getRoutes()).getIpv4Routes().getIpv4Route().size());
             return tables;
@@ -415,8 +411,8 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
                 AdjRibInType.PostPolicy)));
 
         readDataOperational(getDataBroker(), peerIId.child(PostPolicyRib.class), postPolicyRib -> {
-            assertTrue(!postPolicyRib.getTables().isEmpty());
-            final Tables tables = postPolicyRib.getTables().get(0);
+            assertFalse(postPolicyRib.getTables().isEmpty());
+            final Tables tables = postPolicyRib.getTables().values().iterator().next();
             assertTrue(tables.getAttributes().isUptodate());
             assertEquals(3, ((org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet
                     .rev180329.bmp.monitor.monitor.router.peer.post.policy.rib.tables.routes.Ipv4RoutesCase)
@@ -437,8 +433,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
     @Test
     public void deploySecondInstance() throws Exception {
         final BmpDeployerDependencies bmpDependecies = new BmpDeployerDependencies(getDataBroker(), getDomBroker(),
-            this.ribExtension, this.mappingService.getCodecFactory(), this.schemaService.getGlobalContext(),
-            this.clusterSSProv2);
+            this.ribExtension, this.mappingService.currentSerializer(), this.clusterSSProv2);
 
         final BmpMonitoringStation monitoringStation2 = new BmpMonitoringStationImpl(bmpDependecies,
             this.dispatcher, new MonitorId("monitor2"),
index 4d15b329ef67567bae24bb34b75a29e69d86c579..7ec7401c6a95229dd1b7c1bc427d0efe4a9f27d3 100644 (file)
@@ -16,7 +16,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 132b63f48271861a6c46c7c1cb23687a45f5838b..a86a03785abc782f5f1eb8cf874487ed87764e5b 100644 (file)
@@ -47,7 +47,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index fae755b135a45222f988096aacbe7f96b2e4f2b0..b9d77feb28b636710b59d45ab399ceda4d0c8c7b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 550ce5c24ff5900cdde305cf0eaaf18889afbc1c..0a063e8e821da6575d5125d47afbeaf3478e72d7 100644 (file)
@@ -62,7 +62,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>yang-test-util</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 213e99f297ef59c98da1c270a4ee3eeba42f9072..516ce6c24de4958806141a54f9038d265dc8bf8c 100644 (file)
@@ -41,7 +41,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStre
 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.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
 import org.slf4j.Logger;
@@ -57,7 +57,7 @@ public final class ConfigLoaderImpl implements ConfigLoader, AutoCloseable {
     private static final long TIMEOUT_SECONDS = 5;
     @GuardedBy("this")
     private final Map<String, ConfigFileProcessor> configServices = new HashMap<>();
-    private final SchemaContext schemaContext;
+    private final EffectiveModelContext schemaContext;
     private final BindingNormalizedNodeSerializer bindingSerializer;
     private final String path;
     private final Thread watcherThread;
@@ -65,8 +65,8 @@ public final class ConfigLoaderImpl implements ConfigLoader, AutoCloseable {
     @GuardedBy("this")
     private boolean closed = false;
 
-    public ConfigLoaderImpl(final SchemaContext schemaContext, final BindingNormalizedNodeSerializer bindingSerializer,
-            final FileWatcher fileWatcher) {
+    public ConfigLoaderImpl(final EffectiveModelContext schemaContext,
+            final BindingNormalizedNodeSerializer bindingSerializer, final FileWatcher fileWatcher) {
         this.schemaContext = requireNonNull(schemaContext);
         this.bindingSerializer = requireNonNull(bindingSerializer);
         this.path = requireNonNull(fileWatcher.getPathFile());
index 36bf11237c56d709ba48dc784fac9a918020cf67..002ecf5a93d9b7fbe7022154ba489ba671299bbb 100644 (file)
@@ -22,10 +22,9 @@ import org.junit.Before;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.bgpcep.config.loader.spi.ConfigFileProcessor;
-import org.opendaylight.mdsal.binding.dom.adapter.BindingToNormalizedNodeCodec;
+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.BindingCodecTreeFactory;
 import org.opendaylight.mdsal.dom.api.DOMSchemaService;
 
 public abstract class AbstractConfigLoader extends AbstractConcurrentDataBrokerTest {
@@ -42,8 +41,7 @@ public abstract class AbstractConfigLoader extends AbstractConcurrentDataBrokerT
     private WatchEvent<?> watchEvent;
     @Mock
     private FileWatcher fileWatcher;
-    protected BindingToNormalizedNodeCodec mappingService;
-    protected BindingCodecTreeFactory bindingCodecTreeFactory;
+    protected AdapterContext mappingService;
     protected DOMSchemaService schemaService;
 
     public AbstractConfigLoader() {
@@ -65,15 +63,15 @@ public abstract class AbstractConfigLoader extends AbstractConcurrentDataBrokerT
             clearEvent();
             return null;
         }).when(this.processor).loadConfiguration(any());
-        this.configLoader = new ConfigLoaderImpl(getSchemaContext(), this.mappingService, this.fileWatcher);
+        this.configLoader = new ConfigLoaderImpl(getSchemaContext(), this.mappingService.currentSerializer(),
+            this.fileWatcher);
         this.configLoader.init();
     }
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
-        this.bindingCodecTreeFactory = customizer.getBindingToNormalized();
+        this.mappingService = customizer.getAdapterContext();
         this.schemaService = customizer.getSchemaService();
         return customizer;
     }
index 6afd7c2c4da852312e9ca059bbe4d06ce88a478e..007fc49d18287ebe5f067c92197b1883e921b1af 100644 (file)
@@ -26,7 +26,7 @@
     <dependencies>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
index 2e6f959a0a3ee081fc28f2dd4dd1cd116f8a23ef..ad2e67501c89c2059484f9214be5fd4747e6296b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 32801d861db6ba1add984f56589507f21a67258b..85e9c053721a3debf11f6392502f56c7a0aa4f96 100644 (file)
@@ -51,7 +51,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>guava</artifactId>
         </dependency>
         <!--Test dependencies-->
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>config-loader-impl</artifactId>
index b76127ad967db559c2c5bc1e7bb4a419bc9ff61c..f484ad96e09e7beeb481afd3ece4707376d703f2 100644 (file)
@@ -44,7 +44,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 50ec898ab885de9b16d8e0be6c5b7399f42c5e65..513082965de60354ceb0ce88e7d59624cc40049d 100644 (file)
@@ -35,7 +35,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
-            <artifactId>mdsal-binding-dom-codec</artifactId>
+            <artifactId>mdsal-binding-dom-codec-api</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 61c4da58d0813b6563cf9ac29b3251afa249f02b..f57d1ef901042dc9cf21e0ff5ae7d381660981b6 100644 (file)
         </dependency>
 
         <!-- test dependencies -->
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 900b8f0b6be532a542aadc48b1ac26837df5779f..240375e4b8aca3c066b77121f491e126e91d8cd7 100644 (file)
@@ -9,7 +9,7 @@
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>karaf4-parent</artifactId>
-    <version>6.0.4</version>
+    <version>7.0.1</version>
     <relativePath/>
   </parent>
 
       <scope>runtime</scope>
     </dependency>
     <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-mdsal-trace</artifactId>
+      <groupId>org.opendaylight.mdsal</groupId>
+      <artifactId>features-mdsal</artifactId>
       <classifier>features</classifier>
       <type>xml</type>
       <scope>runtime</scope>
index 81f59b67150eb2f3fa87ff57b5f092cc87938678..a10e082a0e4a858ea182932ed53660caafe5dc93 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>feature-repo-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 7ad3bc47fdf97511af6af5014bf164418caa4efd..99b044b8278d1ba7b06c953f26610c166a1c8991 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 8ff90e654d4f344ae28eca59fb6952b1743561a4..cc3c74b2e21aa2033e89f724869fd348cc453e1a 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="[4,5)">odl-yangtools-data-api</feature>
+        <feature version="[5,6)">odl-yangtools-data-api</feature>
     </feature>
 </features>
index 470c504479b44abf0aa00336b6f379bcb328fa3a..a37980e8dd4f1c3d0772b0acb4214ef4d612e0fc 100644 (file)
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.controller</groupId>
+            <artifactId>odl-controller-exp-netty-config</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
     </dependencies>
 </project>
index 802d2588c326d2d96fa5ec0b3de2ca04133e030a..42e906aa0130f5eda69f61baa84d670bbc89c0cf 100644 (file)
@@ -11,6 +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-rib-impl" version="${project.version}">
+        <feature version="[2,3)">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>
\ No newline at end of file
+</features>
index 8c35f70bcf3a309e7e879fda110269d739d83167..e819799d3d71204893b9315f5df2f32df29ca752 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 42ca28efd39849180fd4642639377be73ad94d65..c07601aa3f718d462b539757c9fad151f9813567 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="[6,7)">odl-netty-4</feature>
+        <feature version="[7,8)">odl-netty-4</feature>
     </feature>
 </features>
index 17d606a766ecd08ba7621011ca30bc391707cbf5..75ae2fefd7d6d3777f143d5e61a3e882e2339dfe 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 6901666a39a4c159d3a4648f88a4ea7e0253b087..8fb307d4699b72e953b22d319efd1659b876663a 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 092044847c7c3654ab65829a03c8b099b79bfb2c..d7faefc796fae4f1404533db54816b2470773213 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 3c3e8cdcc5492669778cd9503724092ec25874d5..b06e93661c17bb18fe675bed9a9a5f99c3ce3ce9 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index e12863fe03cef7446f1668bf2159e5f2440d4f9c..f532ecaac12f94690399ad38e579fee909b7185e 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index c37b28395fb984b2a8ce41b79eb73372c0eb3303..4fcdb148336dbd6c56ebb1d975eae872212565f7 100644 (file)
 
     <dependencies>
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>pcep-impl</artifactId>
+            <groupId>org.opendaylight.controller</groupId>
+            <artifactId>odl-controller-exp-netty-config</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
@@ -32,5 +34,9 @@
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>pcep-impl</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/features/pcep/odl-bgpcep-pcep-impl/src/main/feature/feature.xml b/features/pcep/odl-bgpcep-pcep-impl/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..215e2eb
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+  Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved.
+
+  This program and the accompanying materials are made available under the
+  terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<features name="odl-bgpcep-pcep-impl-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          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="[2,3)">odl-controller-exp-netty-config</feature>
+    </feature>
+</features>
index a03f2dca42195725b3c1e8bac601cf3aeb895bd6..be78caaebc2422c8f22f8cd10ed548bb710b1657 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="[6,7)">odl-apache-commons-lang3</feature>
+        <feature version="[7,8)">odl-apache-commons-lang3</feature>
     </feature>
 </features>
index 907a0b3e74a559893b7bdf21087f6256e9fa322a..db46fa7b439407a29269ba72deab9b19b313c0ad 100644 (file)
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.controller</groupId>
+            <artifactId>odl-controller-exp-netty-config</artifactId>
+            <type>xml</type>
+            <classifier>features</classifier>
+        </dependency>
     </dependencies>
 </project>
diff --git a/features/pcep/odl-bgpcep-programming-impl/src/main/feature/feature.xml b/features/pcep/odl-bgpcep-programming-impl/src/main/feature/feature.xml
new file mode 100644 (file)
index 0000000..ea2aa83
--- /dev/null
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+  Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved.
+
+  This program and the accompanying materials are made available under the
+  terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  and is available at http://www.eclipse.org/legal/epl-v10.html
+-->
+<features name="odl-bgpcep-programming-impl-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          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="[2,3)">odl-controller-exp-netty-config</feature>
+    </feature>
+</features>
index 743df9beff50ec5bd709f2f9871354d4ffd1fcb0..456373a3f5a9b725af8fa0deeeb553a22249767b 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index a1faa69cad3189027af34acdfd4bbda2305a3cb3..bded183181b543264dd6861ac5342b475662d048 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 8daf1c5be6504003bcd4951b6af3c43ccc395156..d02b6a19e3cd4623c1b813057620e5d08301e4e5 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 21b682bdd9eec9753c2006b7b26a00c539303206..1f881cc70654d807491e1c2958c6f113bfb3beb3 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index f163c34065fb3a57a425808a063d05de64bfa8ce..aafd2296f1348edf43e886a1071ec103148216f0 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.graph;
 
 import java.util.List;
+import org.eclipse.jdt.annotation.NonNull;
 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.IpPrefix;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.graph.rev191125.graph.topology.Graph;
@@ -62,7 +63,7 @@ public interface ConnectedGraph {
      * @param key Unique Vertex Identifier
      * @return Vertex or null if there is no Vertex associated to the given key in this graph
      */
-    ConnectedVertex getConnectedVertex(Long key);
+    ConnectedVertex getConnectedVertex(@NonNull Long key);
 
     /**
      * Returns the Vertex associated to the given IP address.
@@ -111,7 +112,7 @@ public interface ConnectedGraph {
      * @param key Unique Edge Identifier
      * @return Edge or null if there is no Edge associated to the given key in this graph
      */
-    ConnectedEdge getConnectedEdge(Long key);
+    ConnectedEdge getConnectedEdge(@NonNull Long key);
 
     /**
      * Returns the Edge associated to the given IP address.
index d280cfcbe7487d50daaa57c7ce6a0f8201e51a25..c7bb79bef917b4f24f2324fa512e4db2a7d50883 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 8e356b5c5dbef28fe96e13e1e34a910c4e62e6a4..16adf45590aaba7f2c8d47003756b13c0233fd0c 100644 (file)
@@ -5,7 +5,6 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.graph.impl;
 
 import static com.google.common.base.Preconditions.checkArgument;
@@ -36,10 +35,7 @@ import org.slf4j.LoggerFactory;
  * @author Olivier Dugeon
  * @author Philippe Niger
  */
-
-
 public class ConnectedGraphImpl implements ConnectedGraph {
-
     private static final Logger LOG = LoggerFactory.getLogger(ConnectedGraphImpl.class);
 
     /* List of Connected Vertics that composed this Connected Graph */
@@ -57,7 +53,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     /* Reference to Graph Model Server to store corresponding graph in DataStore */
     private final ConnectedGraphServer connectedGraphServer;
 
-    public ConnectedGraphImpl(Graph newGraph, ConnectedGraphServer server) {
+    public ConnectedGraphImpl(final Graph newGraph, final ConnectedGraphServer server) {
         this.graph = newGraph;
         createConnectedGraph();
         this.connectedGraphServer = server;
@@ -73,28 +69,22 @@ public class ConnectedGraphImpl implements ConnectedGraph {
             return;
         }
         /* Add all vertices */
-        if (this.graph.getVertex() != null) {
-            for (Vertex vertex : this.graph.getVertex()) {
-                ConnectedVertexImpl cvertex = new ConnectedVertexImpl(vertex);
-                vertices.put(cvertex.getKey(), cvertex);
-            }
+        for (Vertex vertex : this.graph.nonnullVertex().values()) {
+            ConnectedVertexImpl cvertex = new ConnectedVertexImpl(vertex);
+            vertices.put(cvertex.getKey(), cvertex);
         }
         /* Add all edges */
-        if (this.graph.getEdge() != null) {
-            for (Edge edge : this.graph.getEdge()) {
-                ConnectedEdgeImpl cedge = new ConnectedEdgeImpl(edge);
-                edges.put(cedge.getKey(), cedge);
-            }
+        for (Edge edge : this.graph.nonnullEdge().values()) {
+            ConnectedEdgeImpl cedge = new ConnectedEdgeImpl(edge);
+            edges.put(cedge.getKey(), cedge);
         }
         /* Add all prefixes */
-        if (this.graph.getPrefix() != null) {
-            for (Prefix prefix : this.graph.getPrefix()) {
-                ConnectedVertexImpl cvertex = vertices.get(prefix.getVertexId().longValue());
-                if (cvertex != null) {
-                    cvertex.addPrefix(prefix);
-                }
-                prefixes.putIfAbsent(prefix.getPrefix(), prefix);
+        for (Prefix prefix : this.graph.nonnullPrefix().values()) {
+            ConnectedVertexImpl cvertex = vertices.get(prefix.getVertexId().longValue());
+            if (cvertex != null) {
+                cvertex.addPrefix(prefix);
             }
+            prefixes.putIfAbsent(prefix.getPrefix(), prefix);
         }
     }
 
@@ -104,7 +94,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
      * @param  key   Unique Vertex Key identifier
      * @return new or existing Connected Vertex
      */
-    private ConnectedVertexImpl updateConnectedVertex(@NonNull Long key) {
+    private ConnectedVertexImpl updateConnectedVertex(final @NonNull Long key) {
         checkArgument(key != 0, "Provided Vertex Key must not be equal to 0");
         ConnectedVertexImpl vertex = vertices.get(key);
         if (vertex == null) {
@@ -120,7 +110,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
      * @param key   Unique Edge Key identifier
      * @return new or existing Connected Edge
      */
-    private ConnectedEdgeImpl updateConnectedEdge(@NonNull Long key) {
+    private ConnectedEdgeImpl updateConnectedEdge(final @NonNull Long key) {
         checkArgument(key != 0, "Provided Edge Key must not be equal to 0");
         ConnectedEdgeImpl edge = edges.get(key);
         if (edge == null) {
@@ -137,7 +127,8 @@ public class ConnectedGraphImpl implements ConnectedGraph {
      * @param dstVertex Destination Connected Vertex
      * @param edge      Connected Edge
      */
-    private void connectVertices(ConnectedVertexImpl srcVertex, ConnectedVertexImpl dstVertex, ConnectedEdgeImpl edge) {
+    private static void connectVertices(final ConnectedVertexImpl srcVertex, final ConnectedVertexImpl dstVertex,
+            final ConnectedEdgeImpl edge) {
         if (edge != null) {
             edge.setSource(srcVertex);
             edge.setDestination(dstVertex);
@@ -157,16 +148,16 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<ConnectedVertex> getVertices() {
-        return new ArrayList<ConnectedVertex>(this.vertices.values());
+        return new ArrayList<>(this.vertices.values());
     }
 
     @Override
-    public ConnectedVertex getConnectedVertex(@NonNull Long key) {
+    public ConnectedVertex getConnectedVertex(final Long key) {
         return vertices.get(key);
     }
 
     @Override
-    public ConnectedVertex getConnectedVertex(IpAddress address) {
+    public ConnectedVertex getConnectedVertex(final IpAddress address) {
         IpPrefix prefix = null;
         if (address.getIpv4Address() != null) {
             prefix = new IpPrefix(new Ipv4Prefix(address.getIpv4Address().getValue() + "/32"));
@@ -189,16 +180,16 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<ConnectedEdge> getEdges() {
-        return new ArrayList<ConnectedEdge>(this.edges.values());
+        return new ArrayList<>(this.edges.values());
     }
 
     @Override
-    public ConnectedEdge getConnectedEdge(@NonNull Long key) {
+    public ConnectedEdge getConnectedEdge(final Long key) {
         return edges.get(key);
     }
 
     @Override
-    public ConnectedEdge getConnectedEdge(IpAddress address) {
+    public ConnectedEdge getConnectedEdge(final IpAddress address) {
         for (ConnectedEdge cedge : edges.values()) {
             if (cedge.getEdge() == null) {
                 continue;
@@ -217,16 +208,16 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<Prefix> getPrefixes() {
-        return new ArrayList<Prefix>(this.prefixes.values());
+        return new ArrayList<>(this.prefixes.values());
     }
 
     @Override
-    public Prefix getPrefix(IpPrefix prefix) {
+    public Prefix getPrefix(final IpPrefix prefix) {
         return this.prefixes.get(prefix);
     }
 
     @Override
-    public ConnectedVertex addVertex(Vertex vertex) {
+    public ConnectedVertex addVertex(final Vertex vertex) {
         checkArgument(vertex != null, "Provided Vertex is a null object");
         ConnectedVertexImpl cvertex = updateConnectedVertex(vertex.getVertexId().longValue());
         Vertex old = cvertex.getVertex();
@@ -236,7 +227,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public void deleteVertex(VertexKey key) {
+    public void deleteVertex(final VertexKey key) {
         checkArgument(key != null, "Provided Vertex Key is a null object");
         ConnectedVertexImpl cvertex = vertices.get(key.getVertexId().longValue());
         if (cvertex != null) {
@@ -248,7 +239,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public ConnectedEdge addEdge(Edge edge) {
+    public ConnectedEdge addEdge(final Edge edge) {
         checkArgument(edge != null, "Provided Edge is a null object");
         ConnectedEdgeImpl cedge = updateConnectedEdge(edge.getEdgeId().longValue());
         Edge old = cedge.getEdge();
@@ -269,7 +260,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public void deleteEdge(EdgeKey key) {
+    public void deleteEdge(final EdgeKey key) {
         checkArgument(key != null, "Provided Edge Key is a null object");
         ConnectedEdgeImpl cedge = edges.get(key.getEdgeId().longValue());
         if (cedge != null) {
@@ -281,7 +272,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public void addPrefix(Prefix prefix) {
+    public void addPrefix(final Prefix prefix) {
         checkArgument(prefix != null, "Provided Prefix is a null object");
         ConnectedVertexImpl cvertex = updateConnectedVertex(prefix.getVertexId().longValue());
         cvertex.addPrefix(prefix);
@@ -290,7 +281,7 @@ public class ConnectedGraphImpl implements ConnectedGraph {
     }
 
     @Override
-    public void deletePrefix(IpPrefix ippfx) {
+    public void deletePrefix(final IpPrefix ippfx) {
         checkArgument(ippfx != null, "Provided Prefix is a null object");
         Prefix prefix = prefixes.get(ippfx);
         if (prefix != null) {
index 0ae34caca941cef0d3f9bf12b5cf906158aebc7c..c12b53b8e5834028a8981b33d69953d59ed62129 100644 (file)
@@ -15,7 +15,6 @@ import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
 import org.opendaylight.graph.ConnectedGraph;
 import org.opendaylight.graph.ConnectedGraphProvider;
@@ -90,9 +89,9 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
         final WriteTransaction trans = this.chain.newWriteOnlyTransaction();
         LOG.info("Create Graph Model at top level in Operational DataStore: {}", this.graphTopologyIdentifier);
         trans.put(LogicalDatastoreType.OPERATIONAL, this.graphTopologyIdentifier,
-                new GraphTopologyBuilder().setGraph(Collections.emptyList()).build());
+                new GraphTopologyBuilder().build());
         trans.put(LogicalDatastoreType.CONFIGURATION, this.graphTopologyIdentifier,
-                new GraphTopologyBuilder().setGraph(Collections.emptyList()).build());
+                new GraphTopologyBuilder().build());
         LOG.info("Create Graph Model at top level in Configuration DataStore: {}", this.graphTopologyIdentifier);
         trans.commit().addCallback(new FutureCallback<CommitInfo>() {
             @Override
@@ -170,20 +169,20 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     /**
      *  DataStore Instance Identifier creation for the various Graph components.
      */
-    private InstanceIdentifier<Graph> getGraphInstanceIdentifier(String name) {
+    private InstanceIdentifier<Graph> getGraphInstanceIdentifier(final String name) {
         GraphKey graphKey = new GraphKey(name);
         return this.graphTopologyIdentifier.child(Graph.class, graphKey);
     }
 
-    private InstanceIdentifier<Vertex> getVertexInstanceIdentifier(Graph graph, final Vertex vertex) {
+    private InstanceIdentifier<Vertex> getVertexInstanceIdentifier(final Graph graph, final Vertex vertex) {
         return this.graphTopologyIdentifier.child(Graph.class, graph.key()).child(Vertex.class, vertex.key());
     }
 
-    private InstanceIdentifier<Edge> getEdgeInstanceIdentifier(Graph graph, final Edge edge) {
+    private InstanceIdentifier<Edge> getEdgeInstanceIdentifier(final Graph graph, final Edge edge) {
         return this.graphTopologyIdentifier.child(Graph.class, graph.key()).child(Edge.class, edge.key());
     }
 
-    private InstanceIdentifier<Prefix> getPrefixInstanceIdentifier(Graph graph, final Prefix prefix) {
+    private InstanceIdentifier<Prefix> getPrefixInstanceIdentifier(final Graph graph, final Prefix prefix) {
         return this.graphTopologyIdentifier.child(Graph.class, graph.key()).child(Prefix.class, prefix.key());
     }
 
@@ -274,7 +273,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      *
      * @param graph Graph associated to the Connected Graph
      */
-    public void clearGraph(Graph graph) {
+    public void clearGraph(final Graph graph) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         removeFromDataStore(getGraphInstanceIdentifier(graph.getName()), "Graph(" + graph.getName() + ")");
     }
@@ -287,7 +286,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param vertex  Vertex to be inserted in the graph
      * @param old     Old vertex when performing an update. Must be null for a simple addition
      */
-    public void addVertex(Graph graph, Vertex vertex, Vertex old) {
+    public void addVertex(final Graph graph, final Vertex vertex, final Vertex old) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(vertex != null, "Provided Vertex is a null object");
         InstanceIdentifier<Vertex> oldId = null;
@@ -306,7 +305,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param graph   Graph where the vertex is stored
      * @param vertex  Vertex to be removed
      */
-    public void deleteVertex(Graph graph, Vertex vertex) {
+    public void deleteVertex(final Graph graph, final Vertex vertex) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(vertex != null, "Provided Vertex is a null object");
         removeFromDataStore(getVertexInstanceIdentifier(graph, vertex), "Vertex(" + vertex.getName() + ")");
@@ -320,7 +319,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param edge   Edge to be inserted in the graph
      * @param old    Old edge when performing an update. Must be null for a simple addition
      */
-    public void addEdge(Graph graph, Edge edge, Edge old) {
+    public void addEdge(final Graph graph, final Edge edge, final Edge old) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(edge != null, "Provided Edge is a null object");
         InstanceIdentifier<Edge> oldId = null;
@@ -338,7 +337,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param graph  Graph where the edge is stored
      * @param edge   Edge to be removed
      */
-    public void deleteEdge(Graph graph, Edge edge) {
+    public void deleteEdge(final Graph graph, final Edge edge) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(edge != null, "Provided Edge is a null object");
         removeFromDataStore(getEdgeInstanceIdentifier(graph, edge), "Edge(" + edge.getName() + ")");
@@ -351,7 +350,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param graph  Graph where the prefix will be stored
      * @param prefix Prefix to be interted in the graph
      */
-    public void addPrefix(Graph graph, Prefix prefix) {
+    public void addPrefix(final Graph graph, final Prefix prefix) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(prefix != null, "Provided Prefix is a null object");
         addToDataStore(getPrefixInstanceIdentifier(graph, prefix), prefix, "Prefix(" + prefix.getPrefix() + ")");
@@ -364,7 +363,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
      * @param graph  Graph where the prefix is stored
      * @param prefix Prefix to be removed
      */
-    public void deletePrefix(Graph graph, Prefix prefix) {
+    public void deletePrefix(final Graph graph, final Prefix prefix) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         Preconditions.checkArgument(prefix != null, "Provided Prefix is a null object");
         removeFromDataStore(getPrefixInstanceIdentifier(graph, prefix), "Prefix(" + prefix.getPrefix() + ")");
@@ -384,21 +383,21 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
 
     @Override
     public ArrayList<ConnectedGraph> getConnectedGraphs() {
-        return new ArrayList<ConnectedGraph>(this.graphs.values());
+        return new ArrayList<>(this.graphs.values());
     }
 
     @Override
-    public ConnectedGraph getConnectedGraph(GraphKey key) {
+    public ConnectedGraph getConnectedGraph(final GraphKey key) {
         return graphs.get(key);
     }
 
     @Override
-    public ConnectedGraph getConnectedGraph(String name) {
+    public ConnectedGraph getConnectedGraph(final String name) {
         return graphs.get(new GraphKey(name));
     }
 
     @Override
-    public Graph getGraph(GraphKey key) {
+    public Graph getGraph(final GraphKey key) {
         if (graphs.containsKey(key)) {
             return graphs.get(key).getGraph();
         } else {
@@ -407,18 +406,15 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     }
 
     @Override
-    public Graph getGraph(String name) {
+    public Graph getGraph(final String name) {
         return getGraph(new GraphKey(name));
     }
 
     @Override
-    public ConnectedGraph createConnectedGraph(String name, DomainScope scope) {
+    public ConnectedGraph createConnectedGraph(final String name, final DomainScope scope) {
         Graph graph = new GraphBuilder()
                 .setName(name)
                 .setDomainScope(scope)
-                .setEdge(Collections.emptyList())
-                .setVertex(Collections.emptyList())
-                .setPrefix(Collections.emptyList())
                 .build();
         addToDataStore(getGraphInstanceIdentifier(name), graph, "Graph(" + name + ")");
         ConnectedGraphImpl cgraph = new ConnectedGraphImpl(graph, this);
@@ -427,7 +423,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     }
 
     @Override
-    public ConnectedGraph addGraph(Graph graph) {
+    public ConnectedGraph addGraph(final Graph graph) {
         Preconditions.checkArgument(graph != null, "Provided Graph is a null object");
         addToDataStore(getGraphInstanceIdentifier(graph.getName()), graph, "Graph(" + graph.getName() + ")");
         ConnectedGraphImpl cgraph = new ConnectedGraphImpl(graph, this);
@@ -436,7 +432,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     }
 
     @Override
-    public void deleteGraph(GraphKey key) {
+    public void deleteGraph(final GraphKey key) {
         Preconditions.checkArgument(key != null, "Provided Graph Key is a null object");
         ConnectedGraphImpl cgraph = graphs.remove(key);
         /*
index d9fc15e1d12cf245e53e21f14355b3a35336aae4..c4d76246f93c196c5438e8a856b326f2762211db 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 368f8fc348149b40d028dc2e775b5888922eca5c..8a2f6117b00279bcc38ca597c51412cd713495e2 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>bundle-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
@@ -42,8 +42,8 @@
             <!-- ODL-CONTROLLER-ARTIFACTS -->
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
-                <artifactId>mdsal-artifacts</artifactId>
-                <version>1.11.0</version>
+                <artifactId>controller-artifacts</artifactId>
+                <version>2.0.0</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -51,7 +51,7 @@
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>yangtools-artifacts</artifactId>
-                <version>4.0.6</version>
+                <version>5.0.1</version>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -59,7 +59,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>5.0.9</version>
+                <version>6.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index fcbe0fb24e13dbbfd3225dbb4695a0ca02784f84..a4df876dae1ef3b1ae6f5f7e36e33822b5e0a312 100644 (file)
@@ -84,8 +84,8 @@
 
         <!--test dependencies -->
         <dependency>
-            <groupId>javax.xml.bind</groupId>
-            <artifactId>jaxb-api</artifactId>
+            <groupId>jakarta.xml.bind</groupId>
+            <artifactId>jakarta.xml.bind-api</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
index 602446614a42d6dccb4014bad8d444a6a3652d54..911554a7287b173d8dfaaf614f5464d53cc8ca77 100644 (file)
@@ -571,7 +571,10 @@ public class PCEPRequestMessageParser extends AbstractMessageParser {
                     if (obj.isProcessingRule()) {
                         final int lastIndex = epRros.size() - 1;
                         final EndpointRroPair endpointRroPair = epRros.get(lastIndex);
-                        final List<Rros> rros = endpointRroPair.getRros();
+                        List<Rros> rros = endpointRroPair.getRros();
+                        if (rros == null) {
+                            rros = new ArrayList<>();
+                        }
                         if (obj instanceof Rro) {
                             rros.add(new RrosBuilder()
                                     .setRouteObject(new ReportedRouteObjectCaseBuilder().setRro((Rro) obj)
index f9a7f4df29f13c5ead99cf52610f16e4d3df80e3..37a949388100945c93ed6178ed70de69d436f673 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index a72396ec663ce017015bec782ed13512ede5a368..7519838a3bcfd5be219843a0c18b94ede7013c84 100644 (file)
@@ -154,7 +154,7 @@ public class PCEPDispatcherImplTest {
     }
 
     @Test(timeout = 20000)
-    public void testReconectClient() throws InterruptedException, ExecutionException {
+    public void testReconnectClient() throws InterruptedException, ExecutionException {
         final int port = InetSocketAddressUtil.getRandomPort();
         final InetSocketAddress clientAddr = InetSocketAddressUtil.getRandomLoopbackInetSocketAddress(port);
 
index 306a9038deda4394c68e321ea1c178d17bde52dc..66ff45ebb177a83ca55229dbb92f46454f9beb7b 100644 (file)
@@ -1308,7 +1308,7 @@ public class PCEPObjectParserTest {
         assertNotNull(object);
         assertTrue(object instanceof Ero);
         final Ero eroObject = (Ero) object;
-        assertTrue(eroObject.getSubobject().isEmpty());
+        assertNull(eroObject.getSubobject());
 
         final ByteBuf buffer = Unpooled.buffer();
         this.ctx.getObjectHandlerRegistry().serializeObject(eroObject, buffer);
index efe76288e464666521664868b3b87108f3c613c8..e4d91b7e6b77113dd9d7db2843dad5c56afe5676 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 6c2856711c0b23d9b7c37ec1b2071577b9659cc2..8c12aa1cdb020424953c7900f88cf7a7438a998c 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 01d9a3ebb7c29bfe628fa9fd591861ed85b03b45..6bff7f5d29c42a11c9c17b1c9a3f626a7cb23527 100644 (file)
             <artifactId>testtool-util</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index f7ec904bee47784b42d4c50e7eaccbcaeaecd6d0..c7f97f778484a7cf5c32226d6ef37943e412e743 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.protocol.pcep.segment.routing;
 
 import java.net.InetSocketAddress;
 import org.opendaylight.protocol.pcep.PCEPCapability;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.sr.pce.capability.tlv.SrPceCapabilityBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.open.object.open.TlvsBuilder;
@@ -26,9 +25,9 @@ public class PCEPSegmentRoutingCapability implements PCEPCapability {
     @Override
     public void setCapabilityProposal(final InetSocketAddress address, final TlvsBuilder builder) {
         if (this.isSegmentRoutingCapable) {
-            builder.addAugmentation(Tlvs1.class,
-                    new Tlvs1Builder().setSrPceCapability(new SrPceCapabilityBuilder().setMsd(Uint8.ZERO).build())
-                            .build());
+            builder.addAugmentation(new Tlvs1Builder()
+                .setSrPceCapability(new SrPceCapabilityBuilder().setMsd(Uint8.ZERO).build())
+                .build());
         }
     }
 
index 2993b2706966d2bfbf8851e3b37fa51c14bc05e2..7d13040d681ac0140ac3b9114efa1f163af5d57d 100644 (file)
@@ -37,7 +37,7 @@ public class PcepOpenObjectWithSpcTlvParser extends SyncOptimizationsOpenObjectP
         if (tlv instanceof SrPceCapability) {
             tlvBuilder.setSrPceCapability((SrPceCapability) tlv);
         }
-        tbuilder.addAugmentation(Tlvs1.class, tlvBuilder.build());
+        tbuilder.addAugmentation(tlvBuilder.build());
     }
 
     @Override
index a826063bc9a2432db692dfbaa9dad9c7607a1f7b..70d8bab993945da94994248c916260dc706bacc2 100644 (file)
@@ -15,10 +15,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class PCEPSegmentRoutingCapabilityTest {
-
     private static final Tlvs EXPECTED_TLVS =
-        new TlvsBuilder().addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment
-            .routing.rev181109.Tlvs1.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep
+        new TlvsBuilder().addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep
                 .segment.routing.rev181109.Tlvs1Builder().setSrPceCapability(new SrPceCapabilityBuilder()
                     .setMsd(Uint8.ZERO).build()).build()).build();
 
index d0a4a6f6cc392fa77ba97dda120787aa9d2a9a8c..3ea90e6f630b21bb6de0f241027624c002fa8c3d 100644 (file)
@@ -26,10 +26,8 @@ import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContex
 import org.opendaylight.protocol.util.ByteArray;
 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;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.Tlvs3;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.Tlvs3Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.SidType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.add.lsp.input.arguments.ero.subobject.subobject.type.SrEroTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.sr.pce.capability.tlv.SrPceCapabilityBuilder;
@@ -88,13 +86,13 @@ public class SrObjectParserTest {
                 .setDeadTimer(Uint8.valueOf(120))
                 .setSessionId(Uint8.ONE);
 
-        final Tlvs1 tlv = new Tlvs1Builder().setSrPceCapability(new SrPceCapabilityBuilder().setMsd(Uint8.ONE).build())
-                .build();
         builder.setTlvs(new TlvsBuilder()
-                .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful
-                    .rev181109.Tlvs1.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep
-                    .ietf.stateful.rev181109.Tlvs1Builder().build()).addAugmentation(Tlvs1.class, tlv)
-                .addAugmentation(Tlvs3.class, new Tlvs3Builder().build()).build());
+                .addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful
+                    .rev181109.Tlvs1Builder().build())
+                .addAugmentation(new Tlvs1Builder()
+                    .setSrPceCapability(new SrPceCapabilityBuilder().setMsd(Uint8.ONE).build())
+                    .build())
+                .addAugmentation(new Tlvs3Builder().build()).build());
 
         final ByteBuf result = Unpooled.wrappedBuffer(OPEN_OBJECT_BYTES);
         assertEquals(builder.build(),
index 2812e4278bc902c9750e22b066928eebe78b4ede..e96ea0f694f7f167698a1cfcc944757f656f5a2b 100644 (file)
@@ -14,6 +14,7 @@ import static org.opendaylight.protocol.util.CheckTestUtil.readDataOperational;
 import com.google.common.collect.Lists;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;
@@ -49,6 +50,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.path.setup.type.tlv.PathSetupTypeBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.LspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.ReportedLsp;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.ReportedLspKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.reported.lsp.Path;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.reported.lsp.PathKey;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint8;
 
@@ -74,14 +78,18 @@ public class TopologyProviderTest extends AbstractPCEPSessionTest<Stateful07Topo
         this.listener.onMessage(this.session, pcRptMsg);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             //check sr-path
-            final List<ReportedLsp> reportedLsps = pcc.getReportedLsp();
+            final Map<ReportedLspKey, ReportedLsp> reportedLsps = pcc.getReportedLsp();
             assertNotNull(reportedLsps);
             assertEquals(1, reportedLsps.size());
-            final ReportedLsp lsp = reportedLsps.get(0);
+            final ReportedLsp lsp = reportedLsps.values().iterator().next();
             assertEquals("sr-path1", lsp.getName());
-            assertEquals(1, lsp.getPath().get(0).augmentation(Path1.class).getPathSetupType()
-                .getPst().intValue());
-            final List<Subobject> subobjects = lsp.getPath().get(0).getEro().getSubobject();
+
+            final Map<PathKey, Path> paths = lsp.getPath();
+            assertNotNull(paths);
+            final Path path = paths.values().iterator().next();
+
+            assertEquals(1, path.augmentation(Path1.class).getPathSetupType().getPst().intValue());
+            final List<Subobject> subobjects = path.getEro().nonnullSubobject();
             assertEquals(1, subobjects.size());
             assertEquals("1.1.1.1", ((IpNodeId)((SrEroType)subobjects.get(0).getSubobjectType())
                 .getNai()).getIpAddress().getIpv4AddressNoZone().getValue());
@@ -92,7 +100,7 @@ public class TopologyProviderTest extends AbstractPCEPSessionTest<Stateful07Topo
         this.listener.onMessage(this.session, pcRptMsg);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             //check second lsp sr-path
-            final List<ReportedLsp> reportedLsps = pcc.getReportedLsp();
+            final Map<ReportedLspKey, ReportedLsp> reportedLsps = pcc.getReportedLsp();
             assertNotNull(reportedLsps);
             assertEquals(2, reportedLsps.size());
             return pcc;
@@ -103,12 +111,13 @@ public class TopologyProviderTest extends AbstractPCEPSessionTest<Stateful07Topo
         this.listener.onMessage(this.session, pcRptMsg);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             //check updated sr-path
-            final List<ReportedLsp> reportedLsps = pcc.getReportedLsp();
+            final Map<ReportedLspKey, ReportedLsp> reportedLsps = pcc.getReportedLsp();
             assertNotNull(reportedLsps);
             assertEquals(2, reportedLsps.size());
-            for (final ReportedLsp rlsp : reportedLsps) {
+            for (final ReportedLsp rlsp : reportedLsps.values()) {
                 if (rlsp.getName().equals("sr-path1")) {
-                    final List<Subobject> subobjects = rlsp.getPath().get(0).getEro().getSubobject();
+                    final List<Subobject> subobjects = rlsp.nonnullPath().values().iterator().next()
+                            .getEro().nonnullSubobject();
                     assertEquals(1, subobjects.size());
                     assertEquals("1.1.1.2", ((IpNodeId)((SrEroType)subobjects.get(0)
                         .getSubobjectType()).getNai()).getIpAddress().getIpv4AddressNoZone().getValue());
index 62df5032269484ae98ecb69af39ff46b70cb3936..1915957f9c246f84cc87c78011162b49fbe3c94c 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 8f38df6122e2caa76bf23d1505794cb2da7f31a0..dbcd595135ab5c0f05102311efb44be26613666f 100644 (file)
             <artifactId>mdsal-binding-dom-adapter</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
index aac846fc704ffc975d0dd752bb8ec892949ba0ec..825b849cc9d7488776a0a0a57bb4d5cbb627c9bd 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 5bf56237fa5873affc8b1436b34c08bb4d956383..0dd9972c0ca5ca8d79f9291b41ec46efe99eafc8 100644 (file)
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 0c9d24a1075c99566f424b27bd651cd04e272678..72471ac4ea5d10d91ba0f20b8e3933ebe824691e 100644 (file)
@@ -9,8 +9,8 @@ package org.opendaylight.bgpcep.pcep.topology.provider;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
+import com.google.common.collect.Iterables;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
@@ -443,9 +443,9 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
     private static List<Path> makeBeforeBreak(final ReportedLspBuilder rlb, final ReportedLsp previous,
             final String name, final boolean remove) {
         // just one path should be reported
-        Preconditions.checkState(rlb.getPath().size() == 1);
+        final Path path = Iterables.getOnlyElement(rlb.getPath().values());
         final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.LspId reportedLspId =
-                rlb.getPath().get(0).getLspId();
+                path.getLspId();
         final List<Path> updatedPaths;
         //lspId = 0 and remove = false -> tunnel is down, still exists but no path is signaled
         //remove existing tunnel's paths now, as explicit path remove will not come
@@ -454,14 +454,15 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
             LOG.debug("Remove previous paths {} to this lsp name {}", previous.getPath(), name);
         } else {
             // check previous report for existing paths
-            updatedPaths = new ArrayList<>(previous.getPath());
+            final Collection<Path> prev = previous.nonnullPath().values();
+            updatedPaths = new ArrayList<>(prev);
             LOG.debug("Found previous paths {} to this lsp name {}", updatedPaths, name);
-            for (final Path path : previous.getPath()) {
+            for (final Path prevPath : prev) {
                 //we found reported path in previous reports
-                if (path.getLspId().getValue().toJava() == 0 || path.getLspId().equals(reportedLspId)) {
-                    LOG.debug("Match on lsp-id {}", path.getLspId().getValue());
+                if (prevPath.getLspId().getValue().toJava() == 0 || prevPath.getLspId().equals(reportedLspId)) {
+                    LOG.debug("Match on lsp-id {}", prevPath.getLspId().getValue());
                     // path that was reported previously and does have the same lsp-id, path will be updated
-                    final boolean r = updatedPaths.remove(path);
+                    final boolean r = updatedPaths.remove(prevPath);
                     LOG.trace("Request removed? {}", r);
                 }
             }
@@ -469,8 +470,8 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
         // if the path does not exist in previous report, add it to path list, it's a new ERO
         // only one path will be added
         //lspId is 0 means confirmation message that shouldn't be added (because we have no means of deleting it later)
-        LOG.trace("Adding new path {} to {}", rlb.getPath(), updatedPaths);
-        updatedPaths.addAll(rlb.getPath());
+        LOG.trace("Adding new path {} to {}", path, updatedPaths);
+        updatedPaths.add(path);
         if (remove) {
             if (reportedLspId.getValue().toJava() == 0) {
                 // if lsp-id also 0, remove all paths
@@ -478,8 +479,8 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
                 updatedPaths.clear();
             } else {
                 // path is marked to be removed
-                LOG.debug("Removing path {} from {}", rlb.getPath(), updatedPaths);
-                final boolean r = updatedPaths.removeAll(rlb.getPath());
+                LOG.debug("Removing path {} from {}", path, updatedPaths);
+                final boolean r = updatedPaths.remove(path);
                 LOG.trace("Request removed? {}", r);
             }
         }
@@ -605,7 +606,7 @@ public abstract class AbstractTopologySessionListener<S, L> implements TopologyS
         return Math.toIntExact(stream
             .map(ReportedLsp::getPath).filter(pathList -> pathList != null && !pathList.isEmpty())
             // pick the first path, as delegate status should be same in each path
-            .map(pathList -> pathList.get(0))
+            .map(pathList -> pathList.values().iterator().next())
             .map(path -> path.augmentation(Path1.class)).filter(Objects::nonNull)
             .map(LspObject::getLsp).filter(Objects::nonNull)
             .filter(Lsp::isDelegate)
index a4fbe85ce3a5e19f4e9a88a47de09c86fcfc9251..8940f9e05a6eb40d7956137234e565bfa9996c10 100644 (file)
@@ -113,7 +113,7 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
     private final AtomicBoolean lspUpdateCapability = new AtomicBoolean(false);
     private final AtomicBoolean initiationCapability = new AtomicBoolean(false);
 
-    private PceServerProvider pceServerProvider;
+    private final PceServerProvider pceServerProvider;
 
     /**
      * Creates a new stateful topology session listener for given server session manager.
@@ -554,7 +554,7 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
                 return OperationResults.UNSENT;
             }
             // check if at least one of the paths has the same status as requested
-            for (final Path p : rep.get().getPath()) {
+            for (final Path p : rep.get().nonnullPath().values()) {
                 final Path1 p1 = p.augmentation(Path1.class);
                 if (p1 == null) {
                     LOG.warn("Node {} LSP {} does not contain data", input.getNode(), input.getName());
@@ -575,7 +575,7 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
             return null;
         }
         // it doesn't matter how many lsps there are in the path list, we only need data that is the same in each path
-        final Path1 ra = rep.get().getPath().get(0).augmentation(Path1.class);
+        final Path1 ra = rep.get().getPath().values().iterator().next().augmentation(Path1.class);
         checkState(ra != null, "Reported LSP reported null from data-store.");
         final Lsp reportedLsp = ra.getLsp();
         checkState(reportedLsp != null, "Reported LSP does not contain LSP object.");
@@ -584,7 +584,7 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
 
     private static Optional<PathSetupType> getPST(final Optional<ReportedLsp> rep) {
         if (rep.isPresent()) {
-            final Path1 path1 = rep.get().getPath().get(0).augmentation(Path1.class);
+            final Path1 path1 = rep.get().getPath().values().iterator().next().augmentation(Path1.class);
             if (path1 != null) {
                 final PathSetupType pst = path1.getPathSetupType();
                 if (!PSTUtil.isDefaultPST(pst)) {
@@ -603,12 +603,11 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
             final Map<PlspId, String> lsps, final boolean incrementalSynchro) {
         //load node's lsps from DS
         final PathComputationClient pcc = node.augmentation(Node1.class).getPathComputationClient();
-        final List<ReportedLsp> reportedLsps = pcc.getReportedLsp();
-        for (final ReportedLsp reportedLsp : reportedLsps) {
+        for (final ReportedLsp reportedLsp : pcc.nonnullReportedLsp().values()) {
             final String lspName = reportedLsp.getName();
             lspData.put(lspName, reportedLsp);
             if (!reportedLsp.getPath().isEmpty()) {
-                final Path1 path1 = reportedLsp.getPath().get(0).augmentation(Path1.class);
+                final Path1 path1 = reportedLsp.getPath().values().iterator().next().augmentation(Path1.class);
                 if (path1 != null) {
                     final PlspId plspId = path1.getLsp().getPlspId();
                     if (!incrementalSynchro) {
@@ -686,7 +685,7 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
             // mark lsp as stale
             final ReportedLsp staleLsp = rep.get();
             if (!staleLsp.getPath().isEmpty()) {
-                final Path1 path1 = staleLsp.getPath().get(0).augmentation(Path1.class);
+                final Path1 path1 = staleLsp.getPath().values().iterator().next().augmentation(Path1.class);
                 if (path1 != null) {
                     Stateful07TopologySessionListener.this.staleLsps.add(path1.getLsp().getPlspId());
                 }
@@ -759,9 +758,9 @@ class Stateful07TopologySessionListener extends AbstractTopologySessionListener<
 
             /* Call Path Computation if an ERO was not provided */
             boolean segmentRouting = !PSTUtil.isDefaultPST(args2.getPathSetupType());
-            if ((rb.getEro() == null)
-                    || (rb.getEro().getSubobject() == null)
-                    || (rb.getEro().getSubobject().size() == 0)) {
+            if (rb.getEro() == null
+                    || rb.getEro().getSubobject() == null
+                    || rb.getEro().getSubobject().size() == 0) {
 
                 /* Get a Path Computation to compute the Path from the Arguments */
                 PathComputation pathComputation = pceServerProvider.getPathComputation();
index 0cb63a7d5df14fee9db0ba2f2c5d58bfdbbdd2ae..4ea817b97bf763b27c234af8f087648d4c8b5cfe 100644 (file)
@@ -36,7 +36,7 @@ final class PCEPTopologyProviderUtil {
         if (topology.getNode() == null) {
             return ret;
         }
-        topology.getNode().stream()
+        topology.nonnullNode().values().stream()
                 .filter(Objects::nonNull)
                 .filter(node -> node.augmentation(PcepNodeConfig.class) != null)
                 .filter(node -> node.augmentation(PcepNodeConfig.class).getSessionConfig() != null)
@@ -74,7 +74,7 @@ final class PCEPTopologyProviderUtil {
         if (topology.getNode() == null) {
             return ret;
         }
-        topology.getNode().stream()
+        topology.nonnullNode().values().stream()
                 .filter(Objects::nonNull)
                 .filter(node -> node.augmentation(PcepNodeConfig.class) != null)
                 .filter(node -> node.augmentation(PcepNodeConfig.class).getSessionConfig() != null)
index da820dc03b90ad3d6b57e9447e8336ade4a24808..7b4205eb2c47cefcbcf03361a353b38a741e4217 100644 (file)
@@ -5,12 +5,12 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.bgpcep.pcep.topology.provider;
 
 import static org.junit.Assert.assertFalse;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doCallRealMethod;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
@@ -152,7 +152,8 @@ public abstract class AbstractPCEPSessionTest<T extends TopologySessionListenerF
         doReturn(new PortNumber(Uint16.valueOf(4189))).when(this.sessionConfig).getListenPort();
         doReturn(RPC_TIMEOUT).when(this.sessionConfig).getRpcTimeout();
         doReturn(TEST_TOPOLOGY_ID).when(this.topology).getTopologyId();
-        doReturn(Collections.emptyList()).when(this.topology).getNode();
+        doCallRealMethod().when(this.topology).nonnullNode();
+        doReturn(Collections.emptyMap()).when(this.topology).getNode();
         doReturn(null).when(this.topologyDependencies).getPceServerProvider();
 
         final PCEPTopologyConfiguration configDep = new PCEPTopologyConfiguration(this.sessionConfig, this.topology);
index 5100db76b8e7d1a7a19498c65b0cc6b3d8862b77..87f03ee818552e9ed1c1471100c1333a8475feab 100644 (file)
@@ -19,17 +19,14 @@ import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.protocol.pcep.PCEPSession;
 import org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.Tlvs3;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.Tlvs3Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.lsp.db.version.tlv.LspDbVersion;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync.optimizations.rev181109.lsp.db.version.tlv.LspDbVersionBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev181109.Stateful1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.crabbe.initiated.rev181109.Stateful1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.OperationalStatus;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Pcrpt;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PlspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.SymbolicPathName;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Tlvs1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Tlvs1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.identifiers.tlv.LspIdentifiersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.LspBuilder;
@@ -63,7 +60,7 @@ public class IncrementalSynchronizationProcedureTest
         final Pcrpt pcRpt = getPcrpt(Uint32.ONE, "test");
         this.listener.onMessage(session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -79,7 +76,7 @@ public class IncrementalSynchronizationProcedureTest
             //check node - IncrementalSync state
             assertEquals(PccSyncState.IncrementalSync, pcc.getStateSync());
             //check reported LSP - persisted from previous session
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -90,7 +87,7 @@ public class IncrementalSynchronizationProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.IncrementalSync, pcc.getStateSync());
             //check reported LSP is not empty
-            assertEquals(2, pcc.getReportedLsp().size());
+            assertEquals(2, pcc.nonnullReportedLsp().size());
             return pcc;
         });
 
@@ -101,7 +98,7 @@ public class IncrementalSynchronizationProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
             //check reported LSP is empty, LSP state from previous session was purged
-            assertEquals(2, pcc.getReportedLsp().size());
+            assertEquals(2, pcc.nonnullReportedLsp().size());
             return pcc;
         });
 
@@ -111,21 +108,26 @@ public class IncrementalSynchronizationProcedureTest
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
-            assertEquals(3,pcc.getReportedLsp().size());
+            assertEquals(3,pcc.nonnullReportedLsp().size());
             return pcc;
         });
     }
 
     private Open getOpen(final LspDbVersion dbVersion) {
-        return new OpenBuilder(super.getLocalPref()).setTlvs(new TlvsBuilder().addAugmentation(Tlvs1.class,
-            new Tlvs1Builder().setStateful(new StatefulBuilder().addAugmentation(Stateful1.class,
-                new Stateful1Builder().setInitiation(Boolean.TRUE).build())
-            .addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.pcep.sync
-                    .optimizations.rev181109.Stateful1.class, new org.opendaylight.yang.gen.v1.urn.opendaylight.params
-                    .xml.ns.yang.controller.pcep.sync.optimizations.rev181109.Stateful1Builder()
-                .setIncludeDbVersion(Boolean.TRUE).setDeltaLspSyncCapability(Boolean.TRUE).build())
-            .build()).build()).addAugmentation(Tlvs3.class, new Tlvs3Builder().setLspDbVersion(dbVersion).build())
-            .build()).build();
+        return new OpenBuilder(super.getLocalPref())
+                .setTlvs(new TlvsBuilder()
+                    .addAugmentation(new Tlvs1Builder()
+                        .setStateful(new StatefulBuilder()
+                            .addAugmentation(new Stateful1Builder().setInitiation(Boolean.TRUE).build())
+                            .addAugmentation(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
+                                .controller.pcep.sync.optimizations.rev181109.Stateful1Builder()
+                                .setIncludeDbVersion(Boolean.TRUE).setDeltaLspSyncCapability(Boolean.TRUE)
+                                .build())
+                            .build())
+                        .build())
+                    .addAugmentation(new Tlvs3Builder().setLspDbVersion(dbVersion).build())
+                    .build())
+                .build();
     }
 
     private static Pcrpt getPcrpt(final Uint32 val, final String pathname) {
index 93121f5c24645c5a0314295eded20aee1cff8927..43c19847e7c86213815c461450161082f5ed5582 100644 (file)
@@ -16,7 +16,7 @@ import static org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil.createP
 import static org.opendaylight.protocol.util.CheckTestUtil.readDataOperational;
 
 import java.util.Collections;
-import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import org.junit.Before;
 import org.junit.Test;
@@ -46,7 +46,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.LspId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.PccSyncState;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.TriggerSyncInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.ReportedLsp;
 import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint64;
 
@@ -76,7 +75,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
 
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -98,7 +97,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
 
         this.listener.onMessage(this.session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            final List<?> lsp = pcc.getReportedLsp();
+            final Map<?, ?> lsp = pcc.getReportedLsp();
             assertNotNull(lsp);
             assertEquals(1, lsp.size());
             return pcc;
@@ -130,8 +129,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
         this.listener.onMessage(this.session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
-            final List<ReportedLsp> reportedLspPcc = pcc.getReportedLsp();
-            assertFalse(reportedLspPcc.isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -139,13 +137,13 @@ public class PCEPTriggeredReSynchronizationProcedureTest
         this.listener.triggerSync(new TriggerSyncInputBuilder().setNode(this.nodeId).setName("test").build());
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(PccSyncState.PcepTriggeredResync, pcc.getStateSync());
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
         this.listener.onMessage(this.session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -156,7 +154,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
             //check reported LSP
-            assertEquals(1, pcc.getReportedLsp().size());
+            assertEquals(1, pcc.nonnullReportedLsp().size());
             return pcc;
         });
 
index a1b59b60b028bd940c7fab54d59bfdd2fbd54b05..8511af7696caaca41daa1ed7e7989412059a223a 100644 (file)
@@ -10,7 +10,7 @@ package org.opendaylight.bgpcep.pcep.topology.provider;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
 import static org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil.createLsp;
 import static org.opendaylight.protocol.pcep.pcc.mock.spi.MsgBuilderUtil.createPath;
 import static org.opendaylight.protocol.util.CheckTestUtil.readDataOperational;
@@ -85,7 +85,7 @@ public class PCETriggeredInitialSyncProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
             //check reported LSP is empty, LSP state from previous session was purged
-            assertTrue(pcc.getReportedLsp().isEmpty());
+            assertNull(pcc.getReportedLsp());
             return pcc;
         });
 
@@ -94,7 +94,7 @@ public class PCETriggeredInitialSyncProcedureTest
         this.listener.onMessage(session, pcRpt);
 
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
index e9b14bddfdaec617a3b6b15ebe78c23d8201f598..9abc560b6d6897604b26942969aaeb05fae1065c 100644 (file)
@@ -124,7 +124,7 @@ public class StateSynchronizationAvoidanceProcedureTest extends
                 .build(), Optional.empty(), createPath(Collections.emptyList()));
         this.listener.onMessage(session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
@@ -141,7 +141,7 @@ public class StateSynchronizationAvoidanceProcedureTest extends
             //check node - not synchronized
             assertEquals(PccSyncState.InitialResync, pcc.getStateSync());
             //check reported LSP - persisted from previous session
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
index 44edd8b51d6f4009e7e0468a5a88a17d4d7d761d..ee0d4c04857bc9172a16c0db1de4ea9cfff7610b 100644 (file)
@@ -157,18 +157,18 @@ public class Stateful07TopologySessionListenerTest
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(this.testAddress, pcc.getIpAddress().getIpv4AddressNoZone().getValue());
             // reported lsp so far empty, has not received response (PcRpt) yet
-            assertTrue(pcc.getReportedLsp().isEmpty());
+            assertNull(pcc.getReportedLsp());
             return pcc;
         });
 
         this.listener.onMessage(this.session, pcRpt);
         // check created lsp
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertEquals(1, pcc.getReportedLsp().size());
-            final ReportedLsp reportedLsp = pcc.getReportedLsp().get(0);
+            assertEquals(1, pcc.nonnullReportedLsp().size());
+            final ReportedLsp reportedLsp = pcc.getReportedLsp().values().iterator().next();
             assertEquals(this.tunnelName, reportedLsp.getName());
-            assertEquals(1, reportedLsp.getPath().size());
-            final Path path = reportedLsp.getPath().get(0);
+            assertEquals(1, reportedLsp.nonnullPath().size());
+            final Path path = reportedLsp.nonnullPath().values().iterator().next();
             assertEquals(1, path.getEro().getSubobject().size());
             assertEquals(this.eroIpPrefix, getLastEroIpPrefix(path.getEro()));
             return pcc;
@@ -191,7 +191,7 @@ public class Stateful07TopologySessionListenerTest
                 .ArgumentsBuilder updArgsBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
                 .topology.pcep.rev200120.update.lsp.args.ArgumentsBuilder();
         updArgsBuilder.setEro(createEroWithIpPrefixes(Lists.newArrayList(this.eroIpPrefix, this.dstIpPrefix)));
-        updArgsBuilder.addAugmentation(Arguments3.class, new Arguments3Builder().setLsp(new LspBuilder()
+        updArgsBuilder.addAugmentation(new Arguments3Builder().setLsp(new LspBuilder()
                 .setDelegate(TRUE).setAdministrative(FALSE).build()).build());
         final UpdateLspInput update = new UpdateLspInputBuilder().setArguments(updArgsBuilder.build())
                 .setName(this.tunnelName).setNetworkTopologyRef(new NetworkTopologyRef(TOPO_IID))
@@ -213,10 +213,10 @@ public class Stateful07TopologySessionListenerTest
         //check updated lsp
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(1, pcc.getReportedLsp().size());
-            final ReportedLsp reportedLsp = pcc.getReportedLsp().get(0);
+            final ReportedLsp reportedLsp = pcc.getReportedLsp().values().iterator().next();
             assertEquals(this.tunnelName, reportedLsp.getName());
             assertEquals(1, reportedLsp.getPath().size());
-            final Path path = reportedLsp.getPath().get(0);
+            final Path path = reportedLsp.getPath().values().iterator().next();
             assertEquals(2, path.getEro().getSubobject().size());
             assertEquals(this.dstIpPrefix, getLastEroIpPrefix(path.getEro()));
             assertEquals(1, listenerState.getDelegatedLspsCount().intValue());
index a3e2e3b9c6cf8c5ac362eda948f83a8a926dde30..92c26e00feaa5a843e6b1fa4b23646ab75193191 100644 (file)
             <artifactId>mdsal-binding-dom-adapter</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <scm>
index c4a974ec09c354b3aacac17bc300d3488cec7949..8ef5de3fa30d6ccf3d67167051afd01737844d83 100644 (file)
@@ -25,13 +25,10 @@ import org.opendaylight.mdsal.binding.api.DataObjectModification;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.DataTreeModification;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdRpcAugBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdStatsAug;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesRpcAugBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAug;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesRpcAugBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesStatsAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stats.rev171113.pcep.session.state.LocalPref;
@@ -110,58 +107,62 @@ public class TopologyStatsRpcServiceImpl
     }
 
     @Override
-    @SuppressWarnings("checkstyle:LineLength")
     public ListenableFuture<RpcResult<GetStatsOutput>> getStats(final GetStatsInput input) {
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.Topology> iTopologies =
-                input.getTopology();
-        final List<TopologyId> iTopologyIds;
+        final var iTopologies = input.getTopology();
+        final Collection<TopologyId> iTopologyIds;
         if (iTopologies != null) {
-            iTopologyIds = iTopologies.stream().map(
-                    org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.Topology::getTopologyId)
+            iTopologyIds = iTopologies.values().stream()
+                    .map(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                        .rev190321.get.stats.input.Topology::getTopologyId)
                     .collect(Collectors.toList());
         } else {
             iTopologyIds = getAvailableTopologyIds();
         }
 
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.Topology> oTopologies =
-                new ArrayList<>();
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321
+                    .get.stats.output.Topology> oTopologies = new ArrayList<>();
         iTopologyIds.forEach(iTopologyId -> {
-            final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.topology.Node> iNodes;
-            if (input.getTopology() != null) {
-                iNodes = input.getTopology().stream().filter(t -> t.getTopologyId().equals(iTopologyId)).findFirst()
+            final Collection<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                    .rev190321.get.stats.input.topology.Node> iNodes;
+            if (iTopologies != null) {
+                final var nodes = iTopologies.values().stream()
+                        .filter(t -> iTopologyId.equals(t.getTopologyId()))
+                        .findFirst()
                         .get().getNode();
+                iNodes = nodes != null ? nodes.values() : null;
             } else {
                 iNodes = null;
             }
 
             final List<NodeId> iNodeIds;
             if (iNodes != null) {
-                iNodeIds = iNodes.stream().map(
-                        org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.topology.Node::getNodeId)
+                iNodeIds = iNodes.stream()
+                        .map(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                            .rev190321.get.stats.input.topology.Node::getNodeId)
                         .collect(Collectors.toList());
             } else {
                 iNodeIds = getAvailableNodeIds(iTopologyId);
             }
 
-            final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.topology.Node> oNodes =
-                    new ArrayList<>();
+            final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                        .rev190321.get.stats.output.topology.Node> oNodes = new ArrayList<>();
             iNodeIds.forEach(iNodeId -> {
                 final InstanceIdentifier<PcepSessionState> iid = InstanceIdentifier.builder(NetworkTopology.class)
                         .child(Topology.class, new TopologyKey(iTopologyId)).child(Node.class, new NodeKey(iNodeId))
                         .augmentation(PcepTopologyNodeStatsAug.class).child(PcepSessionState.class).build();
-                if (!sessionStateMap.containsKey(iid)) {
+                final PcepSessionState state = sessionStateMap.get(iid);
+                if (state == null) {
                     LOG.debug("Pcep session stats not available for node {} in topology {}", iNodeId.getValue(),
                             iTopologyId.getValue());
                 }
-                oNodes.add(
-                        new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.topology.NodeBuilder()
-                                .setNodeId(iNodeId)
-                                .setPcepSessionState(transformStatefulAugmentation(sessionStateMap.get(iid))).build());
+                oNodes.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                    .rev190321.get.stats.output.topology.NodeBuilder()
+                    .setNodeId(iNodeId)
+                    .setPcepSessionState(transformStatefulAugmentation(state)).build());
             });
 
-            oTopologies.add(
-                    new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.TopologyBuilder()
-                            .setTopologyId(iTopologyId).setNode(oNodes).build());
+            oTopologies.add(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                .rev190321.get.stats.output.TopologyBuilder().setTopologyId(iTopologyId).setNode(oNodes).build());
         });
 
         final RpcResult<GetStatsOutput> res =
@@ -184,13 +185,15 @@ public class TopologyStatsRpcServiceImpl
         if (topoMessage != null) {
             final StatefulMessagesStatsAug messageStatsAug = topoMessage.augmentation(StatefulMessagesStatsAug.class);
             if (messageStatsAug != null) {
-                final StatefulMessagesRpcAug messageRpcAug = new StatefulMessagesRpcAugBuilder()
-                        .setLastReceivedRptMsgTimestamp(messageStatsAug.getLastReceivedRptMsgTimestamp())
-                        .setReceivedRptMsgCount(messageStatsAug.getReceivedRptMsgCount())
-                        .setSentInitMsgCount(messageStatsAug.getSentInitMsgCount())
-                        .setSentUpdMsgCount(messageStatsAug.getSentUpdMsgCount()).build();
-                sb.setMessages(new MessagesBuilder(topoMessage).removeAugmentation(StatefulMessagesStatsAug.class)
-                        .addAugmentation(StatefulMessagesRpcAug.class, messageRpcAug).build());
+                sb.setMessages(new MessagesBuilder(topoMessage)
+                    .removeAugmentation(StatefulMessagesStatsAug.class)
+                        .addAugmentation(new StatefulMessagesRpcAugBuilder()
+                            .setLastReceivedRptMsgTimestamp(messageStatsAug.getLastReceivedRptMsgTimestamp())
+                            .setReceivedRptMsgCount(messageStatsAug.getReceivedRptMsgCount())
+                            .setSentInitMsgCount(messageStatsAug.getSentInitMsgCount())
+                            .setSentUpdMsgCount(messageStatsAug.getSentUpdMsgCount())
+                            .build())
+                        .build());
             }
         }
 
@@ -199,12 +202,14 @@ public class TopologyStatsRpcServiceImpl
             final StatefulCapabilitiesStatsAug capabilityStatsAug =
                     topoPeerCapability.augmentation(StatefulCapabilitiesStatsAug.class);
             if (capabilityStatsAug != null) {
-                final StatefulCapabilitiesRpcAug capabilityRpcAug = new StatefulCapabilitiesRpcAugBuilder()
-                        .setActive(capabilityStatsAug.isActive()).setInstantiation(capabilityStatsAug.isInstantiation())
-                        .setStateful(capabilityStatsAug.isStateful()).build();
                 sb.setPeerCapabilities(new PeerCapabilitiesBuilder(topoPeerCapability)
                         .removeAugmentation(StatefulCapabilitiesStatsAug.class)
-                        .addAugmentation(StatefulCapabilitiesRpcAug.class, capabilityRpcAug).build());
+                        .addAugmentation(new StatefulCapabilitiesRpcAugBuilder()
+                            .setActive(capabilityStatsAug.isActive())
+                            .setInstantiation(capabilityStatsAug.isInstantiation())
+                            .setStateful(capabilityStatsAug.isStateful())
+                            .build())
+                        .build());
             }
         }
 
@@ -212,10 +217,12 @@ public class TopologyStatsRpcServiceImpl
         if (topoLocalPref != null) {
             final PcepEntityIdStatsAug entityStatsAug = topoLocalPref.augmentation(PcepEntityIdStatsAug.class);
             if (entityStatsAug != null) {
-                final PcepEntityIdRpcAug entityRpcAug = new PcepEntityIdRpcAugBuilder()
-                        .setSpeakerEntityIdValue(entityStatsAug.getSpeakerEntityIdValue()).build();
-                sb.setLocalPref(new LocalPrefBuilder(topoLocalPref).removeAugmentation(PcepEntityIdStatsAug.class)
-                        .addAugmentation(PcepEntityIdRpcAug.class, entityRpcAug).build());
+                sb.setLocalPref(new LocalPrefBuilder(topoLocalPref)
+                    .removeAugmentation(PcepEntityIdStatsAug.class)
+                    .addAugmentation(new PcepEntityIdRpcAugBuilder()
+                            .setSpeakerEntityIdValue(entityStatsAug.getSpeakerEntityIdValue())
+                            .build())
+                    .build());
             }
         }
 
index 5c20b0c40aee12b864169b3c2bcccff7250f5b50..0bc59b0714daa1bba8dc4bc76f435f961b1cceb5 100644 (file)
@@ -20,13 +20,9 @@ import org.junit.Test;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdRpcAugBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdStatsAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.PcepEntityIdStatsAugBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesRpcAugBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulCapabilitiesStatsAugBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesRpcAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.stateful.stats.rev181109.StatefulMessagesRpcAugBuilder;
@@ -49,7 +45,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.top
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.GetStatsInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.GetStatsOutput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.GetStatsOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.stats.rev181109.PcepTopologyNodeStatsAug;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.stats.rev181109.PcepTopologyNodeStatsAugBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopologyBuilder;
@@ -107,9 +102,11 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
     }
 
     private static Node createPcepNode(final String nodeId) {
-        return new NodeBuilder().setNodeId(new NodeId(nodeId))
-                .addAugmentation(PcepTopologyNodeStatsAug.class,
-                        new PcepTopologyNodeStatsAugBuilder().setPcepSessionState(createTopologySessionState()).build())
+        return new NodeBuilder()
+                .setNodeId(new NodeId(nodeId))
+                .addAugmentation(new PcepTopologyNodeStatsAugBuilder()
+                    .setPcepSessionState(createTopologySessionState())
+                    .build())
                 .build();
     }
 
@@ -139,11 +136,14 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .setReceivedMsgCount(Uint32.valueOf(4))
                 .setReplyTime(replyTime)
                 .setErrorMessages(errorMsg)
-                .addAugmentation(StatefulMessagesStatsAug.class, statefulMsg).build();
+                .addAugmentation(statefulMsg).build();
 
         final PeerCapabilities capabilities = new PeerCapabilitiesBuilder()
-                .addAugmentation(StatefulCapabilitiesStatsAug.class, new StatefulCapabilitiesStatsAugBuilder()
-                        .setStateful(true).setInstantiation(true).setActive(true).build())
+                .addAugmentation(new StatefulCapabilitiesStatsAugBuilder()
+                    .setStateful(true)
+                    .setInstantiation(true)
+                    .setActive(true)
+                    .build())
                 .build();
 
         final LocalPref localPref = new LocalPrefBuilder()
@@ -151,7 +151,7 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .setDeadtimer(Uint8.valueOf(120))
                 .setIpAddress("127.0.0.1")
                 .setSessionId(Uint16.ZERO)
-                .addAugmentation(PcepEntityIdStatsAug.class, new PcepEntityIdStatsAugBuilder()
+                .addAugmentation(new PcepEntityIdStatsAugBuilder()
                     .setSpeakerEntityIdValue(new byte[] {0x01, 0x02, 0x03, 0x04})
                     .build())
                 .build();
@@ -186,10 +186,10 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .setReceivedMsgCount(Uint32.valueOf(4))
                 .setReplyTime(replyTime)
                 .setErrorMessages(errorMsg)
-                .addAugmentation(StatefulMessagesRpcAug.class, statefulMsg).build();
+                .addAugmentation(statefulMsg).build();
 
         final PeerCapabilities capabilities = new PeerCapabilitiesBuilder()
-                .addAugmentation(StatefulCapabilitiesRpcAug.class, new StatefulCapabilitiesRpcAugBuilder()
+                .addAugmentation(new StatefulCapabilitiesRpcAugBuilder()
                         .setStateful(true).setInstantiation(true).setActive(true).build())
                 .build();
 
@@ -198,7 +198,7 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .setDeadtimer(Uint8.valueOf(120))
                 .setIpAddress("127.0.0.1")
                 .setSessionId(Uint16.ZERO)
-                .addAugmentation(PcepEntityIdRpcAug.class, new PcepEntityIdRpcAugBuilder()
+                .addAugmentation(new PcepEntityIdRpcAugBuilder()
                     .setSpeakerEntityIdValue(new byte[] {0x01, 0x02, 0x03, 0x04})
                     .build())
                 .build();
@@ -253,16 +253,13 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
     }
 
     @Test
-    @SuppressWarnings("checkstyle:LineLength")
     public void testGetStatsAllMatch() throws Exception {
         GetStatsInput in;
 
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.Topology ot1 =
-                createGetStatsOutput(TOPOLOGY_ID1, Collections.singletonList(NODE_ID1), createRpcSessionState())
-                        .getTopology().get(0);
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.Topology ot2 =
-                createGetStatsOutput(TOPOLOGY_ID2, Arrays.asList(NODE_ID2, NODE_ID3), createRpcSessionState())
-                        .getTopology().get(0);
+        final var ot1 = createGetStatsOutput(TOPOLOGY_ID1, Collections.singletonList(NODE_ID1), createRpcSessionState())
+                .getTopology().values() .iterator().next();
+        final var ot2 = createGetStatsOutput(TOPOLOGY_ID2, Arrays.asList(NODE_ID2, NODE_ID3), createRpcSessionState())
+                .getTopology().values().iterator().next();
         final GetStatsOutput out = new GetStatsOutputBuilder().setTopology(Arrays.asList(ot1, ot2)).build();
 
         // Implicitly match all PCEP topologies and nodes
@@ -270,17 +267,17 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
         performCountTest(in, out);
 
         // Explicitly match all PCEP topologies and nodes
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.Topology it1 =
-                createGetStatsInput(TOPOLOGY_ID1, Collections.singletonList(NODE_ID1)).getTopology().get(0);
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.Topology it2 =
-                createGetStatsInput(TOPOLOGY_ID2, Arrays.asList(NODE_ID2, NODE_ID3)).getTopology().get(0);
+        final var it1 = createGetStatsInput(TOPOLOGY_ID1, Collections.singletonList(NODE_ID1)).getTopology().values()
+                .iterator().next();
+        final var it2 = createGetStatsInput(TOPOLOGY_ID2, Arrays.asList(NODE_ID2, NODE_ID3)).getTopology().values()
+                .iterator().next();
         in = new GetStatsInputBuilder().setTopology(Arrays.asList(it1, it2)).build();
         performCountTest(in, out);
     }
 
     private void performTest(final GetStatsInput in, final GetStatsOutput out) throws Exception {
         final RpcResult<GetStatsOutput> result = rpcService.getStats(in).get();
-        assertEquals(result.getResult(), out);
+        assertEquals(out, result.getResult());
         assertTrue(result.isSuccessful());
         assertTrue(result.getErrors().isEmpty());
     }
@@ -294,28 +291,34 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
         final RpcResult<GetStatsOutput> result = rpcService.getStats(in).get();
         assertEquals(result.getResult().getTopology().size(), out.getTopology().size());
         assertTrue(result.isSuccessful());
-        assertEquals(result.getResult().getTopology().stream().flatMap(t -> t.getNode().stream()).count(),
-                out.getTopology().stream().flatMap(t -> t.getNode().stream()).count());
+        assertEquals(result.getResult().nonnullTopology().values().stream()
+            .flatMap(t -> t.nonnullNode().values().stream()).count(),
+            out.nonnullTopology().values().stream().flatMap(t -> t.nonnullNode().values().stream()).count());
         assertTrue(result.isSuccessful());
         assertTrue(result.getErrors().isEmpty());
     }
 
-    @SuppressWarnings("checkstyle:LineLength")
     private static GetStatsInput createGetStatsInput(final String topologyId, final List<String> nodeIds) {
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.topology.Node> nodes;
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321
+                    .get.stats.input.topology.Node> nodes;
         if (nodeIds != null) {
-            nodes = nodeIds.stream().map(
-                nodeId -> new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.topology.NodeBuilder()
-                        .setNodeId(new NodeId(nodeId)).build())
+            nodes = nodeIds.stream()
+                    .map(nodeId -> new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology
+                        .stats.rpc.rev190321.get.stats.input.topology.NodeBuilder()
+                            .setNodeId(new NodeId(nodeId))
+                            .build())
                 .collect(Collectors.toList());
         } else {
             nodes = null;
         }
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.Topology topology;
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get
+            .stats.input.Topology topology;
         if (topologyId != null) {
-            topology =
-                    new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.input.TopologyBuilder()
-                            .setTopologyId(new TopologyId(topologyId)).setNode(nodes).build();
+            topology = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                    .rev190321.get.stats.input.TopologyBuilder()
+                        .setTopologyId(new TopologyId(topologyId))
+                        .setNode(nodes)
+                        .build();
         } else {
             topology = null;
         }
@@ -323,23 +326,29 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .build();
     }
 
-    @SuppressWarnings("checkstyle:LineLength")
     private static GetStatsOutput createGetStatsOutput(final String topologyId, final List<String> nodeIds,
             final PcepSessionState state) {
-        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.topology.Node> nodes;
+        final List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321
+                    .get.stats.output.topology.Node> nodes;
         if (nodeIds != null) {
-            nodes = nodeIds.stream().map(
-                nodeId -> new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.topology.NodeBuilder()
-                        .setNodeId(new NodeId(nodeId)).setPcepSessionState(state).build())
+            nodes = nodeIds.stream()
+                    .map(nodeId -> new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology
+                        .stats.rpc.rev190321.get.stats.output.topology.NodeBuilder()
+                            .setNodeId(new NodeId(nodeId))
+                            .setPcepSessionState(state)
+                            .build())
                 .collect(Collectors.toList());
         } else {
             nodes = null;
         }
-        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.Topology topology;
+        final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get
+            .stats.output.Topology topology;
         if (topologyId != null) {
-            topology =
-                    new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc.rev190321.get.stats.output.TopologyBuilder()
-                            .setTopologyId(new TopologyId(topologyId)).setNode(nodes).build();
+            topology = new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.topology.stats.rpc
+                    .rev190321.get.stats.output.TopologyBuilder()
+                            .setTopologyId(new TopologyId(topologyId))
+                            .setNode(nodes)
+                            .build();
         } else {
             topology = null;
         }
index b35e94e9a184903be4e87e073d3bebcc18ffe9a6..eeef10d04569f6a73dfe9fdb4727a2acbbfbe5c3 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 5e9d04a66bac1862e111789b7db09b48e49a8b44..d72aa482ed553b709043d61855122968ac5adf62 100644 (file)
             <artifactId>pcep-impl</artifactId>
             <type>test-jar</type>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 8561ce361ea6baa4a3ffdb4d978b5b5807c93641..5a5a743544667706fb7b8f2bdaa3a17b4f741aa2 100644 (file)
@@ -26,7 +26,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.AdministrativeStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments2;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments2Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepCreateP2pTunnelInput1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.LspBuilder;
@@ -195,7 +194,7 @@ final class CreateTunnelInstructionExecutor extends AbstractInstructionExecutor
         final AdministrativeStatus adminStatus = this.p2pTunnelInput.augmentation(PcepCreateP2pTunnelInput1.class)
                 .getAdministrativeStatus();
         if (adminStatus != null) {
-            args.addAugmentation(Arguments2.class, new Arguments2Builder().setLsp(new LspBuilder()
+            args.addAugmentation(new Arguments2Builder().setLsp(new LspBuilder()
                     .setAdministrative(adminStatus == AdministrativeStatus.Active).build()).build());
         }
         return args.build();
index 6603d29d6dfc6fba1ad923fc7c536d1b880b34c8..ed076a5b5f446769f806c83cd1299dac8fbcf8b5 100644 (file)
@@ -63,7 +63,7 @@ final class DestroyTunnelInstructionExecutor extends AbstractInstructionExecutor
             }
             final RemoveLspInputBuilder ab = new RemoveLspInputBuilder();
             ab.setName(link.augmentation(Link1.class).getSymbolicPathName());
-            ab.setNode(node.getSupportingNode().get(0).key().getNodeRef());
+            ab.setNode(node.nonnullSupportingNode().values().iterator().next().key().getNodeRef());
             return Futures.transform(
                     this.topologyService.removeLsp(ab.build()),
                     RpcResult::getResult, MoreExecutors.directExecutor());
index 426d8c4e9d0fb63c06220be034ba6661d0201c60..a98261567716d7e51dfd1f11d49a0f6e10da5b2a 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.bgpcep.pcep.tunnel.provider;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.MoreExecutors;
@@ -42,9 +41,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.PathComputationClient;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.ReportedLsp;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.path.computation.client.reported.lsp.Path;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.Link1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.Link1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.SupportingNode1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.SupportingNode1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.tunnel.pcep.supporting.node.attributes.PathComputationClientBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.LinkId;
@@ -119,7 +116,7 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
             return;
         }
 
-        for (final ReportedLsp l : pccnode.getPathComputationClient().getReportedLsp()) {
+        for (final ReportedLsp l : pccnode.getPathComputationClient().nonnullReportedLsp().values()) {
             lsps.add(id.builder().augmentation(Node1.class).child(PathComputationClient.class)
                     .child(ReportedLsp.class, l.key()).build());
         }
@@ -139,14 +136,12 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
     }
 
     private SupportingNode createSupportingNode(final NodeId sni, final Boolean inControl) {
-        final SupportingNodeKey sk = new SupportingNodeKey(sni, this.source);
-        final SupportingNodeBuilder snb = new SupportingNodeBuilder();
-        snb.setNodeRef(sni);
-        snb.withKey(sk);
-        snb.addAugmentation(SupportingNode1.class, new SupportingNode1Builder().setPathComputationClient(
-                new PathComputationClientBuilder().setControlling(inControl).build()).build());
-
-        return snb.build();
+        return new SupportingNodeBuilder()
+                .setNodeRef(sni)
+                .withKey(new SupportingNodeKey(sni, this.source))
+                .addAugmentation(new SupportingNode1Builder().setPathComputationClient(
+                    new PathComputationClientBuilder().setControlling(inControl).build()).build())
+                .build();
     }
 
     private void handleSni(final InstanceIdentifier<Node> sni, final Node node, final Boolean inControl,
@@ -159,12 +154,10 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
              * so it does not have a supporting node pointer. Since we now know what it is,
              * fill it in.
              */
-            if (node.getSupportingNode() != null) {
-                for (final SupportingNode sn : node.getSupportingNode()) {
-                    if (sn.getNodeRef().equals(k.getNodeId())) {
-                        have = true;
-                        break;
-                    }
+            for (final SupportingNode sn : node.nonnullSupportingNode().values()) {
+                if (sn.getNodeRef().equals(k.getNodeId())) {
+                    have = true;
+                    break;
                 }
             }
             if (!have) {
@@ -179,26 +172,22 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
             final IpAddress addr, final InstanceIdentifier<Node> sni, final Boolean inControl)
             throws ExecutionException, InterruptedException {
         final Topology topo = trans.read(LogicalDatastoreType.OPERATIONAL, this.target).get().get();
-        if (topo.getNode() != null) {
-            for (final Node n : topo.getNode()) {
-                if (n.getTerminationPoint() != null) {
-                    for (final TerminationPoint tp : n.getTerminationPoint()) {
-                        final TerminationPoint1 tpa = tp.augmentation(TerminationPoint1.class);
-                        if (tpa != null) {
-                            final TerminationPointType tpt = tpa.getIgpTerminationPointAttributes()
-                                    .getTerminationPointType();
-                            if (tpt instanceof Ip) {
-                                for (final IpAddress address : ((Ip) tpt).getIpAddress()) {
-                                    if (addr.equals(address)) {
-                                        handleSni(sni, n, inControl, trans);
-                                        return this.target.builder().child(Node.class, n.key())
-                                                .child(TerminationPoint.class, tp.key()).build();
-                                    }
-                                }
-                            } else {
-                                LOG.debug("Ignoring termination point type {}", tpt);
+        for (final Node n : topo.nonnullNode().values()) {
+            for (final TerminationPoint tp : n.nonnullTerminationPoint().values()) {
+                final TerminationPoint1 tpa = tp.augmentation(TerminationPoint1.class);
+                if (tpa != null) {
+                    final TerminationPointType tpt = tpa.getIgpTerminationPointAttributes()
+                            .getTerminationPointType();
+                    if (tpt instanceof Ip) {
+                        for (final IpAddress address : ((Ip) tpt).getIpAddress()) {
+                            if (addr.equals(address)) {
+                                handleSni(sni, n, inControl, trans);
+                                return this.target.builder().child(Node.class, n.key())
+                                        .child(TerminationPoint.class, tp.key()).build();
                             }
                         }
+                    } else {
+                        LOG.debug("Ignoring termination point type {}", tpt);
                     }
                 }
             }
@@ -213,9 +202,11 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
         final TerminationPointKey tpk = new TerminationPointKey(new TpId(url));
         final TerminationPointBuilder tpb = new TerminationPointBuilder();
         tpb.withKey(tpk).setTpId(tpk.getTpId());
-        tpb.addAugmentation(TerminationPoint1.class, new TerminationPoint1Builder().setIgpTerminationPointAttributes(
-                new IgpTerminationPointAttributesBuilder().setTerminationPointType(
-                        new IpBuilder().setIpAddress(Lists.newArrayList(addr)).build()).build()).build());
+        tpb.addAugmentation(new TerminationPoint1Builder()
+            .setIgpTerminationPointAttributes(new IgpTerminationPointAttributesBuilder()
+                .setTerminationPointType(new IpBuilder().setIpAddress(Lists.newArrayList(addr)).build())
+                .build())
+            .build());
 
         final NodeKey nk = new NodeKey(new NodeId(url));
         final NodeBuilder nb = new NodeBuilder();
@@ -234,7 +225,7 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
             final ReportedLsp value) throws ExecutionException, InterruptedException {
         final InstanceIdentifier<Node> ni = identifier.firstIdentifierOf(Node.class);
 
-        final Path1 rl = value.getPath().get(0).augmentation(Path1.class);
+        final Path1 rl = value.nonnullPath().values().iterator().next().augmentation(Path1.class);
 
         final AddressFamily af = rl.getLsp().getTlvs().getLspIdentifiers().getAddressFamily();
 
@@ -255,7 +246,7 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
             throw new IllegalArgumentException("Unsupported address family: " + af.implementedInterface());
         }
 
-        final Path path0 = value.getPath().get(0);
+        final Path path0 = value.nonnullPath().values().iterator().next();
         final Link1Builder lab = new Link1Builder();
         if (path0.getBandwidth() != null) {
             lab.setBandwidth(path0.getBandwidth().getBandwidth());
@@ -284,9 +275,8 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
                 .setSourceTp(src.firstKeyOf(TerminationPoint.class).getTpId()).build());
         lb.setDestination(new DestinationBuilder().setDestNode(dst.firstKeyOf(Node.class).getNodeId())
                 .setDestTp(dst.firstKeyOf(TerminationPoint.class).getTpId()).build());
-        lb.addAugmentation(Link1.class, lab.build());
-        lb.addAugmentation(org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful
-                .rev181109.Link1.class, slab.build());
+        lb.addAugmentation(lab.build());
+        lb.addAugmentation(slab.build());
 
         trans.put(LogicalDatastoreType.OPERATIONAL, linkForLsp(id), lb.build());
     }
@@ -327,7 +317,7 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
         boolean orphDstNode = true;
         boolean orphDstTp = true;
         boolean orphSrcTp = true;
-        for (final Link lw : nonNullList(topology.getLink())) {
+        for (final Link lw : topology.nonnullLink().values()) {
             LOG.trace("Checking link {}", lw);
 
             final NodeId sn = lw.getSource().getSourceNode();
@@ -514,8 +504,4 @@ public final class NodeChangedListener implements ClusteredDataTreeChangeListene
     DataBroker getDataProvider() {
         return dataProvider;
     }
-
-    private static <T> List<T> nonNullList(final List<T> nullable) {
-        return nullable != null ? nullable : ImmutableList.of();
-    }
 }
index 9c4b438acae89e811ce7c5538b27db1e5fc4ee06..2c5a65892639713d8316ed7536d2ec1384557a6d 100644 (file)
@@ -16,7 +16,6 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.DataTreeIdentifier;
 import org.opendaylight.mdsal.binding.api.WriteTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.TopologyTypes1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.TopologyTypes1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.topology.tunnel.pcep.type.TopologyTunnelPcepBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
@@ -60,7 +59,7 @@ public final class PCEPTunnelTopologyProvider extends DefaultTopologyReference i
         tx.mergeParentStructurePut(LogicalDatastoreType.OPERATIONAL, getTopologyReference().getInstanceIdentifier(),
                 new TopologyBuilder().setTopologyId(this.tunneltopologyId)
                         .setTopologyTypes(new TopologyTypesBuilder()
-                                .addAugmentation(TopologyTypes1.class, new TopologyTypes1Builder()
+                                .addAugmentation(new TopologyTypes1Builder()
                                         .setTopologyTunnelPcep(
                                                 new TopologyTunnelPcepBuilder().build()).build()).build())
                         .setNode(new ArrayList<>()).build());
index 5e25b085dd133d925f83133209373f424b15feae..2bdbd8500ec5f917d83726830ab5b2064f29d072 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
@@ -23,6 +24,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.typ
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.FailureType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.OperationResult;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.p2p.rev130819.tunnel.p2p.path.cfg.attributes.ExplicitHops;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.p2p.rev130819.tunnel.p2p.path.cfg.attributes.ExplicitHopsKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.ExplicitHops1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.SupportingNode1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
@@ -59,12 +61,12 @@ final class TunelProgrammingUtil {
         // Hidden on purpose
     }
 
-    public static Ero buildEro(final List<ExplicitHops> explicitHops) {
+    public static Ero buildEro(final Map<ExplicitHopsKey, ExplicitHops> explicitHops) {
         final EroBuilder b = new EroBuilder();
 
-        if (!explicitHops.isEmpty()) {
+        if (explicitHops != null && !explicitHops.isEmpty()) {
             final List<Subobject> subobjs = new ArrayList<>(explicitHops.size());
-            for (final ExplicitHops h : explicitHops) {
+            for (final ExplicitHops h : explicitHops.values()) {
 
                 final ExplicitHops1 h1 = h.augmentation(ExplicitHops1.class);
                 if (h1 != null) {
@@ -82,7 +84,7 @@ final class TunelProgrammingUtil {
     }
 
     public static NodeId supportingNode(final Node node) {
-        for (final SupportingNode n : node.getSupportingNode()) {
+        for (final SupportingNode n : node.nonnullSupportingNode().values()) {
             final SupportingNode1 n1 = n.augmentation(SupportingNode1.class);
             if (n1 != null && n1.getPathComputationClient().isControlling()) {
                 return n.key().getNodeRef();
index 529e612fba264fcacb8aa0d95926995528648e19..87abd75f092dc0703f6bedaf2a6b69c74361ba95 100644 (file)
@@ -21,7 +21,6 @@ import org.opendaylight.mdsal.binding.api.DataBroker;
 import org.opendaylight.mdsal.binding.api.ReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.AdministrativeStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments3;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Arguments3Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepUpdateTunnelInput1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.object.LspBuilder;
@@ -95,7 +94,7 @@ final class UpdateTunnelInstructionExecutor extends AbstractInstructionExecutor
         final AdministrativeStatus adminStatus = this.updateTunnelInput.augmentation(PcepUpdateTunnelInput1.class)
                 .getAdministrativeStatus();
         if (adminStatus != null) {
-            args.addAugmentation(Arguments3.class, new Arguments3Builder().setLsp(new LspBuilder()
+            args.addAugmentation(new Arguments3Builder().setLsp(new LspBuilder()
                     .setAdministrative(adminStatus == AdministrativeStatus.Active).build()).build());
         }
         ab.setArguments(args.build());
index 868a5deac30c7a596029a97f6a2c9eda72837cc5..ab748b491674943cea9c7fa4f0f3fb7cf439fa02 100644 (file)
@@ -12,8 +12,10 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.opendaylight.protocol.util.CheckTestUtil.readDataOperational;
 
+import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.concurrent.ExecutionException;
 import org.junit.After;
 import org.junit.Assert;
@@ -28,7 +30,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Path1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.Path1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.identifiers.tlv.LspIdentifiersBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.lsp.identifiers.tlv.lsp.identifiers.address.family.Ipv4CaseBuilder;
@@ -38,7 +39,6 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.iet
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.bandwidth.object.BandwidthBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.Ipv4ExtendedTunnelId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.rsvp.rev150820.LspId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.Node1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.Node1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.PccSyncState;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.pcep.rev200120.pcep.client.attributes.PathComputationClientBuilder;
@@ -117,12 +117,14 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
         final Node dst;
         final Node src;
 
-        if (tunnelTopo.getNode().get(0).getNodeId().equals(srcId)) {
-            src = tunnelTopo.getNode().get(0);
-            dst = tunnelTopo.getNode().get(1);
+        final Iterator<Node> it = tunnelTopo.nonnullNode().values().iterator();
+        final Node tmp = it.next();
+        if (tmp.getNodeId().equals(srcId)) {
+            src = tmp;
+            dst = it.next();
         } else {
-            src = tunnelTopo.getNode().get(1);
-            dst = tunnelTopo.getNode().get(0);
+            src = it.next();
+            dst = tmp;
         }
 
         Assert.assertEquals(srcId, src.getNodeId());
@@ -130,8 +132,8 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
 
         Assert.assertEquals(1, dst.getTerminationPoint().size());
         Assert.assertEquals(1, src.getTerminationPoint().size());
-        final TerminationPoint dstTp = dst.getTerminationPoint().get(0);
-        final TerminationPoint srcTp = src.getTerminationPoint().get(0);
+        final TerminationPoint dstTp = dst.nonnullTerminationPoint().values().iterator().next();
+        final TerminationPoint srcTp = src.nonnullTerminationPoint().values().iterator().next();
         final TpId dstNodeTpId = new TpId(dstId.getValue());
         final TpId srcNodeTpId = new TpId(srcId.getValue());
         Assert.assertEquals(dstNodeTpId, dstTp.getTpId());
@@ -139,11 +141,11 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
 
         Assert.assertEquals(1, src.getSupportingNode().size());
         Assert.assertNull(dst.getSupportingNode());
-        final SupportingNode sNode = src.getSupportingNode().get(0);
+        final SupportingNode sNode = src.nonnullSupportingNode().values().iterator().next();
         Assert.assertEquals(NODE1_ID, sNode.key().getNodeRef());
 
-        Assert.assertEquals(1, tunnelTopo.getLink().size());
-        final Link link = tunnelTopo.getLink().get(0);
+        Assert.assertEquals(1, tunnelTopo.nonnullLink().size());
+        final Link link = tunnelTopo.nonnullLink().values().iterator().next();
         Assert.assertEquals(srcId, link.getSource().getSourceNode());
         Assert.assertEquals(srcNodeTpId, link.getSource().getSourceTp());
         Assert.assertEquals(dstId, link.getDestination().getDestNode());
@@ -155,15 +157,15 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
             assertNotNull(updatedNodeTopo.getNode());
             Assert.assertEquals(2, updatedNodeTopo.getNode().size());
             final Node updatedNode;
-            if (updatedNodeTopo.getNode().get(0).getNodeId().equals(srcId)) {
-                updatedNode = updatedNodeTopo.getNode().get(1);
+            if (updatedNodeTopo.nonnullNode().values().iterator().next().getNodeId().equals(srcId)) {
+                updatedNode = Iterables.get(updatedNodeTopo.nonnullNode().values(), 1);
             } else {
-                updatedNode = updatedNodeTopo.getNode().get(0);
+                updatedNode = updatedNodeTopo.nonnullNode().values().iterator().next();
             }
 
             assertNotNull(updatedNode.getSupportingNode());
-            Assert.assertEquals(1, updatedNode.getSupportingNode().size());
-            final SupportingNode sNode2 = updatedNode.getSupportingNode().get(0);
+            Assert.assertEquals(1, updatedNode.nonnullSupportingNode().size());
+            final SupportingNode sNode2 = updatedNode.nonnullSupportingNode().values().iterator().next();
             Assert.assertEquals(NODE2_ID, sNode2.getNodeRef());
             Assert.assertEquals(2, updatedNodeTopo.getLink().size());
             return updatedNodeTopo;
@@ -171,12 +173,13 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
         });
 
         readDataOperational(getDataBroker(), TUNNEL_TOPO_IID, updatedNodeTopo -> {
-            final Link link2;
-            if (updatedNodeTopo.getLink().get(0).getSource().getSourceNode().equals(srcId)) {
-                link2 = updatedNodeTopo.getLink().get(1);
-            } else {
-                link2 = updatedNodeTopo.getLink().get(0);
+            Link link2;
+            Iterator<Link> it2 = updatedNodeTopo.nonnullLink().values().iterator();
+            link2 = it2.next();
+            if (srcId.equals(link2.getSource().getSourceNode())) {
+                link2 = it2.next();
             }
+
             assertEquals(dstId, link2.getSource().getSourceNode());
             assertEquals(dstNodeTpId, link2.getSource().getSourceTp());
             assertEquals(srcId, link2.getDestination().getDestNode());
@@ -208,7 +211,7 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
         pathBuilder.withKey(new PathKey(new LspId(lspId)));
         pathBuilder.setBandwidth(new BandwidthBuilder().setBandwidth(
                 new Bandwidth(new byte[]{0x00, 0x00, (byte) 0xff, (byte) 0xff})).build());
-        pathBuilder.addAugmentation(Path1.class, new Path1Builder().setLsp(new LspBuilder().setTlvs(new TlvsBuilder()
+        pathBuilder.addAugmentation(new Path1Builder().setLsp(new LspBuilder().setTlvs(new TlvsBuilder()
                 .setLspIdentifiers(new LspIdentifiersBuilder().setAddressFamily(new Ipv4CaseBuilder().setIpv4(
                         new Ipv4Builder().setIpv4TunnelSenderAddress(new Ipv4AddressNoZone(ipv4Address))
                                 .setIpv4ExtendedTunnelId(new Ipv4ExtendedTunnelId(ipv4Address))
@@ -223,7 +226,7 @@ public class NodeChangedListenerTest extends AbstractConcurrentDataBrokerTest {
                 .setReportedLsp(Lists.newArrayList(reportedLps))
                 .setIpAddress(new IpAddressNoZone(new Ipv4AddressNoZone(ipv4Address)))
                 .build());
-        nodeBuilder.addAugmentation(Node1.class, node1Builder.build());
+        nodeBuilder.addAugmentation(node1Builder.build());
         final WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
         wTx.put(LogicalDatastoreType.OPERATIONAL, PCEP_TOPO_IID.builder().child(Node.class,
                 new NodeKey(nodeId)).build(), nodeBuilder.build());
index 9db478a5a9871cb7a584db648ff54f3888d86d2d..ba253c53ac483f78f07b8e3e88d95208b5552f82 100644 (file)
@@ -35,9 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.concepts.rev131125.Bandwidth;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.network.topology.rev140113.NetworkTopologyRef;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.AdministrativeStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepCreateP2pTunnelInput1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepCreateP2pTunnelInput1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepUpdateTunnelInput1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.ietf.stateful.rev181109.PcepUpdateTunnelInput1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.ClassType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.endpoints.address.family.Ipv4Case;
@@ -61,11 +59,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepCreateP2pTunnelInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepDestroyTunnelInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.programming.rev181109.PcepUpdateTunnelInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.ExplicitHops1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.ExplicitHops1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.Link1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.Link1Builder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.SupportingNode1;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.SupportingNode1Builder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.pcep.rev181109.tunnel.pcep.supporting.node.attributes.PathComputationClientBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.topology.tunnel.programming.rev130930.create.p2p.tunnel.input.DestinationBuilder;
@@ -89,12 +84,12 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.node.attributes.SupportingNode;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.node.attributes.SupportingNodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.node.attributes.SupportingNodeKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.TerminationPoint1;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.TerminationPoint1Builder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.termination.point.attributes.IgpTerminationPointAttributesBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.nt.l3.unicast.igp.topology.rev131021.igp.termination.point.attributes.igp.termination.point.attributes.termination.point.type.IpBuilder;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.Uint32;
 import org.opendaylight.yangtools.yang.common.Uint8;
 import org.osgi.framework.BundleContext;
 
@@ -151,7 +146,7 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         final TerminationPointBuilder tpBuilder = new TerminationPointBuilder();
         tpBuilder.setTpId(tpId);
         tpBuilder.withKey(new TerminationPointKey(tpId));
-        tpBuilder.addAugmentation(TerminationPoint1.class, new TerminationPoint1Builder()
+        tpBuilder.addAugmentation(new TerminationPoint1Builder()
                 .setIgpTerminationPointAttributes(new IgpTerminationPointAttributesBuilder()
                         .setTerminationPointType(new IpBuilder()
                                 .setIpAddress(Collections.singletonList(new IpAddress(new Ipv4Address(ipv4Address))))
@@ -162,19 +157,21 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         nodeBuilder.setTerminationPoint(Lists.newArrayList(tpBuilder.build()));
         final SupportingNode supportingNode = new SupportingNodeBuilder()
                 .withKey(new SupportingNodeKey(nodeId, new TopologyId("dummy")))
-                .addAugmentation(SupportingNode1.class, new SupportingNode1Builder()
+                .addAugmentation(new SupportingNode1Builder()
                         .setPathComputationClient(new PathComputationClientBuilder()
                                 .setControlling(true).build()).build()).build();
         nodeBuilder.setSupportingNode(Lists.newArrayList(supportingNode));
         return nodeBuilder.build();
     }
 
-    private static ExplicitHops createExplicitHop(final String ipv4Prefix) {
-        final ExplicitHopsBuilder explcitHopsBuilder = new ExplicitHopsBuilder();
-        explcitHopsBuilder.addAugmentation(ExplicitHops1.class, new ExplicitHops1Builder()
-                .setSubobjectType(new IpPrefixCaseBuilder().setIpPrefix(new IpPrefixBuilder()
-                        .setIpPrefix(new IpPrefix(new Ipv4Prefix(ipv4Prefix))).build()).build()).build());
-        return explcitHopsBuilder.build();
+    private static ExplicitHops createExplicitHop(final String ipv4Prefix, Uint32 order) {
+        return new ExplicitHopsBuilder()
+                .setOrder(order)
+                .addAugmentation(new ExplicitHops1Builder()
+                    .setSubobjectType(new IpPrefixCaseBuilder().setIpPrefix(new IpPrefixBuilder()
+                        .setIpPrefix(new IpPrefix(new Ipv4Prefix(ipv4Prefix))).build()).build())
+                    .build())
+                .build();
     }
 
     @Before
@@ -246,7 +243,7 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         createInputBuilder.setClassType(classType);
         createInputBuilder.setSymbolicPathName(tunnelName);
         createInputBuilder.setExplicitHops(Collections.emptyList());
-        createInputBuilder.addAugmentation(PcepCreateP2pTunnelInput1.class, new PcepCreateP2pTunnelInput1Builder()
+        createInputBuilder.addAugmentation(new PcepCreateP2pTunnelInput1Builder()
                 .setAdministrativeStatus(AdministrativeStatus.Active).build());
         this.tunnelProgramming.pcepCreateP2pTunnel(createInputBuilder.build());
         //check add-lsp input
@@ -267,10 +264,10 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         updateInputBuilder.setNetworkTopologyRef(topologyRef);
         updateInputBuilder.setBandwidth(bwd);
         updateInputBuilder.setClassType(classType);
-        updateInputBuilder.setExplicitHops(Lists.newArrayList(createExplicitHop(IPV4_PREFIX1),
-                createExplicitHop(IPV4_PREFIX2)));
+        updateInputBuilder.setExplicitHops(Lists.newArrayList(createExplicitHop(IPV4_PREFIX1, Uint32.ONE),
+                createExplicitHop(IPV4_PREFIX2, Uint32.TWO)));
         updateInputBuilder.setLinkId(LINK1_ID);
-        updateInputBuilder.addAugmentation(PcepUpdateTunnelInput1.class, new PcepUpdateTunnelInput1Builder()
+        updateInputBuilder.addAugmentation(new PcepUpdateTunnelInput1Builder()
                 .setAdministrativeStatus(AdministrativeStatus.Active).build());
         this.tunnelProgramming.pcepUpdateTunnel(updateInputBuilder.build());
         //check update-lsp input
@@ -315,7 +312,7 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
                 .rev131021.link.attributes.DestinationBuilder().setDestNode(NODE2_ID).setDestTp(TP2_ID).build());
         linkBuilder.setLinkId(LINK1_ID);
         linkBuilder.withKey(new LinkKey(LINK1_ID));
-        linkBuilder.addAugmentation(Link1.class, new Link1Builder().setSymbolicPathName(LINK1_ID.getValue()).build());
+        linkBuilder.addAugmentation(new Link1Builder().setSymbolicPathName(LINK1_ID.getValue()).build());
         final WriteTransaction wTx = getDataBroker().newWriteOnlyTransaction();
         wTx.mergeParentStructurePut(LogicalDatastoreType.OPERATIONAL,
             TOPO_IID.builder().child(Link.class, new LinkKey(LINK1_ID)).build(), linkBuilder.build());
diff --git a/pom.xml b/pom.xml
index dee120bbc7a97a0bc0d02475bed5d607aa78e7c1..c3f6ab0a597ee847525136569a9af9778d708674 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 9e0933a1a6ff4ee7e4c2c12452ca307ac3157d70..4e50bd5aca75b204df26351bae69080bb149eedc 100644 (file)
             <artifactId>yang-parser-api</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 584c94adaaab47ad56db4321754963925c3cf74e..116fac923c04726ce985b3bec496860ede6b1bef 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index caa49c0d47f4f92ccf466672f995f3188bfc50f2..2e457fa93c35d3644cb44fd153ffe06049e388be 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 39fea5e370f50c4f942bb09e0a59585aa4856ab2..15241c8eeed7c54b71ad90f2692a46297104a144 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index c86d8ea0cf1c0971fd1ab3a92766696c9d266324..ad51caf62223430d3be5f07dce6d4561b4c07d4a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 6385bdcf7b96607587cef8af5c7df67fc0dfd561..3813997e6c35550df8bc5381e5e8fcabf132fa7f 100644 (file)
@@ -5,13 +5,11 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.protocol.rsvp.parser.spi.subobjects;
 
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.Preconditions;
-
 import io.netty.buffer.ByteBuf;
 import io.netty.buffer.ByteBufUtil;
 import java.util.ArrayList;
index 8b5250cb7d4a3913a427efab7da9a803b4c0b51c..9df226c463448bbdc5c10c087c2410177e660b8b 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 8691bac6413a743666d16c3503d10c892cf3568a..4a6e0f091c7535bee0d2945653afd1bc59df3b16 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index ae15a533cd31659fb51b907d254abd76425f5f48..dc76e7ea8319ebf59f95baca73445cd3ad1f4e32 100644 (file)
             <artifactId>netty-transport</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.opendaylight.mdsal</groupId>
+            <artifactId>mdsal-binding-test-utils</artifactId>
+            <scope>test</scope>
+        </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 2b1bd8a4b4e0a223aba4b0c34784d8eb802dc84c..bd081469689ad8c81a127aedb0c889ed891c9fc0 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
index 397ba0f987acbcd6637f0acc56c4f1363965ae7d..b66ad20509bc39220eeec66dbc84e36a8a820aba 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>