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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 1b09ec9657766854fa1e41bb901f84a59cedffa6..5f8585fe5bed60c56b201b98a9b012ef40bee107 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index d512c6fb9e5eb10e3dbd2066c1f0ec0bb990e55d..f7533e8d22d00801527865d54e8121b41cddb10b 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
       <groupId>org.opendaylight.odlparent</groupId>
       <artifactId>odlparent-lite</artifactId>
     <parent>
       <groupId>org.opendaylight.odlparent</groupId>
       <artifactId>odlparent-lite</artifactId>
-      <version>6.0.4</version>
+      <version>7.0.1</version>
       <relativePath/>
     </parent>
 
       <relativePath/>
     </parent>
 
index 2719bfc56ab63570b3a7e24ca81938ea817db7e6..12ae3e94607c0a51a602423466e35be697cd50b3 100644 (file)
             <artifactId>testtool-util</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 6e3aa923ae3155775b9a5f842526cc3a4ddda47e..fe9e9b7a2297e8c9a6619619b09c287c3b97d832 100644 (file)
             <artifactId>guava</artifactId>
         </dependency>
         <!--Test dependencies-->
             <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>
         <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) {
             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 {
                         .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());
         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);
     }
 
         table.print(stream);
     }
 
index a07f3e152e8df2908e46b431e9ca3da6531afb39..1d9e8d34ddf9b079b27a84869eab284f14595b6a 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.protocol.bgp.cli.utils;
 
 import java.io.PrintStream;
 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;
 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);
         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);
     }
 
         table.print(stream);
     }
@@ -76,7 +77,7 @@ final class NeighborStateCliUtils {
         table.addRow().addContent("======================", "");
     }
 
         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));
 
     }
         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 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;
 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
     }
 
         // 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();
             @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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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.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;
 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
     }
 
     @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
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = EvpnRibSupport.getInstance(this.mappingService);
+        this.ribSupport = EvpnRibSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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));
         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();
     }
         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 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;
 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
     }
 
     @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
         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 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;
 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
     }
 
     @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
         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 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;
 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
     }
 
     @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
         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 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;
 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
     }
 
     @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
         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);
         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,
 
         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.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);
     }
 
         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
     public void setUp() throws Exception {
         super.setUp();
         this.ribSupport = FlowspecL3vpnIpv4RIBSupport
-                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.mappingService);
+                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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
     public void setUp() throws Exception {
         super.setUp();
         this.ribSupport = FlowspecL3vpnIpv6RIBSupport
-                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.mappingService);
+                .getInstance(new SimpleFlowspecExtensionProviderContext(), this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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.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;
 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
     }
 
     @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
         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.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;
 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
     }
 
     @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
         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 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;
 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()
             .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();
 
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = IPv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = IPv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = IPv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = IPv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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 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;
 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.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;
 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
     }
 
     @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);
         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 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;
 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.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;
 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
     }
 
     @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);
         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.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;
 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.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
 
 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
     }
 
     @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
         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.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;
 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.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
 
 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
     }
 
     @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
         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
  */
  * 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;
 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));
         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();
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        ribSupport = L3VpnMcastIpv4RIBSupport.getInstance(this.mappingService);
+        ribSupport = L3VpnMcastIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        ribSupport = L3VpnMcastIpv6RIBSupport.getInstance(this.mappingService);
+        ribSupport = L3VpnMcastIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = VpnIpv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = VpnIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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
  */
  * 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;
 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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = VpnIpv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = VpnIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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.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;
 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.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;
 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
     }
 
     @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);
         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.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;
 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.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;
 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
     }
 
     @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);
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LabeledUnicastIpv4RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LabeledUnicastIpv4RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LabeledUnicastIpv6RIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LabeledUnicastIpv6RIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(this.ribSupport);
     }
 
         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.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;
 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
     }
 
     @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);
         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.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;
 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.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;
 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");
     }
 
         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();
         // 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);
                 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() {
     }
 
     private SimpleBindingSubTlvsRegistry() {
     }
 
-
     public static SimpleBindingSubTlvsRegistry getInstance() {
         return SINGLETON;
     }
     public static SimpleBindingSubTlvsRegistry getInstance() {
         return SINGLETON;
     }
@@ -46,15 +45,17 @@ public final class SimpleBindingSubTlvsRegistry {
     }
 
     public void serializeBindingSubTlvs(final List<BindingSubTlvs> bindingSubTlvs, final ByteBuf aggregator) {
     }
 
     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));
 
 
         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));
 
 
         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();
     @Override
     public void setUp() throws Exception {
         super.setUp();
-        this.ribSupport = LinkstateRIBSupport.getInstance(this.mappingService);
+        this.ribSupport = LinkstateRIBSupport.getInstance(this.adapter.currentSerializer());
         setUpTestCustomizer(ribSupport);
     }
 
         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.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;
 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.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;
 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
     }
 
     @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
         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.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;
 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.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;
 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
     }
 
     @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
         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();
     @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<>());
     }
         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();
     @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<>());
     }
         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));
         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();
         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>
         </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>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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.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;
 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
     }
 
     @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);
         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.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;
 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();
             .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)
 
     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<>());
     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);
     }
 
         setUpTestCustomizer(this.ribSupport);
     }
 
@@ -172,7 +173,7 @@ public class RouteTargetConstrainRIBSupportTest extends AbstractRIBSupportTest<R
 
     @Test
     public void testRouteAttributesIdentifier() {
 
     @Test
     public void testRouteAttributesIdentifier() {
-        assertEquals(new NodeIdentifier(Attributes.QNAME.withModule(BindingReflections
+        assertEquals(new NodeIdentifier(Attributes.QNAME.bindTo(BindingReflections
                         .getQNameModule(RouteTargetConstrainRoutesCase.class))),
                 this.ribSupport.routeAttributesIdentifier());
     }
                         .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));
         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();
         assertNotNull(context.getRIBSupport(Ipv4AddressFamily.class,
                 RouteTargetConstrainSubsequentAddressFamily.class));
         ribAct.close();
index 97a739f7d0a7d79fa870a1e83a982718d3983861..95533d5f97b9db8941aaee337dfbe228f773e595 100644 (file)
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
             <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>
         <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;
 
 
 package org.opendaylight.protocol.bgp.openconfig.routing.policy.statement.actions;
 
+import com.google.common.collect.ImmutableMap;
 import java.util.List;
 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;
 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.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;
 
 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());
 
                 .setAsPath(attributes.getAsPath())
                 .setCommunities(attributes.getCommunities());
 
-        final List<UnrecognizedAttributes> oldAtt = attributes.getUnrecognizedAttributes();
+        final Map<UnrecognizedAttributesKey, UnrecognizedAttributes> oldAtt = attributes.getUnrecognizedAttributes();
         if (oldAtt != null) {
         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)
                     .filter(UnrecognizedAttributes::isTransitive)
-                    .collect(Collectors.toList()));
+                    .collect(ImmutableMap.toImmutableMap(UnrecognizedAttributes::key, Function.identity())));
         }
         final List<ExtendedCommunities> oldExt = attributes.getExtendedCommunities();
         if (oldExt != null) {
         }
         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();
         }
         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());
     }
                 .map(nei -> RouterIds.createPeerId(nei.getAddress()))
                 .collect(Collectors.toList());
     }
