2 * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.protocol.bgp.parser.spi.pojo;
10 import com.google.common.annotations.VisibleForTesting;
11 import java.util.Arrays;
12 import java.util.List;
13 import java.util.ServiceLoader;
14 import javax.inject.Inject;
15 import javax.inject.Singleton;
16 import org.eclipse.jdt.annotation.NonNull;
17 import org.kohsuke.MetaInfServices;
18 import org.opendaylight.protocol.bgp.parser.spi.AddressFamilyRegistry;
19 import org.opendaylight.protocol.bgp.parser.spi.AttributeRegistry;
20 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionConsumerContext;
21 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderActivator;
22 import org.opendaylight.protocol.bgp.parser.spi.BGPExtensionProviderContext;
23 import org.opendaylight.protocol.bgp.parser.spi.BgpPrefixSidTlvRegistry;
24 import org.opendaylight.protocol.bgp.parser.spi.CapabilityRegistry;
25 import org.opendaylight.protocol.bgp.parser.spi.MessageRegistry;
26 import org.opendaylight.protocol.bgp.parser.spi.NlriRegistry;
27 import org.opendaylight.protocol.bgp.parser.spi.ParameterRegistry;
28 import org.opendaylight.protocol.bgp.parser.spi.SubsequentAddressFamilyRegistry;
29 import org.opendaylight.protocol.bgp.parser.spi.extended.community.ExtendedCommunityRegistry;
30 import org.osgi.service.component.annotations.Activate;
31 import org.osgi.service.component.annotations.Component;
32 import org.osgi.service.component.annotations.Reference;
33 import org.osgi.service.component.annotations.ReferencePolicyOption;
36 * Starts and stops {@link BGPExtensionProviderActivator} instances for an {@link BGPExtensionProviderContext}.
39 @Component(immediate = true, service = BGPExtensionConsumerContext.class)
41 public final class DefaultBGPExtensionConsumerContext implements BGPExtensionConsumerContext {
42 private final @NonNull SimpleBGPExtensionProviderContext delegate = new SimpleBGPExtensionProviderContext();
44 public DefaultBGPExtensionConsumerContext() {
45 this(ServiceLoader.load(BGPExtensionProviderActivator.class));
49 public DefaultBGPExtensionConsumerContext(final BGPExtensionProviderActivator... extensionActivators) {
50 this(Arrays.asList(extensionActivators));
54 public DefaultBGPExtensionConsumerContext(final Iterable<BGPExtensionProviderActivator> extensionActivators) {
55 extensionActivators.forEach(activator -> activator.start(delegate));
59 public DefaultBGPExtensionConsumerContext(final @Reference(policyOption = ReferencePolicyOption.GREEDY)
60 List<BGPExtensionProviderActivator> extensionActivators) {
61 extensionActivators.forEach(activator -> activator.start(delegate));
65 public AddressFamilyRegistry getAddressFamilyRegistry() {
66 return delegate.getAddressFamilyRegistry();
70 public AttributeRegistry getAttributeRegistry() {
71 return delegate.getAttributeRegistry();
75 public CapabilityRegistry getCapabilityRegistry() {
76 return delegate.getCapabilityRegistry();
80 public MessageRegistry getMessageRegistry() {
81 return delegate.getMessageRegistry();
85 public NlriRegistry getNlriRegistry() {
86 return delegate.getNlriRegistry();
90 public ParameterRegistry getParameterRegistry() {
91 return delegate.getParameterRegistry();
95 public SubsequentAddressFamilyRegistry getSubsequentAddressFamilyRegistry() {
96 return delegate.getSubsequentAddressFamilyRegistry();
100 public ExtendedCommunityRegistry getExtendedCommunityRegistry() {
101 return delegate.getExtendedCommunityRegistry();
105 public BgpPrefixSidTlvRegistry getBgpPrefixSidTlvRegistry() {
106 return delegate.getBgpPrefixSidTlvRegistry();