*/
package org.opendaylight.controller.config.yang.bgp.rib.impl;
+import java.util.ArrayList;
+import java.util.List;
import java.util.concurrent.ExecutionException;
import org.opendaylight.controller.config.api.JmxAttributeValidationException;
import org.opendaylight.protocol.framework.ReconnectStrategyFactory;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev130925.RibId;
+import com.google.common.base.Preconditions;
+
/**
*
*/
@Override
public java.lang.AutoCloseable createInstance() {
- RibImplCloseable rib = new RibImplCloseable(getRibId(), getExtensionsDependency(), getDataProviderDependency());
- BGP bgp = getBgpDependency();
- final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString());
+ final RibImplCloseable rib = new RibImplCloseable(getRibId(), getExtensionsDependency(), getDataProviderDependency());
+ final List<ListenerRegistration<BGPSessionListener>> regs = new ArrayList<>();
+ for (final BGP bgp : getBgpDependency()) {
+ final BGPPeer peer = new BGPPeer(rib, "peer-" + bgp.toString());
- ListenerRegistration<BGPSessionListener> reg = bgp
- .registerUpdateListener(peer,
- new ReconnectStrategyFactory() {
- @Override
- public ReconnectStrategy createReconnectStrategy() {
- return getTcpReconnectStrategyDependency();
- }
- }, getSessionReconnectStrategyDependency());
- rib.setListenerRegistration(reg);
+ regs.add(Preconditions.checkNotNull(bgp
+ .registerUpdateListener(peer,
+ new ReconnectStrategyFactory() {
+ @Override
+ public ReconnectStrategy createReconnectStrategy() {
+ return getTcpReconnectStrategyDependency();
+ }
+ }, getSessionReconnectStrategyDependency())));
+ }
+ rib.setListenerRegistrations(regs);
return rib;
}
private static final class RibImplCloseable extends RIBImpl implements AutoCloseable {
- private ListenerRegistration<BGPSessionListener> reg;
+ private List<ListenerRegistration<BGPSessionListener>> regs;
private RibImplCloseable(final RibId ribId, final RIBExtensionConsumerContext extensions, final DataProviderService dps) {
super(ribId, extensions, dps);
try {
super.close();
} finally {
- reg.close();
+ for (ListenerRegistration<BGPSessionListener> r : regs) {
+ r.close();
+ }
}
}
- public void setListenerRegistration(final ListenerRegistration<BGPSessionListener> reg) {
- this.reg = reg;
+ public void setListenerRegistrations(final List<ListenerRegistration<BGPSessionListener>> regs) {
+ this.regs = Preconditions.checkNotNull(regs);
}
}
}
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceReference;
+import com.google.common.collect.Lists;
+
public class RIBImplModuleTest extends AbstractConfigTest {
private final String instanceName = "bgp-rib-impl";
ObjectName reconnectStrategyON = TimedReconnectStrategyModuleTest.createInstance(transaction, reconnectModueName, "tcp-reconnect-strategy", 100, 1000L, new BigDecimal(1.0), 5000L, 2000L, null, executorModuleName,
"global-event-executor2");
mxBean.setTcpReconnectStrategy(reconnectStrategyON);
- mxBean.setBgp(BGPImplModuleTest.createInstance(transaction, bgpModuleName, "bgp-impl1", "localhost", 1, sessionModuleName, dispatcherModuleName, threadgroupModuleName, ribExtensionsModuleName, extensionModuleName));
+ mxBean.setBgp(Lists.newArrayList(BGPImplModuleTest.createInstance(transaction, bgpModuleName, "bgp-impl1", "localhost", 1, sessionModuleName, dispatcherModuleName, threadgroupModuleName, ribExtensionsModuleName, extensionModuleName)));
mxBean.setExtensions(createRibExtensionsInstance(transaction, ribExtensionsModuleName, "rib-extensions-privider1"));
mxBean.setRibId(new RibId("test"));
return nameCreated;