BUG-1287: migrate bgp-rib
[bgpcep.git] / bgp / linkstate / src / main / java / org / opendaylight / protocol / bgp / linkstate / RIBActivator.java
index 7e034590660efcc9834539fb30397deef4339e9d..c2750c828bc6ac65361907d4d02a9d1705c19329 100644 (file)
@@ -7,47 +7,32 @@
  */
 package org.opendaylight.protocol.bgp.linkstate;
 
-import java.util.Comparator;
+import com.google.common.collect.Lists;
 
+import java.util.List;
+
+import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
+import org.opendaylight.protocol.bgp.rib.RibReference;
+import org.opendaylight.protocol.bgp.rib.spi.AbstractRIBExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsIn;
 import org.opendaylight.protocol.bgp.rib.spi.AdjRIBsInFactory;
-import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderActivator;
 import org.opendaylight.protocol.bgp.rib.spi.RIBExtensionProviderContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateAddressFamily;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.linkstate.rev131125.LinkstateSubsequentAddressFamily;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.message.rev130919.PathAttributes;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.rib.TablesKey;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-
-public final class RIBActivator implements RIBExtensionProviderActivator {
-       private static final Logger LOG = LoggerFactory.getLogger(RIBActivator.class);
-       private AutoCloseable reg;
 
-       @Override
-       public void startRIBExtensionProvider(final RIBExtensionProviderContext context) {
-               Preconditions.checkState(reg == null);
-
-               reg = context.registerAdjRIBsInFactory(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class, new AdjRIBsInFactory() {
-                       @Override
-                       public AdjRIBsIn createAdjRIBsIn(final Comparator<PathAttributes> comparator, final TablesKey key) {
-                               return new LinkstateAdjRIBsIn(comparator, key);
-                       }
-               });
-       }
-
-       @Override
-       public void stopRIBExtensionProvider() {
-               if (reg != null) {
-                       try {
-                               reg.close();
-                       } catch (Exception e) {
-                               LOG.warn("Failed to unregister Linkstate extension", e);
-                       } finally {
-                               reg = null;
-                       }
-               }
-       }
+/**
+ * Activator for registering Linkstate AFI/SAFI to RIB.
+ */
+public final class RIBActivator extends AbstractRIBExtensionProviderActivator {
+    @Override
+    protected List<AutoCloseable> startRIBExtensionProviderImpl(final RIBExtensionProviderContext context) {
+        return Lists.newArrayList(context.registerAdjRIBsInFactory(LinkstateAddressFamily.class, LinkstateSubsequentAddressFamily.class,
+                new AdjRIBsInFactory() {
+                    @Override
+                    public AdjRIBsIn createAdjRIBsIn(final WriteTransaction trans, final RibReference rib, final TablesKey key) {
+                        return new LinkstateAdjRIBsIn(trans, rib, key);
+                    }
+                }));
+    }
 }