index c966710ee713ef1cc11d1baf7fa3d52244ad2219..f6e28c47c7aefb87e133facf6bbfeb5d82dea198 100644 (file)
             <artifactId>mdsal-binding-dom-adapter</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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);
         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());
             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;
 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;
 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) {
         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) {
         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;
                     }
                 }
                         return true;
                     }
                 }
index 25b3b05eb9e8152a3c0afb9bd1f09ed3bb8a053f..71f0870e311e675e221139dd7b6446c9dd726bde 100644 (file)
@@ -8,12 +8,10 @@
 package org.opendaylight.protocol.bgp.parser;
 
 import com.google.common.annotations.Beta;
 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.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;
 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.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.
 
 /**
  * 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()
      * GR capability advertizing inactive GR.
      */
     public static final @NonNull GracefulRestartCapability EMPTY_GR_CAPABILITY = new GracefulRestartCapabilityBuilder()
-            .setTables(ImmutableList.of())
             .setRestartFlags(new RestartFlags(Boolean.FALSE))
             .setRestartFlags(new RestartFlags(Boolean.FALSE))
-            .setRestartTime(0)
+            .setRestartTime(Uint16.ZERO)
             .build();
 
     /**
      * LLGR capability advertizing no tables.
      */
     public static final @NonNull LlGracefulRestartCapability EMPTY_LLGR_CAPABILITY =
             .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() {
 
 
     private GracefulRestartUtil() {
 
@@ -62,12 +60,12 @@ public final class GracefulRestartUtil {
     }
 
     @Beta
     }
 
     @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))
             .setGracefulRestartCapability(new GracefulRestartCapabilityBuilder()
                 .setRestartFlags(new RestartFlags(localRestarting))
-                .setRestartTime(restartTime)
+                .setRestartTime(Uint16.valueOf(restartTime))
                 .setTables(tables)
                 .build())
             .build()).build();
                 .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.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;
 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<>();
     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());
         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<>();
     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());
         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.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;
 
 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()));
                     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;
             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 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;
 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.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;
 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);
     }
 
         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;
         }
         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);
             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) {
     }
 
     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();
         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.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) {
 
         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 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;
 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.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;
 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) {
     }
 
     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());
         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);
             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 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.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;
 
 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) {
 
     @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;
         }
         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()) {
             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 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;
 import java.util.ArrayList;
 import java.util.List;
 import org.junit.Test;
@@ -73,7 +74,7 @@ public class ComplementaryTest {
 
         assertNotSame(tlv2.toString(), tlv3.toString());
 
 
         assertNotSame(tlv2.toString(), tlv3.toString());
 
-        assertEquals(tlv3.getTables(), tt);
+        assertEquals(Maps.uniqueIndex(tt, Tables::key), tlv3.getTables());
 
         assertEquals(cap.getSafi(), cap1.getSafi());
 
 
         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());
         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
     }
 
     @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 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;
 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 };
     @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());
             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());
 
         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index d5f0344f1b5be2967fe449ab122307e04dc51137..ca111507f64e33ad283f6059ff5d696883dfc524 100644 (file)
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>yang-data-impl</artifactId>
         </dependency>
             <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.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>
             <groupId>org.opendaylight.mdsal.model</groupId>
             <artifactId>odl-uint24</artifactId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
         </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>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>netty-transport-native-epoll</artifactId>
             <classifier>linux-x86_64</classifier>
         </dependency>
             <artifactId>netty-transport-native-epoll</artifactId>
             <classifier>linux-x86_64</classifier>
         </dependency>
-
-        <!-- OSGi, FIXME: remove this -->
         <dependency>
         <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>
 
         </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>
         <!-- Testing dependencies -->
         <dependency>
             <groupId>${project.groupId}</groupId>
             <artifactId>mdsal-dom-broker</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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 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();
 
         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 {
             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()))
                         .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 {
         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,
                     .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<>();
         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());
             }
                 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) {
         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) {
                     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
      */
     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()
                         .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.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,
 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();
 
     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 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<>();
     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 BgpId localBgpId,
             final RIBExtensionConsumerContext extensions,
             final BGPDispatcher dispatcher,
-            final CodecsRegistryImpl codecsRegistry,
+            final CodecsRegistry codecsRegistry,
             final DOMDataBroker domDataBroker,
             final DataBroker dataBroker,
             final BGPRibRoutingPolicy ribPolicies,
             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;
     }
 
         return this.ribContextRegistry;
     }
 
-    @Override
-    public void onGlobalContextUpdated(final SchemaContext context) {
-        this.codecsRegistry.onSchemaContextUpdated(context);
-    }
-
     @Override
     public CodecsRegistry getCodecsRegistry() {
         return this.codecsRegistry;
     @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;
         }
         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()));
         }
     }
             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 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;
 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());
 
         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,
         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 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())
         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");
             }
 
                 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
             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 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);
             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 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.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;
 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.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;
 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());
             })
                 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) {
     }
 
     public static CParameters getLlGracefulCapability(final Set<BgpPeerUtil.LlGracefulRestartDTO> llGracefulRestarts) {
@@ -88,19 +91,21 @@ public final class GracefulRestartUtil {
                         .build()).build()).build();
     }
 
                         .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) {
                                             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;
     }
 
         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 -> {
                                                        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 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.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.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;
 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.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;
 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.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;
 
 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();
     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());
 
     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
     }
 
     //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) {
             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;
     }
         }
         return afiSafi;
     }
@@ -181,7 +180,7 @@ final class OpenConfigMappingUtil {
         return null;
     }
 
         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) {
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final Map<BgpTableType, PathSelectionMode> pathSelectionModes = new HashMap<>();
         for (final AfiSafi afiSafi : afiSafis) {
@@ -216,7 +215,7 @@ final class OpenConfigMappingUtil {
         return false;
     }
 
         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) {
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         final List<AddressFamilies> addPathCapability = new ArrayList<>();
         for (final AfiSafi afiSafi : afiSafis) {
@@ -249,7 +248,7 @@ final class OpenConfigMappingUtil {
         return false;
     }
 
         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()))
             final BGPTableTypeRegistryConsumer tableTypeRegistry) {
         return afiSafis.stream()
                 .map(afiSafi -> tableTypeRegistry.getTableType(afiSafi.getAfiSafiName()))
@@ -258,9 +257,9 @@ final class OpenConfigMappingUtil {
                 .collect(Collectors.toList());
     }
 
                 .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) {
             tableTypeRegistry) {
-        return afiSafis.stream()
+        return afiSafis.values().stream()
                 .map(afiSafi -> tableTypeRegistry.getTableKey(afiSafi.getAfiSafiName()))
                 .filter(Optional::isPresent)
                 .map(Optional::get)
                 .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) {
     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) {
         }
 
         if (port == null) {
-            port = getPort(neighbor.getTransport(), NeighborTransportConfig.class);
+            port = getPort(neighbor.getTransport(), config -> config.augmentation(NeighborTransportConfig.class));
         }
 
         if (port == null) {
         }
 
         if (port == null) {
@@ -456,12 +455,12 @@ final class OpenConfigMappingUtil {
         return port;
     }
 
         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) {
         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();
                 }
                 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 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 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.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.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;
 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.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.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;
 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 RIBExtensionConsumerContext extensions;
     private final BGPDispatcher dispatcher;
-    private final BindingCodecTreeFactory codecTreeFactory;
+    private final CodecsRegistry codecsRegistry;
     private final DOMDataBroker domBroker;
     private final DOMDataBroker domBroker;
