@Override
public final void onTopologyBuilderCreated(final Topology topology) {
- LOG.debug("Cretaing topology builder instance {}", topology);
+ LOG.debug("Creating topology builder instance {}", topology);
final TopologyReferenceSingletonService currentInstance = this.topologyBuilders.get(topology.getTopologyId());
if (currentInstance == null || !currentInstance.getConfiguration().equals(topology)) {
final TopologyReferenceSingletonService topologyBuilder = createInstance(topology);
@GuardedBy("this")
private final Set<BgpTopologyProvider> topologyProviders = new HashSet<>();
+ @GuardedBy("this")
+ private final Set<Topology> topologies = new HashSet<>();
private final DataBroker dataBroker;
private final BundleContext context;
private final ClusterSingletonServiceProvider singletonProvider;
case DELETE:
filterTopologyBuilders(dataBefore)
.forEach(provider -> provider.onTopologyBuilderRemoved(dataBefore));
+ this.topologies.remove(dataBefore);
break;
case SUBTREE_MODIFIED:
filterTopologyBuilders(dataBefore).forEach(provider
-> provider.onTopologyBuilderRemoved(dataBefore));
+ this.topologies.remove(dataBefore);
filterTopologyBuilders(dataAfter).forEach(provider
-> provider.onTopologyBuilderCreated(dataAfter));
+ this.topologies.add(dataAfter);
break;
case WRITE:
filterTopologyBuilders(dataAfter).forEach(provider
-> provider.onTopologyBuilderCreated(dataAfter));
+ this.topologies.add(dataAfter);
break;
default:
break;
@Override
public synchronized AbstractRegistration registerTopologyProvider(final BgpTopologyProvider topologyBuilder) {
+ filterTopologies(topologyBuilder).forEach(topology -> topologyBuilder.onTopologyBuilderCreated(topology));
this.topologyProviders.add(topologyBuilder);
return new AbstractRegistration() {
@Override
protected void removeRegistration() {
synchronized (BgpTopologyDeployerImpl.this) {
+ filterTopologies(topologyBuilder)
+ .forEach(topology -> topologyBuilder.onTopologyBuilderRemoved(topology));
BgpTopologyDeployerImpl.this.topologyProviders.remove(topologyBuilder);
}
}
.collect(Collectors.toList());
}
+ private Iterable<Topology> filterTopologies(final BgpTopologyProvider topologyBuilder) {
+ return this.topologies.stream().filter(topology -> topologyBuilder.topologyTypeFilter(topology))
+ .collect(Collectors.toList());
+ }
+
private ClusterSingletonServiceRegistration registerSingletonService(
final ClusterSingletonService clusterSingletonService) {
return ClusterSingletonServiceRegistrationHelper