*/
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);
+ }
+ }));
+ }
}