-    private final DOMSchemaService domSchemaService;
     private final BGPRibRoutingPolicyFactory policyProvider;
     private RIBImpl ribImpl;
     private ServiceRegistration<?> serviceRegistration;
     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;
 
     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 RIBExtensionConsumerContext contextProvider,
             final BGPDispatcher dispatcher,
             final BGPRibRoutingPolicyFactory policyProvider,
-            final BindingCodecTreeFactory codecTreeFactory,
+            final CodecsRegistry codecsRegistry,
             final DOMDataBroker domBroker,
             final DOMDataBroker domBroker,
-            final DataBroker dataBroker,
-            final DOMSchemaService domSchemaService
+            final DataBroker dataBroker
     ) {
         this.extensions = contextProvider;
         this.dispatcher = dispatcher;
     ) {
         this.extensions = contextProvider;
         this.dispatcher = dispatcher;
-        this.codecTreeFactory = codecTreeFactory;
+        this.codecsRegistry = codecsRegistry;
         this.domBroker = domBroker;
         this.dataBroker = dataBroker;
         this.domBroker = domBroker;
         this.dataBroker = dataBroker;
-        this.domSchemaService = domSchemaService;
         this.policyProvider = policyProvider;
     }
 
         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);
         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) {
     }
 
     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();
         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;
         }
             this.ribImpl.close();
             this.ribImpl = null;
         }
-        if (this.schemaContextRegistration != null) {
-            this.schemaContextRegistration.close();
-            this.schemaContextRegistration = null;
-        }
         if (this.serviceRegistration != null) {
             try {
                 this.serviceRegistration.unregister();
         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) {
             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());
         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 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,
 
         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) {
     @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 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) {
                     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.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;
 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;
     private NioEventLoopGroup boss;
     private org.opendaylight.protocol.bgp.inet.BGPActivator inetActivator;
     protected StrictBGPPeerRegistry serverRegistry;
-    protected CodecsRegistryImpl codecsRegistry;
+    protected ConstantCodecsRegistry codecsRegistry;
 
     private List<BGPDispatcherImpl> clientDispatchers;
 
 
     private List<BGPDispatcherImpl> clientDispatchers;
 
@@ -146,7 +147,7 @@ public abstract class AbstractAddPathTest extends DefaultRibPoliciesMockTest {
         this.ribActivator = new RIBActivator();
         this.ribExtension = new SimpleRIBExtensionProviderContext();
 
         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();
 
         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));
 
         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<>();
     }
 
         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.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();
         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 -> {
         // 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 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;
                     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 -> {
 
     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;
         });
     }
             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.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;
 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.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;
 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.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 {
 
 
 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;
     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 RIBActivator a1;
-    private RIBSupport<?, ?, ?, ?> ribSupport;
     @Mock
     private BGPDispatcher dispatcher;
 
     @Mock
     private BGPDispatcher dispatcher;
 
@@ -127,12 +118,6 @@ public class AbstractRIBTestSetup extends DefaultRibPoliciesMockTest {
     @Mock
     private ClusterSingletonServiceProvider clusterSingletonServiceProvider;
 
     @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 {
     @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();
 
     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 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 = 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,
 
         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()));
                 localTables, Collections.singletonMap(KEY,
                 BasePathSelectionModeFactory.createBestPathSelectionStrategy()));
-        this.rib.onGlobalContextUpdated(schemaContext);
-        this.ribSupport = getRib().getRibSupportContext().getRIBSupport(KEY);
     }
 
     @SuppressWarnings("unchecked")
     }
 
     @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));
         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();
         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();
             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);
         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.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);
         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
  */
  * 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;
 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();
                 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);
         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.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;
 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.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.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;
 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 {
 
     @Before
     public void setUp() throws UnknownHostException {
-        new EmbeddedChannel();
         MockitoAnnotations.initMocks(this);
         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()
 
         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());
                 .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());
 
         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 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;
 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;
 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()
                 .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()
                 .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()
                 .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));
                 .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();
                 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);
         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;
 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;
 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.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;
 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 RIBExtensionProviderContext ext2;
     @Mock
     private BGPDispatcher dispatcher;
-    private CodecsRegistryImpl codecsRegistry;
+    private ConstantCodecsRegistry codecsRegistry;
 
     @Override
     @Before
 
     @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 = 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
     }
 
     @Override
@@ -119,7 +119,6 @@ public class ParserToSalTest extends DefaultRibPoliciesMockTest {
                 .createBestPathSelectionStrategy()));
         rib.instantiateServiceInstance();
         assertTablesExists(tables);
                 .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();
         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();
                 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());
         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 -> {
     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 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());
                     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.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;
 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.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;
 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.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;
 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();
     @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()
 
         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)
                         .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());
                 .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();
 
         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();
                 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());
 
         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();
                 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());
 
         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.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.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.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;
 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.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;
 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
     @Mock
     private DataTreeModification<Bgp> modification;
     @Mock
-    private ListenerRegistration<?> dataTreeRegistration;
-    @Mock
     private ServiceRegistration<?> registration;
     @Mock
     private ClusterSingletonServiceProvider singletonServiceProvider;
     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));
 
         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("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();
 
 
         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,
         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)
         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.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
         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.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();
         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();
 
     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();
     }
 
         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();
 
     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();
     }
 
         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.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.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;
 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 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;
 
     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.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;
 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());
         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());
         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());
         });
             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);
         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());
         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());
         });
             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 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;
 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.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;
 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.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;
 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)
         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)
                         .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());
     }
 
                         .setSendMax(ALL_PATHS).build()).build());
     }
 
@@ -324,8 +324,8 @@ public class OpenConfigMappingUtilTest {
 
     @Test
     public void testGetAfiSafiWithDefault() {
 
     @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));
         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);
 
         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()
         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));
     }
 
         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)
     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)
         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<>();
         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);
                 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));
     }
         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.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.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.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;
 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.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;
 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)
 
     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
     }
 
     @Mock
     private RIBExtensionConsumerContext extension;
     @Mock
-    private BindingCodecTreeFactory bindingCodecTreeFactory;
+    private CodecsRegistry codecsRegistry;
     @Mock
     private DOMDataBroker domDataBroker;
     @Mock
     @Mock
     private DOMDataBroker domDataBroker;
     @Mock
-    private DOMSchemaService domSchemaService;
-    @Mock
-    private ListenerRegistration<?> dataTreeRegistration;
-    @Mock
     private RIBSupport<?, ?, ?, ?> ribSupport;
     @Mock
     private ServiceRegistration<?> serviceRegistration;
     private RIBSupport<?, ?, ?, ?> ribSupport;
     @Mock
     private ServiceRegistration<?> serviceRegistration;
@@ -87,7 +79,6 @@ public class RibImplTest extends AbstractConfig {
     public void setUp() throws Exception {
         super.setUp();
 
     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();
         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();
         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();
         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.extension,
                 this.dispatcher,
                 this.policyProvider,
-                this.bindingCodecTreeFactory,
+                this.codecsRegistry,
                 this.domDataBroker,
                 this.domDataBroker,
-                getDataBroker(),
-                this.domSchemaService);
+                getDataBroker());
         ribImpl.setServiceRegistration(this.serviceRegistration);
         ribImpl.start(createGlobal(), "rib-test", this.tableTypeRegistry);
         ribImpl.setServiceRegistration(this.serviceRegistration);
         ribImpl.start(createGlobal(), "rib-test", this.tableTypeRegistry);
-        verify(this.extension).getClassLoadingStrategy();
         verify(this.domDataBroker).getExtensions();
         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, "
         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();
         assertNotNull(ribImpl.getCodecsRegistry());
 
         ribImpl.close();
