Showing
11 changed files
with
90 additions
and
13 deletions
| 1 | package org.onlab.onos.net.flow; | 1 | package org.onlab.onos.net.flow; |
| 2 | 2 | ||
| 3 | import org.onlab.onos.net.DeviceId; | 3 | import org.onlab.onos.net.DeviceId; |
| 4 | +import org.onlab.onos.store.Store; | ||
| 4 | 5 | ||
| 5 | /** | 6 | /** |
| 6 | * Manages inventory of flow rules; not intended for direct use. | 7 | * Manages inventory of flow rules; not intended for direct use. |
| 7 | */ | 8 | */ |
| 8 | -public interface FlowRuleStore { | 9 | +public interface FlowRuleStore extends Store<FlowRuleEvent, FlowRuleStoreDelegate> { |
| 9 | 10 | ||
| 10 | /** | 11 | /** |
| 11 | * Returns the flow entries associated with a device. | 12 | * Returns the flow entries associated with a device. | ... | ... |
| ... | @@ -6,6 +6,7 @@ import org.onlab.onos.net.DeviceId; | ... | @@ -6,6 +6,7 @@ import org.onlab.onos.net.DeviceId; |
| 6 | import org.onlab.onos.net.Link; | 6 | import org.onlab.onos.net.Link; |
| 7 | import org.onlab.onos.net.Path; | 7 | import org.onlab.onos.net.Path; |
| 8 | import org.onlab.onos.net.provider.ProviderId; | 8 | import org.onlab.onos.net.provider.ProviderId; |
| 9 | +import org.onlab.onos.store.Store; | ||
| 9 | 10 | ||
| 10 | import java.util.List; | 11 | import java.util.List; |
| 11 | import java.util.Set; | 12 | import java.util.Set; |
| ... | @@ -13,7 +14,7 @@ import java.util.Set; | ... | @@ -13,7 +14,7 @@ import java.util.Set; |
| 13 | /** | 14 | /** |
| 14 | * Manages inventory of topology snapshots; not intended for direct use. | 15 | * Manages inventory of topology snapshots; not intended for direct use. |
| 15 | */ | 16 | */ |
| 16 | -public interface TopologyStore { | 17 | +public interface TopologyStore extends Store<TopologyEvent, TopologyStoreDelegate> { |
| 17 | 18 | ||
| 18 | /** | 19 | /** |
| 19 | * Returns the current topology snapshot. | 20 | * Returns the current topology snapshot. | ... | ... |
| ... | @@ -60,7 +60,7 @@ public class DeviceManager | ... | @@ -60,7 +60,7 @@ public class DeviceManager |
| 60 | 60 | ||
| 61 | private DeviceStoreDelegate delegate = new InternalStoreDelegate(); | 61 | private DeviceStoreDelegate delegate = new InternalStoreDelegate(); |
| 62 | 62 | ||
| 63 | - private final MastershipListener mastershipListener = new InnerMastershipListener(); | 63 | + private final MastershipListener mastershipListener = new InternalMastershipListener(); |
| 64 | 64 | ||
| 65 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 65 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 66 | protected DeviceStore store; | 66 | protected DeviceStore store; |
| ... | @@ -244,7 +244,7 @@ public class DeviceManager | ... | @@ -244,7 +244,7 @@ public class DeviceManager |
| 244 | } | 244 | } |
| 245 | 245 | ||
| 246 | // Intercepts mastership events | 246 | // Intercepts mastership events |
| 247 | - private class InnerMastershipListener implements MastershipListener { | 247 | + private class InternalMastershipListener implements MastershipListener { |
| 248 | @Override | 248 | @Override |
| 249 | public void event(MastershipEvent event) { | 249 | public void event(MastershipEvent event) { |
| 250 | // FIXME: for now we're taking action only on becoming master | 250 | // FIXME: for now we're taking action only on becoming master | ... | ... |
| ... | @@ -27,6 +27,8 @@ import org.onlab.onos.net.flow.FlowRuleProviderRegistry; | ... | @@ -27,6 +27,8 @@ import org.onlab.onos.net.flow.FlowRuleProviderRegistry; |
| 27 | import org.onlab.onos.net.flow.FlowRuleProviderService; | 27 | import org.onlab.onos.net.flow.FlowRuleProviderService; |
| 28 | import org.onlab.onos.net.flow.FlowRuleService; | 28 | import org.onlab.onos.net.flow.FlowRuleService; |
| 29 | import org.onlab.onos.net.flow.FlowRuleStore; | 29 | import org.onlab.onos.net.flow.FlowRuleStore; |
| 30 | +import org.onlab.onos.net.flow.FlowRuleStoreDelegate; | ||
| 31 | +import org.onlab.onos.net.host.HostStoreDelegate; | ||
| 30 | import org.onlab.onos.net.provider.AbstractProviderRegistry; | 32 | import org.onlab.onos.net.provider.AbstractProviderRegistry; |
| 31 | import org.onlab.onos.net.provider.AbstractProviderService; | 33 | import org.onlab.onos.net.provider.AbstractProviderService; |
| 32 | import org.slf4j.Logger; | 34 | import org.slf4j.Logger; |
| ... | @@ -48,6 +50,8 @@ implements FlowRuleService, FlowRuleProviderRegistry { | ... | @@ -48,6 +50,8 @@ implements FlowRuleService, FlowRuleProviderRegistry { |
| 48 | private final AbstractListenerRegistry<FlowRuleEvent, FlowRuleListener> | 50 | private final AbstractListenerRegistry<FlowRuleEvent, FlowRuleListener> |
| 49 | listenerRegistry = new AbstractListenerRegistry<>(); | 51 | listenerRegistry = new AbstractListenerRegistry<>(); |
| 50 | 52 | ||
| 53 | + private FlowRuleStoreDelegate delegate = new InternalStoreDelegate(); | ||
| 54 | + | ||
| 51 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 55 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 52 | protected FlowRuleStore store; | 56 | protected FlowRuleStore store; |
| 53 | 57 | ||
| ... | @@ -59,12 +63,14 @@ implements FlowRuleService, FlowRuleProviderRegistry { | ... | @@ -59,12 +63,14 @@ implements FlowRuleService, FlowRuleProviderRegistry { |
| 59 | 63 | ||
| 60 | @Activate | 64 | @Activate |
| 61 | public void activate() { | 65 | public void activate() { |
| 66 | + store.setDelegate(delegate); | ||
| 62 | eventDispatcher.addSink(FlowRuleEvent.class, listenerRegistry); | 67 | eventDispatcher.addSink(FlowRuleEvent.class, listenerRegistry); |
| 63 | log.info("Started"); | 68 | log.info("Started"); |
| 64 | } | 69 | } |
| 65 | 70 | ||
| 66 | @Deactivate | 71 | @Deactivate |
| 67 | public void deactivate() { | 72 | public void deactivate() { |
| 73 | + store.unsetDelegate(delegate); | ||
| 68 | eventDispatcher.removeSink(FlowRuleEvent.class); | 74 | eventDispatcher.removeSink(FlowRuleEvent.class); |
| 69 | log.info("Stopped"); | 75 | log.info("Stopped"); |
| 70 | } | 76 | } |
| ... | @@ -196,4 +202,11 @@ implements FlowRuleService, FlowRuleProviderRegistry { | ... | @@ -196,4 +202,11 @@ implements FlowRuleService, FlowRuleProviderRegistry { |
| 196 | } | 202 | } |
| 197 | } | 203 | } |
| 198 | 204 | ||
| 205 | + // Store delegate to re-post events emitted from the store. | ||
| 206 | + private class InternalStoreDelegate implements FlowRuleStoreDelegate { | ||
| 207 | + @Override | ||
| 208 | + public void notify(FlowRuleEvent event) { | ||
| 209 | + eventDispatcher.post(event); | ||
| 210 | + } | ||
| 211 | + } | ||
| 199 | } | 212 | } | ... | ... |
| 1 | package org.onlab.onos.net.host.impl; | 1 | package org.onlab.onos.net.host.impl; |
| 2 | 2 | ||
| 3 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
| 4 | -import static org.slf4j.LoggerFactory.getLogger; | ||
| 5 | - | ||
| 6 | -import java.util.Set; | ||
| 7 | - | ||
| 8 | import org.apache.felix.scr.annotations.Activate; | 3 | import org.apache.felix.scr.annotations.Activate; |
| 9 | import org.apache.felix.scr.annotations.Component; | 4 | import org.apache.felix.scr.annotations.Component; |
| 10 | import org.apache.felix.scr.annotations.Deactivate; | 5 | import org.apache.felix.scr.annotations.Deactivate; |
| ... | @@ -26,6 +21,7 @@ import org.onlab.onos.net.host.HostProviderRegistry; | ... | @@ -26,6 +21,7 @@ import org.onlab.onos.net.host.HostProviderRegistry; |
| 26 | import org.onlab.onos.net.host.HostProviderService; | 21 | import org.onlab.onos.net.host.HostProviderService; |
| 27 | import org.onlab.onos.net.host.HostService; | 22 | import org.onlab.onos.net.host.HostService; |
| 28 | import org.onlab.onos.net.host.HostStore; | 23 | import org.onlab.onos.net.host.HostStore; |
| 24 | +import org.onlab.onos.net.host.HostStoreDelegate; | ||
| 29 | import org.onlab.onos.net.host.PortAddresses; | 25 | import org.onlab.onos.net.host.PortAddresses; |
| 30 | import org.onlab.onos.net.provider.AbstractProviderRegistry; | 26 | import org.onlab.onos.net.provider.AbstractProviderRegistry; |
| 31 | import org.onlab.onos.net.provider.AbstractProviderService; | 27 | import org.onlab.onos.net.provider.AbstractProviderService; |
| ... | @@ -35,6 +31,11 @@ import org.onlab.packet.MacAddress; | ... | @@ -35,6 +31,11 @@ import org.onlab.packet.MacAddress; |
| 35 | import org.onlab.packet.VlanId; | 31 | import org.onlab.packet.VlanId; |
| 36 | import org.slf4j.Logger; | 32 | import org.slf4j.Logger; |
| 37 | 33 | ||
| 34 | +import java.util.Set; | ||
| 35 | + | ||
| 36 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
| 37 | +import static org.slf4j.LoggerFactory.getLogger; | ||
| 38 | + | ||
| 38 | /** | 39 | /** |
| 39 | * Provides basic implementation of the host SB & NB APIs. | 40 | * Provides basic implementation of the host SB & NB APIs. |
| 40 | */ | 41 | */ |
| ... | @@ -50,6 +51,8 @@ public class HostManager | ... | @@ -50,6 +51,8 @@ public class HostManager |
| 50 | private final AbstractListenerRegistry<HostEvent, HostListener> | 51 | private final AbstractListenerRegistry<HostEvent, HostListener> |
| 51 | listenerRegistry = new AbstractListenerRegistry<>(); | 52 | listenerRegistry = new AbstractListenerRegistry<>(); |
| 52 | 53 | ||
| 54 | + private HostStoreDelegate delegate = new InternalStoreDelegate(); | ||
| 55 | + | ||
| 53 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 56 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 54 | protected HostStore store; | 57 | protected HostStore store; |
| 55 | 58 | ||
| ... | @@ -59,12 +62,14 @@ public class HostManager | ... | @@ -59,12 +62,14 @@ public class HostManager |
| 59 | 62 | ||
| 60 | @Activate | 63 | @Activate |
| 61 | public void activate() { | 64 | public void activate() { |
| 65 | + store.setDelegate(delegate); | ||
| 62 | eventDispatcher.addSink(HostEvent.class, listenerRegistry); | 66 | eventDispatcher.addSink(HostEvent.class, listenerRegistry); |
| 63 | log.info("Started"); | 67 | log.info("Started"); |
| 64 | } | 68 | } |
| 65 | 69 | ||
| 66 | @Deactivate | 70 | @Deactivate |
| 67 | public void deactivate() { | 71 | public void deactivate() { |
| 72 | + store.unsetDelegate(delegate); | ||
| 68 | eventDispatcher.removeSink(HostEvent.class); | 73 | eventDispatcher.removeSink(HostEvent.class); |
| 69 | log.info("Stopped"); | 74 | log.info("Stopped"); |
| 70 | } | 75 | } |
| ... | @@ -219,4 +224,11 @@ public class HostManager | ... | @@ -219,4 +224,11 @@ public class HostManager |
| 219 | } | 224 | } |
| 220 | } | 225 | } |
| 221 | 226 | ||
| 227 | + // Store delegate to re-post events emitted from the store. | ||
| 228 | + private class InternalStoreDelegate implements HostStoreDelegate { | ||
| 229 | + @Override | ||
| 230 | + public void notify(HostEvent event) { | ||
| 231 | + post(event); | ||
| 232 | + } | ||
| 233 | + } | ||
| 222 | } | 234 | } | ... | ... |
| ... | @@ -28,6 +28,7 @@ import org.onlab.onos.net.link.LinkProviderRegistry; | ... | @@ -28,6 +28,7 @@ import org.onlab.onos.net.link.LinkProviderRegistry; |
| 28 | import org.onlab.onos.net.link.LinkProviderService; | 28 | import org.onlab.onos.net.link.LinkProviderService; |
| 29 | import org.onlab.onos.net.link.LinkService; | 29 | import org.onlab.onos.net.link.LinkService; |
| 30 | import org.onlab.onos.net.link.LinkStore; | 30 | import org.onlab.onos.net.link.LinkStore; |
| 31 | +import org.onlab.onos.net.link.LinkStoreDelegate; | ||
| 31 | import org.onlab.onos.net.provider.AbstractProviderRegistry; | 32 | import org.onlab.onos.net.provider.AbstractProviderRegistry; |
| 32 | import org.onlab.onos.net.provider.AbstractProviderService; | 33 | import org.onlab.onos.net.provider.AbstractProviderService; |
| 33 | import org.slf4j.Logger; | 34 | import org.slf4j.Logger; |
| ... | @@ -52,7 +53,9 @@ public class LinkManager | ... | @@ -52,7 +53,9 @@ public class LinkManager |
| 52 | protected final AbstractListenerRegistry<LinkEvent, LinkListener> | 53 | protected final AbstractListenerRegistry<LinkEvent, LinkListener> |
| 53 | listenerRegistry = new AbstractListenerRegistry<>(); | 54 | listenerRegistry = new AbstractListenerRegistry<>(); |
| 54 | 55 | ||
| 55 | - private final DeviceListener deviceListener = new InnerDeviceListener(); | 56 | + private LinkStoreDelegate delegate = new InternalStoreDelegate(); |
| 57 | + | ||
| 58 | + private final DeviceListener deviceListener = new InternalDeviceListener(); | ||
| 56 | 59 | ||
| 57 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 60 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 58 | protected LinkStore store; | 61 | protected LinkStore store; |
| ... | @@ -65,6 +68,7 @@ public class LinkManager | ... | @@ -65,6 +68,7 @@ public class LinkManager |
| 65 | 68 | ||
| 66 | @Activate | 69 | @Activate |
| 67 | public void activate() { | 70 | public void activate() { |
| 71 | + store.setDelegate(delegate); | ||
| 68 | eventDispatcher.addSink(LinkEvent.class, listenerRegistry); | 72 | eventDispatcher.addSink(LinkEvent.class, listenerRegistry); |
| 69 | deviceService.addListener(deviceListener); | 73 | deviceService.addListener(deviceListener); |
| 70 | log.info("Started"); | 74 | log.info("Started"); |
| ... | @@ -72,6 +76,7 @@ public class LinkManager | ... | @@ -72,6 +76,7 @@ public class LinkManager |
| 72 | 76 | ||
| 73 | @Deactivate | 77 | @Deactivate |
| 74 | public void deactivate() { | 78 | public void deactivate() { |
| 79 | + store.unsetDelegate(delegate); | ||
| 75 | eventDispatcher.removeSink(LinkEvent.class); | 80 | eventDispatcher.removeSink(LinkEvent.class); |
| 76 | deviceService.removeListener(deviceListener); | 81 | deviceService.removeListener(deviceListener); |
| 77 | log.info("Stopped"); | 82 | log.info("Stopped"); |
| ... | @@ -154,7 +159,7 @@ public class LinkManager | ... | @@ -154,7 +159,7 @@ public class LinkManager |
| 154 | 159 | ||
| 155 | // Auxiliary interceptor for device remove events to prune links that | 160 | // Auxiliary interceptor for device remove events to prune links that |
| 156 | // are associated with the removed device or its port. | 161 | // are associated with the removed device or its port. |
| 157 | - private class InnerDeviceListener implements DeviceListener { | 162 | + private class InternalDeviceListener implements DeviceListener { |
| 158 | @Override | 163 | @Override |
| 159 | public void event(DeviceEvent event) { | 164 | public void event(DeviceEvent event) { |
| 160 | if (event.type() == DeviceEvent.Type.DEVICE_REMOVED) { | 165 | if (event.type() == DeviceEvent.Type.DEVICE_REMOVED) { |
| ... | @@ -236,4 +241,11 @@ public class LinkManager | ... | @@ -236,4 +241,11 @@ public class LinkManager |
| 236 | } | 241 | } |
| 237 | } | 242 | } |
| 238 | 243 | ||
| 244 | + // Store delegate to re-post events emitted from the store. | ||
| 245 | + private class InternalStoreDelegate implements LinkStoreDelegate { | ||
| 246 | + @Override | ||
| 247 | + public void notify(LinkEvent event) { | ||
| 248 | + post(event); | ||
| 249 | + } | ||
| 250 | + } | ||
| 239 | } | 251 | } | ... | ... |
| ... | @@ -28,6 +28,7 @@ import org.onlab.onos.net.topology.TopologyProviderRegistry; | ... | @@ -28,6 +28,7 @@ import org.onlab.onos.net.topology.TopologyProviderRegistry; |
| 28 | import org.onlab.onos.net.topology.TopologyProviderService; | 28 | import org.onlab.onos.net.topology.TopologyProviderService; |
| 29 | import org.onlab.onos.net.topology.TopologyService; | 29 | import org.onlab.onos.net.topology.TopologyService; |
| 30 | import org.onlab.onos.net.topology.TopologyStore; | 30 | import org.onlab.onos.net.topology.TopologyStore; |
| 31 | +import org.onlab.onos.net.topology.TopologyStoreDelegate; | ||
| 31 | import org.slf4j.Logger; | 32 | import org.slf4j.Logger; |
| 32 | 33 | ||
| 33 | import java.util.List; | 34 | import java.util.List; |
| ... | @@ -56,6 +57,8 @@ public class TopologyManager | ... | @@ -56,6 +57,8 @@ public class TopologyManager |
| 56 | private final AbstractListenerRegistry<TopologyEvent, TopologyListener> | 57 | private final AbstractListenerRegistry<TopologyEvent, TopologyListener> |
| 57 | listenerRegistry = new AbstractListenerRegistry<>(); | 58 | listenerRegistry = new AbstractListenerRegistry<>(); |
| 58 | 59 | ||
| 60 | + private TopologyStoreDelegate delegate = new InternalStoreDelegate(); | ||
| 61 | + | ||
| 59 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
| 60 | protected TopologyStore store; | 63 | protected TopologyStore store; |
| 61 | 64 | ||
| ... | @@ -65,12 +68,14 @@ public class TopologyManager | ... | @@ -65,12 +68,14 @@ public class TopologyManager |
| 65 | 68 | ||
| 66 | @Activate | 69 | @Activate |
| 67 | public void activate() { | 70 | public void activate() { |
| 71 | + store.setDelegate(delegate); | ||
| 68 | eventDispatcher.addSink(TopologyEvent.class, listenerRegistry); | 72 | eventDispatcher.addSink(TopologyEvent.class, listenerRegistry); |
| 69 | log.info("Started"); | 73 | log.info("Started"); |
| 70 | } | 74 | } |
| 71 | 75 | ||
| 72 | @Deactivate | 76 | @Deactivate |
| 73 | public void deactivate() { | 77 | public void deactivate() { |
| 78 | + store.unsetDelegate(delegate); | ||
| 74 | eventDispatcher.removeSink(TopologyEvent.class); | 79 | eventDispatcher.removeSink(TopologyEvent.class); |
| 75 | log.info("Stopped"); | 80 | log.info("Stopped"); |
| 76 | } | 81 | } |
| ... | @@ -188,4 +193,11 @@ public class TopologyManager | ... | @@ -188,4 +193,11 @@ public class TopologyManager |
| 188 | } | 193 | } |
| 189 | } | 194 | } |
| 190 | 195 | ||
| 196 | + // Store delegate to re-post events emitted from the store. | ||
| 197 | + private class InternalStoreDelegate implements TopologyStoreDelegate { | ||
| 198 | + @Override | ||
| 199 | + public void notify(TopologyEvent event) { | ||
| 200 | + eventDispatcher.post(event); | ||
| 201 | + } | ||
| 202 | + } | ||
| 191 | } | 203 | } | ... | ... |
| ... | @@ -13,6 +13,8 @@ import org.onlab.onos.net.flow.FlowRule; | ... | @@ -13,6 +13,8 @@ import org.onlab.onos.net.flow.FlowRule; |
| 13 | import org.onlab.onos.net.flow.FlowRuleEvent; | 13 | import org.onlab.onos.net.flow.FlowRuleEvent; |
| 14 | import org.onlab.onos.net.flow.FlowRuleEvent.Type; | 14 | import org.onlab.onos.net.flow.FlowRuleEvent.Type; |
| 15 | import org.onlab.onos.net.flow.FlowRuleStore; | 15 | import org.onlab.onos.net.flow.FlowRuleStore; |
| 16 | +import org.onlab.onos.net.flow.FlowRuleStoreDelegate; | ||
| 17 | +import org.onlab.onos.store.AbstractStore; | ||
| 16 | import org.slf4j.Logger; | 18 | import org.slf4j.Logger; |
| 17 | 19 | ||
| 18 | import com.google.common.collect.ArrayListMultimap; | 20 | import com.google.common.collect.ArrayListMultimap; |
| ... | @@ -24,7 +26,9 @@ import com.google.common.collect.Multimap; | ... | @@ -24,7 +26,9 @@ import com.google.common.collect.Multimap; |
| 24 | */ | 26 | */ |
| 25 | @Component(immediate = true) | 27 | @Component(immediate = true) |
| 26 | @Service | 28 | @Service |
| 27 | -public class SimpleFlowRuleStore implements FlowRuleStore { | 29 | +public class SimpleFlowRuleStore |
| 30 | + extends AbstractStore<FlowRuleEvent, FlowRuleStoreDelegate> | ||
| 31 | + implements FlowRuleStore { | ||
| 28 | 32 | ||
| 29 | private final Logger log = getLogger(getClass()); | 33 | private final Logger log = getLogger(getClass()); |
| 30 | 34 | ... | ... |
| ... | @@ -18,6 +18,8 @@ import org.onlab.onos.net.topology.TopologyCluster; | ... | @@ -18,6 +18,8 @@ import org.onlab.onos.net.topology.TopologyCluster; |
| 18 | import org.onlab.onos.net.topology.TopologyEvent; | 18 | import org.onlab.onos.net.topology.TopologyEvent; |
| 19 | import org.onlab.onos.net.topology.TopologyGraph; | 19 | import org.onlab.onos.net.topology.TopologyGraph; |
| 20 | import org.onlab.onos.net.topology.TopologyStore; | 20 | import org.onlab.onos.net.topology.TopologyStore; |
| 21 | +import org.onlab.onos.net.topology.TopologyStoreDelegate; | ||
| 22 | +import org.onlab.onos.store.AbstractStore; | ||
| 21 | import org.slf4j.Logger; | 23 | import org.slf4j.Logger; |
| 22 | 24 | ||
| 23 | import java.util.List; | 25 | import java.util.List; |
| ... | @@ -31,7 +33,9 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -31,7 +33,9 @@ import static org.slf4j.LoggerFactory.getLogger; |
| 31 | */ | 33 | */ |
| 32 | @Component(immediate = true) | 34 | @Component(immediate = true) |
| 33 | @Service | 35 | @Service |
| 34 | -public class SimpleTopologyStore implements TopologyStore { | 36 | +public class SimpleTopologyStore |
| 37 | + extends AbstractStore<TopologyEvent, TopologyStoreDelegate> | ||
| 38 | + implements TopologyStore { | ||
| 35 | 39 | ||
| 36 | private final Logger log = getLogger(getClass()); | 40 | private final Logger log = getLogger(getClass()); |
| 37 | 41 | ... | ... |
-
Please register or login to post a comment