BUG-2383: Added wiring of Attributes codecs to RibSupportContext
[bgpcep.git] / bgp / rib-impl / src / main / java / org / opendaylight / protocol / bgp / rib / impl / IPv4RIBSupport.java
index 9dcf714e3b94e585d77495a0ca8ec6e71f17e90b..e74e2de7c21fe31e2a235e3e0b9d29978aa52234 100644 (file)
@@ -7,33 +7,36 @@
  */
 package org.opendaylight.protocol.bgp.rib.impl;
 
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.multiprotocol.rev130919.destination.destination.type.DestinationIpv4Case;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.bgp.rib.rib.loc.rib.tables.routes.Ipv4RoutesCase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.prefixes.DestinationIpv4;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.prefixes.destination.ipv4.Ipv4Prefixes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.Ipv4Routes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.inet.rev150305.ipv4.routes.ipv4.routes.Ipv4Route;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.Routes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.routes.ipv4.routes._case.Ipv4Routes;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.tables.routes.ipv4.routes._case.ipv4.routes.Ipv4Route;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.route.Attributes;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
 import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 
+/**
+ * Class supporting IPv4 unicast RIBs.
+ */
 final class IPv4RIBSupport extends AbstractIPRIBSupport {
+    private final static QName PREFIX_QNAME = QName.cachedReference(QName.create(Ipv4Route.QNAME, "prefix"));
     private static final IPv4RIBSupport SINGLETON = new IPv4RIBSupport();
     private final ChoiceNode emptyRoutes = Builders.choiceBuilder()
             .withNodeIdentifier(new NodeIdentifier(Routes.QNAME))
             .addChild(Builders.containerBuilder()
                 .withNodeIdentifier(new NodeIdentifier(Ipv4Routes.QNAME))
                 .withChild(ImmutableNodes.mapNodeBuilder(Ipv4Route.QNAME).build()).build()).build();
-    private final NodeIdentifier destination = new NodeIdentifier(DestinationIpv4Case.QNAME);
-    private final NodeIdentifier routes = new NodeIdentifier(Ipv4Routes.QNAME);
+    private final NodeIdentifier destination = new NodeIdentifier(DestinationIpv4.QNAME);
     private final NodeIdentifier route = new NodeIdentifier(Ipv4Route.QNAME);
-    private final NodeIdentifier attributes = new NodeIdentifier(QName.create(Ipv4Route.QNAME, Attributes.QNAME.getLocalName()));
-
-    private static final QName PREFIX_QNAME = QName.create(Ipv4Route.QNAME, "prefix");
+    private final NodeIdentifier nlriRoutesList = new NodeIdentifier(Ipv4Prefixes.QNAME);
+    private final NodeIdentifier routeKeyKeaf = new NodeIdentifier(PREFIX_QNAME);
 
     private IPv4RIBSupport() {
-
+        super(Ipv4RoutesCase.class, Ipv4Routes.class, Ipv4Route.class);
     }
 
     static IPv4RIBSupport getInstance() {
@@ -42,26 +45,36 @@ final class IPv4RIBSupport extends AbstractIPRIBSupport {
 
     @Override
     public ChoiceNode emptyRoutes() {
-        return emptyRoutes;
+        return this.emptyRoutes;
     }
 
     @Override
-    public NodeIdentifier routeAttributes() {
-        return attributes;
+    protected NodeIdentifier destinationContainerIdentifier() {
+        return this.destination;
     }
 
     @Override
-    protected NodeIdentifier destinationIdentifier() {
-        return destination;
+    protected NodeIdentifier routeIdentifier() {
+        return this.route;
     }
 
     @Override
-    protected NodeIdentifier routeIdentifier() {
-        return route;
+    protected NodeIdentifier routeKeyLeafIdentifier() {
+        return routeKeyKeaf;
+    }
+
+    @Override
+    protected NodeIdentifier nlriRoutesListIdentifier() {
+        return this.nlriRoutesList;
+    }
+
+    @Override
+    protected QName keyLeafQName() {
+        return PREFIX_QNAME;
     }
 
     @Override
-    protected NodeIdentifier routesIdentifier() {
-        return routes;
+    protected QName routeQName() {
+        return Ipv4Route.QNAME;
     }
 }