-        verify(this.dataTreeRegistration).close();
-        verify(this.dataTreeRegistration).close();
         verify(this.serviceRegistration).unregister();
     }
 
         verify(this.serviceRegistration).unregister();
     }
 
index fb9c694e2f18f83f113747da96d2fef19ab352c1..18f5d261cb2dcdb083c4a29a6ac5445ff980574c 100644 (file)
@@ -83,7 +83,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
         </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>com.google.guava</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</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.checkerframework</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</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>
             <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.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.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;
 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(
             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.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
         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);
 
         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);
             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);
         }
 
             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.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;
 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);
     <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 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;
 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
      */
      * @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 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 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;
 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.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 {
 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 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,
     @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);
         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() {
             @Override
             protected void removeRegistration() {
+                // FIXME: clean up registrations, too
                 SimpleRIBExtensionProviderContext.this.supports.remove(key);
             }
         };
     }
 
                 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(
     @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);
     }
             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"/>
        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"
   <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>
       <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;
 
  */
 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.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 {
 
 public abstract class AbstractRIBActivatorTest extends AbstractConcurrentDataBrokerTest {
-    protected BindingNormalizedNodeSerializer mappingService;
+    protected AdapterContext context;
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
+        this.context = customizer.getAdapterContext();
         return customizer;
     }
 }
         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 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 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.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;
 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 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;
     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
     }
 
     @Before
@@ -104,7 +103,7 @@ public abstract class AbstractRIBSupportTest<C extends Routes & DataObject & Cho
         initMocks(this);
         doAnswer(invocation -> {
             final Object[] args = invocation.getArguments();
         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),
                     .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)
         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<>();
             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();
     @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();
         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();
     }
                 .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();
     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() {
                 .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();
     }
 
     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();
     }
 
     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();
     }
 
     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());
                 .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();
 
     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();
     }
 
     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() {
     }
 
     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.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;
 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 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);
 
     @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);
         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();
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
+        this.context = customizer.getAdapterContext();
         return customizer;
     }
 
         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.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;
 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
     }
 
     @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();
     }
         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(),
         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();
         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.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;
 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 {
 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();
 
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.codec = customizer.getBindingToNormalized();
+        this.adapter = customizer.getAdapterContext();
         return customizer;
     }
 
     @Test
     public void testExtensionProvider() {
         return customizer;
     }
 
     @Test
     public void testExtensionProvider() {
+        final BindingNormalizedNodeSerializer codec = adapter.currentSerializer();
         final ServiceLoaderRIBExtensionConsumerContext ctx =
         final ServiceLoaderRIBExtensionConsumerContext ctx =
-                ServiceLoaderRIBExtensionConsumerContext.createConsumerContext(this.codec);
+                ServiceLoaderRIBExtensionConsumerContext.createConsumerContext(codec);
         Assert.assertNull(ctx.getRIBSupport(Ipv4AddressFamily.class, UnicastSubsequentAddressFamily.class));
         final TestActivator act = new TestActivator();
         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));
         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>
             <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>
         <!-- 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 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;
 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)
                 .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));
                 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) {
         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;
             }
             } 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.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;
 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()
 
 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,
                     .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.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;
 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()
 
 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,
                     .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.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;
 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(
 
 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();
 
             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 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,
 
     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);
         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,
 
     @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);
             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
      */
      *
      * @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;
         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
      */
      *
      * @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) {
         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
      */
      *
      * @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());
         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);
     }
 
         cgraph.addPrefix(prefix);
     }
 
+    private static final int MAX_PRIORITY = 8;
+
     /**
      * Create Edge Attributes from Link attributes.
      *
     /**
      * Create Edge Attributes from Link attributes.
      *
@@ -290,9 +290,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return EdgeAttributes
      */
      *
      * @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) {
         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
             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());
                 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) {
             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());
             }
             for (SrlgId srlg : la.getSharedRiskLinkGroups()) {
                 srlgs.add(srlg.getValue());
             }
@@ -399,7 +397,7 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
      *
      * @return Node Attributes
      */
      *
      * @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) {
         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
      */
      *
      * @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())));
         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(
         } 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()
         }
         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));
         /* 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;
         }
             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);
     }
 
         cgraph.deleteEdge(edgeKey);
     }
 
-    private void removeVertex(NodeCase nodeCase) {
+    private void removeVertex(final NodeCase nodeCase) {
         VertexKey vertexKey = new VertexKey(getVertexId(nodeCase.getNodeDescriptors().getCRouterIdentifier()));
         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;
         }
             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);
     }
 
         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);
         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.
      */
      *
      * @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) {
         Long rid = 0L;
 
         if (routerID instanceof IsisNodeCase) {
@@ -646,21 +644,21 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
         return Uint64.valueOf(rid);
     }
 
         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()));
     }
 
         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;
         }
         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();
         byte[] ip;
         try {
             ip = ((Inet6Address) Inet6Address.getByName(str)).getAddress();
@@ -681,5 +679,4 @@ public class LinkstateGraphBuilder extends AbstractTopologyBuilder<LinkstateRout
     protected void clearTopology() {
         cgraph.clear();
     }
     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.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;
 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.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.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;
 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()
 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)
                     .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();
 
                 .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) {
 
             // 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
             }
             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);
                     .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 final class NodeSrHolder {
-        private NodeId nodeId;
+        private final NodeId nodeId;
         private Long srgbFirstValue = null;
         private Integer srgbRangeSize = null;
         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;
 
         NodeSrHolder(final NodeId nodeId) {
             this.nodeId = nodeId;
@@ -528,9 +521,11 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
         stpb.setTpId(id);
 
         if (type != null) {
         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();
         }
 
         return stpb.build();
@@ -643,9 +638,9 @@ public class LinkstateTopologyBuilder extends AbstractTopologyBuilder<LinkstateR
         }
         ProtocolUtil.augmentProtocolId(value, ilab, la, linkCase.getLinkDescriptors());
 
         }
         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);
 
         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) {
             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);
         }
 
         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.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;
 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.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;
 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) {
             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());
                 }
                             new OspfPrefixAttributesBuilder().setForwardingAddress(pa.getOspfForwardingAddress()
                                     .getIpv4AddressNoZone()).build()).build());
                 }
@@ -89,13 +89,10 @@ public final class ProtocolUtil {
             case Static:
             case IsisLevel1:
             case IsisLevel2:
             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:
                 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;
                 break;
             default:
                 break;
@@ -109,14 +106,11 @@ public final class ProtocolUtil {
             case Static:
             case IsisLevel1:
             case IsisLevel2:
             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:
                 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;
                 break;
             default:
                 break;
@@ -238,7 +232,7 @@ public final class ProtocolUtil {
                 tb.setTeDefaultMetric(la.getTeMetric().getValue());
             }
             if (la.getUnreservedBandwidth() != null) {
                 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()));
             }
             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.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()));
             }
             if (la.getMaxLinkBandwidth() != null) {
                 tb.setMaxLinkBandwidth(bandwidthToBigDecimal(la.getMaxLinkBandwidth()));
@@ -317,7 +311,7 @@ public final class ProtocolUtil {
     }
 
     private static List<UnreservedBandwidth> unreservedBandwidthList(
     }
 
     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());
 
                 .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());
             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(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 -> {
             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()
             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;
         });
 
             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());
             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(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;
         });
 
             return topology;
         });
 
