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;
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;
}
}