*/
package org.opendaylight.protocol.bgp.mvpn.impl;
-import static com.google.common.base.Verify.verify;
-
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
-import java.util.Map;
-import java.util.Optional;
import java.util.stream.Collectors;
import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
import org.opendaylight.protocol.bgp.mvpn.impl.nlri.Ipv4NlriHandler;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.bgp.rib.rib.loc.rib.tables.routes.MvpnRoutesIpv4Case;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn.destination.MvpnDestinationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn.routes.ipv4.MvpnRoutesIpv4;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn.routes.ipv4.MvpnRoutesIpv4Builder;
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.DestinationMvpnIpv4AdvertizedCaseBuilder;
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.DestinationMvpn;
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.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
import org.opendaylight.yangtools.yang.data.api.schema.DataContainerNode;
import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListEntryNode;
* @author Claudio D. Gasparini
*/
final class MvpnIpv4RIBSupport extends AbstractMvpnRIBSupport<MvpnRoutesIpv4Case, MvpnRoutesIpv4> {
- private static final MvpnRoutesIpv4 EMPTY_CONTAINER = new MvpnRoutesIpv4Builder().build();
- private static MvpnIpv4RIBSupport SINGLETON;
-
- private MvpnIpv4RIBSupport(final BindingNormalizedNodeSerializer mappingService) {
+ MvpnIpv4RIBSupport(final BindingNormalizedNodeSerializer mappingService) {
super(mappingService,
- MvpnRoutesIpv4Case.class,
- MvpnRoutesIpv4.class,
- Ipv4AddressFamily.class,
- DestinationMvpn.QNAME,
- MvpnDestination.QNAME);
- }
-
- static synchronized MvpnIpv4RIBSupport getInstance(final BindingNormalizedNodeSerializer mappingService) {
- if (SINGLETON == null) {
- SINGLETON = new MvpnIpv4RIBSupport(mappingService);
- }
- return SINGLETON;
+ MvpnRoutesIpv4Case.class, MvpnRoutesIpv4Case.QNAME,
+ MvpnRoutesIpv4.class, MvpnRoutesIpv4.QNAME,
+ Ipv4AddressFamily.VALUE, Ipv4AddressFamily.QNAME,
+ DestinationMvpn.QNAME,
+ MvpnDestination.QNAME);
}
private List<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn
}
private org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn
- .destination.MvpnDestination extractDestinations(final DataContainerNode<? extends PathArgument> mvpnDest) {
+ .destination.MvpnDestination extractDestinations(final DataContainerNode mvpnDest) {
return new MvpnDestinationBuilder()
.setMvpnChoice(extractMvpnChoice(mvpnDest))
.setPathId(PathIdUtil.buildPathId(mvpnDest, routePathIdNid()))
._case.DestinationMvpnBuilder().setMvpnDestination(extractRoutes(routes)).build()).build();
}
- @Override
- public MvpnRoutesIpv4 emptyRoutesContainer() {
- return EMPTY_CONTAINER;
- }
-
@Override
public NodeIdentifierWithPredicates createRouteKey(final UnkeyedListEntryNode mvpn) {
final ByteBuf buffer = Unpooled.buffer();
final org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.mvpn.ipv4.rev180417.mvpn.destination
.MvpnDestination dest = extractDestinations(mvpn);
- Ipv4NlriHandler.serializeNlri(Collections.singletonList(dest), buffer);
- final Optional<DataContainerChild<? extends PathArgument, ?>> maybePathIdLeaf =
- mvpn.getChild(routePathIdNid());
+ Ipv4NlriHandler.serializeNlri(List.of(dest), buffer);
return PathIdUtil.createNidKey(routeQName(), routeKeyTemplate(),
- ByteArray.encodeBase64(buffer), maybePathIdLeaf);
- }
-
- @Override
- 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
- .bgp.rib.rib.peer.adj.rib.in.tables.routes.MvpnRoutesIpv4Case) routes).getMvpnRoutesIpv4()
- .nonnullMvpnRoute();
+ ByteArray.encodeBase64(buffer), mvpn.findChildByArg(routePathIdNid()));
}
}