@@ -85,11 +85,11 @@ public class Ipv6ReachabilityTopologyBuilderTest extends AbstractTopologyBuilder
         updateIpv6Route(createIpv6Route(NEW_NEXT_HOP));
 
         readDataOperational(getDataBroker(), this.ipv6TopoBuilder.getInstanceIdentifier(), topology -> {
         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(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;
         });
 
             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 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;
 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.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;
 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
     }
 
     @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 -> {
     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());
             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(
                     .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;
         });
 
             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 -> {
         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());
             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;
             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 {
             } 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)
             }
             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());
                 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());
                     .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
     }
 
     @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 -> {
     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());
             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(
                     .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;
         });
 
             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 -> {
         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();
             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)
             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)
             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;
         });
 
             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 -> {
         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(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());
             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;
             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 {
             } 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)
             }
             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())
                                 .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)
                                 .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())
                         .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)))
                         .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())
                                 .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(
                                 .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>
     <parent>
         <groupId>org.opendaylight.mdsal</groupId>
         <artifactId>binding-parent</artifactId>
-        <version>5.0.9</version>
+        <version>6.0.0</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 88ab3d4f0158b8680a84a2c2453e50b70d16f8b9..b467bfc07e81ab7a2ef5e02e3cb5aa2638fa10c3 100644 (file)
@@ -13,7 +13,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 9ccb0009d7723da493ea2918024c4beb48bde0f2..24c4beb7e58c64217359343b0c9eac1a6eace160 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 53585d7f8f61237d32f39ceb49c6efb7c21df458..a977008815cf79c81316af1c6d2403687b2973d7 100644 (file)
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</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.opendaylight.mdsal</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <groupId>org.opendaylight.mdsal.binding.model.ietf</groupId>
             <artifactId>rfc6991-ietf-inet-types</artifactId>
         </dependency>
             <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>
         <dependency>
             <groupId>org.checkerframework</groupId>
             <artifactId>checker-qual</artifactId>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>mockito-configuration</artifactId>
         </dependency>
             <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>
         <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 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;
 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 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;
     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,
 
     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;
         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;
 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;
 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
     }
 
         // 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)
         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.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.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;
 
 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,
     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.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);
     }
 
         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,
             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);
             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="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"/>
   <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>
 
     <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 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 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.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;
 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);
         .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;
     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 ClusterSingletonServiceProvider clusterSSProv;
     @Mock
     private ClusterSingletonServiceProvider clusterSSProv2;
-    private DOMSchemaService schemaService;
 
     @Before
     public void setUp() throws Exception {
 
     @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();
 
         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 = 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();
 
         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(),
         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 -> {
         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(MONITOR_ID, bmpMonitor.getMonitorId());
-            assertEquals(0, bmpMonitor.getRouter().size());
+            assertEquals(0, bmpMonitor.nonnullRouter().size());
             assertEquals(MONITOR_ID, bmpMonitor.getMonitorId());
             assertEquals(MONITOR_ID, bmpMonitor.getMonitorId());
-            assertEquals(0, bmpMonitor.getRouter().size());
+            assertEquals(0, bmpMonitor.nonnullRouter().size());
             return monitor;
         });
     }
             return monitor;
         });
     }
@@ -203,8 +199,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
     @Override
     protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
         final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
-        this.mappingService = customizer.getBindingToNormalized();
-        this.schemaService = customizer.getSchemaService();
+        this.mappingService = customizer.getAdapterContext();
         return customizer;
     }
 
         return customizer;
     }
 
@@ -215,7 +210,6 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         this.bmpActivator.close();
         this.dispatcher.close();
         this.bmpApp.close();
         this.bmpActivator.close();
         this.dispatcher.close();
         this.bmpApp.close();
-        this.mappingService.close();
 
         checkNotPresentOperational(getDataBroker(), BMP_II);
     }
 
         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;
             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;
                 if (routerId.equals(r.getRouterId())) {
                     router = r;
                     break;
@@ -293,7 +287,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
             }
             assertNotNull(router);
             assertEquals(Status.Down, router.getStatus());
             }
             assertNotNull(router);
             assertEquals(Status.Down, router.getStatus());
-            assertTrue(router.getPeer().isEmpty());
+            assertNull(router.getPeer());
             return router;
         });
 
             return router;
         });
 
@@ -303,7 +297,7 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
         readDataOperational(getDataBroker(), MONITOR_IID, monitor -> {
             assertNotNull(monitor.getRouter());
             Router retRouter = null;
         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;
                 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());
             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;
         });
             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 -> {
                 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());
             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());
             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());
             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(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());
             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(),
             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(),
             assertEquals(tlvs.getPerAfiSafiLocRibTlv().getCount().toString(),
-                    peerStats.getPerAfiSafiLocRibRoutes().getAfiSafi().get(0).getCount().toString());
+                    peerStats.getPerAfiSafiLocRibRoutes().getAfiSafi().values().iterator().next().getCount()
+                    .toString());
             return peerStats;
         });
 
             return peerStats;
         });
 
@@ -402,8 +398,8 @@ public class BmpMonitorImplTest extends AbstractConcurrentDataBrokerTest {
                 AdjRibInType.PrePolicy)));
 
         readDataOperational(getDataBroker(), peerIId.child(PrePolicyRib.class), prePolicyRib -> {
                 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;
             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 -> {
                 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)
             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(),
     @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"),
 
         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 132b63f48271861a6c46c7c1cb23687a45f5838b..a86a03785abc782f5f1eb8cf874487ed87764e5b 100644 (file)
@@ -47,7 +47,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</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.opendaylight.yangtools</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 550ce5c24ff5900cdde305cf0eaaf18889afbc1c..0a063e8e821da6575d5125d47afbeaf3478e72d7 100644 (file)
@@ -62,7 +62,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
         </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>
         </dependency>
         <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>yang-test-util</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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.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;
 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 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;
     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;
 
     @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());
         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.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.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 {
 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;
     private WatchEvent<?> watchEvent;
     @Mock
     private FileWatcher fileWatcher;
-    protected BindingToNormalizedNodeCodec mappingService;
-    protected BindingCodecTreeFactory bindingCodecTreeFactory;
+    protected AdapterContext mappingService;
     protected DOMSchemaService schemaService;
 
     public AbstractConfigLoader() {
     protected DOMSchemaService schemaService;
 
     public AbstractConfigLoader() {
@@ -65,15 +63,15 @@ public abstract class AbstractConfigLoader extends AbstractConcurrentDataBrokerT
             clearEvent();
             return null;
         }).when(this.processor).loadConfiguration(any());
             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.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;
     }
         this.schemaService = customizer.getSchemaService();
         return customizer;
     }
index 6afd7c2c4da852312e9ca059bbe4d06ce88a478e..007fc49d18287ebe5f067c92197b1883e921b1af 100644 (file)
@@ -26,7 +26,7 @@
     <dependencies>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
     <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>
         </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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 32801d861db6ba1add984f56589507f21a67258b..85e9c053721a3debf11f6392502f56c7a0aa4f96 100644 (file)
@@ -51,7 +51,7 @@
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</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.opendaylight.yangtools</groupId>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <artifactId>guava</artifactId>
         </dependency>
         <!--Test dependencies-->
             <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>
         <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>
         </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>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.yangtools</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
         </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>
         </dependency>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <dependency>
             <groupId>org.opendaylight.mdsal</groupId>
             <artifactId>mdsal-binding-dom-adapter</artifactId>
