Convert bgp-route-target to OSGi DS
[bgpcep.git] / bgp / extensions / route-target / src / main / java / org / opendaylight / protocol / bgp / route / targetcontrain / impl / activators / BGPActivator.java
index dd5ee4cb3929d09fcd10fa150eb4ddec3d1d3d89..75291b40232c35029c1521a1586d6331aa9bc17c 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.protocol.bgp.route.targetcontrain.impl.activators;
 import com.google.common.annotations.VisibleForTesting;
 import java.util.ArrayList;
 import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
 import org.kohsuke.MetaInfServices;
 import org.opendaylight.protocol.bgp.inet.codec.nexthop.Ipv4NextHopParserSerializer;
 import org.opendaylight.protocol.bgp.parser.spi.AbstractBGPExtensionProviderActivator;
@@ -22,35 +24,39 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.type
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv4NextHopCase;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.next.hop.c.next.hop.Ipv6NextHopCase;
 import org.opendaylight.yangtools.concepts.Registration;
+import org.osgi.service.component.annotations.Component;
 
 /**
  * Registers NLRI, Attributes, Extended communities Handlers.
  *
  * @author Claudio D. Gasparini
  */
+@Singleton
+@Component(immediate = true, service = BGPExtensionProviderActivator.class,
+           property = "type=org.opendaylight.protocol.bgp.route.targetcontrain.impl.activators.BGPActivator")
 @MetaInfServices(value = BGPExtensionProviderActivator.class)
 public final class BGPActivator extends AbstractBGPExtensionProviderActivator {
     @VisibleForTesting
     static final int RT_SAFI = 132;
 
-    private static void registerNlri(final BGPExtensionProviderContext context, final List<Registration> regs) {
-        final RouteTargetConstrainNlriHandler routeTargetNlriHandler = new RouteTargetConstrainNlriHandler();
-        final Ipv4NextHopParserSerializer ipv4NextHopParser = new Ipv4NextHopParserSerializer();
-        regs.add(context.registerNlriParser(Ipv4AddressFamily.class, RouteTargetConstrainSubsequentAddressFamily.class,
-                routeTargetNlriHandler, ipv4NextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class));
-        regs.add(context.registerNlriSerializer(RouteTargetConstrainRoutes.class, routeTargetNlriHandler));
-    }
-
-    private static void registerAfiSafi(final BGPExtensionProviderContext context, final List<Registration> regs) {
-        regs.add(context.registerSubsequentAddressFamily(RouteTargetConstrainSubsequentAddressFamily.class, RT_SAFI));
+    @Inject
+    public BGPActivator() {
+        // Exposed for DI
     }
 
     @Override
     protected List<Registration> startImpl(final BGPExtensionProviderContext context) {
         final List<Registration> regs = new ArrayList<>();
         NlriActivator.registerNlriParsers(regs);
-        registerAfiSafi(context, regs);
-        registerNlri(context, regs);
+
+        regs.add(context.registerSubsequentAddressFamily(RouteTargetConstrainSubsequentAddressFamily.class, RT_SAFI));
+
+        final RouteTargetConstrainNlriHandler routeTargetNlriHandler = new RouteTargetConstrainNlriHandler();
+        final Ipv4NextHopParserSerializer ipv4NextHopParser = new Ipv4NextHopParserSerializer();
+        regs.add(context.registerNlriParser(Ipv4AddressFamily.class, RouteTargetConstrainSubsequentAddressFamily.class,
+                routeTargetNlriHandler, ipv4NextHopParser, Ipv4NextHopCase.class, Ipv6NextHopCase.class));
+        regs.add(context.registerNlriSerializer(RouteTargetConstrainRoutes.class, routeTargetNlriHandler));
+
         return regs;
     }
 }