index 61c4da58d0813b6563cf9ac29b3251afa249f02b..f57d1ef901042dc9cf21e0ff5ae7d381660981b6 100644 (file)
         </dependency>
 
         <!-- test dependencies -->
         </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>
         <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>
   <parent>
     <groupId>org.opendaylight.odlparent</groupId>
     <artifactId>karaf4-parent</artifactId>
-    <version>6.0.4</version>
+    <version>7.0.1</version>
     <relativePath/>
   </parent>
 
     <relativePath/>
   </parent>
 
       <scope>runtime</scope>
     </dependency>
     <dependency>
       <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>
       <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>feature-repo-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 7ad3bc47fdf97511af6af5014bf164418caa4efd..99b044b8278d1ba7b06c953f26610c166a1c8991 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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}">
   -->
 <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>
     </feature>
 </features>
index 470c504479b44abf0aa00336b6f379bcb328fa3a..a37980e8dd4f1c3d0772b0acb4214ef4d612e0fc 100644 (file)
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
             <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>
     </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}">
           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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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}">
   -->
 <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>
     </feature>
 </features>
index 17d606a766ecd08ba7621011ca30bc391707cbf5..75ae2fefd7d6d3777f143d5e61a3e882e2339dfe 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 6901666a39a4c159d3a4648f88a4ea7e0253b087..8fb307d4699b72e953b22d319efd1659b876663a 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 092044847c7c3654ab65829a03c8b099b79bfb2c..d7faefc796fae4f1404533db54816b2470773213 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 3c3e8cdcc5492669778cd9503724092ec25874d5..b06e93661c17bb18fe675bed9a9a5f99c3ce3ce9 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index e12863fe03cef7446f1668bf2159e5f2440d4f9c..f532ecaac12f94690399ad38e579fee909b7185e 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index c37b28395fb984b2a8ce41b79eb73372c0eb3303..4fcdb148336dbd6c56ebb1d975eae872212565f7 100644 (file)
 
     <dependencies>
         <dependency>
 
     <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>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
@@ -32,5 +34,9 @@
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>pcep-impl</artifactId>
+        </dependency>
     </dependencies>
 </project>
     </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}">
   -->
 <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>
     </feature>
 </features>
index 907a0b3e74a559893b7bdf21087f6256e9fa322a..db46fa7b439407a29269ba72deab9b19b313c0ad 100644 (file)
             <type>xml</type>
             <classifier>features</classifier>
         </dependency>
             <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>
     </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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index a1faa69cad3189027af34acdfd4bbda2305a3cb3..bded183181b543264dd6861ac5342b475662d048 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 8daf1c5be6504003bcd4951b6af3c43ccc395156..d02b6a19e3cd4623c1b813057620e5d08301e4e5 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 21b682bdd9eec9753c2006b7b26a00c539303206..1f881cc70654d807491e1c2958c6f113bfb3beb3 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index f163c34065fb3a57a425808a063d05de64bfa8ce..aafd2296f1348edf43e886a1071ec103148216f0 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.graph;
 
 import java.util.List;
 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;
 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
      */
      * @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.
 
     /**
      * 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
      */
      * @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.
 
     /**
      * 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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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
  */
  * 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;
 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
  */
  * @author Olivier Dugeon
  * @author Philippe Niger
  */
-
-
 public class ConnectedGraphImpl implements ConnectedGraph {
 public class ConnectedGraphImpl implements ConnectedGraph {
-
     private static final Logger LOG = LoggerFactory.getLogger(ConnectedGraphImpl.class);
 
     /* List of Connected Vertics that composed this Connected Graph */
     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;
 
     /* 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;
         this.graph = newGraph;
         createConnectedGraph();
         this.connectedGraphServer = server;
@@ -73,28 +69,22 @@ public class ConnectedGraphImpl implements ConnectedGraph {
             return;
         }
         /* Add all vertices */
             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 */
         }
         /* 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 */
         }
         /* 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
      */
      * @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) {
         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
      */
      * @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) {
         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
      */
      * @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);
         if (edge != null) {
             edge.setSource(srcVertex);
             edge.setDestination(dstVertex);
@@ -157,16 +148,16 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<ConnectedVertex> getVertices() {
 
     @Override
     public List<ConnectedVertex> getVertices() {
-        return new ArrayList<ConnectedVertex>(this.vertices.values());
+        return new ArrayList<>(this.vertices.values());
     }
 
     @Override
     }
 
     @Override
-    public ConnectedVertex getConnectedVertex(@NonNull Long key) {
+    public ConnectedVertex getConnectedVertex(final Long key) {
         return vertices.get(key);
     }
 
     @Override
         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"));
         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() {
 
     @Override
     public List<ConnectedEdge> getEdges() {
-        return new ArrayList<ConnectedEdge>(this.edges.values());
+        return new ArrayList<>(this.edges.values());
     }
 
     @Override
     }
 
     @Override
-    public ConnectedEdge getConnectedEdge(@NonNull Long key) {
+    public ConnectedEdge getConnectedEdge(final Long key) {
         return edges.get(key);
     }
 
     @Override
         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;
         for (ConnectedEdge cedge : edges.values()) {
             if (cedge.getEdge() == null) {
                 continue;
@@ -217,16 +208,16 @@ public class ConnectedGraphImpl implements ConnectedGraph {
 
     @Override
     public List<Prefix> getPrefixes() {
 
     @Override
     public List<Prefix> getPrefixes() {
-        return new ArrayList<Prefix>(this.prefixes.values());
+        return new ArrayList<>(this.prefixes.values());
     }
 
     @Override
     }
 
     @Override
-    public Prefix getPrefix(IpPrefix prefix) {
+    public Prefix getPrefix(final IpPrefix prefix) {
         return this.prefixes.get(prefix);
     }
 
     @Override
         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();
         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
     }
 
     @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) {
         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
     }
 
     @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();
         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
     }
 
     @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) {
         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
     }
 
     @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);
         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
     }
 
     @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) {
         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 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;
 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,
         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,
         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
         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.
      */
     /**
      *  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);
     }
 
         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());
     }
 
         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());
     }
 
         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());
     }
 
         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
      */
      *
      * @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() + ")");
     }
         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
      */
      * @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;
         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
      */
      * @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() + ")");
         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
      */
      * @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;
         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
      */
      * @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() + ")");
         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
      */
      * @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() + ")");
         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
      */
      * @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() + ")");
         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() {
 
     @Override
     public ArrayList<ConnectedGraph> getConnectedGraphs() {
-        return new ArrayList<ConnectedGraph>(this.graphs.values());
+        return new ArrayList<>(this.graphs.values());
     }
 
     @Override
     }
 
     @Override
-    public ConnectedGraph getConnectedGraph(GraphKey key) {
+    public ConnectedGraph getConnectedGraph(final GraphKey key) {
         return graphs.get(key);
     }
 
     @Override
         return graphs.get(key);
     }
 
     @Override
-    public ConnectedGraph getConnectedGraph(String name) {
+    public ConnectedGraph getConnectedGraph(final String name) {
         return graphs.get(new GraphKey(name));
     }
 
     @Override
         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 {
         if (graphs.containsKey(key)) {
             return graphs.get(key).getGraph();
         } else {
@@ -407,18 +406,15 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     }
 
     @Override
     }
 
     @Override
-    public Graph getGraph(String name) {
+    public Graph getGraph(final String name) {
         return getGraph(new GraphKey(name));
     }
 
     @Override
         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)
         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);
                 .build();
         addToDataStore(getGraphInstanceIdentifier(name), graph, "Graph(" + name + ")");
         ConnectedGraphImpl cgraph = new ConnectedGraphImpl(graph, this);
@@ -427,7 +423,7 @@ public class ConnectedGraphServer implements ConnectedGraphProvider, Transaction
     }
 
     @Override
     }
 
     @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);
         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
     }
 
     @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);
         /*
         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 368f8fc348149b40d028dc2e775b5888922eca5c..8a2f6117b00279bcc38ca597c51412cd713495e2 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>bundle-parent</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>bundle-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
@@ -42,8 +42,8 @@
             <!-- ODL-CONTROLLER-ARTIFACTS -->
             <dependency>
                 <groupId>org.opendaylight.controller</groupId>
             <!-- 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>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -51,7 +51,7 @@
             <dependency>
                 <groupId>org.opendaylight.yangtools</groupId>
                 <artifactId>yangtools-artifacts</artifactId>
             <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>
                 <scope>import</scope>
                 <type>pom</type>
             </dependency>
@@ -59,7 +59,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
             <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>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index fcbe0fb24e13dbbfd3225dbb4695a0ca02784f84..a4df876dae1ef3b1ae6f5f7e36e33822b5e0a312 100644 (file)
@@ -84,8 +84,8 @@
 
         <!--test dependencies -->
         <dependency>
 
         <!--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>
             <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);
                     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)
                         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index a72396ec663ce017015bec782ed13512ede5a368..7519838a3bcfd5be219843a0c18b94ede7013c84 100644 (file)
@@ -154,7 +154,7 @@ public class PCEPDispatcherImplTest {
     }
 
     @Test(timeout = 20000)
     }
 
     @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);
 
         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;
         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);
 
         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 6c2856711c0b23d9b7c37ec1b2071577b9659cc2..8c12aa1cdb020424953c7900f88cf7a7438a998c 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 01d9a3ebb7c29bfe628fa9fd591861ed85b03b45..6bff7f5d29c42a11c9c17b1c9a3f626a7cb23527 100644 (file)
             <artifactId>testtool-util</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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 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;
 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) {
     @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);
         }
         if (tlv instanceof SrPceCapability) {
             tlvBuilder.setSrPceCapability((SrPceCapability) tlv);
         }
-        tbuilder.addAugmentation(Tlvs1.class, tlvBuilder.build());
+        tbuilder.addAugmentation(tlvBuilder.build());
     }
 
     @Override
     }
 
     @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 {
 import org.opendaylight.yangtools.yang.common.Uint8;
 
 public class PCEPSegmentRoutingCapabilityTest {
-
     private static final Tlvs EXPECTED_TLVS =
     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();
 
                 .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.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.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;
 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);
 
                 .setDeadTimer(Uint8.valueOf(120))
                 .setSessionId(Uint8.ONE);
 
-        final Tlvs1 tlv = new Tlvs1Builder().setSrPceCapability(new SrPceCapabilityBuilder().setMsd(Uint8.ONE).build())
-                .build();
         builder.setTlvs(new TlvsBuilder()
         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(),
 
         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 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;
 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.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;
 
 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
         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());
             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("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());
             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
         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;
             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
         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());
             assertNotNull(reportedLsps);
             assertEquals(2, reportedLsps.size());
-            for (final ReportedLsp rlsp : reportedLsps) {
+            for (final ReportedLsp rlsp : reportedLsps.values()) {
                 if (rlsp.getName().equals("sr-path1")) {
                 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());
                     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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 8f38df6122e2caa76bf23d1505794cb2da7f31a0..dbcd595135ab5c0f05102311efb44be26613666f 100644 (file)
             <artifactId>mdsal-binding-dom-adapter</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
     </dependencies>
 
     <build>
index aac846fc704ffc975d0dd752bb8ec892949ba0ec..825b849cc9d7488776a0a0a57bb4d5cbb627c9bd 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 5bf56237fa5873affc8b1436b34c08bb4d956383..0dd9972c0ca5ca8d79f9291b41ec46efe99eafc8 100644 (file)
             <type>test-jar</type>
             <scope>test</scope>
         </dependency>
             <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>
         <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 static java.util.Objects.requireNonNull;
 
-import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 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;
 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
     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 =
         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
         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
             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);
             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
                 //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
                     // 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);
                 }
             }
                     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)
         // 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
         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
                 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);
             }
         }
                 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
         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)
             .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 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.
 
     /**
      * 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
                 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());
                 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
             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.");
         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()) {
 
     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)) {
             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 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 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) {
                 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()) {
             // 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());
                 }
                 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());
 
             /* 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();
 
                 /* 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;
         }
         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)
                 .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;
         }
         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)
                 .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
  */
  * 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;
 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;
 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(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);
         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.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.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.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;
 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 -> {
         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;
         });
 
             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
             //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;
         });
 
             return pcc;
         });
 
@@ -90,7 +87,7 @@ public class IncrementalSynchronizationProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.IncrementalSync, pcc.getStateSync());
             //check reported LSP is not empty
             //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;
         });
 
             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
             //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;
         });
 
             return pcc;
         });
 
@@ -111,21 +108,26 @@ public class IncrementalSynchronizationProcedureTest
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
         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 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) {
     }
 
     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 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;
 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.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;
 
 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());
 
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
             return pcc;
         });
 
@@ -98,7 +97,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
 
         this.listener.onMessage(this.session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
 
         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;
             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());
         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;
         });
 
             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());
         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 -> {
             return pcc;
         });
 
         this.listener.onMessage(this.session, pcRpt);
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
             return pcc;
         });
 
@@ -156,7 +154,7 @@ public class PCEPTriggeredReSynchronizationProcedureTest
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
             //check reported LSP
             //check node - synchronized
             assertEquals(PccSyncState.Synchronized, pcc.getStateSync());
             //check reported LSP
-            assertEquals(1, pcc.getReportedLsp().size());
+            assertEquals(1, pcc.nonnullReportedLsp().size());
             return pcc;
         });
 
             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.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;
 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
             //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;
         });
 
             return pcc;
         });
 
@@ -94,7 +94,7 @@ public class PCETriggeredInitialSyncProcedureTest
         this.listener.onMessage(session, pcRpt);
 
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
         this.listener.onMessage(session, pcRpt);
 
         readDataOperational(getDataBroker(), this.pathComputationClientIId, pcc -> {
-            assertFalse(pcc.getReportedLsp().isEmpty());
+            assertFalse(pcc.nonnullReportedLsp().isEmpty());
             return pcc;
         });
 
             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 -> {
                 .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;
         });
 
             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
             //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;
         });
 
             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
         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 -> {
             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(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;
             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)));
                 .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))
                 .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());
         //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());
             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());
             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>
             <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>
     </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.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.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.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;
 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
     }
 
     @Override
-    @SuppressWarnings("checkstyle:LineLength")
     public ListenableFuture<RpcResult<GetStatsOutput>> getStats(final GetStatsInput input) {
     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) {
         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();
         }
 
                     .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 -> {
         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();
                         .get().getNode();
+                iNodes = nodes != null ? nodes.values() : null;
             } else {
                 iNodes = null;
             }
 
             final List<NodeId> iNodeIds;
             if (iNodes != 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);
             }
 
                         .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();
             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());
                 }
                     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 =
         });
 
         final RpcResult<GetStatsOutput> res =
@@ -184,13 +185,15 @@ public class TopologyStatsRpcServiceImpl
         if (topoMessage != null) {
             final StatefulMessagesStatsAug messageStatsAug = topoMessage.augmentation(StatefulMessagesStatsAug.class);
             if (messageStatsAug != null) {
         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 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)
                 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) {
         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.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.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.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.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;
 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.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;
 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) {
     }
 
     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();
     }
 
                 .build();
     }
 
@@ -139,11 +136,14 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .setReceivedMsgCount(Uint32.valueOf(4))
                 .setReplyTime(replyTime)
                 .setErrorMessages(errorMsg)
                 .setReceivedMsgCount(Uint32.valueOf(4))
                 .setReplyTime(replyTime)
                 .setErrorMessages(errorMsg)
-                .addAugmentation(StatefulMessagesStatsAug.class, statefulMsg).build();
+                .addAugmentation(statefulMsg).build();
 
         final PeerCapabilities capabilities = new PeerCapabilitiesBuilder()
 
         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()
                 .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)
                 .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();
                     .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)
                 .setReceivedMsgCount(Uint32.valueOf(4))
                 .setReplyTime(replyTime)
                 .setErrorMessages(errorMsg)
-                .addAugmentation(StatefulMessagesRpcAug.class, statefulMsg).build();
+                .addAugmentation(statefulMsg).build();
 
         final PeerCapabilities capabilities = new PeerCapabilitiesBuilder()
 
         final PeerCapabilities capabilities = new PeerCapabilitiesBuilder()
-                .addAugmentation(StatefulCapabilitiesRpcAug.class, new StatefulCapabilitiesRpcAugBuilder()
+                .addAugmentation(new StatefulCapabilitiesRpcAugBuilder()
                         .setStateful(true).setInstantiation(true).setActive(true).build())
                 .build();
 
                         .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)
                 .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();
                     .setSpeakerEntityIdValue(new byte[] {0x01, 0x02, 0x03, 0x04})
                     .build())
                 .build();
@@ -253,16 +253,13 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
     }
 
     @Test
     }
 
     @Test
-    @SuppressWarnings("checkstyle:LineLength")
     public void testGetStatsAllMatch() throws Exception {
         GetStatsInput in;
 
     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
         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
         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();
         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());
     }
         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());
         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());
     }
 
         assertTrue(result.isSuccessful());
         assertTrue(result.getErrors().isEmpty());
     }
 
-    @SuppressWarnings("checkstyle:LineLength")
     private static GetStatsInput createGetStatsInput(final String topologyId, final List<String> nodeIds) {
     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) {
         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;
         }
                 .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) {
         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;
         }
         } else {
             topology = null;
         }
@@ -323,23 +326,29 @@ public class TopologyStatsRpcServiceImplTest extends AbstractConcurrentDataBroke
                 .build();
     }
 
                 .build();
     }
 
-    @SuppressWarnings("checkstyle:LineLength")
     private static GetStatsOutput createGetStatsOutput(final String topologyId, final List<String> nodeIds,
             final PcepSessionState state) {
     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) {
         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;
         }
                 .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) {
         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;
         }
         } else {
             topology = null;
         }
index b35e94e9a184903be4e87e073d3bebcc18ffe9a6..eeef10d04569f6a73dfe9fdb4727a2acbbfbe5c3 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 5e9d04a66bac1862e111789b7db09b48e49a8b44..d72aa482ed553b709043d61855122968ac5adf62 100644 (file)
             <artifactId>pcep-impl</artifactId>
             <type>test-jar</type>
         </dependency>
             <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>
         <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.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;
 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) {
         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();
                     .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());
             }
             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());
             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 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;
 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.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.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;
 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;
         }
 
             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());
         }
             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) {
     }
 
     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,
     }
 
     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.
              */
              * 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) {
                 }
             }
             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();
             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());
         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();
 
         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 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();
 
 
         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());
         }
 
             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());
         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());
                 .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());
     }
 
         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;
         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();
             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;
     }
     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.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;
 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()
         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());
                                         .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.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;
 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.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;
 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
     }
 
         // 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();
 
         final EroBuilder b = new EroBuilder();
 
-        if (!explicitHops.isEmpty()) {
+        if (explicitHops != null && !explicitHops.isEmpty()) {
             final List<Subobject> subobjs = new ArrayList<>(explicitHops.size());
             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) {
 
                 final ExplicitHops1 h1 = h.augmentation(ExplicitHops1.class);
                 if (h1 != null) {
@@ -82,7 +84,7 @@ final class TunelProgrammingUtil {
     }
 
     public static NodeId supportingNode(final Node node) {
     }
 
     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();
             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.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;
 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) {
         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());
                     .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 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 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;
 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.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;
 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.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;
 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;
 
         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 {
         } else {
-            src = tunnelTopo.getNode().get(1);
-            dst = tunnelTopo.getNode().get(0);
+            src = it.next();
+            dst = tmp;
         }
 
         Assert.assertEquals(srcId, src.getNodeId());
         }
 
         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());
 
         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());
         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());
 
         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(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());
         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;
             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 {
             } else {
-                updatedNode = updatedNodeTopo.getNode().get(0);
+                updatedNode = updatedNodeTopo.nonnullNode().values().iterator().next();
             }
 
             assertNotNull(updatedNode.getSupportingNode());
             }
 
             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;
             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 -> {
         });
 
         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());
             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.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))
                 .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());
                 .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());
         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.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.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;
 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.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.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.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;
 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.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.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;
 
 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));
         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))))
                 .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")))
         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();
     }
 
                         .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
     }
 
     @Before
@@ -246,7 +243,7 @@ public class TunnelProgrammingTest extends AbstractConcurrentDataBrokerTest {
         createInputBuilder.setClassType(classType);
         createInputBuilder.setSymbolicPathName(tunnelName);
         createInputBuilder.setExplicitHops(Collections.emptyList());
         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
                 .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.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.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
                 .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));
                 .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());
         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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 9e0933a1a6ff4ee7e4c2c12452ca307ac3157d70..4e50bd5aca75b204df26351bae69080bb149eedc 100644 (file)
             <artifactId>yang-parser-api</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index caa49c0d47f4f92ccf466672f995f3188bfc50f2..2e457fa93c35d3644cb44fd153ffe06049e388be 100644 (file)
@@ -14,7 +14,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 39fea5e370f50c4f942bb09e0a59585aa4856ab2..15241c8eeed7c54b71ad90f2692a46297104a144 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index c86d8ea0cf1c0971fd1ab3a92766696c9d266324..ad51caf62223430d3be5f07dce6d4561b4c07d4a 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <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
  */
  * 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;
 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;
 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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>single-feature-parent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 8691bac6413a743666d16c3503d10c892cf3568a..4a6e0f091c7535bee0d2945653afd1bc59df3b16 100644 (file)
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index ae15a533cd31659fb51b907d254abd76425f5f48..dc76e7ea8319ebf59f95baca73445cd3ad1f4e32 100644 (file)
             <artifactId>netty-transport</artifactId>
             <scope>test</scope>
         </dependency>
             <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>
         <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>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>
 
index 397ba0f987acbcd6637f0acc56c4f1363965ae7d..b66ad20509bc39220eeec66dbc84e36a8a820aba 100644 (file)
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
     <parent>
         <groupId>org.opendaylight.odlparent</groupId>
         <artifactId>odlparent-lite</artifactId>
-        <version>6.0.4</version>
+        <version>7.0.1</version>
         <relativePath/>
     </parent>
 
         <relativePath/>
     </parent>