Committed by
Gerrit Code Review
Adding some base-classes to eliminate event and listener boiler-plate code throu…
…ghout a number of subsystems. Refactored all core components to take advantage of this; apps remain to be done. Change-Id: Ib0935ba07ff81b0fa032534004ec9ac6187cbf22
Showing
55 changed files
with
594 additions
and
1095 deletions
... | @@ -18,13 +18,15 @@ package org.onosproject.app; | ... | @@ -18,13 +18,15 @@ package org.onosproject.app; |
18 | import org.onosproject.core.Application; | 18 | import org.onosproject.core.Application; |
19 | import org.onosproject.core.ApplicationId; | 19 | import org.onosproject.core.ApplicationId; |
20 | import org.onosproject.core.Permission; | 20 | import org.onosproject.core.Permission; |
21 | +import org.onosproject.event.ListenerService; | ||
21 | 22 | ||
22 | import java.util.Set; | 23 | import java.util.Set; |
23 | 24 | ||
24 | /** | 25 | /** |
25 | * Service for inspecting inventory of network control applications. | 26 | * Service for inspecting inventory of network control applications. |
26 | */ | 27 | */ |
27 | -public interface ApplicationService { | 28 | +public interface ApplicationService |
29 | + extends ListenerService<ApplicationEvent, ApplicationListener> { | ||
28 | 30 | ||
29 | /** | 31 | /** |
30 | * Returns the set of all installed applications. | 32 | * Returns the set of all installed applications. |
... | @@ -65,18 +67,4 @@ public interface ApplicationService { | ... | @@ -65,18 +67,4 @@ public interface ApplicationService { |
65 | */ | 67 | */ |
66 | Set<Permission> getPermissions(ApplicationId appId); | 68 | Set<Permission> getPermissions(ApplicationId appId); |
67 | 69 | ||
68 | - /** | ||
69 | - * Adds the given listener for application lifecycle events. | ||
70 | - * | ||
71 | - * @param listener listener to be added | ||
72 | - */ | ||
73 | - void addListener(ApplicationListener listener); | ||
74 | - | ||
75 | - /** | ||
76 | - * Removes the specified listener for application lifecycle events. | ||
77 | - * | ||
78 | - * @param listener listener to be removed | ||
79 | - */ | ||
80 | - void removeListener(ApplicationListener listener); | ||
81 | - | ||
82 | } | 70 | } | ... | ... |
... | @@ -18,12 +18,14 @@ package org.onosproject.cluster; | ... | @@ -18,12 +18,14 @@ package org.onosproject.cluster; |
18 | import java.util.Set; | 18 | import java.util.Set; |
19 | 19 | ||
20 | import org.joda.time.DateTime; | 20 | import org.joda.time.DateTime; |
21 | +import org.onosproject.event.ListenerService; | ||
21 | 22 | ||
22 | /** | 23 | /** |
23 | * Service for obtaining information about the individual nodes within | 24 | * Service for obtaining information about the individual nodes within |
24 | * the controller cluster. | 25 | * the controller cluster. |
25 | */ | 26 | */ |
26 | -public interface ClusterService { | 27 | +public interface ClusterService |
28 | + extends ListenerService<ClusterEvent, ClusterEventListener> { | ||
27 | 29 | ||
28 | /** | 30 | /** |
29 | * Returns the local controller node. | 31 | * Returns the local controller node. |
... | @@ -63,18 +65,4 @@ public interface ClusterService { | ... | @@ -63,18 +65,4 @@ public interface ClusterService { |
63 | */ | 65 | */ |
64 | DateTime getLastUpdated(NodeId nodeId); | 66 | DateTime getLastUpdated(NodeId nodeId); |
65 | 67 | ||
66 | - /** | ||
67 | - * Adds the specified cluster event listener. | ||
68 | - * | ||
69 | - * @param listener the cluster listener | ||
70 | - */ | ||
71 | - void addListener(ClusterEventListener listener); | ||
72 | - | ||
73 | - /** | ||
74 | - * Removes the specified cluster event listener. | ||
75 | - * | ||
76 | - * @param listener the cluster listener | ||
77 | - */ | ||
78 | - void removeListener(ClusterEventListener listener); | ||
79 | - | ||
80 | } | 68 | } | ... | ... |
... | @@ -15,6 +15,8 @@ | ... | @@ -15,6 +15,8 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.cluster; | 16 | package org.onosproject.cluster; |
17 | 17 | ||
18 | +import org.onosproject.event.ListenerService; | ||
19 | + | ||
18 | import java.util.List; | 20 | import java.util.List; |
19 | import java.util.Map; | 21 | import java.util.Map; |
20 | import java.util.Set; | 22 | import java.util.Set; |
... | @@ -27,7 +29,8 @@ import java.util.concurrent.CompletableFuture; | ... | @@ -27,7 +29,8 @@ import java.util.concurrent.CompletableFuture; |
27 | * Listeners can be added to receive notifications asynchronously for various | 29 | * Listeners can be added to receive notifications asynchronously for various |
28 | * leadership contests. | 30 | * leadership contests. |
29 | */ | 31 | */ |
30 | -public interface LeadershipService { | 32 | +public interface LeadershipService |
33 | + extends ListenerService<LeadershipEvent, LeadershipEventListener> { | ||
31 | 34 | ||
32 | /** | 35 | /** |
33 | * Returns the current leader for the topic. | 36 | * Returns the current leader for the topic. |
... | @@ -118,17 +121,4 @@ public interface LeadershipService { | ... | @@ -118,17 +121,4 @@ public interface LeadershipService { |
118 | */ | 121 | */ |
119 | List<NodeId> getCandidates(String path); | 122 | List<NodeId> getCandidates(String path); |
120 | 123 | ||
121 | - /** | ||
122 | - * Registers a event listener to be notified of leadership events. | ||
123 | - * | ||
124 | - * @param listener listener that will asynchronously notified of leadership events. | ||
125 | - */ | ||
126 | - void addListener(LeadershipEventListener listener); | ||
127 | - | ||
128 | - /** | ||
129 | - * Unregisters a event listener for leadership events. | ||
130 | - * | ||
131 | - * @param listener listener to be removed. | ||
132 | - */ | ||
133 | - void removeListener(LeadershipEventListener listener); | ||
134 | } | 124 | } | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.event; | ||
17 | + | ||
18 | +import org.apache.felix.scr.annotations.Component; | ||
19 | +import org.apache.felix.scr.annotations.Reference; | ||
20 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
21 | + | ||
22 | +/** | ||
23 | + * Basis for components which need to export listener mechanism. | ||
24 | + */ | ||
25 | +@Component(componentAbstract = true) | ||
26 | +public abstract class AbstractListenerManager<E extends Event, L extends EventListener<E>> | ||
27 | + implements ListenerService<E, L> { | ||
28 | + | ||
29 | + protected final ListenerRegistry<E, L> listenerRegistry = new ListenerRegistry<>(); | ||
30 | + | ||
31 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
32 | + protected EventDeliveryService eventDispatcher; | ||
33 | + | ||
34 | + @Override | ||
35 | + public void addListener(L listener) { | ||
36 | + listenerRegistry.addListener(listener); | ||
37 | + } | ||
38 | + | ||
39 | + @Override | ||
40 | + public void removeListener(L listener) { | ||
41 | + listenerRegistry.removeListener(listener); | ||
42 | + } | ||
43 | + | ||
44 | + | ||
45 | + /** | ||
46 | + * Safely posts the specified event to the local event dispatcher. | ||
47 | + * If there is no event dispatcher or if the event is null, this method | ||
48 | + * is a noop. | ||
49 | + * | ||
50 | + * @param event event to be posted; may be null | ||
51 | + */ | ||
52 | + protected void post(E event) { | ||
53 | + if (event != null && eventDispatcher != null) { | ||
54 | + eventDispatcher.post(event); | ||
55 | + } | ||
56 | + } | ||
57 | + | ||
58 | +} |
... | @@ -28,7 +28,7 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -28,7 +28,7 @@ import static org.slf4j.LoggerFactory.getLogger; |
28 | * listeners and dispatching events to them as part of event sink processing. | 28 | * listeners and dispatching events to them as part of event sink processing. |
29 | */ | 29 | */ |
30 | public class ListenerRegistry<E extends Event, L extends EventListener<E>> | 30 | public class ListenerRegistry<E extends Event, L extends EventListener<E>> |
31 | - implements EventSink<E> { | 31 | + implements ListenerService<E, L>, EventSink<E> { |
32 | 32 | ||
33 | private static final long LIMIT = 1_800; // ms | 33 | private static final long LIMIT = 1_800; // ms |
34 | 34 | ||
... | @@ -42,22 +42,13 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>> | ... | @@ -42,22 +42,13 @@ public class ListenerRegistry<E extends Event, L extends EventListener<E>> |
42 | */ | 42 | */ |
43 | protected final Set<L> listeners = new CopyOnWriteArraySet<>(); | 43 | protected final Set<L> listeners = new CopyOnWriteArraySet<>(); |
44 | 44 | ||
45 | - | 45 | + @Override |
46 | - /** | ||
47 | - * Adds the specified listener. | ||
48 | - * | ||
49 | - * @param listener listener to be added | ||
50 | - */ | ||
51 | public void addListener(L listener) { | 46 | public void addListener(L listener) { |
52 | checkNotNull(listener, "Listener cannot be null"); | 47 | checkNotNull(listener, "Listener cannot be null"); |
53 | listeners.add(listener); | 48 | listeners.add(listener); |
54 | } | 49 | } |
55 | 50 | ||
56 | - /** | 51 | + @Override |
57 | - * Removes the specified listener. | ||
58 | - * | ||
59 | - * @param listener listener to be removed | ||
60 | - */ | ||
61 | public void removeListener(L listener) { | 52 | public void removeListener(L listener) { |
62 | checkNotNull(listener, "Listener cannot be null"); | 53 | checkNotNull(listener, "Listener cannot be null"); |
63 | if (!listeners.remove(listener)) { | 54 | if (!listeners.remove(listener)) { | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.event; | ||
17 | + | ||
18 | +/** | ||
19 | + * Abstraction of a service capable of asynchronously notifying listeners. | ||
20 | + */ | ||
21 | +public interface ListenerService<E extends Event, L extends EventListener<E>> { | ||
22 | + | ||
23 | + /** | ||
24 | + * Adds the specified listener. | ||
25 | + * | ||
26 | + * @param listener listener to be added | ||
27 | + */ | ||
28 | + void addListener(L listener); | ||
29 | + | ||
30 | + /** | ||
31 | + * Removes the specified listener. | ||
32 | + * | ||
33 | + * @param listener listener to be removed | ||
34 | + */ | ||
35 | + void removeListener(L listener); | ||
36 | + | ||
37 | + | ||
38 | +} |
... | @@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture; | ... | @@ -20,6 +20,7 @@ import java.util.concurrent.CompletableFuture; |
20 | 20 | ||
21 | import org.onosproject.cluster.NodeId; | 21 | import org.onosproject.cluster.NodeId; |
22 | import org.onosproject.cluster.RoleInfo; | 22 | import org.onosproject.cluster.RoleInfo; |
23 | +import org.onosproject.event.ListenerService; | ||
23 | import org.onosproject.net.DeviceId; | 24 | import org.onosproject.net.DeviceId; |
24 | import org.onosproject.net.MastershipRole; | 25 | import org.onosproject.net.MastershipRole; |
25 | 26 | ||
... | @@ -29,7 +30,8 @@ import org.onosproject.net.MastershipRole; | ... | @@ -29,7 +30,8 @@ import org.onosproject.net.MastershipRole; |
29 | * determining mastership, but is not responsible for actually applying it | 30 | * determining mastership, but is not responsible for actually applying it |
30 | * to the devices; this falls on the device service. | 31 | * to the devices; this falls on the device service. |
31 | */ | 32 | */ |
32 | -public interface MastershipService { | 33 | +public interface MastershipService |
34 | + extends ListenerService<MastershipEvent, MastershipListener> { | ||
33 | 35 | ||
34 | /** | 36 | /** |
35 | * Returns the role of the local node for the specified device, without | 37 | * Returns the role of the local node for the specified device, without |
... | @@ -84,18 +86,4 @@ public interface MastershipService { | ... | @@ -84,18 +86,4 @@ public interface MastershipService { |
84 | */ | 86 | */ |
85 | Set<DeviceId> getDevicesOf(NodeId nodeId); | 87 | Set<DeviceId> getDevicesOf(NodeId nodeId); |
86 | 88 | ||
87 | - /** | ||
88 | - * Adds the specified mastership change listener. | ||
89 | - * | ||
90 | - * @param listener the mastership listener | ||
91 | - */ | ||
92 | - void addListener(MastershipListener listener); | ||
93 | - | ||
94 | - /** | ||
95 | - * Removes the specified mastership change listener. | ||
96 | - * | ||
97 | - * @param listener the mastership listener | ||
98 | - */ | ||
99 | - void removeListener(MastershipListener listener); | ||
100 | - | ||
101 | } | 89 | } | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.device; | 16 | package org.onosproject.net.device; |
17 | 17 | ||
18 | +import org.onosproject.event.ListenerService; | ||
18 | import org.onosproject.net.Device; | 19 | import org.onosproject.net.Device; |
19 | import org.onosproject.net.DeviceId; | 20 | import org.onosproject.net.DeviceId; |
20 | import org.onosproject.net.MastershipRole; | 21 | import org.onosproject.net.MastershipRole; |
... | @@ -26,7 +27,8 @@ import java.util.List; | ... | @@ -26,7 +27,8 @@ import java.util.List; |
26 | /** | 27 | /** |
27 | * Service for interacting with the inventory of infrastructure devices. | 28 | * Service for interacting with the inventory of infrastructure devices. |
28 | */ | 29 | */ |
29 | -public interface DeviceService { | 30 | +public interface DeviceService |
31 | + extends ListenerService<DeviceEvent, DeviceListener> { | ||
30 | 32 | ||
31 | /** | 33 | /** |
32 | * Returns the number of infrastructure devices known to the system. | 34 | * Returns the number of infrastructure devices known to the system. |
... | @@ -119,18 +121,4 @@ public interface DeviceService { | ... | @@ -119,18 +121,4 @@ public interface DeviceService { |
119 | */ | 121 | */ |
120 | boolean isAvailable(DeviceId deviceId); | 122 | boolean isAvailable(DeviceId deviceId); |
121 | 123 | ||
122 | - /** | ||
123 | - * Adds the specified device listener. | ||
124 | - * | ||
125 | - * @param listener device listener | ||
126 | - */ | ||
127 | - void addListener(DeviceListener listener); | ||
128 | - | ||
129 | - /** | ||
130 | - * Removes the specified device listener. | ||
131 | - * | ||
132 | - * @param listener device listener | ||
133 | - */ | ||
134 | - void removeListener(DeviceListener listener); | ||
135 | - | ||
136 | } | 124 | } | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.edge; | 16 | package org.onosproject.net.edge; |
17 | 17 | ||
18 | +import org.onosproject.event.ListenerService; | ||
18 | import org.onosproject.net.ConnectPoint; | 19 | import org.onosproject.net.ConnectPoint; |
19 | import org.onosproject.net.DeviceId; | 20 | import org.onosproject.net.DeviceId; |
20 | import org.onosproject.net.flow.TrafficTreatment; | 21 | import org.onosproject.net.flow.TrafficTreatment; |
... | @@ -27,7 +28,8 @@ import java.util.Optional; | ... | @@ -27,7 +28,8 @@ import java.util.Optional; |
27 | * is considered an edge port if it is an active port and does not have an | 28 | * is considered an edge port if it is an active port and does not have an |
28 | * infrastructure link associated with it. | 29 | * infrastructure link associated with it. |
29 | */ | 30 | */ |
30 | -public interface EdgePortService { | 31 | +public interface EdgePortService |
32 | + extends ListenerService<EdgePortEvent, EdgePortListener> { | ||
31 | 33 | ||
32 | /** | 34 | /** |
33 | * Indicates whether or not the specified connection point is an edge point. | 35 | * Indicates whether or not the specified connection point is an edge point. |
... | @@ -70,18 +72,4 @@ public interface EdgePortService { | ... | @@ -70,18 +72,4 @@ public interface EdgePortService { |
70 | void emitPacket(DeviceId deviceId, ByteBuffer data, | 72 | void emitPacket(DeviceId deviceId, ByteBuffer data, |
71 | Optional<TrafficTreatment> treatment); | 73 | Optional<TrafficTreatment> treatment); |
72 | 74 | ||
73 | - /** | ||
74 | - * Adds a listener for edge port events. | ||
75 | - * | ||
76 | - * @param listener listener to be added | ||
77 | - */ | ||
78 | - void addListener(EdgePortListener listener); | ||
79 | - | ||
80 | - /** | ||
81 | - * Removes the listener for edge port events. | ||
82 | - * | ||
83 | - * @param listener listener to be removed | ||
84 | - */ | ||
85 | - void removeListener(EdgePortListener listener); | ||
86 | - | ||
87 | } | 75 | } | ... | ... |
... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
16 | package org.onosproject.net.flow; | 16 | package org.onosproject.net.flow; |
17 | 17 | ||
18 | import org.onosproject.core.ApplicationId; | 18 | import org.onosproject.core.ApplicationId; |
19 | +import org.onosproject.event.ListenerService; | ||
19 | import org.onosproject.net.DeviceId; | 20 | import org.onosproject.net.DeviceId; |
20 | 21 | ||
21 | /** | 22 | /** |
... | @@ -25,7 +26,8 @@ import org.onosproject.net.DeviceId; | ... | @@ -25,7 +26,8 @@ import org.onosproject.net.DeviceId; |
25 | * of the flow rules lies with the controller and the devices hold only the | 26 | * of the flow rules lies with the controller and the devices hold only the |
26 | * 'cached' copy. | 27 | * 'cached' copy. |
27 | */ | 28 | */ |
28 | -public interface FlowRuleService { | 29 | +public interface FlowRuleService |
30 | + extends ListenerService<FlowRuleEvent, FlowRuleListener> { | ||
29 | 31 | ||
30 | /** | 32 | /** |
31 | * The topic used for obtaining globally unique ids. | 33 | * The topic used for obtaining globally unique ids. |
... | @@ -102,17 +104,4 @@ public interface FlowRuleService { | ... | @@ -102,17 +104,4 @@ public interface FlowRuleService { |
102 | */ | 104 | */ |
103 | void apply(FlowRuleOperations ops); | 105 | void apply(FlowRuleOperations ops); |
104 | 106 | ||
105 | - /** | ||
106 | - * Adds the specified flow rule listener. | ||
107 | - * | ||
108 | - * @param listener flow rule listener | ||
109 | - */ | ||
110 | - void addListener(FlowRuleListener listener); | ||
111 | - | ||
112 | - /** | ||
113 | - * Removes the specified flow rule listener. | ||
114 | - * | ||
115 | - * @param listener flow rule listener | ||
116 | - */ | ||
117 | - void removeListener(FlowRuleListener listener); | ||
118 | } | 107 | } | ... | ... |
... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
16 | package org.onosproject.net.group; | 16 | package org.onosproject.net.group; |
17 | 17 | ||
18 | import org.onosproject.core.ApplicationId; | 18 | import org.onosproject.core.ApplicationId; |
19 | +import org.onosproject.event.ListenerService; | ||
19 | import org.onosproject.net.DeviceId; | 20 | import org.onosproject.net.DeviceId; |
20 | 21 | ||
21 | /** | 22 | /** |
... | @@ -32,7 +33,8 @@ import org.onosproject.net.DeviceId; | ... | @@ -32,7 +33,8 @@ import org.onosproject.net.DeviceId; |
32 | * where the master copy of the groups lies with the controller and | 33 | * where the master copy of the groups lies with the controller and |
33 | * the devices hold only the 'cached' copy. | 34 | * the devices hold only the 'cached' copy. |
34 | */ | 35 | */ |
35 | -public interface GroupService { | 36 | +public interface GroupService |
37 | + extends ListenerService<GroupEvent, GroupListener> { | ||
36 | 38 | ||
37 | /** | 39 | /** |
38 | * Creates a group in the specified device with the provided buckets. | 40 | * Creates a group in the specified device with the provided buckets. |
... | @@ -134,17 +136,4 @@ public interface GroupService { | ... | @@ -134,17 +136,4 @@ public interface GroupService { |
134 | */ | 136 | */ |
135 | Iterable<Group> getGroups(DeviceId deviceId); | 137 | Iterable<Group> getGroups(DeviceId deviceId); |
136 | 138 | ||
137 | - /** | ||
138 | - * Adds the specified group listener. | ||
139 | - * | ||
140 | - * @param listener group listener | ||
141 | - */ | ||
142 | - void addListener(GroupListener listener); | ||
143 | - | ||
144 | - /** | ||
145 | - * Removes the specified group listener. | ||
146 | - * | ||
147 | - * @param listener group listener | ||
148 | - */ | ||
149 | - void removeListener(GroupListener listener); | ||
150 | } | 139 | } | ... | ... |
... | @@ -17,6 +17,7 @@ package org.onosproject.net.host; | ... | @@ -17,6 +17,7 @@ package org.onosproject.net.host; |
17 | 17 | ||
18 | import java.util.Set; | 18 | import java.util.Set; |
19 | 19 | ||
20 | +import org.onosproject.event.ListenerService; | ||
20 | import org.onosproject.net.ConnectPoint; | 21 | import org.onosproject.net.ConnectPoint; |
21 | import org.onosproject.net.DeviceId; | 22 | import org.onosproject.net.DeviceId; |
22 | import org.onosproject.net.Host; | 23 | import org.onosproject.net.Host; |
... | @@ -28,7 +29,8 @@ import org.onlab.packet.VlanId; | ... | @@ -28,7 +29,8 @@ import org.onlab.packet.VlanId; |
28 | /** | 29 | /** |
29 | * Service for interacting with the inventory of end-station hosts. | 30 | * Service for interacting with the inventory of end-station hosts. |
30 | */ | 31 | */ |
31 | -public interface HostService { | 32 | +public interface HostService |
33 | + extends ListenerService<HostEvent, HostListener> { | ||
32 | 34 | ||
33 | /** | 35 | /** |
34 | * Returns the number of end-station hosts known to the system. | 36 | * Returns the number of end-station hosts known to the system. |
... | @@ -137,18 +139,4 @@ public interface HostService { | ... | @@ -137,18 +139,4 @@ public interface HostService { |
137 | */ | 139 | */ |
138 | Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint); | 140 | Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint); |
139 | 141 | ||
140 | - /** | ||
141 | - * Adds the specified host listener. | ||
142 | - * | ||
143 | - * @param listener host listener | ||
144 | - */ | ||
145 | - void addListener(HostListener listener); | ||
146 | - | ||
147 | - /** | ||
148 | - * Removes the specified host listener. | ||
149 | - * | ||
150 | - * @param listener host listener | ||
151 | - */ | ||
152 | - void removeListener(HostListener listener); | ||
153 | - | ||
154 | } | 142 | } | ... | ... |
... | @@ -17,6 +17,7 @@ package org.onosproject.net.intent; | ... | @@ -17,6 +17,7 @@ package org.onosproject.net.intent; |
17 | 17 | ||
18 | 18 | ||
19 | import com.google.common.annotations.Beta; | 19 | import com.google.common.annotations.Beta; |
20 | +import org.onosproject.event.ListenerService; | ||
20 | 21 | ||
21 | import java.util.List; | 22 | import java.util.List; |
22 | 23 | ||
... | @@ -24,7 +25,9 @@ import java.util.List; | ... | @@ -24,7 +25,9 @@ import java.util.List; |
24 | * Service for application submitting or withdrawing their intents. | 25 | * Service for application submitting or withdrawing their intents. |
25 | */ | 26 | */ |
26 | @Beta | 27 | @Beta |
27 | -public interface IntentService { | 28 | +public interface IntentService |
29 | + extends ListenerService<IntentEvent, IntentListener> { | ||
30 | + | ||
28 | /** | 31 | /** |
29 | * Submits an intent into the system. | 32 | * Submits an intent into the system. |
30 | * <p> | 33 | * <p> |
... | @@ -117,17 +120,4 @@ public interface IntentService { | ... | @@ -117,17 +120,4 @@ public interface IntentService { |
117 | */ | 120 | */ |
118 | Iterable<Intent> getPending(); | 121 | Iterable<Intent> getPending(); |
119 | 122 | ||
120 | - /** | ||
121 | - * Adds the specified listener for intent events. | ||
122 | - * | ||
123 | - * @param listener listener to be added | ||
124 | - */ | ||
125 | - void addListener(IntentListener listener); | ||
126 | - | ||
127 | - /** | ||
128 | - * Removes the specified listener for intent events. | ||
129 | - * | ||
130 | - * @param listener listener to be removed | ||
131 | - */ | ||
132 | - void removeListener(IntentListener listener); | ||
133 | } | 123 | } | ... | ... |
... | @@ -17,12 +17,14 @@ package org.onosproject.net.intent; | ... | @@ -17,12 +17,14 @@ package org.onosproject.net.intent; |
17 | 17 | ||
18 | import com.google.common.annotations.Beta; | 18 | import com.google.common.annotations.Beta; |
19 | import org.onosproject.cluster.NodeId; | 19 | import org.onosproject.cluster.NodeId; |
20 | +import org.onosproject.event.ListenerService; | ||
20 | 21 | ||
21 | /** | 22 | /** |
22 | * Service for interacting with the partition-to-instance assignments. | 23 | * Service for interacting with the partition-to-instance assignments. |
23 | */ | 24 | */ |
24 | @Beta | 25 | @Beta |
25 | -public interface PartitionService { | 26 | +public interface PartitionService |
27 | + extends ListenerService<PartitionEvent, PartitionEventListener> { | ||
26 | 28 | ||
27 | /** | 29 | /** |
28 | * Returns whether the given intent key is in a partition owned by this | 30 | * Returns whether the given intent key is in a partition owned by this |
... | @@ -43,17 +45,4 @@ public interface PartitionService { | ... | @@ -43,17 +45,4 @@ public interface PartitionService { |
43 | 45 | ||
44 | // TODO add API for rebalancing partitions | 46 | // TODO add API for rebalancing partitions |
45 | 47 | ||
46 | - /** | ||
47 | - * Registers a event listener to be notified of partition events. | ||
48 | - * | ||
49 | - * @param listener listener that will asynchronously notified of partition events. | ||
50 | - */ | ||
51 | - void addListener(PartitionEventListener listener); | ||
52 | - | ||
53 | - /** | ||
54 | - * Unregisters a event listener for partition events. | ||
55 | - * | ||
56 | - * @param listener listener to be removed. | ||
57 | - */ | ||
58 | - void removeListener(PartitionEventListener listener); | ||
59 | } | 48 | } | ... | ... |
... | @@ -17,6 +17,7 @@ package org.onosproject.net.link; | ... | @@ -17,6 +17,7 @@ package org.onosproject.net.link; |
17 | 17 | ||
18 | import java.util.Set; | 18 | import java.util.Set; |
19 | 19 | ||
20 | +import org.onosproject.event.ListenerService; | ||
20 | import org.onosproject.net.ConnectPoint; | 21 | import org.onosproject.net.ConnectPoint; |
21 | import org.onosproject.net.DeviceId; | 22 | import org.onosproject.net.DeviceId; |
22 | import org.onosproject.net.Link; | 23 | import org.onosproject.net.Link; |
... | @@ -24,7 +25,8 @@ import org.onosproject.net.Link; | ... | @@ -24,7 +25,8 @@ import org.onosproject.net.Link; |
24 | /** | 25 | /** |
25 | * Service for interacting with the inventory of infrastructure links. | 26 | * Service for interacting with the inventory of infrastructure links. |
26 | */ | 27 | */ |
27 | -public interface LinkService { | 28 | +public interface LinkService |
29 | + extends ListenerService<LinkEvent, LinkListener> { | ||
28 | 30 | ||
29 | /** | 31 | /** |
30 | * Returns the count of all known infrastructure links. | 32 | * Returns the count of all known infrastructure links. |
... | @@ -111,18 +113,4 @@ public interface LinkService { | ... | @@ -111,18 +113,4 @@ public interface LinkService { |
111 | */ | 113 | */ |
112 | Link getLink(ConnectPoint src, ConnectPoint dst); | 114 | Link getLink(ConnectPoint src, ConnectPoint dst); |
113 | 115 | ||
114 | - /** | ||
115 | - * Adds the specified link listener. | ||
116 | - * | ||
117 | - * @param listener link listener | ||
118 | - */ | ||
119 | - void addListener(LinkListener listener); | ||
120 | - | ||
121 | - /** | ||
122 | - * Removes the specified link listener. | ||
123 | - * | ||
124 | - * @param listener link listener | ||
125 | - */ | ||
126 | - void removeListener(LinkListener listener); | ||
127 | - | ||
128 | } | 116 | } | ... | ... |
core/api/src/main/java/org/onosproject/net/provider/AbstractListenerProviderRegistry.java
0 → 100644
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | +package org.onosproject.net.provider; | ||
17 | + | ||
18 | +import org.apache.felix.scr.annotations.Component; | ||
19 | +import org.apache.felix.scr.annotations.Reference; | ||
20 | +import org.apache.felix.scr.annotations.ReferenceCardinality; | ||
21 | +import org.onosproject.event.Event; | ||
22 | +import org.onosproject.event.EventDeliveryService; | ||
23 | +import org.onosproject.event.EventListener; | ||
24 | +import org.onosproject.event.ListenerRegistry; | ||
25 | +import org.onosproject.event.ListenerService; | ||
26 | + | ||
27 | +/** | ||
28 | + * Basis for components which need to export listener mechanism. | ||
29 | + */ | ||
30 | +@Component(componentAbstract = true) | ||
31 | +public abstract class AbstractListenerProviderRegistry<E extends Event, L extends EventListener<E>, | ||
32 | + P extends Provider, S extends ProviderService<P>> | ||
33 | + extends AbstractProviderRegistry<P, S> implements ListenerService<E, L> { | ||
34 | + | ||
35 | + // If only Java supported mixins... | ||
36 | + | ||
37 | + protected final ListenerRegistry<E, L> listenerRegistry = new ListenerRegistry<>(); | ||
38 | + | ||
39 | + @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
40 | + protected EventDeliveryService eventDispatcher; | ||
41 | + | ||
42 | + @Override | ||
43 | + public void addListener(L listener) { | ||
44 | + listenerRegistry.addListener(listener); | ||
45 | + } | ||
46 | + | ||
47 | + @Override | ||
48 | + public void removeListener(L listener) { | ||
49 | + listenerRegistry.removeListener(listener); | ||
50 | + } | ||
51 | + | ||
52 | + | ||
53 | + /** | ||
54 | + * Safely posts the specified event to the local event dispatcher. | ||
55 | + * If there is no event dispatcher or if the event is null, this method | ||
56 | + * is a noop. | ||
57 | + * | ||
58 | + * @param event event to be posted; may be null | ||
59 | + */ | ||
60 | + protected void post(E event) { | ||
61 | + if (event != null && eventDispatcher != null) { | ||
62 | + eventDispatcher.post(event); | ||
63 | + } | ||
64 | + } | ||
65 | + | ||
66 | +} |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.resource.link; | 16 | package org.onosproject.net.resource.link; |
17 | 17 | ||
18 | +import org.onosproject.event.ListenerService; | ||
18 | import org.onosproject.net.Link; | 19 | import org.onosproject.net.Link; |
19 | import org.onosproject.net.intent.IntentId; | 20 | import org.onosproject.net.intent.IntentId; |
20 | import org.onosproject.net.resource.ResourceRequest; | 21 | import org.onosproject.net.resource.ResourceRequest; |
... | @@ -22,7 +23,8 @@ import org.onosproject.net.resource.ResourceRequest; | ... | @@ -22,7 +23,8 @@ import org.onosproject.net.resource.ResourceRequest; |
22 | /** | 23 | /** |
23 | * Service for providing link resource allocation. | 24 | * Service for providing link resource allocation. |
24 | */ | 25 | */ |
25 | -public interface LinkResourceService { | 26 | +public interface LinkResourceService |
27 | + extends ListenerService<LinkResourceEvent, LinkResourceListener> { | ||
26 | 28 | ||
27 | /** | 29 | /** |
28 | * Requests resources. | 30 | * Requests resources. |
... | @@ -88,20 +90,6 @@ public interface LinkResourceService { | ... | @@ -88,20 +90,6 @@ public interface LinkResourceService { |
88 | * @return available resources for the target link | 90 | * @return available resources for the target link |
89 | */ | 91 | */ |
90 | Iterable<ResourceRequest> getAvailableResources(Link link, | 92 | Iterable<ResourceRequest> getAvailableResources(Link link, |
91 | - LinkResourceAllocations allocations); | 93 | + LinkResourceAllocations allocations); |
92 | - | ||
93 | - /** | ||
94 | - * Adds a listener for resource related events. | ||
95 | - * | ||
96 | - * @param listener listener to add | ||
97 | - */ | ||
98 | - void addListener(LinkResourceListener listener); | ||
99 | - | ||
100 | - /** | ||
101 | - * Removes a listener for resource related events. | ||
102 | - * | ||
103 | - * @param listener listener to remove. | ||
104 | - */ | ||
105 | - void removeListener(LinkResourceListener listener); | ||
106 | 94 | ||
107 | } | 95 | } | ... | ... |
... | @@ -15,6 +15,7 @@ | ... | @@ -15,6 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.topology; | 16 | package org.onosproject.net.topology; |
17 | 17 | ||
18 | +import org.onosproject.event.ListenerService; | ||
18 | import org.onosproject.net.ConnectPoint; | 19 | import org.onosproject.net.ConnectPoint; |
19 | import org.onosproject.net.DeviceId; | 20 | import org.onosproject.net.DeviceId; |
20 | import org.onosproject.net.Link; | 21 | import org.onosproject.net.Link; |
... | @@ -25,7 +26,8 @@ import java.util.Set; | ... | @@ -25,7 +26,8 @@ import java.util.Set; |
25 | /** | 26 | /** |
26 | * Service for providing network topology information. | 27 | * Service for providing network topology information. |
27 | */ | 28 | */ |
28 | -public interface TopologyService { | 29 | +public interface TopologyService |
30 | + extends ListenerService<TopologyEvent, TopologyListener> { | ||
29 | 31 | ||
30 | /** | 32 | /** |
31 | * Returns the current topology descriptor. | 33 | * Returns the current topology descriptor. |
... | @@ -130,18 +132,4 @@ public interface TopologyService { | ... | @@ -130,18 +132,4 @@ public interface TopologyService { |
130 | */ | 132 | */ |
131 | boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint); | 133 | boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint); |
132 | 134 | ||
133 | - /** | ||
134 | - * Adds the specified topology listener. | ||
135 | - * | ||
136 | - * @param listener topology listener | ||
137 | - */ | ||
138 | - void addListener(TopologyListener listener); | ||
139 | - | ||
140 | - /** | ||
141 | - * Removes the specified topology listener. | ||
142 | - * | ||
143 | - * @param listener topology listener | ||
144 | - */ | ||
145 | - void removeListener(TopologyListener listener); | ||
146 | - | ||
147 | } | 135 | } | ... | ... |
... | @@ -15,22 +15,24 @@ | ... | @@ -15,22 +15,24 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net; | 16 | package org.onosproject.net; |
17 | 17 | ||
18 | +import org.onlab.packet.ChassisId; | ||
19 | +import org.onlab.packet.IpAddress; | ||
18 | import org.onosproject.TestApplicationId; | 20 | import org.onosproject.TestApplicationId; |
19 | import org.onosproject.core.ApplicationId; | 21 | import org.onosproject.core.ApplicationId; |
22 | +import org.onosproject.event.EventDeliveryService; | ||
20 | import org.onosproject.net.provider.ProviderId; | 23 | import org.onosproject.net.provider.ProviderId; |
21 | -import org.onlab.packet.ChassisId; | ||
22 | -import org.onlab.packet.IpAddress; | ||
23 | 24 | ||
25 | +import java.lang.reflect.Field; | ||
24 | import java.util.ArrayList; | 26 | import java.util.ArrayList; |
25 | import java.util.HashSet; | 27 | import java.util.HashSet; |
26 | import java.util.List; | 28 | import java.util.List; |
27 | 29 | ||
28 | import static org.junit.Assert.assertEquals; | 30 | import static org.junit.Assert.assertEquals; |
31 | +import static org.onlab.packet.MacAddress.valueOf; | ||
32 | +import static org.onlab.packet.VlanId.vlanId; | ||
29 | import static org.onosproject.net.DeviceId.deviceId; | 33 | import static org.onosproject.net.DeviceId.deviceId; |
30 | import static org.onosproject.net.HostId.hostId; | 34 | import static org.onosproject.net.HostId.hostId; |
31 | import static org.onosproject.net.PortNumber.portNumber; | 35 | import static org.onosproject.net.PortNumber.portNumber; |
32 | -import static org.onlab.packet.MacAddress.valueOf; | ||
33 | -import static org.onlab.packet.VlanId.vlanId; | ||
34 | 36 | ||
35 | /** | 37 | /** |
36 | * Miscellaneous tools for testing core related to the network model. | 38 | * Miscellaneous tools for testing core related to the network model. |
... | @@ -98,8 +100,8 @@ public final class NetTestTools { | ... | @@ -98,8 +100,8 @@ public final class NetTestTools { |
98 | * Verifies that Annotations created by merging {@code annotations} is | 100 | * Verifies that Annotations created by merging {@code annotations} is |
99 | * equal to actual Annotations. | 101 | * equal to actual Annotations. |
100 | * | 102 | * |
101 | - * @param actual Annotations to check | 103 | + * @param actual annotations to check |
102 | - * @param annotations | 104 | + * @param annotations expected annotations |
103 | */ | 105 | */ |
104 | public static void assertAnnotationsEquals(Annotations actual, SparseAnnotations... annotations) { | 106 | public static void assertAnnotationsEquals(Annotations actual, SparseAnnotations... annotations) { |
105 | DefaultAnnotations expected = DefaultAnnotations.builder().build(); | 107 | DefaultAnnotations expected = DefaultAnnotations.builder().build(); |
... | @@ -112,4 +114,25 @@ public final class NetTestTools { | ... | @@ -112,4 +114,25 @@ public final class NetTestTools { |
112 | } | 114 | } |
113 | } | 115 | } |
114 | 116 | ||
117 | + /** | ||
118 | + * Injects the given event delivery service into the specified manager | ||
119 | + * component. | ||
120 | + * | ||
121 | + * @param manager manager component | ||
122 | + * @param svc service reference to be injected | ||
123 | + */ | ||
124 | + public static void injectEventDispatcher(Object manager, EventDeliveryService svc) { | ||
125 | + Class mc = manager.getClass(); | ||
126 | + for (Field f : mc.getSuperclass().getDeclaredFields()) { | ||
127 | + if (f.getType().equals(EventDeliveryService.class)) { | ||
128 | + try { | ||
129 | + f.setAccessible(true); | ||
130 | + f.set(manager, svc); | ||
131 | + } catch (IllegalAccessException e) { | ||
132 | + throw new IllegalArgumentException("Unable to inject reference", e); | ||
133 | + } | ||
134 | + } | ||
135 | + } | ||
136 | + } | ||
137 | + | ||
115 | } | 138 | } | ... | ... |
... | @@ -49,25 +49,6 @@ | ... | @@ -49,25 +49,6 @@ |
49 | <artifactId>easymock</artifactId> | 49 | <artifactId>easymock</artifactId> |
50 | <scope>test</scope> | 50 | <scope>test</scope> |
51 | </dependency> | 51 | </dependency> |
52 | - | ||
53 | - <dependency> | ||
54 | - <groupId>org.osgi</groupId> | ||
55 | - <artifactId>org.osgi.compendium</artifactId> | ||
56 | - </dependency> | ||
57 | - | ||
58 | - <dependency> | ||
59 | - <groupId>org.apache.felix</groupId> | ||
60 | - <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
61 | - </dependency> | ||
62 | </dependencies> | 52 | </dependencies> |
63 | 53 | ||
64 | - <build> | ||
65 | - <plugins> | ||
66 | - <plugin> | ||
67 | - <groupId>org.apache.felix</groupId> | ||
68 | - <artifactId>maven-scr-plugin</artifactId> | ||
69 | - </plugin> | ||
70 | - </plugins> | ||
71 | - </build> | ||
72 | - | ||
73 | </project> | 54 | </project> | ... | ... |
1 | +/* | ||
2 | + * Copyright 2015 Open Networking Laboratory | ||
3 | + * | ||
4 | + * Licensed under the Apache License, Version 2.0 (the "License"); | ||
5 | + * you may not use this file except in compliance with the License. | ||
6 | + * You may obtain a copy of the License at | ||
7 | + * | ||
8 | + * http://www.apache.org/licenses/LICENSE-2.0 | ||
9 | + * | ||
10 | + * Unless required by applicable law or agreed to in writing, software | ||
11 | + * distributed under the License is distributed on an "AS IS" BASIS, | ||
12 | + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
13 | + * See the License for the specific language governing permissions and | ||
14 | + * limitations under the License. | ||
15 | + */ | ||
16 | + | ||
17 | +/** | ||
18 | + * Miscellaneous common facilities used for construction of various core and | ||
19 | + * app subsystems. | ||
20 | + */ | ||
21 | +package org.onosproject.common; | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
... | @@ -78,11 +78,6 @@ | ... | @@ -78,11 +78,6 @@ |
78 | </dependency> | 78 | </dependency> |
79 | 79 | ||
80 | <dependency> | 80 | <dependency> |
81 | - <groupId>org.apache.felix</groupId> | ||
82 | - <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
83 | - </dependency> | ||
84 | - | ||
85 | - <dependency> | ||
86 | <groupId>org.apache.karaf.features</groupId> | 81 | <groupId>org.apache.karaf.features</groupId> |
87 | <artifactId>org.apache.karaf.features.core</artifactId> | 82 | <artifactId>org.apache.karaf.features.core</artifactId> |
88 | </dependency> | 83 | </dependency> |
... | @@ -93,13 +88,4 @@ | ... | @@ -93,13 +88,4 @@ |
93 | </dependency> | 88 | </dependency> |
94 | </dependencies> | 89 | </dependencies> |
95 | 90 | ||
96 | - <build> | ||
97 | - <plugins> | ||
98 | - <plugin> | ||
99 | - <groupId>org.apache.felix</groupId> | ||
100 | - <artifactId>maven-scr-plugin</artifactId> | ||
101 | - </plugin> | ||
102 | - </plugins> | ||
103 | - </build> | ||
104 | - | ||
105 | </project> | 91 | </project> | ... | ... |
... | @@ -30,11 +30,10 @@ import org.onosproject.app.ApplicationService; | ... | @@ -30,11 +30,10 @@ import org.onosproject.app.ApplicationService; |
30 | import org.onosproject.app.ApplicationState; | 30 | import org.onosproject.app.ApplicationState; |
31 | import org.onosproject.app.ApplicationStore; | 31 | import org.onosproject.app.ApplicationStore; |
32 | import org.onosproject.app.ApplicationStoreDelegate; | 32 | import org.onosproject.app.ApplicationStoreDelegate; |
33 | +import org.onosproject.event.AbstractListenerManager; | ||
33 | import org.onosproject.core.Application; | 34 | import org.onosproject.core.Application; |
34 | import org.onosproject.core.ApplicationId; | 35 | import org.onosproject.core.ApplicationId; |
35 | import org.onosproject.core.Permission; | 36 | import org.onosproject.core.Permission; |
36 | -import org.onosproject.event.ListenerRegistry; | ||
37 | -import org.onosproject.event.EventDeliveryService; | ||
38 | import org.slf4j.Logger; | 37 | import org.slf4j.Logger; |
39 | 38 | ||
40 | import java.io.InputStream; | 39 | import java.io.InputStream; |
... | @@ -50,15 +49,14 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -50,15 +49,14 @@ import static org.slf4j.LoggerFactory.getLogger; |
50 | */ | 49 | */ |
51 | @Component(immediate = true) | 50 | @Component(immediate = true) |
52 | @Service | 51 | @Service |
53 | -public class ApplicationManager implements ApplicationService, ApplicationAdminService { | 52 | +public class ApplicationManager |
53 | + extends AbstractListenerManager<ApplicationEvent, ApplicationListener> | ||
54 | + implements ApplicationService, ApplicationAdminService { | ||
54 | 55 | ||
55 | private final Logger log = getLogger(getClass()); | 56 | private final Logger log = getLogger(getClass()); |
56 | 57 | ||
57 | private static final String APP_ID_NULL = "Application ID cannot be null"; | 58 | private static final String APP_ID_NULL = "Application ID cannot be null"; |
58 | 59 | ||
59 | - protected final ListenerRegistry<ApplicationEvent, ApplicationListener> | ||
60 | - listenerRegistry = new ListenerRegistry<>(); | ||
61 | - | ||
62 | private final ApplicationStoreDelegate delegate = new InternalStoreDelegate(); | 60 | private final ApplicationStoreDelegate delegate = new InternalStoreDelegate(); |
63 | 61 | ||
64 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -67,9 +65,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -67,9 +65,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
67 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 65 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
68 | protected FeaturesService featuresService; | 66 | protected FeaturesService featuresService; |
69 | 67 | ||
70 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
71 | - protected EventDeliveryService eventDispatcher; | ||
72 | - | ||
73 | private boolean initializing; | 68 | private boolean initializing; |
74 | 69 | ||
75 | @Activate | 70 | @Activate |
... | @@ -99,7 +94,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -99,7 +94,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
99 | @Override | 94 | @Override |
100 | public ApplicationId getId(String name) { | 95 | public ApplicationId getId(String name) { |
101 | checkPermission(Permission.APP_READ); | 96 | checkPermission(Permission.APP_READ); |
102 | - | ||
103 | checkNotNull(name, "Name cannot be null"); | 97 | checkNotNull(name, "Name cannot be null"); |
104 | return store.getId(name); | 98 | return store.getId(name); |
105 | } | 99 | } |
... | @@ -160,18 +154,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -160,18 +154,6 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
160 | store.setPermissions(appId, permissions); | 154 | store.setPermissions(appId, permissions); |
161 | } | 155 | } |
162 | 156 | ||
163 | - @Override | ||
164 | - public void addListener(ApplicationListener listener) { | ||
165 | - checkPermission(Permission.APP_EVENT); | ||
166 | - listenerRegistry.addListener(listener); | ||
167 | - } | ||
168 | - | ||
169 | - @Override | ||
170 | - public void removeListener(ApplicationListener listener) { | ||
171 | - checkPermission(Permission.APP_EVENT); | ||
172 | - listenerRegistry.removeListener(listener); | ||
173 | - } | ||
174 | - | ||
175 | private class InternalStoreDelegate implements ApplicationStoreDelegate { | 157 | private class InternalStoreDelegate implements ApplicationStoreDelegate { |
176 | @Override | 158 | @Override |
177 | public void notify(ApplicationEvent event) { | 159 | public void notify(ApplicationEvent event) { |
... | @@ -199,7 +181,7 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS | ... | @@ -199,7 +181,7 @@ public class ApplicationManager implements ApplicationService, ApplicationAdminS |
199 | } | 181 | } |
200 | 182 | ||
201 | } | 183 | } |
202 | - eventDispatcher.post(event); | 184 | + post(event); |
203 | 185 | ||
204 | } catch (Exception e) { | 186 | } catch (Exception e) { |
205 | log.warn("Unable to perform operation on application " + app.id().name(), e); | 187 | log.warn("Unable to perform operation on application " + app.id().name(), e); | ... | ... |
... | @@ -33,17 +33,16 @@ import org.onosproject.cluster.ClusterStore; | ... | @@ -33,17 +33,16 @@ import org.onosproject.cluster.ClusterStore; |
33 | import org.onosproject.cluster.ClusterStoreDelegate; | 33 | import org.onosproject.cluster.ClusterStoreDelegate; |
34 | import org.onosproject.cluster.ControllerNode; | 34 | import org.onosproject.cluster.ControllerNode; |
35 | import org.onosproject.cluster.NodeId; | 35 | import org.onosproject.cluster.NodeId; |
36 | +import org.onosproject.event.AbstractListenerManager; | ||
36 | import org.onosproject.core.Permission; | 37 | import org.onosproject.core.Permission; |
37 | -import org.onosproject.event.ListenerRegistry; | ||
38 | -import org.onosproject.event.EventDeliveryService; | ||
39 | import org.slf4j.Logger; | 38 | import org.slf4j.Logger; |
40 | 39 | ||
41 | import java.util.Set; | 40 | import java.util.Set; |
42 | 41 | ||
43 | import static com.google.common.base.Preconditions.checkArgument; | 42 | import static com.google.common.base.Preconditions.checkArgument; |
44 | import static com.google.common.base.Preconditions.checkNotNull; | 43 | import static com.google.common.base.Preconditions.checkNotNull; |
45 | -import static org.slf4j.LoggerFactory.getLogger; | ||
46 | import static org.onosproject.security.AppGuard.checkPermission; | 44 | import static org.onosproject.security.AppGuard.checkPermission; |
45 | +import static org.slf4j.LoggerFactory.getLogger; | ||
47 | 46 | ||
48 | 47 | ||
49 | /** | 48 | /** |
... | @@ -51,16 +50,15 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -51,16 +50,15 @@ import static org.onosproject.security.AppGuard.checkPermission; |
51 | */ | 50 | */ |
52 | @Component(immediate = true) | 51 | @Component(immediate = true) |
53 | @Service | 52 | @Service |
54 | -public class ClusterManager implements ClusterService, ClusterAdminService { | 53 | +public class ClusterManager |
54 | + extends AbstractListenerManager<ClusterEvent, ClusterEventListener> | ||
55 | + implements ClusterService, ClusterAdminService { | ||
55 | 56 | ||
56 | public static final String INSTANCE_ID_NULL = "Instance ID cannot be null"; | 57 | public static final String INSTANCE_ID_NULL = "Instance ID cannot be null"; |
57 | private final Logger log = getLogger(getClass()); | 58 | private final Logger log = getLogger(getClass()); |
58 | 59 | ||
59 | private ClusterStoreDelegate delegate = new InternalStoreDelegate(); | 60 | private ClusterStoreDelegate delegate = new InternalStoreDelegate(); |
60 | 61 | ||
61 | - protected final ListenerRegistry<ClusterEvent, ClusterEventListener> | ||
62 | - listenerRegistry = new ListenerRegistry<>(); | ||
63 | - | ||
64 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
65 | protected ClusterDefinitionService clusterDefinitionService; | 63 | protected ClusterDefinitionService clusterDefinitionService; |
66 | 64 | ||
... | @@ -68,9 +66,6 @@ public class ClusterManager implements ClusterService, ClusterAdminService { | ... | @@ -68,9 +66,6 @@ public class ClusterManager implements ClusterService, ClusterAdminService { |
68 | protected ClusterStore store; | 66 | protected ClusterStore store; |
69 | 67 | ||
70 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 68 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
71 | - protected EventDeliveryService eventDispatcher; | ||
72 | - | ||
73 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
74 | protected SystemService systemService; | 69 | protected SystemService systemService; |
75 | 70 | ||
76 | @Activate | 71 | @Activate |
... | @@ -150,24 +145,11 @@ public class ClusterManager implements ClusterService, ClusterAdminService { | ... | @@ -150,24 +145,11 @@ public class ClusterManager implements ClusterService, ClusterAdminService { |
150 | store.removeNode(nodeId); | 145 | store.removeNode(nodeId); |
151 | } | 146 | } |
152 | 147 | ||
153 | - @Override | ||
154 | - public void addListener(ClusterEventListener listener) { | ||
155 | - checkPermission(Permission.CLUSTER_EVENT); | ||
156 | - listenerRegistry.addListener(listener); | ||
157 | - } | ||
158 | - | ||
159 | - @Override | ||
160 | - public void removeListener(ClusterEventListener listener) { | ||
161 | - checkPermission(Permission.CLUSTER_EVENT); | ||
162 | - listenerRegistry.removeListener(listener); | ||
163 | - } | ||
164 | - | ||
165 | // Store delegate to re-post events emitted from the store. | 148 | // Store delegate to re-post events emitted from the store. |
166 | private class InternalStoreDelegate implements ClusterStoreDelegate { | 149 | private class InternalStoreDelegate implements ClusterStoreDelegate { |
167 | @Override | 150 | @Override |
168 | public void notify(ClusterEvent event) { | 151 | public void notify(ClusterEvent event) { |
169 | - checkNotNull(event, "Event cannot be null"); | 152 | + post(event); |
170 | - eventDispatcher.post(event); | ||
171 | } | 153 | } |
172 | } | 154 | } |
173 | } | 155 | } | ... | ... |
... | @@ -19,7 +19,6 @@ import com.codahale.metrics.Timer; | ... | @@ -19,7 +19,6 @@ import com.codahale.metrics.Timer; |
19 | import com.codahale.metrics.Timer.Context; | 19 | import com.codahale.metrics.Timer.Context; |
20 | import com.google.common.collect.Lists; | 20 | import com.google.common.collect.Lists; |
21 | import com.google.common.util.concurrent.Futures; | 21 | import com.google.common.util.concurrent.Futures; |
22 | - | ||
23 | import org.apache.felix.scr.annotations.Activate; | 22 | import org.apache.felix.scr.annotations.Activate; |
24 | import org.apache.felix.scr.annotations.Component; | 23 | import org.apache.felix.scr.annotations.Component; |
25 | import org.apache.felix.scr.annotations.Deactivate; | 24 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -31,10 +30,9 @@ import org.onosproject.cluster.ClusterService; | ... | @@ -31,10 +30,9 @@ import org.onosproject.cluster.ClusterService; |
31 | import org.onosproject.cluster.ControllerNode; | 30 | import org.onosproject.cluster.ControllerNode; |
32 | import org.onosproject.cluster.NodeId; | 31 | import org.onosproject.cluster.NodeId; |
33 | import org.onosproject.cluster.RoleInfo; | 32 | import org.onosproject.cluster.RoleInfo; |
33 | +import org.onosproject.event.AbstractListenerManager; | ||
34 | import org.onosproject.core.MetricsHelper; | 34 | import org.onosproject.core.MetricsHelper; |
35 | import org.onosproject.core.Permission; | 35 | import org.onosproject.core.Permission; |
36 | -import org.onosproject.event.ListenerRegistry; | ||
37 | -import org.onosproject.event.EventDeliveryService; | ||
38 | import org.onosproject.mastership.MastershipAdminService; | 36 | import org.onosproject.mastership.MastershipAdminService; |
39 | import org.onosproject.mastership.MastershipEvent; | 37 | import org.onosproject.mastership.MastershipEvent; |
40 | import org.onosproject.mastership.MastershipListener; | 38 | import org.onosproject.mastership.MastershipListener; |
... | @@ -62,13 +60,14 @@ import static org.onlab.metrics.MetricsUtil.startTimer; | ... | @@ -62,13 +60,14 @@ import static org.onlab.metrics.MetricsUtil.startTimer; |
62 | import static org.onlab.metrics.MetricsUtil.stopTimer; | 60 | import static org.onlab.metrics.MetricsUtil.stopTimer; |
63 | import static org.onosproject.cluster.ControllerNode.State.ACTIVE; | 61 | import static org.onosproject.cluster.ControllerNode.State.ACTIVE; |
64 | import static org.onosproject.net.MastershipRole.MASTER; | 62 | import static org.onosproject.net.MastershipRole.MASTER; |
65 | -import static org.slf4j.LoggerFactory.getLogger; | ||
66 | import static org.onosproject.security.AppGuard.checkPermission; | 63 | import static org.onosproject.security.AppGuard.checkPermission; |
64 | +import static org.slf4j.LoggerFactory.getLogger; | ||
67 | 65 | ||
68 | 66 | ||
69 | @Component(immediate = true) | 67 | @Component(immediate = true) |
70 | @Service | 68 | @Service |
71 | public class MastershipManager | 69 | public class MastershipManager |
70 | + extends AbstractListenerManager<MastershipEvent, MastershipListener> | ||
72 | implements MastershipService, MastershipAdminService, MastershipTermService, | 71 | implements MastershipService, MastershipAdminService, MastershipTermService, |
73 | MetricsHelper { | 72 | MetricsHelper { |
74 | 73 | ||
... | @@ -78,18 +77,12 @@ public class MastershipManager | ... | @@ -78,18 +77,12 @@ public class MastershipManager |
78 | 77 | ||
79 | private final Logger log = getLogger(getClass()); | 78 | private final Logger log = getLogger(getClass()); |
80 | 79 | ||
81 | - protected final ListenerRegistry<MastershipEvent, MastershipListener> | ||
82 | - listenerRegistry = new ListenerRegistry<>(); | ||
83 | - | ||
84 | private final MastershipStoreDelegate delegate = new InternalDelegate(); | 80 | private final MastershipStoreDelegate delegate = new InternalDelegate(); |
85 | 81 | ||
86 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 82 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
87 | protected MastershipStore store; | 83 | protected MastershipStore store; |
88 | 84 | ||
89 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 85 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
90 | - protected EventDeliveryService eventDispatcher; | ||
91 | - | ||
92 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
93 | protected ClusterService clusterService; | 86 | protected ClusterService clusterService; |
94 | 87 | ||
95 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 88 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -197,22 +190,6 @@ public class MastershipManager | ... | @@ -197,22 +190,6 @@ public class MastershipManager |
197 | } | 190 | } |
198 | 191 | ||
199 | @Override | 192 | @Override |
200 | - public void addListener(MastershipListener listener) { | ||
201 | - checkPermission(Permission.CLUSTER_EVENT); | ||
202 | - | ||
203 | - checkNotNull(listener); | ||
204 | - listenerRegistry.addListener(listener); | ||
205 | - } | ||
206 | - | ||
207 | - @Override | ||
208 | - public void removeListener(MastershipListener listener) { | ||
209 | - checkPermission(Permission.CLUSTER_EVENT); | ||
210 | - | ||
211 | - checkNotNull(listener); | ||
212 | - listenerRegistry.removeListener(listener); | ||
213 | - } | ||
214 | - | ||
215 | - @Override | ||
216 | public MetricsService metricsService() { | 193 | public MetricsService metricsService() { |
217 | return metricsService; | 194 | return metricsService; |
218 | } | 195 | } |
... | @@ -294,21 +271,11 @@ public class MastershipManager | ... | @@ -294,21 +271,11 @@ public class MastershipManager |
294 | } | 271 | } |
295 | 272 | ||
296 | 273 | ||
297 | - // Posts the specified event to the local event dispatcher. | ||
298 | - private void post(MastershipEvent event) { | ||
299 | - if (event != null && eventDispatcher != null) { | ||
300 | - eventDispatcher.post(event); | ||
301 | - } | ||
302 | - } | ||
303 | - | ||
304 | public class InternalDelegate implements MastershipStoreDelegate { | 274 | public class InternalDelegate implements MastershipStoreDelegate { |
305 | - | ||
306 | @Override | 275 | @Override |
307 | public void notify(MastershipEvent event) { | 276 | public void notify(MastershipEvent event) { |
308 | - log.trace("dispatching mastership event {}", event); | 277 | + post(event); |
309 | - eventDispatcher.post(event); | ||
310 | } | 278 | } |
311 | - | ||
312 | } | 279 | } |
313 | 280 | ||
314 | } | 281 | } | ... | ... |
... | @@ -15,26 +15,7 @@ | ... | @@ -15,26 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.device.impl; | 16 | package org.onosproject.net.device.impl; |
17 | 17 | ||
18 | -import static com.google.common.base.Preconditions.checkNotNull; | 18 | +import com.google.common.collect.Lists; |
19 | -import static com.google.common.base.Preconditions.checkState; | ||
20 | -import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ||
21 | -import static org.onlab.util.Tools.groupedThreads; | ||
22 | -import static org.onosproject.net.MastershipRole.MASTER; | ||
23 | -import static org.onosproject.net.MastershipRole.NONE; | ||
24 | -import static org.onosproject.net.MastershipRole.STANDBY; | ||
25 | -import static org.onosproject.security.AppGuard.checkPermission; | ||
26 | -import static org.slf4j.LoggerFactory.getLogger; | ||
27 | - | ||
28 | -import java.util.Collection; | ||
29 | -import java.util.HashSet; | ||
30 | -import java.util.List; | ||
31 | -import java.util.Objects; | ||
32 | -import java.util.Set; | ||
33 | -import java.util.concurrent.CompletableFuture; | ||
34 | -import java.util.concurrent.ExecutionException; | ||
35 | -import java.util.concurrent.ScheduledExecutorService; | ||
36 | -import java.util.concurrent.TimeUnit; | ||
37 | - | ||
38 | import org.apache.felix.scr.annotations.Activate; | 19 | import org.apache.felix.scr.annotations.Activate; |
39 | import org.apache.felix.scr.annotations.Component; | 20 | import org.apache.felix.scr.annotations.Component; |
40 | import org.apache.felix.scr.annotations.Deactivate; | 21 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -43,9 +24,8 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -43,9 +24,8 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
43 | import org.apache.felix.scr.annotations.Service; | 24 | import org.apache.felix.scr.annotations.Service; |
44 | import org.onosproject.cluster.ClusterService; | 25 | import org.onosproject.cluster.ClusterService; |
45 | import org.onosproject.cluster.NodeId; | 26 | import org.onosproject.cluster.NodeId; |
27 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
46 | import org.onosproject.core.Permission; | 28 | import org.onosproject.core.Permission; |
47 | -import org.onosproject.event.EventDeliveryService; | ||
48 | -import org.onosproject.event.ListenerRegistry; | ||
49 | import org.onosproject.incubator.net.config.NetworkConfigEvent; | 29 | import org.onosproject.incubator.net.config.NetworkConfigEvent; |
50 | import org.onosproject.incubator.net.config.NetworkConfigListener; | 30 | import org.onosproject.incubator.net.config.NetworkConfigListener; |
51 | import org.onosproject.incubator.net.config.NetworkConfigService; | 31 | import org.onosproject.incubator.net.config.NetworkConfigService; |
... | @@ -78,11 +58,26 @@ import org.onosproject.net.device.DeviceStore; | ... | @@ -78,11 +58,26 @@ import org.onosproject.net.device.DeviceStore; |
78 | import org.onosproject.net.device.DeviceStoreDelegate; | 58 | import org.onosproject.net.device.DeviceStoreDelegate; |
79 | import org.onosproject.net.device.PortDescription; | 59 | import org.onosproject.net.device.PortDescription; |
80 | import org.onosproject.net.device.PortStatistics; | 60 | import org.onosproject.net.device.PortStatistics; |
81 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
82 | import org.onosproject.net.provider.AbstractProviderService; | 61 | import org.onosproject.net.provider.AbstractProviderService; |
83 | import org.slf4j.Logger; | 62 | import org.slf4j.Logger; |
84 | 63 | ||
85 | -import com.google.common.collect.Lists; | 64 | +import java.util.Collection; |
65 | +import java.util.HashSet; | ||
66 | +import java.util.List; | ||
67 | +import java.util.Objects; | ||
68 | +import java.util.Set; | ||
69 | +import java.util.concurrent.CompletableFuture; | ||
70 | +import java.util.concurrent.ExecutionException; | ||
71 | +import java.util.concurrent.ScheduledExecutorService; | ||
72 | +import java.util.concurrent.TimeUnit; | ||
73 | + | ||
74 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
75 | +import static com.google.common.base.Preconditions.checkState; | ||
76 | +import static java.util.concurrent.Executors.newSingleThreadScheduledExecutor; | ||
77 | +import static org.onlab.util.Tools.groupedThreads; | ||
78 | +import static org.onosproject.net.MastershipRole.*; | ||
79 | +import static org.onosproject.security.AppGuard.checkPermission; | ||
80 | +import static org.slf4j.LoggerFactory.getLogger; | ||
86 | 81 | ||
87 | 82 | ||
88 | /** | 83 | /** |
... | @@ -91,7 +86,7 @@ import com.google.common.collect.Lists; | ... | @@ -91,7 +86,7 @@ import com.google.common.collect.Lists; |
91 | @Component(immediate = true) | 86 | @Component(immediate = true) |
92 | @Service | 87 | @Service |
93 | public class DeviceManager | 88 | public class DeviceManager |
94 | - extends AbstractProviderRegistry<DeviceProvider, DeviceProviderService> | 89 | + extends AbstractListenerProviderRegistry<DeviceEvent, DeviceListener, DeviceProvider, DeviceProviderService> |
95 | implements DeviceService, DeviceAdminService, DeviceProviderRegistry { | 90 | implements DeviceService, DeviceAdminService, DeviceProviderRegistry { |
96 | 91 | ||
97 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; | 92 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; |
... | @@ -101,9 +96,6 @@ public class DeviceManager | ... | @@ -101,9 +96,6 @@ public class DeviceManager |
101 | 96 | ||
102 | private final Logger log = getLogger(getClass()); | 97 | private final Logger log = getLogger(getClass()); |
103 | 98 | ||
104 | - protected final ListenerRegistry<DeviceEvent, DeviceListener> listenerRegistry = | ||
105 | - new ListenerRegistry<>(); | ||
106 | - | ||
107 | private final DeviceStoreDelegate delegate = new InternalStoreDelegate(); | 99 | private final DeviceStoreDelegate delegate = new InternalStoreDelegate(); |
108 | 100 | ||
109 | private final MastershipListener mastershipListener = new InternalMastershipListener(); | 101 | private final MastershipListener mastershipListener = new InternalMastershipListener(); |
... | @@ -117,9 +109,6 @@ public class DeviceManager | ... | @@ -117,9 +109,6 @@ public class DeviceManager |
117 | protected DeviceStore store; | 109 | protected DeviceStore store; |
118 | 110 | ||
119 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 111 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
120 | - protected EventDeliveryService eventDispatcher; | ||
121 | - | ||
122 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
123 | protected ClusterService clusterService; | 112 | protected ClusterService clusterService; |
124 | 113 | ||
125 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 114 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -135,7 +124,6 @@ public class DeviceManager | ... | @@ -135,7 +124,6 @@ public class DeviceManager |
135 | protected NetworkConfigService networkConfigService; | 124 | protected NetworkConfigService networkConfigService; |
136 | 125 | ||
137 | 126 | ||
138 | - | ||
139 | @Activate | 127 | @Activate |
140 | public void activate() { | 128 | public void activate() { |
141 | backgroundService = newSingleThreadScheduledExecutor(groupedThreads("onos/device", "manager-background")); | 129 | backgroundService = newSingleThreadScheduledExecutor(groupedThreads("onos/device", "manager-background")); |
... | @@ -146,15 +134,11 @@ public class DeviceManager | ... | @@ -146,15 +134,11 @@ public class DeviceManager |
146 | mastershipService.addListener(mastershipListener); | 134 | mastershipService.addListener(mastershipListener); |
147 | networkConfigService.addListener(networkConfigListener); | 135 | networkConfigService.addListener(networkConfigListener); |
148 | 136 | ||
149 | - backgroundService.scheduleWithFixedDelay(new Runnable() { | 137 | + backgroundService.scheduleWithFixedDelay(() -> { |
150 | - | 138 | + try { |
151 | - @Override | 139 | + mastershipCheck(); |
152 | - public void run() { | 140 | + } catch (Exception e) { |
153 | - try { | 141 | + log.error("Exception thrown during integrity check", e); |
154 | - mastershipCheck(); | ||
155 | - } catch (Exception e) { | ||
156 | - log.error("Exception thrown during integrity check", e); | ||
157 | - } | ||
158 | } | 142 | } |
159 | }, 1, 1, TimeUnit.MINUTES); | 143 | }, 1, 1, TimeUnit.MINUTES); |
160 | log.info("Started"); | 144 | log.info("Started"); |
... | @@ -173,28 +157,24 @@ public class DeviceManager | ... | @@ -173,28 +157,24 @@ public class DeviceManager |
173 | @Override | 157 | @Override |
174 | public int getDeviceCount() { | 158 | public int getDeviceCount() { |
175 | checkPermission(Permission.DEVICE_READ); | 159 | checkPermission(Permission.DEVICE_READ); |
176 | - | ||
177 | return store.getDeviceCount(); | 160 | return store.getDeviceCount(); |
178 | } | 161 | } |
179 | 162 | ||
180 | @Override | 163 | @Override |
181 | public Iterable<Device> getDevices() { | 164 | public Iterable<Device> getDevices() { |
182 | checkPermission(Permission.DEVICE_READ); | 165 | checkPermission(Permission.DEVICE_READ); |
183 | - | ||
184 | return store.getDevices(); | 166 | return store.getDevices(); |
185 | } | 167 | } |
186 | 168 | ||
187 | @Override | 169 | @Override |
188 | public Iterable<Device> getAvailableDevices() { | 170 | public Iterable<Device> getAvailableDevices() { |
189 | checkPermission(Permission.DEVICE_READ); | 171 | checkPermission(Permission.DEVICE_READ); |
190 | - | ||
191 | return store.getAvailableDevices(); | 172 | return store.getAvailableDevices(); |
192 | } | 173 | } |
193 | 174 | ||
194 | @Override | 175 | @Override |
195 | public Device getDevice(DeviceId deviceId) { | 176 | public Device getDevice(DeviceId deviceId) { |
196 | checkPermission(Permission.DEVICE_READ); | 177 | checkPermission(Permission.DEVICE_READ); |
197 | - | ||
198 | checkNotNull(deviceId, DEVICE_ID_NULL); | 178 | checkNotNull(deviceId, DEVICE_ID_NULL); |
199 | return store.getDevice(deviceId); | 179 | return store.getDevice(deviceId); |
200 | } | 180 | } |
... | @@ -202,7 +182,6 @@ public class DeviceManager | ... | @@ -202,7 +182,6 @@ public class DeviceManager |
202 | @Override | 182 | @Override |
203 | public MastershipRole getRole(DeviceId deviceId) { | 183 | public MastershipRole getRole(DeviceId deviceId) { |
204 | checkPermission(Permission.DEVICE_READ); | 184 | checkPermission(Permission.DEVICE_READ); |
205 | - | ||
206 | checkNotNull(deviceId, DEVICE_ID_NULL); | 185 | checkNotNull(deviceId, DEVICE_ID_NULL); |
207 | return mastershipService.getLocalRole(deviceId); | 186 | return mastershipService.getLocalRole(deviceId); |
208 | } | 187 | } |
... | @@ -210,7 +189,6 @@ public class DeviceManager | ... | @@ -210,7 +189,6 @@ public class DeviceManager |
210 | @Override | 189 | @Override |
211 | public List<Port> getPorts(DeviceId deviceId) { | 190 | public List<Port> getPorts(DeviceId deviceId) { |
212 | checkPermission(Permission.DEVICE_READ); | 191 | checkPermission(Permission.DEVICE_READ); |
213 | - | ||
214 | checkNotNull(deviceId, DEVICE_ID_NULL); | 192 | checkNotNull(deviceId, DEVICE_ID_NULL); |
215 | return store.getPorts(deviceId); | 193 | return store.getPorts(deviceId); |
216 | } | 194 | } |
... | @@ -218,7 +196,6 @@ public class DeviceManager | ... | @@ -218,7 +196,6 @@ public class DeviceManager |
218 | @Override | 196 | @Override |
219 | public List<PortStatistics> getPortStatistics(DeviceId deviceId) { | 197 | public List<PortStatistics> getPortStatistics(DeviceId deviceId) { |
220 | checkPermission(Permission.DEVICE_READ); | 198 | checkPermission(Permission.DEVICE_READ); |
221 | - | ||
222 | checkNotNull(deviceId, DEVICE_ID_NULL); | 199 | checkNotNull(deviceId, DEVICE_ID_NULL); |
223 | return store.getPortStatistics(deviceId); | 200 | return store.getPortStatistics(deviceId); |
224 | } | 201 | } |
... | @@ -226,7 +203,6 @@ public class DeviceManager | ... | @@ -226,7 +203,6 @@ public class DeviceManager |
226 | @Override | 203 | @Override |
227 | public Port getPort(DeviceId deviceId, PortNumber portNumber) { | 204 | public Port getPort(DeviceId deviceId, PortNumber portNumber) { |
228 | checkPermission(Permission.DEVICE_READ); | 205 | checkPermission(Permission.DEVICE_READ); |
229 | - | ||
230 | checkNotNull(deviceId, DEVICE_ID_NULL); | 206 | checkNotNull(deviceId, DEVICE_ID_NULL); |
231 | checkNotNull(portNumber, PORT_NUMBER_NULL); | 207 | checkNotNull(portNumber, PORT_NUMBER_NULL); |
232 | return store.getPort(deviceId, portNumber); | 208 | return store.getPort(deviceId, portNumber); |
... | @@ -265,20 +241,6 @@ public class DeviceManager | ... | @@ -265,20 +241,6 @@ public class DeviceManager |
265 | } | 241 | } |
266 | 242 | ||
267 | @Override | 243 | @Override |
268 | - public void addListener(DeviceListener listener) { | ||
269 | - checkPermission(Permission.DEVICE_EVENT); | ||
270 | - | ||
271 | - listenerRegistry.addListener(listener); | ||
272 | - } | ||
273 | - | ||
274 | - @Override | ||
275 | - public void removeListener(DeviceListener listener) { | ||
276 | - checkPermission(Permission.DEVICE_EVENT); | ||
277 | - | ||
278 | - listenerRegistry.removeListener(listener); | ||
279 | - } | ||
280 | - | ||
281 | - @Override | ||
282 | protected DeviceProviderService createProviderService( | 244 | protected DeviceProviderService createProviderService( |
283 | DeviceProvider provider) { | 245 | DeviceProvider provider) { |
284 | return new InternalDeviceProviderService(provider); | 246 | return new InternalDeviceProviderService(provider); |
... | @@ -322,8 +284,8 @@ public class DeviceManager | ... | @@ -322,8 +284,8 @@ public class DeviceManager |
322 | /** | 284 | /** |
323 | * Apply role in reaction to provider event. | 285 | * Apply role in reaction to provider event. |
324 | * | 286 | * |
325 | - * @param deviceId device identifier | 287 | + * @param deviceId device identifier |
326 | - * @param newRole new role to apply to the device | 288 | + * @param newRole new role to apply to the device |
327 | * @return true if the request was sent to provider | 289 | * @return true if the request was sent to provider |
328 | */ | 290 | */ |
329 | private boolean applyRole(DeviceId deviceId, MastershipRole newRole) { | 291 | private boolean applyRole(DeviceId deviceId, MastershipRole newRole) { |
... | @@ -400,7 +362,7 @@ public class DeviceManager | ... | @@ -400,7 +362,7 @@ public class DeviceManager |
400 | cfg.type(), finalSparse); | 362 | cfg.type(), finalSparse); |
401 | } else { | 363 | } else { |
402 | deviceDescription = new DefaultDeviceDescription(deviceDescription, | 364 | deviceDescription = new DefaultDeviceDescription(deviceDescription, |
403 | - deviceDescription.type(), finalSparse); | 365 | + deviceDescription.type(), finalSparse); |
404 | } | 366 | } |
405 | } | 367 | } |
406 | return deviceDescription; | 368 | return deviceDescription; |
... | @@ -416,9 +378,9 @@ public class DeviceManager | ... | @@ -416,9 +378,9 @@ public class DeviceManager |
416 | List<Port> ports = store.getPorts(deviceId); | 378 | List<Port> ports = store.getPorts(deviceId); |
417 | List<PortDescription> descs = Lists.newArrayList(); | 379 | List<PortDescription> descs = Lists.newArrayList(); |
418 | ports.forEach(port -> | 380 | ports.forEach(port -> |
419 | - descs.add(new DefaultPortDescription(port.number(), | 381 | + descs.add(new DefaultPortDescription(port.number(), |
420 | - false, port.type(), | 382 | + false, port.type(), |
421 | - port.portSpeed()))); | 383 | + port.portSpeed()))); |
422 | store.updatePorts(this.provider().id(), deviceId, descs); | 384 | store.updatePorts(this.provider().id(), deviceId, descs); |
423 | try { | 385 | try { |
424 | if (mastershipService.getLocalRole(deviceId) == MASTER) { | 386 | if (mastershipService.getLocalRole(deviceId) == MASTER) { |
... | @@ -467,7 +429,7 @@ public class DeviceManager | ... | @@ -467,7 +429,7 @@ public class DeviceManager |
467 | List<PortDescription> portDescriptions) { | 429 | List<PortDescription> portDescriptions) { |
468 | checkNotNull(deviceId, DEVICE_ID_NULL); | 430 | checkNotNull(deviceId, DEVICE_ID_NULL); |
469 | checkNotNull(portDescriptions, | 431 | checkNotNull(portDescriptions, |
470 | - "Port descriptions list cannot be null"); | 432 | + "Port descriptions list cannot be null"); |
471 | checkValidity(); | 433 | checkValidity(); |
472 | if (!deviceClockProviderService.isTimestampAvailable(deviceId)) { | 434 | if (!deviceClockProviderService.isTimestampAvailable(deviceId)) { |
473 | // Never been a master for this device | 435 | // Never been a master for this device |
... | @@ -521,7 +483,7 @@ public class DeviceManager | ... | @@ -521,7 +483,7 @@ public class DeviceManager |
521 | // FIXME: implement response to this notification | 483 | // FIXME: implement response to this notification |
522 | 484 | ||
523 | log.debug("got reply to a role request for {}: asked for {}, and got {}", | 485 | log.debug("got reply to a role request for {}: asked for {}, and got {}", |
524 | - deviceId, requested, response); | 486 | + deviceId, requested, response); |
525 | 487 | ||
526 | if (requested == null && response == null) { | 488 | if (requested == null && response == null) { |
527 | // something was off with DeviceProvider, maybe check channel too? | 489 | // something was off with DeviceProvider, maybe check channel too? |
... | @@ -593,19 +555,13 @@ public class DeviceManager | ... | @@ -593,19 +555,13 @@ public class DeviceManager |
593 | } | 555 | } |
594 | } | 556 | } |
595 | 557 | ||
596 | - // Posts the specified event to the local event dispatcher. | ||
597 | - private void post(DeviceEvent event) { | ||
598 | - if (event != null && eventDispatcher != null) { | ||
599 | - eventDispatcher.post(event); | ||
600 | - } | ||
601 | - } | ||
602 | - | ||
603 | // Applies the specified role to the device; ignores NONE | 558 | // Applies the specified role to the device; ignores NONE |
559 | + | ||
604 | /** | 560 | /** |
605 | * Apply role to device and send probe if MASTER. | 561 | * Apply role to device and send probe if MASTER. |
606 | * | 562 | * |
607 | - * @param deviceId device identifier | 563 | + * @param deviceId device identifier |
608 | - * @param newRole new role to apply to the device | 564 | + * @param newRole new role to apply to the device |
609 | * @return true if the request was sent to provider | 565 | * @return true if the request was sent to provider |
610 | */ | 566 | */ |
611 | private boolean applyRoleAndProbe(DeviceId deviceId, MastershipRole newRole) { | 567 | private boolean applyRoleAndProbe(DeviceId deviceId, MastershipRole newRole) { |
... | @@ -631,9 +587,9 @@ public class DeviceManager | ... | @@ -631,9 +587,9 @@ public class DeviceManager |
631 | /** | 587 | /** |
632 | * Reaasert role for specified device connected to this node. | 588 | * Reaasert role for specified device connected to this node. |
633 | * | 589 | * |
634 | - * @param did device identifier | 590 | + * @param did device identifier |
635 | - * @param nextRole role to apply. If NONE is specified, | 591 | + * @param nextRole role to apply. If NONE is specified, |
636 | - * it will ask mastership service for a role and apply it. | 592 | + * it will ask mastership service for a role and apply it. |
637 | */ | 593 | */ |
638 | private void reassertRole(final DeviceId did, | 594 | private void reassertRole(final DeviceId did, |
639 | final MastershipRole nextRole) { | 595 | final MastershipRole nextRole) { |
... | @@ -650,46 +606,46 @@ public class DeviceManager | ... | @@ -650,46 +606,46 @@ public class DeviceManager |
650 | } | 606 | } |
651 | 607 | ||
652 | switch (myNextRole) { | 608 | switch (myNextRole) { |
653 | - case MASTER: | 609 | + case MASTER: |
654 | - final Device device = getDevice(did); | 610 | + final Device device = getDevice(did); |
655 | - if ((device != null) && !isAvailable(did)) { | 611 | + if ((device != null) && !isAvailable(did)) { |
656 | - //flag the device as online. Is there a better way to do this? | 612 | + //flag the device as online. Is there a better way to do this? |
657 | - DefaultDeviceDescription deviceDescription | 613 | + DefaultDeviceDescription deviceDescription |
658 | - = new DefaultDeviceDescription(did.uri(), | 614 | + = new DefaultDeviceDescription(did.uri(), |
659 | - device.type(), | 615 | + device.type(), |
660 | - device.manufacturer(), | 616 | + device.manufacturer(), |
661 | - device.hwVersion(), | 617 | + device.hwVersion(), |
662 | - device.swVersion(), | 618 | + device.swVersion(), |
663 | - device.serialNumber(), | 619 | + device.serialNumber(), |
664 | - device.chassisId()); | 620 | + device.chassisId()); |
665 | - DeviceEvent devEvent = | 621 | + DeviceEvent devEvent = |
666 | - store.createOrUpdateDevice(device.providerId(), did, | 622 | + store.createOrUpdateDevice(device.providerId(), did, |
667 | - deviceDescription); | 623 | + deviceDescription); |
668 | - post(devEvent); | 624 | + post(devEvent); |
669 | - } | 625 | + } |
670 | - // TODO: should apply role only if there is mismatch | 626 | + // TODO: should apply role only if there is mismatch |
671 | - log.debug("Applying role {} to {}", myNextRole, did); | 627 | + log.debug("Applying role {} to {}", myNextRole, did); |
672 | - if (!applyRoleAndProbe(did, MASTER)) { | 628 | + if (!applyRoleAndProbe(did, MASTER)) { |
673 | - log.warn("Unsuccessful applying role {} to {}", myNextRole, did); | 629 | + log.warn("Unsuccessful applying role {} to {}", myNextRole, did); |
674 | - // immediately failed to apply role | 630 | + // immediately failed to apply role |
675 | - mastershipService.relinquishMastership(did); | 631 | + mastershipService.relinquishMastership(did); |
676 | - // FIXME disconnect? | 632 | + // FIXME disconnect? |
677 | - } | 633 | + } |
678 | - break; | 634 | + break; |
679 | - case STANDBY: | 635 | + case STANDBY: |
680 | - log.debug("Applying role {} to {}", myNextRole, did); | 636 | + log.debug("Applying role {} to {}", myNextRole, did); |
681 | - if (!applyRoleAndProbe(did, STANDBY)) { | 637 | + if (!applyRoleAndProbe(did, STANDBY)) { |
682 | - log.warn("Unsuccessful applying role {} to {}", myNextRole, did); | 638 | + log.warn("Unsuccessful applying role {} to {}", myNextRole, did); |
683 | - // immediately failed to apply role | 639 | + // immediately failed to apply role |
684 | - mastershipService.relinquishMastership(did); | 640 | + mastershipService.relinquishMastership(did); |
685 | - // FIXME disconnect? | 641 | + // FIXME disconnect? |
686 | - } | 642 | + } |
687 | - break; | 643 | + break; |
688 | - case NONE: | 644 | + case NONE: |
689 | - default: | 645 | + default: |
690 | - // should never reach here | 646 | + // should never reach here |
691 | - log.error("You didn't see anything. I did not exist."); | 647 | + log.error("You didn't see anything. I did not exist."); |
692 | - break; | 648 | + break; |
693 | } | 649 | } |
694 | } | 650 | } |
695 | 651 | ||
... | @@ -725,8 +681,8 @@ public class DeviceManager | ... | @@ -725,8 +681,8 @@ public class DeviceManager |
725 | // device is not connected to this node | 681 | // device is not connected to this node |
726 | if (myNextRole != NONE) { | 682 | if (myNextRole != NONE) { |
727 | log.warn("Node was instructed to be {} role for {}, " | 683 | log.warn("Node was instructed to be {} role for {}, " |
728 | - + "but this node cannot reach the device. " | 684 | + + "but this node cannot reach the device. " |
729 | - + "Relinquishing role. ", | 685 | + + "Relinquishing role. ", |
730 | myNextRole, did); | 686 | myNextRole, did); |
731 | mastershipService.relinquishMastership(did); | 687 | mastershipService.relinquishMastership(did); |
732 | } | 688 | } |
... | @@ -796,13 +752,16 @@ public class DeviceManager | ... | @@ -796,13 +752,16 @@ public class DeviceManager |
796 | 752 | ||
797 | private class InternalNetworkConfigListener implements NetworkConfigListener { | 753 | private class InternalNetworkConfigListener implements NetworkConfigListener { |
798 | @Override | 754 | @Override |
755 | + public boolean isRelevant(NetworkConfigEvent event) { | ||
756 | + return (event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || | ||
757 | + event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) | ||
758 | + && event.configClass().equals(BasicDeviceConfig.class); | ||
759 | + } | ||
760 | + | ||
761 | + @Override | ||
799 | public void event(NetworkConfigEvent event) { | 762 | public void event(NetworkConfigEvent event) { |
800 | - if ((event.type() == NetworkConfigEvent.Type.CONFIG_ADDED || | 763 | + log.info("Detected Device network config event {}", event.type()); |
801 | - event.type() == NetworkConfigEvent.Type.CONFIG_UPDATED) && | 764 | + kickOutBadDevice(((DeviceId) event.subject())); |
802 | - event.configClass().equals(BasicDeviceConfig.class)) { | ||
803 | - log.info("Detected Device network config event {}", event.type()); | ||
804 | - kickOutBadDevice(((DeviceId) event.subject())); | ||
805 | - } | ||
806 | } | 765 | } |
807 | } | 766 | } |
808 | 767 | ||
... | @@ -814,8 +773,6 @@ public class DeviceManager | ... | @@ -814,8 +773,6 @@ public class DeviceManager |
814 | Device badDevice = getDevice(deviceId); | 773 | Device badDevice = getDevice(deviceId); |
815 | if (badDevice != null) { | 774 | if (badDevice != null) { |
816 | removeDevice(deviceId); | 775 | removeDevice(deviceId); |
817 | - } else { | ||
818 | - log.info("Failed removal: Device {} does not exist", deviceId); | ||
819 | } | 776 | } |
820 | } | 777 | } |
821 | } | 778 | } | ... | ... |
... | @@ -26,9 +26,8 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -26,9 +26,8 @@ import org.apache.felix.scr.annotations.Deactivate; |
26 | import org.apache.felix.scr.annotations.Reference; | 26 | import org.apache.felix.scr.annotations.Reference; |
27 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 27 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
28 | import org.apache.felix.scr.annotations.Service; | 28 | import org.apache.felix.scr.annotations.Service; |
29 | +import org.onosproject.event.AbstractListenerManager; | ||
29 | import org.onosproject.event.Event; | 30 | import org.onosproject.event.Event; |
30 | -import org.onosproject.event.EventDeliveryService; | ||
31 | -import org.onosproject.event.ListenerRegistry; | ||
32 | import org.onosproject.net.ConnectPoint; | 31 | import org.onosproject.net.ConnectPoint; |
33 | import org.onosproject.net.DeviceId; | 32 | import org.onosproject.net.DeviceId; |
34 | import org.onosproject.net.device.DeviceEvent; | 33 | import org.onosproject.net.device.DeviceEvent; |
... | @@ -64,7 +63,9 @@ import static org.slf4j.LoggerFactory.getLogger; | ... | @@ -64,7 +63,9 @@ import static org.slf4j.LoggerFactory.getLogger; |
64 | */ | 63 | */ |
65 | @Component(immediate = true) | 64 | @Component(immediate = true) |
66 | @Service | 65 | @Service |
67 | -public class EdgeManager implements EdgePortService { | 66 | +public class EdgeManager |
67 | + extends AbstractListenerManager<EdgePortEvent, EdgePortListener> | ||
68 | + implements EdgePortService { | ||
68 | 69 | ||
69 | private final Logger log = getLogger(getClass()); | 70 | private final Logger log = getLogger(getClass()); |
70 | 71 | ||
... | @@ -72,15 +73,9 @@ public class EdgeManager implements EdgePortService { | ... | @@ -72,15 +73,9 @@ public class EdgeManager implements EdgePortService { |
72 | 73 | ||
73 | private final Map<DeviceId, Set<ConnectPoint>> connectionPoints = Maps.newConcurrentMap(); | 74 | private final Map<DeviceId, Set<ConnectPoint>> connectionPoints = Maps.newConcurrentMap(); |
74 | 75 | ||
75 | - private final ListenerRegistry<EdgePortEvent, EdgePortListener> | ||
76 | - listenerRegistry = new ListenerRegistry<>(); | ||
77 | - | ||
78 | private final TopologyListener topologyListener = new InnerTopologyListener(); | 76 | private final TopologyListener topologyListener = new InnerTopologyListener(); |
79 | 77 | ||
80 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 78 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
81 | - protected EventDeliveryService eventDispatcher; | ||
82 | - | ||
83 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
84 | protected PacketService packetService; | 79 | protected PacketService packetService; |
85 | 80 | ||
86 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 81 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -147,17 +142,6 @@ public class EdgeManager implements EdgePortService { | ... | @@ -147,17 +142,6 @@ public class EdgeManager implements EdgePortService { |
147 | return new DefaultOutboundPacket(point.deviceId(), builder.build(), data); | 142 | return new DefaultOutboundPacket(point.deviceId(), builder.build(), data); |
148 | } | 143 | } |
149 | 144 | ||
150 | - @Override | ||
151 | - public void addListener(EdgePortListener listener) { | ||
152 | - listenerRegistry.addListener(listener); | ||
153 | - } | ||
154 | - | ||
155 | - @Override | ||
156 | - public void removeListener(EdgePortListener listener) { | ||
157 | - listenerRegistry.removeListener(listener); | ||
158 | - } | ||
159 | - | ||
160 | - | ||
161 | // Internal listener for topo events used to keep our edge-port cache | 145 | // Internal listener for topo events used to keep our edge-port cache |
162 | // up to date. | 146 | // up to date. |
163 | private class InnerTopologyListener implements TopologyListener { | 147 | private class InnerTopologyListener implements TopologyListener { |
... | @@ -234,7 +218,7 @@ public class EdgeManager implements EdgePortService { | ... | @@ -234,7 +218,7 @@ public class EdgeManager implements EdgePortService { |
234 | connectionPoints.put(point.deviceId(), set); | 218 | connectionPoints.put(point.deviceId(), set); |
235 | } | 219 | } |
236 | if (set.add(point)) { | 220 | if (set.add(point)) { |
237 | - eventDispatcher.post(new EdgePortEvent(EDGE_PORT_ADDED, point)); | 221 | + post(new EdgePortEvent(EDGE_PORT_ADDED, point)); |
238 | } | 222 | } |
239 | } | 223 | } |
240 | } | 224 | } |
... | @@ -247,7 +231,7 @@ public class EdgeManager implements EdgePortService { | ... | @@ -247,7 +231,7 @@ public class EdgeManager implements EdgePortService { |
247 | return; | 231 | return; |
248 | } | 232 | } |
249 | if (set.remove(point)) { | 233 | if (set.remove(point)) { |
250 | - eventDispatcher.post(new EdgePortEvent(EDGE_PORT_REMOVED, point)); | 234 | + post(new EdgePortEvent(EDGE_PORT_REMOVED, point)); |
251 | } | 235 | } |
252 | if (set.isEmpty()) { | 236 | if (set.isEmpty()) { |
253 | connectionPoints.remove(point.deviceId()); | 237 | connectionPoints.remove(point.deviceId()); | ... | ... |
... | @@ -32,12 +32,11 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; | ... | @@ -32,12 +32,11 @@ import org.apache.felix.scr.annotations.ReferenceCardinality; |
32 | import org.apache.felix.scr.annotations.Service; | 32 | import org.apache.felix.scr.annotations.Service; |
33 | import org.onlab.util.Tools; | 33 | import org.onlab.util.Tools; |
34 | import org.onosproject.cfg.ComponentConfigService; | 34 | import org.onosproject.cfg.ComponentConfigService; |
35 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
35 | import org.onosproject.core.ApplicationId; | 36 | import org.onosproject.core.ApplicationId; |
36 | import org.onosproject.core.CoreService; | 37 | import org.onosproject.core.CoreService; |
37 | import org.onosproject.core.IdGenerator; | 38 | import org.onosproject.core.IdGenerator; |
38 | import org.onosproject.core.Permission; | 39 | import org.onosproject.core.Permission; |
39 | -import org.onosproject.event.ListenerRegistry; | ||
40 | -import org.onosproject.event.EventDeliveryService; | ||
41 | import org.onosproject.net.Device; | 40 | import org.onosproject.net.Device; |
42 | import org.onosproject.net.DeviceId; | 41 | import org.onosproject.net.DeviceId; |
43 | import org.onosproject.net.device.DeviceService; | 42 | import org.onosproject.net.device.DeviceService; |
... | @@ -60,7 +59,6 @@ import org.onosproject.net.flow.FlowRuleProviderService; | ... | @@ -60,7 +59,6 @@ import org.onosproject.net.flow.FlowRuleProviderService; |
60 | import org.onosproject.net.flow.FlowRuleService; | 59 | import org.onosproject.net.flow.FlowRuleService; |
61 | import org.onosproject.net.flow.FlowRuleStore; | 60 | import org.onosproject.net.flow.FlowRuleStore; |
62 | import org.onosproject.net.flow.FlowRuleStoreDelegate; | 61 | import org.onosproject.net.flow.FlowRuleStoreDelegate; |
63 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
64 | import org.onosproject.net.provider.AbstractProviderService; | 62 | import org.onosproject.net.provider.AbstractProviderService; |
65 | import org.osgi.service.component.ComponentContext; | 63 | import org.osgi.service.component.ComponentContext; |
66 | import org.slf4j.Logger; | 64 | import org.slf4j.Logger; |
... | @@ -77,8 +75,10 @@ import java.util.concurrent.atomic.AtomicBoolean; | ... | @@ -77,8 +75,10 @@ import java.util.concurrent.atomic.AtomicBoolean; |
77 | 75 | ||
78 | import static com.google.common.base.Preconditions.checkNotNull; | 76 | import static com.google.common.base.Preconditions.checkNotNull; |
79 | import static org.onlab.util.Tools.groupedThreads; | 77 | import static org.onlab.util.Tools.groupedThreads; |
80 | -import static org.slf4j.LoggerFactory.getLogger; | 78 | +import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; |
79 | +import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVE_REQUESTED; | ||
81 | import static org.onosproject.security.AppGuard.checkPermission; | 80 | import static org.onosproject.security.AppGuard.checkPermission; |
81 | +import static org.slf4j.LoggerFactory.getLogger; | ||
82 | 82 | ||
83 | 83 | ||
84 | /** | 84 | /** |
... | @@ -87,7 +87,8 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -87,7 +87,8 @@ import static org.onosproject.security.AppGuard.checkPermission; |
87 | @Component(immediate = true, enabled = true) | 87 | @Component(immediate = true, enabled = true) |
88 | @Service | 88 | @Service |
89 | public class FlowRuleManager | 89 | public class FlowRuleManager |
90 | - extends AbstractProviderRegistry<FlowRuleProvider, FlowRuleProviderService> | 90 | + extends AbstractListenerProviderRegistry<FlowRuleEvent, FlowRuleListener, |
91 | + FlowRuleProvider, FlowRuleProviderService> | ||
91 | implements FlowRuleService, FlowRuleProviderRegistry { | 92 | implements FlowRuleService, FlowRuleProviderRegistry { |
92 | 93 | ||
93 | public static final String FLOW_RULE_NULL = "FlowRule cannot be null"; | 94 | public static final String FLOW_RULE_NULL = "FlowRule cannot be null"; |
... | @@ -99,9 +100,6 @@ public class FlowRuleManager | ... | @@ -99,9 +100,6 @@ public class FlowRuleManager |
99 | 100 | ||
100 | private final Logger log = getLogger(getClass()); | 101 | private final Logger log = getLogger(getClass()); |
101 | 102 | ||
102 | - private final ListenerRegistry<FlowRuleEvent, FlowRuleListener> | ||
103 | - listenerRegistry = new ListenerRegistry<>(); | ||
104 | - | ||
105 | private final FlowRuleStoreDelegate delegate = new InternalStoreDelegate(); | 103 | private final FlowRuleStoreDelegate delegate = new InternalStoreDelegate(); |
106 | 104 | ||
107 | protected ExecutorService deviceInstallers = | 105 | protected ExecutorService deviceInstallers = |
... | @@ -119,9 +117,6 @@ public class FlowRuleManager | ... | @@ -119,9 +117,6 @@ public class FlowRuleManager |
119 | protected FlowRuleStore store; | 117 | protected FlowRuleStore store; |
120 | 118 | ||
121 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 119 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
122 | - protected EventDeliveryService eventDispatcher; | ||
123 | - | ||
124 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
125 | protected DeviceService deviceService; | 120 | protected DeviceService deviceService; |
126 | 121 | ||
127 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 122 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -171,14 +166,12 @@ public class FlowRuleManager | ... | @@ -171,14 +166,12 @@ public class FlowRuleManager |
171 | @Override | 166 | @Override |
172 | public int getFlowRuleCount() { | 167 | public int getFlowRuleCount() { |
173 | checkPermission(Permission.FLOWRULE_READ); | 168 | checkPermission(Permission.FLOWRULE_READ); |
174 | - | ||
175 | return store.getFlowRuleCount(); | 169 | return store.getFlowRuleCount(); |
176 | } | 170 | } |
177 | 171 | ||
178 | @Override | 172 | @Override |
179 | public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) { | 173 | public Iterable<FlowEntry> getFlowEntries(DeviceId deviceId) { |
180 | checkPermission(Permission.FLOWRULE_READ); | 174 | checkPermission(Permission.FLOWRULE_READ); |
181 | - | ||
182 | return store.getFlowEntries(deviceId); | 175 | return store.getFlowEntries(deviceId); |
183 | } | 176 | } |
184 | 177 | ||
... | @@ -207,7 +200,6 @@ public class FlowRuleManager | ... | @@ -207,7 +200,6 @@ public class FlowRuleManager |
207 | @Override | 200 | @Override |
208 | public void removeFlowRulesById(ApplicationId id) { | 201 | public void removeFlowRulesById(ApplicationId id) { |
209 | checkPermission(Permission.FLOWRULE_WRITE); | 202 | checkPermission(Permission.FLOWRULE_WRITE); |
210 | - | ||
211 | removeFlowRules(Iterables.toArray(getFlowRulesById(id), FlowRule.class)); | 203 | removeFlowRules(Iterables.toArray(getFlowRulesById(id), FlowRule.class)); |
212 | } | 204 | } |
213 | 205 | ||
... | @@ -245,25 +237,10 @@ public class FlowRuleManager | ... | @@ -245,25 +237,10 @@ public class FlowRuleManager |
245 | @Override | 237 | @Override |
246 | public void apply(FlowRuleOperations ops) { | 238 | public void apply(FlowRuleOperations ops) { |
247 | checkPermission(Permission.FLOWRULE_WRITE); | 239 | checkPermission(Permission.FLOWRULE_WRITE); |
248 | - | ||
249 | operationsService.submit(new FlowOperationsProcessor(ops)); | 240 | operationsService.submit(new FlowOperationsProcessor(ops)); |
250 | } | 241 | } |
251 | 242 | ||
252 | @Override | 243 | @Override |
253 | - public void addListener(FlowRuleListener listener) { | ||
254 | - checkPermission(Permission.FLOWRULE_EVENT); | ||
255 | - | ||
256 | - listenerRegistry.addListener(listener); | ||
257 | - } | ||
258 | - | ||
259 | - @Override | ||
260 | - public void removeListener(FlowRuleListener listener) { | ||
261 | - checkPermission(Permission.FLOWRULE_EVENT); | ||
262 | - | ||
263 | - listenerRegistry.removeListener(listener); | ||
264 | - } | ||
265 | - | ||
266 | - @Override | ||
267 | protected FlowRuleProviderService createProviderService( | 244 | protected FlowRuleProviderService createProviderService( |
268 | FlowRuleProvider provider) { | 245 | FlowRuleProvider provider) { |
269 | return new InternalFlowRuleProviderService(provider); | 246 | return new InternalFlowRuleProviderService(provider); |
... | @@ -408,13 +385,6 @@ public class FlowRuleManager | ... | @@ -408,13 +385,6 @@ public class FlowRuleManager |
408 | return false; | 385 | return false; |
409 | } | 386 | } |
410 | 387 | ||
411 | - // Posts the specified event to the local event dispatcher. | ||
412 | - private void post(FlowRuleEvent event) { | ||
413 | - if (event != null) { | ||
414 | - eventDispatcher.post(event); | ||
415 | - } | ||
416 | - } | ||
417 | - | ||
418 | @Override | 388 | @Override |
419 | public void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries) { | 389 | public void pushFlowMetrics(DeviceId deviceId, Iterable<FlowEntry> flowEntries) { |
420 | Set<FlowEntry> storedRules = Sets.newHashSet(store.getFlowEntries(deviceId)); | 390 | Set<FlowEntry> storedRules = Sets.newHashSet(store.getFlowEntries(deviceId)); |
... | @@ -473,16 +443,12 @@ public class FlowRuleManager | ... | @@ -473,16 +443,12 @@ public class FlowRuleManager |
473 | switch (op.operator()) { | 443 | switch (op.operator()) { |
474 | 444 | ||
475 | case ADD: | 445 | case ADD: |
476 | - eventDispatcher.post( | 446 | + post(new FlowRuleEvent(RULE_ADD_REQUESTED, |
477 | - new FlowRuleEvent( | 447 | + op.target())); |
478 | - FlowRuleEvent.Type.RULE_ADD_REQUESTED, | ||
479 | - op.target())); | ||
480 | break; | 448 | break; |
481 | case REMOVE: | 449 | case REMOVE: |
482 | - eventDispatcher.post( | 450 | + post(new FlowRuleEvent(RULE_REMOVE_REQUESTED, |
483 | - new FlowRuleEvent( | 451 | + op.target())); |
484 | - FlowRuleEvent.Type.RULE_REMOVE_REQUESTED, | ||
485 | - op.target())); | ||
486 | break; | 452 | break; |
487 | case MODIFY: | 453 | case MODIFY: |
488 | //TODO: do something here when the time comes. | 454 | //TODO: do something here when the time comes. | ... | ... |
... | @@ -15,21 +15,15 @@ | ... | @@ -15,21 +15,15 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.group.impl; | 16 | package org.onosproject.net.group.impl; |
17 | 17 | ||
18 | -import static org.slf4j.LoggerFactory.getLogger; | ||
19 | - | ||
20 | -import java.util.Collection; | ||
21 | -import java.util.Collections; | ||
22 | - | ||
23 | import org.apache.felix.scr.annotations.Activate; | 18 | import org.apache.felix.scr.annotations.Activate; |
24 | import org.apache.felix.scr.annotations.Component; | 19 | import org.apache.felix.scr.annotations.Component; |
25 | import org.apache.felix.scr.annotations.Deactivate; | 20 | import org.apache.felix.scr.annotations.Deactivate; |
26 | import org.apache.felix.scr.annotations.Reference; | 21 | import org.apache.felix.scr.annotations.Reference; |
27 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 22 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
28 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
29 | import org.onosproject.core.ApplicationId; | 25 | import org.onosproject.core.ApplicationId; |
30 | import org.onosproject.core.Permission; | 26 | import org.onosproject.core.Permission; |
31 | -import org.onosproject.event.EventDeliveryService; | ||
32 | -import org.onosproject.event.ListenerRegistry; | ||
33 | import org.onosproject.net.DeviceId; | 27 | import org.onosproject.net.DeviceId; |
34 | import org.onosproject.net.device.DeviceEvent; | 28 | import org.onosproject.net.device.DeviceEvent; |
35 | import org.onosproject.net.device.DeviceListener; | 29 | import org.onosproject.net.device.DeviceListener; |
... | @@ -49,11 +43,14 @@ import org.onosproject.net.group.GroupService; | ... | @@ -49,11 +43,14 @@ import org.onosproject.net.group.GroupService; |
49 | import org.onosproject.net.group.GroupStore; | 43 | import org.onosproject.net.group.GroupStore; |
50 | import org.onosproject.net.group.GroupStore.UpdateType; | 44 | import org.onosproject.net.group.GroupStore.UpdateType; |
51 | import org.onosproject.net.group.GroupStoreDelegate; | 45 | import org.onosproject.net.group.GroupStoreDelegate; |
52 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
53 | import org.onosproject.net.provider.AbstractProviderService; | 46 | import org.onosproject.net.provider.AbstractProviderService; |
54 | import org.slf4j.Logger; | 47 | import org.slf4j.Logger; |
55 | 48 | ||
49 | +import java.util.Collection; | ||
50 | +import java.util.Collections; | ||
51 | + | ||
56 | import static org.onosproject.security.AppGuard.checkPermission; | 52 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | +import static org.slf4j.LoggerFactory.getLogger; | ||
57 | 54 | ||
58 | 55 | ||
59 | /** | 56 | /** |
... | @@ -62,13 +59,12 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -62,13 +59,12 @@ import static org.onosproject.security.AppGuard.checkPermission; |
62 | @Component(immediate = true) | 59 | @Component(immediate = true) |
63 | @Service | 60 | @Service |
64 | public class GroupManager | 61 | public class GroupManager |
65 | - extends AbstractProviderRegistry<GroupProvider, GroupProviderService> | 62 | + extends AbstractListenerProviderRegistry<GroupEvent, GroupListener, |
63 | + GroupProvider, GroupProviderService> | ||
66 | implements GroupService, GroupProviderRegistry { | 64 | implements GroupService, GroupProviderRegistry { |
67 | 65 | ||
68 | private final Logger log = getLogger(getClass()); | 66 | private final Logger log = getLogger(getClass()); |
69 | 67 | ||
70 | - private final ListenerRegistry<GroupEvent, GroupListener> | ||
71 | - listenerRegistry = new ListenerRegistry<>(); | ||
72 | private final GroupStoreDelegate delegate = new InternalGroupStoreDelegate(); | 68 | private final GroupStoreDelegate delegate = new InternalGroupStoreDelegate(); |
73 | private final DeviceListener deviceListener = new InternalDeviceListener(); | 69 | private final DeviceListener deviceListener = new InternalDeviceListener(); |
74 | 70 | ||
... | @@ -78,9 +74,6 @@ public class GroupManager | ... | @@ -78,9 +74,6 @@ public class GroupManager |
78 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 74 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
79 | protected DeviceService deviceService; | 75 | protected DeviceService deviceService; |
80 | 76 | ||
81 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
82 | - protected EventDeliveryService eventDispatcher; | ||
83 | - | ||
84 | @Activate | 77 | @Activate |
85 | public void activate() { | 78 | public void activate() { |
86 | store.setDelegate(delegate); | 79 | store.setDelegate(delegate); |
... | @@ -100,34 +93,29 @@ public class GroupManager | ... | @@ -100,34 +93,29 @@ public class GroupManager |
100 | * Create a group in the specified device with the provided parameters. | 93 | * Create a group in the specified device with the provided parameters. |
101 | * | 94 | * |
102 | * @param groupDesc group creation parameters | 95 | * @param groupDesc group creation parameters |
103 | - * | ||
104 | */ | 96 | */ |
105 | @Override | 97 | @Override |
106 | public void addGroup(GroupDescription groupDesc) { | 98 | public void addGroup(GroupDescription groupDesc) { |
107 | checkPermission(Permission.GROUP_WRITE); | 99 | checkPermission(Permission.GROUP_WRITE); |
108 | - | ||
109 | - log.trace("In addGroup API"); | ||
110 | store.storeGroupDescription(groupDesc); | 100 | store.storeGroupDescription(groupDesc); |
111 | } | 101 | } |
112 | 102 | ||
113 | /** | 103 | /** |
114 | * Return a group object associated to an application cookie. | 104 | * Return a group object associated to an application cookie. |
115 | - * | 105 | + * <p> |
116 | * NOTE1: The presence of group object in the system does not | 106 | * NOTE1: The presence of group object in the system does not |
117 | * guarantee that the "group" is actually created in device. | 107 | * guarantee that the "group" is actually created in device. |
118 | * GROUP_ADDED notification would confirm the creation of | 108 | * GROUP_ADDED notification would confirm the creation of |
119 | * this group in data plane. | 109 | * this group in data plane. |
120 | * | 110 | * |
121 | - * @param deviceId device identifier | 111 | + * @param deviceId device identifier |
122 | * @param appCookie application cookie to be used for lookup | 112 | * @param appCookie application cookie to be used for lookup |
123 | * @return group associated with the application cookie or | 113 | * @return group associated with the application cookie or |
124 | - * NULL if Group is not found for the provided cookie | 114 | + * NULL if Group is not found for the provided cookie |
125 | */ | 115 | */ |
126 | @Override | 116 | @Override |
127 | public Group getGroup(DeviceId deviceId, GroupKey appCookie) { | 117 | public Group getGroup(DeviceId deviceId, GroupKey appCookie) { |
128 | checkPermission(Permission.GROUP_READ); | 118 | checkPermission(Permission.GROUP_READ); |
129 | - | ||
130 | - log.trace("In getGroup API"); | ||
131 | return store.getGroup(deviceId, appCookie); | 119 | return store.getGroup(deviceId, appCookie); |
132 | } | 120 | } |
133 | 121 | ||
... | @@ -137,21 +125,19 @@ public class GroupManager | ... | @@ -137,21 +125,19 @@ public class GroupManager |
137 | * GROUP_UPDATE_FAILED notifications would be provided along with | 125 | * GROUP_UPDATE_FAILED notifications would be provided along with |
138 | * cookie depending on the result of the operation on the device. | 126 | * cookie depending on the result of the operation on the device. |
139 | * | 127 | * |
140 | - * @param deviceId device identifier | 128 | + * @param deviceId device identifier |
141 | * @param oldCookie cookie to be used to retrieve the existing group | 129 | * @param oldCookie cookie to be used to retrieve the existing group |
142 | - * @param buckets immutable list of group bucket to be added | 130 | + * @param buckets immutable list of group bucket to be added |
143 | * @param newCookie immutable cookie to be used post update operation | 131 | * @param newCookie immutable cookie to be used post update operation |
144 | - * @param appId Application Id | 132 | + * @param appId Application Id |
145 | */ | 133 | */ |
146 | @Override | 134 | @Override |
147 | public void addBucketsToGroup(DeviceId deviceId, | 135 | public void addBucketsToGroup(DeviceId deviceId, |
148 | - GroupKey oldCookie, | 136 | + GroupKey oldCookie, |
149 | - GroupBuckets buckets, | 137 | + GroupBuckets buckets, |
150 | - GroupKey newCookie, | 138 | + GroupKey newCookie, |
151 | - ApplicationId appId) { | 139 | + ApplicationId appId) { |
152 | checkPermission(Permission.GROUP_WRITE); | 140 | checkPermission(Permission.GROUP_WRITE); |
153 | - | ||
154 | - log.trace("In addBucketsToGroup API"); | ||
155 | store.updateGroupDescription(deviceId, | 141 | store.updateGroupDescription(deviceId, |
156 | oldCookie, | 142 | oldCookie, |
157 | UpdateType.ADD, | 143 | UpdateType.ADD, |
... | @@ -165,21 +151,19 @@ public class GroupManager | ... | @@ -165,21 +151,19 @@ public class GroupManager |
165 | * GROUP_UPDATE_FAILED notifications would be provided along with | 151 | * GROUP_UPDATE_FAILED notifications would be provided along with |
166 | * cookie depending on the result of the operation on the device. | 152 | * cookie depending on the result of the operation on the device. |
167 | * | 153 | * |
168 | - * @param deviceId device identifier | 154 | + * @param deviceId device identifier |
169 | * @param oldCookie cookie to be used to retrieve the existing group | 155 | * @param oldCookie cookie to be used to retrieve the existing group |
170 | - * @param buckets immutable list of group bucket to be removed | 156 | + * @param buckets immutable list of group bucket to be removed |
171 | * @param newCookie immutable cookie to be used post update operation | 157 | * @param newCookie immutable cookie to be used post update operation |
172 | - * @param appId Application Id | 158 | + * @param appId Application Id |
173 | */ | 159 | */ |
174 | @Override | 160 | @Override |
175 | public void removeBucketsFromGroup(DeviceId deviceId, | 161 | public void removeBucketsFromGroup(DeviceId deviceId, |
176 | - GroupKey oldCookie, | 162 | + GroupKey oldCookie, |
177 | - GroupBuckets buckets, | 163 | + GroupBuckets buckets, |
178 | - GroupKey newCookie, | 164 | + GroupKey newCookie, |
179 | - ApplicationId appId) { | 165 | + ApplicationId appId) { |
180 | checkPermission(Permission.GROUP_WRITE); | 166 | checkPermission(Permission.GROUP_WRITE); |
181 | - | ||
182 | - log.trace("In removeBucketsFromGroup API"); | ||
183 | store.updateGroupDescription(deviceId, | 167 | store.updateGroupDescription(deviceId, |
184 | oldCookie, | 168 | oldCookie, |
185 | UpdateType.REMOVE, | 169 | UpdateType.REMOVE, |
... | @@ -193,17 +177,15 @@ public class GroupManager | ... | @@ -193,17 +177,15 @@ public class GroupManager |
193 | * provided along with cookie depending on the result of the | 177 | * provided along with cookie depending on the result of the |
194 | * operation on the device. | 178 | * operation on the device. |
195 | * | 179 | * |
196 | - * @param deviceId device identifier | 180 | + * @param deviceId device identifier |
197 | * @param appCookie application cookie to be used for lookup | 181 | * @param appCookie application cookie to be used for lookup |
198 | - * @param appId Application Id | 182 | + * @param appId Application Id |
199 | */ | 183 | */ |
200 | @Override | 184 | @Override |
201 | public void removeGroup(DeviceId deviceId, | 185 | public void removeGroup(DeviceId deviceId, |
202 | GroupKey appCookie, | 186 | GroupKey appCookie, |
203 | ApplicationId appId) { | 187 | ApplicationId appId) { |
204 | checkPermission(Permission.GROUP_WRITE); | 188 | checkPermission(Permission.GROUP_WRITE); |
205 | - | ||
206 | - log.trace("In removeGroup API"); | ||
207 | store.deleteGroupDescription(deviceId, appCookie); | 189 | store.deleteGroupDescription(deviceId, appCookie); |
208 | } | 190 | } |
209 | 191 | ||
... | @@ -212,52 +194,22 @@ public class GroupManager | ... | @@ -212,52 +194,22 @@ public class GroupManager |
212 | * as seen by current controller instance. | 194 | * as seen by current controller instance. |
213 | * | 195 | * |
214 | * @param deviceId device identifier | 196 | * @param deviceId device identifier |
215 | - * @param appId application id | 197 | + * @param appId application id |
216 | * @return collection of immutable group objects created by the application | 198 | * @return collection of immutable group objects created by the application |
217 | */ | 199 | */ |
218 | @Override | 200 | @Override |
219 | public Iterable<Group> getGroups(DeviceId deviceId, | 201 | public Iterable<Group> getGroups(DeviceId deviceId, |
220 | ApplicationId appId) { | 202 | ApplicationId appId) { |
221 | checkPermission(Permission.GROUP_READ); | 203 | checkPermission(Permission.GROUP_READ); |
222 | - | ||
223 | - log.trace("In getGroups API"); | ||
224 | return store.getGroups(deviceId); | 204 | return store.getGroups(deviceId); |
225 | } | 205 | } |
226 | 206 | ||
227 | @Override | 207 | @Override |
228 | public Iterable<Group> getGroups(DeviceId deviceId) { | 208 | public Iterable<Group> getGroups(DeviceId deviceId) { |
229 | checkPermission(Permission.GROUP_READ); | 209 | checkPermission(Permission.GROUP_READ); |
230 | - | ||
231 | - log.trace("In getGroups API"); | ||
232 | return store.getGroups(deviceId); | 210 | return store.getGroups(deviceId); |
233 | } | 211 | } |
234 | 212 | ||
235 | - /** | ||
236 | - * Adds the specified group listener. | ||
237 | - * | ||
238 | - * @param listener group listener | ||
239 | - */ | ||
240 | - @Override | ||
241 | - public void addListener(GroupListener listener) { | ||
242 | - checkPermission(Permission.GROUP_EVENT); | ||
243 | - | ||
244 | - log.trace("In addListener API"); | ||
245 | - listenerRegistry.addListener(listener); | ||
246 | - } | ||
247 | - | ||
248 | - /** | ||
249 | - * Removes the specified group listener. | ||
250 | - * | ||
251 | - * @param listener group listener | ||
252 | - */ | ||
253 | - @Override | ||
254 | - public void removeListener(GroupListener listener) { | ||
255 | - checkPermission(Permission.GROUP_EVENT); | ||
256 | - | ||
257 | - log.trace("In removeListener API"); | ||
258 | - listenerRegistry.removeListener(listener); | ||
259 | - } | ||
260 | - | ||
261 | @Override | 213 | @Override |
262 | protected GroupProviderService createProviderService(GroupProvider provider) { | 214 | protected GroupProviderService createProviderService(GroupProvider provider) { |
263 | return new InternalGroupProviderService(provider); | 215 | return new InternalGroupProviderService(provider); |
... | @@ -271,52 +223,52 @@ public class GroupManager | ... | @@ -271,52 +223,52 @@ public class GroupManager |
271 | getProvider(group.deviceId()); | 223 | getProvider(group.deviceId()); |
272 | GroupOperations groupOps = null; | 224 | GroupOperations groupOps = null; |
273 | switch (event.type()) { | 225 | switch (event.type()) { |
274 | - case GROUP_ADD_REQUESTED: | 226 | + case GROUP_ADD_REQUESTED: |
275 | - log.debug("GROUP_ADD_REQUESTED for Group {} on device {}", | 227 | + log.debug("GROUP_ADD_REQUESTED for Group {} on device {}", |
276 | - group.id(), group.deviceId()); | 228 | + group.id(), group.deviceId()); |
277 | - GroupOperation groupAddOp = GroupOperation. | 229 | + GroupOperation groupAddOp = GroupOperation. |
278 | - createAddGroupOperation(group.id(), | 230 | + createAddGroupOperation(group.id(), |
279 | - group.type(), | 231 | + group.type(), |
280 | - group.buckets()); | 232 | + group.buckets()); |
281 | - groupOps = new GroupOperations( | 233 | + groupOps = new GroupOperations( |
282 | - Collections.singletonList(groupAddOp)); | 234 | + Collections.singletonList(groupAddOp)); |
283 | - groupProvider.performGroupOperation(group.deviceId(), groupOps); | 235 | + groupProvider.performGroupOperation(group.deviceId(), groupOps); |
284 | - break; | 236 | + break; |
285 | - | 237 | + |
286 | - case GROUP_UPDATE_REQUESTED: | 238 | + case GROUP_UPDATE_REQUESTED: |
287 | - log.debug("GROUP_UPDATE_REQUESTED for Group {} on device {}", | 239 | + log.debug("GROUP_UPDATE_REQUESTED for Group {} on device {}", |
288 | - group.id(), group.deviceId()); | 240 | + group.id(), group.deviceId()); |
289 | - GroupOperation groupModifyOp = GroupOperation. | 241 | + GroupOperation groupModifyOp = GroupOperation. |
290 | - createModifyGroupOperation(group.id(), | 242 | + createModifyGroupOperation(group.id(), |
291 | - group.type(), | 243 | + group.type(), |
292 | - group.buckets()); | 244 | + group.buckets()); |
293 | - groupOps = new GroupOperations( | 245 | + groupOps = new GroupOperations( |
294 | - Collections.singletonList(groupModifyOp)); | 246 | + Collections.singletonList(groupModifyOp)); |
295 | - groupProvider.performGroupOperation(group.deviceId(), groupOps); | 247 | + groupProvider.performGroupOperation(group.deviceId(), groupOps); |
296 | - break; | 248 | + break; |
297 | - | 249 | + |
298 | - case GROUP_REMOVE_REQUESTED: | 250 | + case GROUP_REMOVE_REQUESTED: |
299 | - log.debug("GROUP_REMOVE_REQUESTED for Group {} on device {}", | 251 | + log.debug("GROUP_REMOVE_REQUESTED for Group {} on device {}", |
300 | - group.id(), group.deviceId()); | 252 | + group.id(), group.deviceId()); |
301 | - GroupOperation groupDeleteOp = GroupOperation. | 253 | + GroupOperation groupDeleteOp = GroupOperation. |
302 | - createDeleteGroupOperation(group.id(), | 254 | + createDeleteGroupOperation(group.id(), |
303 | - group.type()); | 255 | + group.type()); |
304 | - groupOps = new GroupOperations( | 256 | + groupOps = new GroupOperations( |
305 | - Collections.singletonList(groupDeleteOp)); | 257 | + Collections.singletonList(groupDeleteOp)); |
306 | - groupProvider.performGroupOperation(group.deviceId(), groupOps); | 258 | + groupProvider.performGroupOperation(group.deviceId(), groupOps); |
307 | - break; | 259 | + break; |
308 | - | 260 | + |
309 | - case GROUP_ADDED: | 261 | + case GROUP_ADDED: |
310 | - case GROUP_UPDATED: | 262 | + case GROUP_UPDATED: |
311 | - case GROUP_REMOVED: | 263 | + case GROUP_REMOVED: |
312 | - case GROUP_ADD_FAILED: | 264 | + case GROUP_ADD_FAILED: |
313 | - case GROUP_UPDATE_FAILED: | 265 | + case GROUP_UPDATE_FAILED: |
314 | - case GROUP_REMOVE_FAILED: | 266 | + case GROUP_REMOVE_FAILED: |
315 | - eventDispatcher.post(event); | 267 | + post(event); |
316 | - break; | 268 | + break; |
317 | - | 269 | + |
318 | - default: | 270 | + default: |
319 | - break; | 271 | + break; |
320 | } | 272 | } |
321 | } | 273 | } |
322 | } | 274 | } |
... | @@ -330,16 +282,14 @@ public class GroupManager | ... | @@ -330,16 +282,14 @@ public class GroupManager |
330 | } | 282 | } |
331 | 283 | ||
332 | @Override | 284 | @Override |
333 | - public void groupOperationFailed(DeviceId deviceId, | 285 | + public void groupOperationFailed(DeviceId deviceId, GroupOperation operation) { |
334 | - GroupOperation operation) { | ||
335 | store.groupOperationFailed(deviceId, operation); | 286 | store.groupOperationFailed(deviceId, operation); |
336 | } | 287 | } |
337 | 288 | ||
338 | @Override | 289 | @Override |
339 | public void pushGroupMetrics(DeviceId deviceId, | 290 | public void pushGroupMetrics(DeviceId deviceId, |
340 | Collection<Group> groupEntries) { | 291 | Collection<Group> groupEntries) { |
341 | - log.trace("Received group metrics from device {}", | 292 | + log.trace("Received group metrics from device {}", deviceId); |
342 | - deviceId); | ||
343 | checkValidity(); | 293 | checkValidity(); |
344 | store.pushGroupMetrics(deviceId, groupEntries); | 294 | store.pushGroupMetrics(deviceId, groupEntries); |
345 | } | 295 | } |
... | @@ -350,21 +300,17 @@ public class GroupManager | ... | @@ -350,21 +300,17 @@ public class GroupManager |
350 | @Override | 300 | @Override |
351 | public void event(DeviceEvent event) { | 301 | public void event(DeviceEvent event) { |
352 | switch (event.type()) { | 302 | switch (event.type()) { |
353 | - case DEVICE_REMOVED: | 303 | + case DEVICE_REMOVED: |
354 | - case DEVICE_AVAILABILITY_CHANGED: | 304 | + case DEVICE_AVAILABILITY_CHANGED: |
355 | - if (!deviceService.isAvailable(event.subject().id())) { | 305 | + if (!deviceService.isAvailable(event.subject().id())) { |
356 | - log.debug("GroupService DeviceListener: Received event {}." | 306 | + log.debug("Device {} became un available; clearing initial audit status", |
357 | - + "Device is no more available." | 307 | + event.type(), event.subject().id()); |
358 | - + "Clearing device {} initial " | 308 | + store.deviceInitialAuditCompleted(event.subject().id(), false); |
359 | - + "AUDIT completed status", | 309 | + } |
360 | - event.type(), | 310 | + break; |
361 | - event.subject().id()); | 311 | + |
362 | - store.deviceInitialAuditCompleted(event.subject().id(), false); | 312 | + default: |
363 | - } | 313 | + break; |
364 | - break; | ||
365 | - | ||
366 | - default: | ||
367 | - break; | ||
368 | } | 314 | } |
369 | } | 315 | } |
370 | } | 316 | } | ... | ... |
... | @@ -24,9 +24,8 @@ import org.apache.felix.scr.annotations.Service; | ... | @@ -24,9 +24,8 @@ import org.apache.felix.scr.annotations.Service; |
24 | import org.onlab.packet.IpAddress; | 24 | import org.onlab.packet.IpAddress; |
25 | import org.onlab.packet.MacAddress; | 25 | import org.onlab.packet.MacAddress; |
26 | import org.onlab.packet.VlanId; | 26 | import org.onlab.packet.VlanId; |
27 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
27 | import org.onosproject.core.Permission; | 28 | import org.onosproject.core.Permission; |
28 | -import org.onosproject.event.EventDeliveryService; | ||
29 | -import org.onosproject.event.ListenerRegistry; | ||
30 | import org.onosproject.incubator.net.config.NetworkConfigEvent; | 29 | import org.onosproject.incubator.net.config.NetworkConfigEvent; |
31 | import org.onosproject.incubator.net.config.NetworkConfigListener; | 30 | import org.onosproject.incubator.net.config.NetworkConfigListener; |
32 | import org.onosproject.incubator.net.config.NetworkConfigService; | 31 | import org.onosproject.incubator.net.config.NetworkConfigService; |
... | @@ -51,7 +50,6 @@ import org.onosproject.net.host.HostStore; | ... | @@ -51,7 +50,6 @@ import org.onosproject.net.host.HostStore; |
51 | import org.onosproject.net.host.HostStoreDelegate; | 50 | import org.onosproject.net.host.HostStoreDelegate; |
52 | import org.onosproject.net.host.PortAddresses; | 51 | import org.onosproject.net.host.PortAddresses; |
53 | import org.onosproject.net.packet.PacketService; | 52 | import org.onosproject.net.packet.PacketService; |
54 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
55 | import org.onosproject.net.provider.AbstractProviderService; | 53 | import org.onosproject.net.provider.AbstractProviderService; |
56 | import org.slf4j.Logger; | 54 | import org.slf4j.Logger; |
57 | 55 | ||
... | @@ -59,9 +57,8 @@ import java.util.Set; | ... | @@ -59,9 +57,8 @@ import java.util.Set; |
59 | 57 | ||
60 | import static com.google.common.base.Preconditions.checkNotNull; | 58 | import static com.google.common.base.Preconditions.checkNotNull; |
61 | import static com.google.common.base.Preconditions.checkState; | 59 | import static com.google.common.base.Preconditions.checkState; |
62 | -import static org.slf4j.LoggerFactory.getLogger; | ||
63 | import static org.onosproject.security.AppGuard.checkPermission; | 60 | import static org.onosproject.security.AppGuard.checkPermission; |
64 | - | 61 | +import static org.slf4j.LoggerFactory.getLogger; |
65 | 62 | ||
66 | /** | 63 | /** |
67 | * Provides basic implementation of the host SB & NB APIs. | 64 | * Provides basic implementation of the host SB & NB APIs. |
... | @@ -69,14 +66,12 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -69,14 +66,12 @@ import static org.onosproject.security.AppGuard.checkPermission; |
69 | @Component(immediate = true) | 66 | @Component(immediate = true) |
70 | @Service | 67 | @Service |
71 | public class HostManager | 68 | public class HostManager |
72 | - extends AbstractProviderRegistry<HostProvider, HostProviderService> | 69 | + extends AbstractListenerProviderRegistry<HostEvent, HostListener, HostProvider, HostProviderService> |
73 | implements HostService, HostAdminService, HostProviderRegistry { | 70 | implements HostService, HostAdminService, HostProviderRegistry { |
74 | 71 | ||
75 | - public static final String HOST_ID_NULL = "Host ID cannot be null"; | ||
76 | private final Logger log = getLogger(getClass()); | 72 | private final Logger log = getLogger(getClass()); |
77 | 73 | ||
78 | - private final ListenerRegistry<HostEvent, HostListener> | 74 | + public static final String HOST_ID_NULL = "Host ID cannot be null"; |
79 | - listenerRegistry = new ListenerRegistry<>(); | ||
80 | 75 | ||
81 | private final NetworkConfigListener networkConfigListener = new InternalNetworkConfigListener(); | 76 | private final NetworkConfigListener networkConfigListener = new InternalNetworkConfigListener(); |
82 | 77 | ||
... | @@ -86,9 +81,6 @@ public class HostManager | ... | @@ -86,9 +81,6 @@ public class HostManager |
86 | protected HostStore store; | 81 | protected HostStore store; |
87 | 82 | ||
88 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 83 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
89 | - protected EventDeliveryService eventDispatcher; | ||
90 | - | ||
91 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
92 | protected DeviceService deviceService; | 84 | protected DeviceService deviceService; |
93 | 85 | ||
94 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 86 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
... | @@ -101,12 +93,12 @@ public class HostManager | ... | @@ -101,12 +93,12 @@ public class HostManager |
101 | 93 | ||
102 | @Activate | 94 | @Activate |
103 | public void activate() { | 95 | public void activate() { |
104 | - log.info("Started"); | ||
105 | store.setDelegate(delegate); | 96 | store.setDelegate(delegate); |
106 | eventDispatcher.addSink(HostEvent.class, listenerRegistry); | 97 | eventDispatcher.addSink(HostEvent.class, listenerRegistry); |
107 | networkConfigService.addListener(networkConfigListener); | 98 | networkConfigService.addListener(networkConfigListener); |
108 | - monitor = new HostMonitor(deviceService, packetService, this); | 99 | + monitor = new HostMonitor(deviceService, packetService, this); |
109 | monitor.start(); | 100 | monitor.start(); |
101 | + log.info("Started"); | ||
110 | } | 102 | } |
111 | 103 | ||
112 | @Deactivate | 104 | @Deactivate |
... | @@ -120,28 +112,24 @@ public class HostManager | ... | @@ -120,28 +112,24 @@ public class HostManager |
120 | @Override | 112 | @Override |
121 | protected HostProviderService createProviderService(HostProvider provider) { | 113 | protected HostProviderService createProviderService(HostProvider provider) { |
122 | monitor.registerHostProvider(provider); | 114 | monitor.registerHostProvider(provider); |
123 | - | ||
124 | return new InternalHostProviderService(provider); | 115 | return new InternalHostProviderService(provider); |
125 | } | 116 | } |
126 | 117 | ||
127 | @Override | 118 | @Override |
128 | public int getHostCount() { | 119 | public int getHostCount() { |
129 | checkPermission(Permission.HOST_READ); | 120 | checkPermission(Permission.HOST_READ); |
130 | - | ||
131 | return store.getHostCount(); | 121 | return store.getHostCount(); |
132 | } | 122 | } |
133 | 123 | ||
134 | @Override | 124 | @Override |
135 | public Iterable<Host> getHosts() { | 125 | public Iterable<Host> getHosts() { |
136 | checkPermission(Permission.HOST_READ); | 126 | checkPermission(Permission.HOST_READ); |
137 | - | ||
138 | return store.getHosts(); | 127 | return store.getHosts(); |
139 | } | 128 | } |
140 | 129 | ||
141 | @Override | 130 | @Override |
142 | public Host getHost(HostId hostId) { | 131 | public Host getHost(HostId hostId) { |
143 | checkPermission(Permission.HOST_READ); | 132 | checkPermission(Permission.HOST_READ); |
144 | - | ||
145 | checkNotNull(hostId, HOST_ID_NULL); | 133 | checkNotNull(hostId, HOST_ID_NULL); |
146 | return store.getHost(hostId); | 134 | return store.getHost(hostId); |
147 | } | 135 | } |
... | @@ -149,14 +137,12 @@ public class HostManager | ... | @@ -149,14 +137,12 @@ public class HostManager |
149 | @Override | 137 | @Override |
150 | public Set<Host> getHostsByVlan(VlanId vlanId) { | 138 | public Set<Host> getHostsByVlan(VlanId vlanId) { |
151 | checkPermission(Permission.HOST_READ); | 139 | checkPermission(Permission.HOST_READ); |
152 | - | ||
153 | return store.getHosts(vlanId); | 140 | return store.getHosts(vlanId); |
154 | } | 141 | } |
155 | 142 | ||
156 | @Override | 143 | @Override |
157 | public Set<Host> getHostsByMac(MacAddress mac) { | 144 | public Set<Host> getHostsByMac(MacAddress mac) { |
158 | checkPermission(Permission.HOST_READ); | 145 | checkPermission(Permission.HOST_READ); |
159 | - | ||
160 | checkNotNull(mac, "MAC address cannot be null"); | 146 | checkNotNull(mac, "MAC address cannot be null"); |
161 | return store.getHosts(mac); | 147 | return store.getHosts(mac); |
162 | } | 148 | } |
... | @@ -164,7 +150,6 @@ public class HostManager | ... | @@ -164,7 +150,6 @@ public class HostManager |
164 | @Override | 150 | @Override |
165 | public Set<Host> getHostsByIp(IpAddress ip) { | 151 | public Set<Host> getHostsByIp(IpAddress ip) { |
166 | checkPermission(Permission.HOST_READ); | 152 | checkPermission(Permission.HOST_READ); |
167 | - | ||
168 | checkNotNull(ip, "IP address cannot be null"); | 153 | checkNotNull(ip, "IP address cannot be null"); |
169 | return store.getHosts(ip); | 154 | return store.getHosts(ip); |
170 | } | 155 | } |
... | @@ -172,7 +157,6 @@ public class HostManager | ... | @@ -172,7 +157,6 @@ public class HostManager |
172 | @Override | 157 | @Override |
173 | public Set<Host> getConnectedHosts(ConnectPoint connectPoint) { | 158 | public Set<Host> getConnectedHosts(ConnectPoint connectPoint) { |
174 | checkPermission(Permission.HOST_READ); | 159 | checkPermission(Permission.HOST_READ); |
175 | - | ||
176 | checkNotNull(connectPoint, "Connection point cannot be null"); | 160 | checkNotNull(connectPoint, "Connection point cannot be null"); |
177 | return store.getConnectedHosts(connectPoint); | 161 | return store.getConnectedHosts(connectPoint); |
178 | } | 162 | } |
... | @@ -180,7 +164,6 @@ public class HostManager | ... | @@ -180,7 +164,6 @@ public class HostManager |
180 | @Override | 164 | @Override |
181 | public Set<Host> getConnectedHosts(DeviceId deviceId) { | 165 | public Set<Host> getConnectedHosts(DeviceId deviceId) { |
182 | checkPermission(Permission.HOST_READ); | 166 | checkPermission(Permission.HOST_READ); |
183 | - | ||
184 | checkNotNull(deviceId, "Device ID cannot be null"); | 167 | checkNotNull(deviceId, "Device ID cannot be null"); |
185 | return store.getConnectedHosts(deviceId); | 168 | return store.getConnectedHosts(deviceId); |
186 | } | 169 | } |
... | @@ -188,34 +171,18 @@ public class HostManager | ... | @@ -188,34 +171,18 @@ public class HostManager |
188 | @Override | 171 | @Override |
189 | public void startMonitoringIp(IpAddress ip) { | 172 | public void startMonitoringIp(IpAddress ip) { |
190 | checkPermission(Permission.HOST_EVENT); | 173 | checkPermission(Permission.HOST_EVENT); |
191 | - | ||
192 | monitor.addMonitoringFor(ip); | 174 | monitor.addMonitoringFor(ip); |
193 | } | 175 | } |
194 | 176 | ||
195 | @Override | 177 | @Override |
196 | public void stopMonitoringIp(IpAddress ip) { | 178 | public void stopMonitoringIp(IpAddress ip) { |
197 | checkPermission(Permission.HOST_EVENT); | 179 | checkPermission(Permission.HOST_EVENT); |
198 | - | ||
199 | monitor.stopMonitoring(ip); | 180 | monitor.stopMonitoring(ip); |
200 | } | 181 | } |
201 | 182 | ||
202 | @Override | 183 | @Override |
203 | public void requestMac(IpAddress ip) { | 184 | public void requestMac(IpAddress ip) { |
204 | - // TODO Auto-generated method stub | 185 | + // FIXME!!!! Auto-generated method stub |
205 | - } | ||
206 | - | ||
207 | - @Override | ||
208 | - public void addListener(HostListener listener) { | ||
209 | - checkPermission(Permission.HOST_EVENT); | ||
210 | - | ||
211 | - listenerRegistry.addListener(listener); | ||
212 | - } | ||
213 | - | ||
214 | - @Override | ||
215 | - public void removeListener(HostListener listener) { | ||
216 | - checkPermission(Permission.HOST_EVENT); | ||
217 | - | ||
218 | - listenerRegistry.removeListener(listener); | ||
219 | } | 186 | } |
220 | 187 | ||
221 | @Override | 188 | @Override |
... | @@ -245,14 +212,12 @@ public class HostManager | ... | @@ -245,14 +212,12 @@ public class HostManager |
245 | @Override | 212 | @Override |
246 | public Set<PortAddresses> getAddressBindings() { | 213 | public Set<PortAddresses> getAddressBindings() { |
247 | checkPermission(Permission.HOST_READ); | 214 | checkPermission(Permission.HOST_READ); |
248 | - | ||
249 | return store.getAddressBindings(); | 215 | return store.getAddressBindings(); |
250 | } | 216 | } |
251 | 217 | ||
252 | @Override | 218 | @Override |
253 | public Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint) { | 219 | public Set<PortAddresses> getAddressBindingsForPort(ConnectPoint connectPoint) { |
254 | checkPermission(Permission.HOST_READ); | 220 | checkPermission(Permission.HOST_READ); |
255 | - | ||
256 | return store.getAddressBindingsForPort(connectPoint); | 221 | return store.getAddressBindingsForPort(connectPoint); |
257 | } | 222 | } |
258 | 223 | ||
... | @@ -326,13 +291,6 @@ public class HostManager | ... | @@ -326,13 +291,6 @@ public class HostManager |
326 | return DefaultAnnotations.union(originalAnnotations, newAnnotations); | 291 | return DefaultAnnotations.union(originalAnnotations, newAnnotations); |
327 | } | 292 | } |
328 | 293 | ||
329 | - // Posts the specified event to the local event dispatcher. | ||
330 | - private void post(HostEvent event) { | ||
331 | - if (event != null) { | ||
332 | - eventDispatcher.post(event); | ||
333 | - } | ||
334 | - } | ||
335 | - | ||
336 | // Store delegate to re-post events emitted from the store. | 294 | // Store delegate to re-post events emitted from the store. |
337 | private class InternalStoreDelegate implements HostStoreDelegate { | 295 | private class InternalStoreDelegate implements HostStoreDelegate { |
338 | @Override | 296 | @Override | ... | ... |
... | @@ -22,11 +22,10 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -22,11 +22,10 @@ import org.apache.felix.scr.annotations.Deactivate; |
22 | import org.apache.felix.scr.annotations.Reference; | 22 | import org.apache.felix.scr.annotations.Reference; |
23 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 23 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
24 | import org.apache.felix.scr.annotations.Service; | 24 | import org.apache.felix.scr.annotations.Service; |
25 | +import org.onosproject.event.AbstractListenerManager; | ||
25 | import org.onosproject.core.CoreService; | 26 | import org.onosproject.core.CoreService; |
26 | import org.onosproject.core.IdGenerator; | 27 | import org.onosproject.core.IdGenerator; |
27 | import org.onosproject.core.Permission; | 28 | import org.onosproject.core.Permission; |
28 | -import org.onosproject.event.ListenerRegistry; | ||
29 | -import org.onosproject.event.EventDeliveryService; | ||
30 | import org.onosproject.net.flow.FlowRule; | 29 | import org.onosproject.net.flow.FlowRule; |
31 | import org.onosproject.net.flow.FlowRuleOperations; | 30 | import org.onosproject.net.flow.FlowRuleOperations; |
32 | import org.onosproject.net.flow.FlowRuleOperationsContext; | 31 | import org.onosproject.net.flow.FlowRuleOperationsContext; |
... | @@ -65,9 +64,8 @@ import static java.util.concurrent.Executors.newSingleThreadExecutor; | ... | @@ -65,9 +64,8 @@ import static java.util.concurrent.Executors.newSingleThreadExecutor; |
65 | import static org.onlab.util.Tools.groupedThreads; | 64 | import static org.onlab.util.Tools.groupedThreads; |
66 | import static org.onosproject.net.intent.IntentState.*; | 65 | import static org.onosproject.net.intent.IntentState.*; |
67 | import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.newInitialPhase; | 66 | import static org.onosproject.net.intent.impl.phase.IntentProcessPhase.newInitialPhase; |
68 | -import static org.slf4j.LoggerFactory.getLogger; | ||
69 | import static org.onosproject.security.AppGuard.checkPermission; | 67 | import static org.onosproject.security.AppGuard.checkPermission; |
70 | - | 68 | +import static org.slf4j.LoggerFactory.getLogger; |
71 | 69 | ||
72 | /** | 70 | /** |
73 | * An implementation of intent service. | 71 | * An implementation of intent service. |
... | @@ -75,7 +73,9 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -75,7 +73,9 @@ import static org.onosproject.security.AppGuard.checkPermission; |
75 | @Component(immediate = true) | 73 | @Component(immediate = true) |
76 | @Service | 74 | @Service |
77 | public class IntentManager | 75 | public class IntentManager |
76 | + extends AbstractListenerManager<IntentEvent, IntentListener> | ||
78 | implements IntentService, IntentExtensionService { | 77 | implements IntentService, IntentExtensionService { |
78 | + | ||
79 | private static final Logger log = getLogger(IntentManager.class); | 79 | private static final Logger log = getLogger(IntentManager.class); |
80 | 80 | ||
81 | public static final String INTENT_NULL = "Intent cannot be null"; | 81 | public static final String INTENT_NULL = "Intent cannot be null"; |
... | @@ -86,9 +86,6 @@ public class IntentManager | ... | @@ -86,9 +86,6 @@ public class IntentManager |
86 | private static final EnumSet<IntentState> RECOMPILE | 86 | private static final EnumSet<IntentState> RECOMPILE |
87 | = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ); | 87 | = EnumSet.of(INSTALL_REQ, FAILED, WITHDRAW_REQ); |
88 | 88 | ||
89 | - private final ListenerRegistry<IntentEvent, IntentListener> | ||
90 | - listenerRegistry = new ListenerRegistry<>(); | ||
91 | - | ||
92 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 89 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
93 | protected CoreService coreService; | 90 | protected CoreService coreService; |
94 | 91 | ||
... | @@ -99,12 +96,8 @@ public class IntentManager | ... | @@ -99,12 +96,8 @@ public class IntentManager |
99 | protected ObjectiveTrackerService trackerService; | 96 | protected ObjectiveTrackerService trackerService; |
100 | 97 | ||
101 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 98 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
102 | - protected EventDeliveryService eventDispatcher; | ||
103 | - | ||
104 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
105 | protected FlowRuleService flowRuleService; | 99 | protected FlowRuleService flowRuleService; |
106 | 100 | ||
107 | - | ||
108 | private ExecutorService batchExecutor; | 101 | private ExecutorService batchExecutor; |
109 | private ExecutorService workerExecutor; | 102 | private ExecutorService workerExecutor; |
110 | 103 | ||
... | @@ -143,7 +136,6 @@ public class IntentManager | ... | @@ -143,7 +136,6 @@ public class IntentManager |
143 | @Override | 136 | @Override |
144 | public void submit(Intent intent) { | 137 | public void submit(Intent intent) { |
145 | checkPermission(Permission.INTENT_WRITE); | 138 | checkPermission(Permission.INTENT_WRITE); |
146 | - | ||
147 | checkNotNull(intent, INTENT_NULL); | 139 | checkNotNull(intent, INTENT_NULL); |
148 | IntentData data = new IntentData(intent, IntentState.INSTALL_REQ, null); | 140 | IntentData data = new IntentData(intent, IntentState.INSTALL_REQ, null); |
149 | store.addPending(data); | 141 | store.addPending(data); |
... | @@ -152,7 +144,6 @@ public class IntentManager | ... | @@ -152,7 +144,6 @@ public class IntentManager |
152 | @Override | 144 | @Override |
153 | public void withdraw(Intent intent) { | 145 | public void withdraw(Intent intent) { |
154 | checkPermission(Permission.INTENT_WRITE); | 146 | checkPermission(Permission.INTENT_WRITE); |
155 | - | ||
156 | checkNotNull(intent, INTENT_NULL); | 147 | checkNotNull(intent, INTENT_NULL); |
157 | IntentData data = new IntentData(intent, IntentState.WITHDRAW_REQ, null); | 148 | IntentData data = new IntentData(intent, IntentState.WITHDRAW_REQ, null); |
158 | store.addPending(data); | 149 | store.addPending(data); |
... | @@ -161,7 +152,6 @@ public class IntentManager | ... | @@ -161,7 +152,6 @@ public class IntentManager |
161 | @Override | 152 | @Override |
162 | public void purge(Intent intent) { | 153 | public void purge(Intent intent) { |
163 | checkPermission(Permission.INTENT_WRITE); | 154 | checkPermission(Permission.INTENT_WRITE); |
164 | - | ||
165 | checkNotNull(intent, INTENT_NULL); | 155 | checkNotNull(intent, INTENT_NULL); |
166 | IntentData data = new IntentData(intent, IntentState.PURGE_REQ, null); | 156 | IntentData data = new IntentData(intent, IntentState.PURGE_REQ, null); |
167 | store.addPending(data); | 157 | store.addPending(data); |
... | @@ -170,14 +160,12 @@ public class IntentManager | ... | @@ -170,14 +160,12 @@ public class IntentManager |
170 | @Override | 160 | @Override |
171 | public Intent getIntent(Key key) { | 161 | public Intent getIntent(Key key) { |
172 | checkPermission(Permission.INTENT_READ); | 162 | checkPermission(Permission.INTENT_READ); |
173 | - | ||
174 | return store.getIntent(key); | 163 | return store.getIntent(key); |
175 | } | 164 | } |
176 | 165 | ||
177 | @Override | 166 | @Override |
178 | public Iterable<Intent> getIntents() { | 167 | public Iterable<Intent> getIntents() { |
179 | checkPermission(Permission.INTENT_READ); | 168 | checkPermission(Permission.INTENT_READ); |
180 | - | ||
181 | return store.getIntents(); | 169 | return store.getIntents(); |
182 | } | 170 | } |
183 | 171 | ||
... | @@ -190,14 +178,12 @@ public class IntentManager | ... | @@ -190,14 +178,12 @@ public class IntentManager |
190 | @Override | 178 | @Override |
191 | public long getIntentCount() { | 179 | public long getIntentCount() { |
192 | checkPermission(Permission.INTENT_READ); | 180 | checkPermission(Permission.INTENT_READ); |
193 | - | ||
194 | return store.getIntentCount(); | 181 | return store.getIntentCount(); |
195 | } | 182 | } |
196 | 183 | ||
197 | @Override | 184 | @Override |
198 | public IntentState getIntentState(Key intentKey) { | 185 | public IntentState getIntentState(Key intentKey) { |
199 | checkPermission(Permission.INTENT_READ); | 186 | checkPermission(Permission.INTENT_READ); |
200 | - | ||
201 | checkNotNull(intentKey, INTENT_ID_NULL); | 187 | checkNotNull(intentKey, INTENT_ID_NULL); |
202 | return store.getIntentState(intentKey); | 188 | return store.getIntentState(intentKey); |
203 | } | 189 | } |
... | @@ -205,7 +191,6 @@ public class IntentManager | ... | @@ -205,7 +191,6 @@ public class IntentManager |
205 | @Override | 191 | @Override |
206 | public List<Intent> getInstallableIntents(Key intentKey) { | 192 | public List<Intent> getInstallableIntents(Key intentKey) { |
207 | checkPermission(Permission.INTENT_READ); | 193 | checkPermission(Permission.INTENT_READ); |
208 | - | ||
209 | checkNotNull(intentKey, INTENT_ID_NULL); | 194 | checkNotNull(intentKey, INTENT_ID_NULL); |
210 | return store.getInstallableIntents(intentKey); | 195 | return store.getInstallableIntents(intentKey); |
211 | } | 196 | } |
... | @@ -213,25 +198,10 @@ public class IntentManager | ... | @@ -213,25 +198,10 @@ public class IntentManager |
213 | @Override | 198 | @Override |
214 | public boolean isLocal(Key intentKey) { | 199 | public boolean isLocal(Key intentKey) { |
215 | checkPermission(Permission.INTENT_READ); | 200 | checkPermission(Permission.INTENT_READ); |
216 | - | ||
217 | return store.isMaster(intentKey); | 201 | return store.isMaster(intentKey); |
218 | } | 202 | } |
219 | 203 | ||
220 | @Override | 204 | @Override |
221 | - public void addListener(IntentListener listener) { | ||
222 | - checkPermission(Permission.INTENT_EVENT); | ||
223 | - | ||
224 | - listenerRegistry.addListener(listener); | ||
225 | - } | ||
226 | - | ||
227 | - @Override | ||
228 | - public void removeListener(IntentListener listener) { | ||
229 | - checkPermission(Permission.INTENT_EVENT); | ||
230 | - | ||
231 | - listenerRegistry.removeListener(listener); | ||
232 | - } | ||
233 | - | ||
234 | - @Override | ||
235 | public <T extends Intent> void registerCompiler(Class<T> cls, IntentCompiler<T> compiler) { | 205 | public <T extends Intent> void registerCompiler(Class<T> cls, IntentCompiler<T> compiler) { |
236 | compilerRegistry.registerCompiler(cls, compiler); | 206 | compilerRegistry.registerCompiler(cls, compiler); |
237 | } | 207 | } |
... | @@ -257,7 +227,7 @@ public class IntentManager | ... | @@ -257,7 +227,7 @@ public class IntentManager |
257 | private class InternalStoreDelegate implements IntentStoreDelegate { | 227 | private class InternalStoreDelegate implements IntentStoreDelegate { |
258 | @Override | 228 | @Override |
259 | public void notify(IntentEvent event) { | 229 | public void notify(IntentEvent event) { |
260 | - eventDispatcher.post(event); | 230 | + post(event); |
261 | } | 231 | } |
262 | 232 | ||
263 | @Override | 233 | @Override | ... | ... |
... | @@ -24,9 +24,8 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -24,9 +24,8 @@ import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Reference; | 24 | import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.apache.felix.scr.annotations.Service; | 26 | import org.apache.felix.scr.annotations.Service; |
27 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
27 | import org.onosproject.core.Permission; | 28 | import org.onosproject.core.Permission; |
28 | -import org.onosproject.event.EventDeliveryService; | ||
29 | -import org.onosproject.event.ListenerRegistry; | ||
30 | import org.onosproject.incubator.net.config.NetworkConfigEvent; | 29 | import org.onosproject.incubator.net.config.NetworkConfigEvent; |
31 | import org.onosproject.incubator.net.config.NetworkConfigListener; | 30 | import org.onosproject.incubator.net.config.NetworkConfigListener; |
32 | import org.onosproject.incubator.net.config.NetworkConfigService; | 31 | import org.onosproject.incubator.net.config.NetworkConfigService; |
... | @@ -53,7 +52,6 @@ import org.onosproject.net.link.LinkProviderService; | ... | @@ -53,7 +52,6 @@ import org.onosproject.net.link.LinkProviderService; |
53 | import org.onosproject.net.link.LinkService; | 52 | import org.onosproject.net.link.LinkService; |
54 | import org.onosproject.net.link.LinkStore; | 53 | import org.onosproject.net.link.LinkStore; |
55 | import org.onosproject.net.link.LinkStoreDelegate; | 54 | import org.onosproject.net.link.LinkStoreDelegate; |
56 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
57 | import org.onosproject.net.provider.AbstractProviderService; | 55 | import org.onosproject.net.provider.AbstractProviderService; |
58 | import org.slf4j.Logger; | 56 | import org.slf4j.Logger; |
59 | 57 | ||
... | @@ -63,8 +61,8 @@ import java.util.Set; | ... | @@ -63,8 +61,8 @@ import java.util.Set; |
63 | import static com.google.common.base.Preconditions.checkNotNull; | 61 | import static com.google.common.base.Preconditions.checkNotNull; |
64 | import static com.google.common.base.Preconditions.checkState; | 62 | import static com.google.common.base.Preconditions.checkState; |
65 | import static org.onosproject.net.LinkKey.linkKey; | 63 | import static org.onosproject.net.LinkKey.linkKey; |
66 | -import static org.slf4j.LoggerFactory.getLogger; | ||
67 | import static org.onosproject.security.AppGuard.checkPermission; | 64 | import static org.onosproject.security.AppGuard.checkPermission; |
65 | +import static org.slf4j.LoggerFactory.getLogger; | ||
68 | 66 | ||
69 | 67 | ||
70 | /** | 68 | /** |
... | @@ -73,7 +71,7 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -73,7 +71,7 @@ import static org.onosproject.security.AppGuard.checkPermission; |
73 | @Component(immediate = true) | 71 | @Component(immediate = true) |
74 | @Service | 72 | @Service |
75 | public class LinkManager | 73 | public class LinkManager |
76 | - extends AbstractProviderRegistry<LinkProvider, LinkProviderService> | 74 | + extends AbstractListenerProviderRegistry<LinkEvent, LinkListener, LinkProvider, LinkProviderService> |
77 | implements LinkService, LinkAdminService, LinkProviderRegistry { | 75 | implements LinkService, LinkAdminService, LinkProviderRegistry { |
78 | 76 | ||
79 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; | 77 | private static final String DEVICE_ID_NULL = "Device ID cannot be null"; |
... | @@ -82,9 +80,6 @@ public class LinkManager | ... | @@ -82,9 +80,6 @@ public class LinkManager |
82 | 80 | ||
83 | private final Logger log = getLogger(getClass()); | 81 | private final Logger log = getLogger(getClass()); |
84 | 82 | ||
85 | - protected final ListenerRegistry<LinkEvent, LinkListener> | ||
86 | - listenerRegistry = new ListenerRegistry<>(); | ||
87 | - | ||
88 | private final LinkStoreDelegate delegate = new InternalStoreDelegate(); | 83 | private final LinkStoreDelegate delegate = new InternalStoreDelegate(); |
89 | 84 | ||
90 | private final DeviceListener deviceListener = new InternalDeviceListener(); | 85 | private final DeviceListener deviceListener = new InternalDeviceListener(); |
... | @@ -98,9 +93,6 @@ public class LinkManager | ... | @@ -98,9 +93,6 @@ public class LinkManager |
98 | protected DeviceService deviceService; | 93 | protected DeviceService deviceService; |
99 | 94 | ||
100 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 95 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
101 | - protected EventDeliveryService eventDispatcher; | ||
102 | - | ||
103 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
104 | protected NetworkConfigService networkConfigService; | 96 | protected NetworkConfigService networkConfigService; |
105 | 97 | ||
106 | @Activate | 98 | @Activate |
... | @@ -124,21 +116,18 @@ public class LinkManager | ... | @@ -124,21 +116,18 @@ public class LinkManager |
124 | @Override | 116 | @Override |
125 | public int getLinkCount() { | 117 | public int getLinkCount() { |
126 | checkPermission(Permission.LINK_READ); | 118 | checkPermission(Permission.LINK_READ); |
127 | - | ||
128 | return store.getLinkCount(); | 119 | return store.getLinkCount(); |
129 | } | 120 | } |
130 | 121 | ||
131 | @Override | 122 | @Override |
132 | public Iterable<Link> getLinks() { | 123 | public Iterable<Link> getLinks() { |
133 | checkPermission(Permission.LINK_READ); | 124 | checkPermission(Permission.LINK_READ); |
134 | - | ||
135 | return store.getLinks(); | 125 | return store.getLinks(); |
136 | } | 126 | } |
137 | 127 | ||
138 | @Override | 128 | @Override |
139 | public Iterable<Link> getActiveLinks() { | 129 | public Iterable<Link> getActiveLinks() { |
140 | checkPermission(Permission.LINK_READ); | 130 | checkPermission(Permission.LINK_READ); |
141 | - | ||
142 | return FluentIterable.from(getLinks()) | 131 | return FluentIterable.from(getLinks()) |
143 | .filter(new Predicate<Link>() { | 132 | .filter(new Predicate<Link>() { |
144 | 133 | ||
... | @@ -152,7 +141,6 @@ public class LinkManager | ... | @@ -152,7 +141,6 @@ public class LinkManager |
152 | @Override | 141 | @Override |
153 | public Set<Link> getDeviceLinks(DeviceId deviceId) { | 142 | public Set<Link> getDeviceLinks(DeviceId deviceId) { |
154 | checkPermission(Permission.LINK_READ); | 143 | checkPermission(Permission.LINK_READ); |
155 | - | ||
156 | checkNotNull(deviceId, DEVICE_ID_NULL); | 144 | checkNotNull(deviceId, DEVICE_ID_NULL); |
157 | return Sets.union(store.getDeviceEgressLinks(deviceId), | 145 | return Sets.union(store.getDeviceEgressLinks(deviceId), |
158 | store.getDeviceIngressLinks(deviceId)); | 146 | store.getDeviceIngressLinks(deviceId)); |
... | @@ -161,7 +149,6 @@ public class LinkManager | ... | @@ -161,7 +149,6 @@ public class LinkManager |
161 | @Override | 149 | @Override |
162 | public Set<Link> getDeviceEgressLinks(DeviceId deviceId) { | 150 | public Set<Link> getDeviceEgressLinks(DeviceId deviceId) { |
163 | checkPermission(Permission.LINK_READ); | 151 | checkPermission(Permission.LINK_READ); |
164 | - | ||
165 | checkNotNull(deviceId, DEVICE_ID_NULL); | 152 | checkNotNull(deviceId, DEVICE_ID_NULL); |
166 | return store.getDeviceEgressLinks(deviceId); | 153 | return store.getDeviceEgressLinks(deviceId); |
167 | } | 154 | } |
... | @@ -169,7 +156,6 @@ public class LinkManager | ... | @@ -169,7 +156,6 @@ public class LinkManager |
169 | @Override | 156 | @Override |
170 | public Set<Link> getDeviceIngressLinks(DeviceId deviceId) { | 157 | public Set<Link> getDeviceIngressLinks(DeviceId deviceId) { |
171 | checkPermission(Permission.LINK_READ); | 158 | checkPermission(Permission.LINK_READ); |
172 | - | ||
173 | checkNotNull(deviceId, DEVICE_ID_NULL); | 159 | checkNotNull(deviceId, DEVICE_ID_NULL); |
174 | return store.getDeviceIngressLinks(deviceId); | 160 | return store.getDeviceIngressLinks(deviceId); |
175 | } | 161 | } |
... | @@ -177,7 +163,6 @@ public class LinkManager | ... | @@ -177,7 +163,6 @@ public class LinkManager |
177 | @Override | 163 | @Override |
178 | public Set<Link> getLinks(ConnectPoint connectPoint) { | 164 | public Set<Link> getLinks(ConnectPoint connectPoint) { |
179 | checkPermission(Permission.LINK_READ); | 165 | checkPermission(Permission.LINK_READ); |
180 | - | ||
181 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 166 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
182 | return Sets.union(store.getEgressLinks(connectPoint), | 167 | return Sets.union(store.getEgressLinks(connectPoint), |
183 | store.getIngressLinks(connectPoint)); | 168 | store.getIngressLinks(connectPoint)); |
... | @@ -186,7 +171,6 @@ public class LinkManager | ... | @@ -186,7 +171,6 @@ public class LinkManager |
186 | @Override | 171 | @Override |
187 | public Set<Link> getEgressLinks(ConnectPoint connectPoint) { | 172 | public Set<Link> getEgressLinks(ConnectPoint connectPoint) { |
188 | checkPermission(Permission.LINK_READ); | 173 | checkPermission(Permission.LINK_READ); |
189 | - | ||
190 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 174 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
191 | return store.getEgressLinks(connectPoint); | 175 | return store.getEgressLinks(connectPoint); |
192 | } | 176 | } |
... | @@ -194,7 +178,6 @@ public class LinkManager | ... | @@ -194,7 +178,6 @@ public class LinkManager |
194 | @Override | 178 | @Override |
195 | public Set<Link> getIngressLinks(ConnectPoint connectPoint) { | 179 | public Set<Link> getIngressLinks(ConnectPoint connectPoint) { |
196 | checkPermission(Permission.LINK_READ); | 180 | checkPermission(Permission.LINK_READ); |
197 | - | ||
198 | checkNotNull(connectPoint, CONNECT_POINT_NULL); | 181 | checkNotNull(connectPoint, CONNECT_POINT_NULL); |
199 | return store.getIngressLinks(connectPoint); | 182 | return store.getIngressLinks(connectPoint); |
200 | } | 183 | } |
... | @@ -202,7 +185,6 @@ public class LinkManager | ... | @@ -202,7 +185,6 @@ public class LinkManager |
202 | @Override | 185 | @Override |
203 | public Link getLink(ConnectPoint src, ConnectPoint dst) { | 186 | public Link getLink(ConnectPoint src, ConnectPoint dst) { |
204 | checkPermission(Permission.LINK_READ); | 187 | checkPermission(Permission.LINK_READ); |
205 | - | ||
206 | checkNotNull(src, CONNECT_POINT_NULL); | 188 | checkNotNull(src, CONNECT_POINT_NULL); |
207 | checkNotNull(dst, CONNECT_POINT_NULL); | 189 | checkNotNull(dst, CONNECT_POINT_NULL); |
208 | return store.getLink(src, dst); | 190 | return store.getLink(src, dst); |
... | @@ -228,18 +210,6 @@ public class LinkManager | ... | @@ -228,18 +210,6 @@ public class LinkManager |
228 | post(store.removeLink(src, dst)); | 210 | post(store.removeLink(src, dst)); |
229 | } | 211 | } |
230 | 212 | ||
231 | - @Override | ||
232 | - public void addListener(LinkListener listener) { | ||
233 | - checkPermission(Permission.LINK_EVENT); | ||
234 | - listenerRegistry.addListener(listener); | ||
235 | - } | ||
236 | - | ||
237 | - @Override | ||
238 | - public void removeListener(LinkListener listener) { | ||
239 | - checkPermission(Permission.LINK_EVENT); | ||
240 | - listenerRegistry.removeListener(listener); | ||
241 | - } | ||
242 | - | ||
243 | // Auxiliary interceptor for device remove events to prune links that | 213 | // Auxiliary interceptor for device remove events to prune links that |
244 | // are associated with the removed device or its port. | 214 | // are associated with the removed device or its port. |
245 | private class InternalDeviceListener implements DeviceListener { | 215 | private class InternalDeviceListener implements DeviceListener { |
... | @@ -376,13 +346,6 @@ public class LinkManager | ... | @@ -376,13 +346,6 @@ public class LinkManager |
376 | } | 346 | } |
377 | } | 347 | } |
378 | 348 | ||
379 | - // Posts the specified event to the local event dispatcher. | ||
380 | - private void post(LinkEvent event) { | ||
381 | - if (event != null) { | ||
382 | - eventDispatcher.post(event); | ||
383 | - } | ||
384 | - } | ||
385 | - | ||
386 | // Store delegate to re-post events emitted from the store. | 349 | // Store delegate to re-post events emitted from the store. |
387 | private class InternalStoreDelegate implements LinkStoreDelegate { | 350 | private class InternalStoreDelegate implements LinkStoreDelegate { |
388 | @Override | 351 | @Override | ... | ... |
... | @@ -22,11 +22,13 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -22,11 +22,13 @@ import org.apache.felix.scr.annotations.Deactivate; |
22 | import org.apache.felix.scr.annotations.Reference; | 22 | import org.apache.felix.scr.annotations.Reference; |
23 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 23 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
24 | import org.apache.felix.scr.annotations.Service; | 24 | import org.apache.felix.scr.annotations.Service; |
25 | +import org.onosproject.event.AbstractListenerManager; | ||
25 | import org.onosproject.core.Permission; | 26 | import org.onosproject.core.Permission; |
26 | -import org.onosproject.event.ListenerRegistry; | ||
27 | -import org.onosproject.event.EventDeliveryService; | ||
28 | import org.onosproject.net.Link; | 27 | import org.onosproject.net.Link; |
29 | import org.onosproject.net.intent.IntentId; | 28 | import org.onosproject.net.intent.IntentId; |
29 | +import org.onosproject.net.resource.ResourceAllocation; | ||
30 | +import org.onosproject.net.resource.ResourceRequest; | ||
31 | +import org.onosproject.net.resource.ResourceType; | ||
30 | import org.onosproject.net.resource.link.BandwidthResourceAllocation; | 32 | import org.onosproject.net.resource.link.BandwidthResourceAllocation; |
31 | import org.onosproject.net.resource.link.BandwidthResourceRequest; | 33 | import org.onosproject.net.resource.link.BandwidthResourceRequest; |
32 | import org.onosproject.net.resource.link.DefaultLinkResourceAllocations; | 34 | import org.onosproject.net.resource.link.DefaultLinkResourceAllocations; |
... | @@ -43,9 +45,6 @@ import org.onosproject.net.resource.link.LinkResourceStoreDelegate; | ... | @@ -43,9 +45,6 @@ import org.onosproject.net.resource.link.LinkResourceStoreDelegate; |
43 | import org.onosproject.net.resource.link.MplsLabel; | 45 | import org.onosproject.net.resource.link.MplsLabel; |
44 | import org.onosproject.net.resource.link.MplsLabelResourceAllocation; | 46 | import org.onosproject.net.resource.link.MplsLabelResourceAllocation; |
45 | import org.onosproject.net.resource.link.MplsLabelResourceRequest; | 47 | import org.onosproject.net.resource.link.MplsLabelResourceRequest; |
46 | -import org.onosproject.net.resource.ResourceAllocation; | ||
47 | -import org.onosproject.net.resource.ResourceRequest; | ||
48 | -import org.onosproject.net.resource.ResourceType; | ||
49 | import org.slf4j.Logger; | 48 | import org.slf4j.Logger; |
50 | 49 | ||
51 | import java.util.Collections; | 50 | import java.util.Collections; |
... | @@ -57,8 +56,8 @@ import java.util.Set; | ... | @@ -57,8 +56,8 @@ import java.util.Set; |
57 | 56 | ||
58 | import static com.google.common.base.Preconditions.checkArgument; | 57 | import static com.google.common.base.Preconditions.checkArgument; |
59 | import static com.google.common.base.Preconditions.checkNotNull; | 58 | import static com.google.common.base.Preconditions.checkNotNull; |
60 | -import static org.slf4j.LoggerFactory.getLogger; | ||
61 | import static org.onosproject.security.AppGuard.checkPermission; | 59 | import static org.onosproject.security.AppGuard.checkPermission; |
60 | +import static org.slf4j.LoggerFactory.getLogger; | ||
62 | 61 | ||
63 | 62 | ||
64 | /** | 63 | /** |
... | @@ -66,19 +65,15 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -66,19 +65,15 @@ import static org.onosproject.security.AppGuard.checkPermission; |
66 | */ | 65 | */ |
67 | @Component(immediate = true) | 66 | @Component(immediate = true) |
68 | @Service | 67 | @Service |
69 | -public class LinkResourceManager implements LinkResourceService { | 68 | +public class LinkResourceManager |
69 | + extends AbstractListenerManager<LinkResourceEvent, LinkResourceListener> | ||
70 | + implements LinkResourceService { | ||
70 | 71 | ||
71 | private final Logger log = getLogger(getClass()); | 72 | private final Logger log = getLogger(getClass()); |
72 | 73 | ||
73 | - protected final ListenerRegistry<LinkResourceEvent, LinkResourceListener> | ||
74 | - listenerRegistry = new ListenerRegistry<>(); | ||
75 | - | ||
76 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 74 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
77 | private LinkResourceStore store; | 75 | private LinkResourceStore store; |
78 | 76 | ||
79 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
80 | - protected EventDeliveryService eventDispatcher; | ||
81 | - | ||
82 | @Activate | 77 | @Activate |
83 | public void activate() { | 78 | public void activate() { |
84 | eventDispatcher.addSink(LinkResourceEvent.class, listenerRegistry); | 79 | eventDispatcher.addSink(LinkResourceEvent.class, listenerRegistry); |
... | @@ -87,6 +82,7 @@ public class LinkResourceManager implements LinkResourceService { | ... | @@ -87,6 +82,7 @@ public class LinkResourceManager implements LinkResourceService { |
87 | 82 | ||
88 | @Deactivate | 83 | @Deactivate |
89 | public void deactivate() { | 84 | public void deactivate() { |
85 | + eventDispatcher.removeSink(LinkResourceEvent.class); | ||
90 | log.info("Stopped"); | 86 | log.info("Stopped"); |
91 | } | 87 | } |
92 | 88 | ||
... | @@ -218,7 +214,6 @@ public class LinkResourceManager implements LinkResourceService { | ... | @@ -218,7 +214,6 @@ public class LinkResourceManager implements LinkResourceService { |
218 | @Override | 214 | @Override |
219 | public void releaseResources(LinkResourceAllocations allocations) { | 215 | public void releaseResources(LinkResourceAllocations allocations) { |
220 | checkPermission(Permission.LINK_WRITE); | 216 | checkPermission(Permission.LINK_WRITE); |
221 | - | ||
222 | final LinkResourceEvent event = store.releaseResources(allocations); | 217 | final LinkResourceEvent event = store.releaseResources(allocations); |
223 | if (event != null) { | 218 | if (event != null) { |
224 | post(event); | 219 | post(event); |
... | @@ -229,7 +224,6 @@ public class LinkResourceManager implements LinkResourceService { | ... | @@ -229,7 +224,6 @@ public class LinkResourceManager implements LinkResourceService { |
229 | public LinkResourceAllocations updateResources(LinkResourceRequest req, | 224 | public LinkResourceAllocations updateResources(LinkResourceRequest req, |
230 | LinkResourceAllocations oldAllocations) { | 225 | LinkResourceAllocations oldAllocations) { |
231 | checkPermission(Permission.LINK_WRITE); | 226 | checkPermission(Permission.LINK_WRITE); |
232 | - | ||
233 | releaseResources(oldAllocations); | 227 | releaseResources(oldAllocations); |
234 | return requestResources(req); | 228 | return requestResources(req); |
235 | } | 229 | } |
... | @@ -237,21 +231,18 @@ public class LinkResourceManager implements LinkResourceService { | ... | @@ -237,21 +231,18 @@ public class LinkResourceManager implements LinkResourceService { |
237 | @Override | 231 | @Override |
238 | public Iterable<LinkResourceAllocations> getAllocations() { | 232 | public Iterable<LinkResourceAllocations> getAllocations() { |
239 | checkPermission(Permission.LINK_READ); | 233 | checkPermission(Permission.LINK_READ); |
240 | - | ||
241 | return store.getAllocations(); | 234 | return store.getAllocations(); |
242 | } | 235 | } |
243 | 236 | ||
244 | @Override | 237 | @Override |
245 | public Iterable<LinkResourceAllocations> getAllocations(Link link) { | 238 | public Iterable<LinkResourceAllocations> getAllocations(Link link) { |
246 | checkPermission(Permission.LINK_READ); | 239 | checkPermission(Permission.LINK_READ); |
247 | - | ||
248 | return store.getAllocations(link); | 240 | return store.getAllocations(link); |
249 | } | 241 | } |
250 | 242 | ||
251 | @Override | 243 | @Override |
252 | public LinkResourceAllocations getAllocations(IntentId intentId) { | 244 | public LinkResourceAllocations getAllocations(IntentId intentId) { |
253 | checkPermission(Permission.LINK_READ); | 245 | checkPermission(Permission.LINK_READ); |
254 | - | ||
255 | return store.getAllocations(intentId); | 246 | return store.getAllocations(intentId); |
256 | } | 247 | } |
257 | 248 | ||
... | @@ -291,29 +282,6 @@ public class LinkResourceManager implements LinkResourceService { | ... | @@ -291,29 +282,6 @@ public class LinkResourceManager implements LinkResourceService { |
291 | return result; | 282 | return result; |
292 | } | 283 | } |
293 | 284 | ||
294 | - @Override | ||
295 | - public void addListener(LinkResourceListener listener) { | ||
296 | - checkPermission(Permission.LINK_EVENT); | ||
297 | - | ||
298 | - listenerRegistry.addListener(listener); | ||
299 | - } | ||
300 | - | ||
301 | - @Override | ||
302 | - public void removeListener(LinkResourceListener listener) { | ||
303 | - checkPermission(Permission.LINK_EVENT); | ||
304 | - | ||
305 | - listenerRegistry.removeListener(listener); | ||
306 | - } | ||
307 | - | ||
308 | - /** | ||
309 | - * Posts the specified event to the local event dispatcher. | ||
310 | - */ | ||
311 | - private void post(LinkResourceEvent event) { | ||
312 | - if (event != null) { | ||
313 | - eventDispatcher.post(event); | ||
314 | - } | ||
315 | - } | ||
316 | - | ||
317 | /** | 285 | /** |
318 | * Store delegate to re-post events emitted from the store. | 286 | * Store delegate to re-post events emitted from the store. |
319 | */ | 287 | */ | ... | ... |
... | @@ -21,15 +21,13 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -21,15 +21,13 @@ import org.apache.felix.scr.annotations.Deactivate; |
21 | import org.apache.felix.scr.annotations.Reference; | 21 | import org.apache.felix.scr.annotations.Reference; |
22 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 22 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
23 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
24 | import org.onosproject.core.Permission; | 25 | import org.onosproject.core.Permission; |
25 | -import org.onosproject.event.ListenerRegistry; | ||
26 | import org.onosproject.event.Event; | 26 | import org.onosproject.event.Event; |
27 | -import org.onosproject.event.EventDeliveryService; | ||
28 | import org.onosproject.net.ConnectPoint; | 27 | import org.onosproject.net.ConnectPoint; |
29 | import org.onosproject.net.DeviceId; | 28 | import org.onosproject.net.DeviceId; |
30 | import org.onosproject.net.Link; | 29 | import org.onosproject.net.Link; |
31 | import org.onosproject.net.Path; | 30 | import org.onosproject.net.Path; |
32 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
33 | import org.onosproject.net.provider.AbstractProviderService; | 31 | import org.onosproject.net.provider.AbstractProviderService; |
34 | import org.onosproject.net.topology.ClusterId; | 32 | import org.onosproject.net.topology.ClusterId; |
35 | import org.onosproject.net.topology.GraphDescription; | 33 | import org.onosproject.net.topology.GraphDescription; |
... | @@ -51,8 +49,8 @@ import java.util.List; | ... | @@ -51,8 +49,8 @@ import java.util.List; |
51 | import java.util.Set; | 49 | import java.util.Set; |
52 | 50 | ||
53 | import static com.google.common.base.Preconditions.checkNotNull; | 51 | import static com.google.common.base.Preconditions.checkNotNull; |
54 | -import static org.slf4j.LoggerFactory.getLogger; | ||
55 | import static org.onosproject.security.AppGuard.checkPermission; | 52 | import static org.onosproject.security.AppGuard.checkPermission; |
53 | +import static org.slf4j.LoggerFactory.getLogger; | ||
56 | 54 | ||
57 | /** | 55 | /** |
58 | * Provides basic implementation of the topology SB & NB APIs. | 56 | * Provides basic implementation of the topology SB & NB APIs. |
... | @@ -60,7 +58,8 @@ import static org.onosproject.security.AppGuard.checkPermission; | ... | @@ -60,7 +58,8 @@ import static org.onosproject.security.AppGuard.checkPermission; |
60 | @Component(immediate = true) | 58 | @Component(immediate = true) |
61 | @Service | 59 | @Service |
62 | public class TopologyManager | 60 | public class TopologyManager |
63 | - extends AbstractProviderRegistry<TopologyProvider, TopologyProviderService> | 61 | + extends AbstractListenerProviderRegistry<TopologyEvent, TopologyListener, |
62 | + TopologyProvider, TopologyProviderService> | ||
64 | implements TopologyService, TopologyProviderRegistry { | 63 | implements TopologyService, TopologyProviderRegistry { |
65 | 64 | ||
66 | public static final String TOPOLOGY_NULL = "Topology cannot be null"; | 65 | public static final String TOPOLOGY_NULL = "Topology cannot be null"; |
... | @@ -71,18 +70,11 @@ public class TopologyManager | ... | @@ -71,18 +70,11 @@ public class TopologyManager |
71 | 70 | ||
72 | private final Logger log = getLogger(getClass()); | 71 | private final Logger log = getLogger(getClass()); |
73 | 72 | ||
74 | - private final ListenerRegistry<TopologyEvent, TopologyListener> | ||
75 | - listenerRegistry = new ListenerRegistry<>(); | ||
76 | - | ||
77 | private TopologyStoreDelegate delegate = new InternalStoreDelegate(); | 73 | private TopologyStoreDelegate delegate = new InternalStoreDelegate(); |
78 | 74 | ||
79 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 75 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
80 | protected TopologyStore store; | 76 | protected TopologyStore store; |
81 | 77 | ||
82 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
83 | - protected EventDeliveryService eventDispatcher; | ||
84 | - | ||
85 | - | ||
86 | @Activate | 78 | @Activate |
87 | public void activate() { | 79 | public void activate() { |
88 | store.setDelegate(delegate); | 80 | store.setDelegate(delegate); |
... | @@ -100,14 +92,12 @@ public class TopologyManager | ... | @@ -100,14 +92,12 @@ public class TopologyManager |
100 | @Override | 92 | @Override |
101 | public Topology currentTopology() { | 93 | public Topology currentTopology() { |
102 | checkPermission(Permission.TOPOLOGY_READ); | 94 | checkPermission(Permission.TOPOLOGY_READ); |
103 | - | ||
104 | return store.currentTopology(); | 95 | return store.currentTopology(); |
105 | } | 96 | } |
106 | 97 | ||
107 | @Override | 98 | @Override |
108 | public boolean isLatest(Topology topology) { | 99 | public boolean isLatest(Topology topology) { |
109 | checkPermission(Permission.TOPOLOGY_READ); | 100 | checkPermission(Permission.TOPOLOGY_READ); |
110 | - | ||
111 | checkNotNull(topology, TOPOLOGY_NULL); | 101 | checkNotNull(topology, TOPOLOGY_NULL); |
112 | return store.isLatest(topology); | 102 | return store.isLatest(topology); |
113 | } | 103 | } |
... | @@ -115,7 +105,6 @@ public class TopologyManager | ... | @@ -115,7 +105,6 @@ public class TopologyManager |
115 | @Override | 105 | @Override |
116 | public Set<TopologyCluster> getClusters(Topology topology) { | 106 | public Set<TopologyCluster> getClusters(Topology topology) { |
117 | checkPermission(Permission.TOPOLOGY_READ); | 107 | checkPermission(Permission.TOPOLOGY_READ); |
118 | - | ||
119 | checkNotNull(topology, TOPOLOGY_NULL); | 108 | checkNotNull(topology, TOPOLOGY_NULL); |
120 | return store.getClusters(topology); | 109 | return store.getClusters(topology); |
121 | } | 110 | } |
... | @@ -123,7 +112,6 @@ public class TopologyManager | ... | @@ -123,7 +112,6 @@ public class TopologyManager |
123 | @Override | 112 | @Override |
124 | public TopologyCluster getCluster(Topology topology, ClusterId clusterId) { | 113 | public TopologyCluster getCluster(Topology topology, ClusterId clusterId) { |
125 | checkPermission(Permission.TOPOLOGY_READ); | 114 | checkPermission(Permission.TOPOLOGY_READ); |
126 | - | ||
127 | checkNotNull(topology, TOPOLOGY_NULL); | 115 | checkNotNull(topology, TOPOLOGY_NULL); |
128 | checkNotNull(topology, CLUSTER_ID_NULL); | 116 | checkNotNull(topology, CLUSTER_ID_NULL); |
129 | return store.getCluster(topology, clusterId); | 117 | return store.getCluster(topology, clusterId); |
... | @@ -132,7 +120,6 @@ public class TopologyManager | ... | @@ -132,7 +120,6 @@ public class TopologyManager |
132 | @Override | 120 | @Override |
133 | public Set<DeviceId> getClusterDevices(Topology topology, TopologyCluster cluster) { | 121 | public Set<DeviceId> getClusterDevices(Topology topology, TopologyCluster cluster) { |
134 | checkPermission(Permission.TOPOLOGY_READ); | 122 | checkPermission(Permission.TOPOLOGY_READ); |
135 | - | ||
136 | checkNotNull(topology, TOPOLOGY_NULL); | 123 | checkNotNull(topology, TOPOLOGY_NULL); |
137 | checkNotNull(topology, CLUSTER_NULL); | 124 | checkNotNull(topology, CLUSTER_NULL); |
138 | return store.getClusterDevices(topology, cluster); | 125 | return store.getClusterDevices(topology, cluster); |
... | @@ -141,7 +128,6 @@ public class TopologyManager | ... | @@ -141,7 +128,6 @@ public class TopologyManager |
141 | @Override | 128 | @Override |
142 | public Set<Link> getClusterLinks(Topology topology, TopologyCluster cluster) { | 129 | public Set<Link> getClusterLinks(Topology topology, TopologyCluster cluster) { |
143 | checkPermission(Permission.TOPOLOGY_READ); | 130 | checkPermission(Permission.TOPOLOGY_READ); |
144 | - | ||
145 | checkNotNull(topology, TOPOLOGY_NULL); | 131 | checkNotNull(topology, TOPOLOGY_NULL); |
146 | checkNotNull(topology, CLUSTER_NULL); | 132 | checkNotNull(topology, CLUSTER_NULL); |
147 | return store.getClusterLinks(topology, cluster); | 133 | return store.getClusterLinks(topology, cluster); |
... | @@ -150,7 +136,6 @@ public class TopologyManager | ... | @@ -150,7 +136,6 @@ public class TopologyManager |
150 | @Override | 136 | @Override |
151 | public TopologyGraph getGraph(Topology topology) { | 137 | public TopologyGraph getGraph(Topology topology) { |
152 | checkPermission(Permission.TOPOLOGY_READ); | 138 | checkPermission(Permission.TOPOLOGY_READ); |
153 | - | ||
154 | checkNotNull(topology, TOPOLOGY_NULL); | 139 | checkNotNull(topology, TOPOLOGY_NULL); |
155 | return store.getGraph(topology); | 140 | return store.getGraph(topology); |
156 | } | 141 | } |
... | @@ -158,7 +143,6 @@ public class TopologyManager | ... | @@ -158,7 +143,6 @@ public class TopologyManager |
158 | @Override | 143 | @Override |
159 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst) { | 144 | public Set<Path> getPaths(Topology topology, DeviceId src, DeviceId dst) { |
160 | checkPermission(Permission.TOPOLOGY_READ); | 145 | checkPermission(Permission.TOPOLOGY_READ); |
161 | - | ||
162 | checkNotNull(topology, TOPOLOGY_NULL); | 146 | checkNotNull(topology, TOPOLOGY_NULL); |
163 | checkNotNull(src, DEVICE_ID_NULL); | 147 | checkNotNull(src, DEVICE_ID_NULL); |
164 | checkNotNull(dst, DEVICE_ID_NULL); | 148 | checkNotNull(dst, DEVICE_ID_NULL); |
... | @@ -179,7 +163,6 @@ public class TopologyManager | ... | @@ -179,7 +163,6 @@ public class TopologyManager |
179 | @Override | 163 | @Override |
180 | public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) { | 164 | public boolean isInfrastructure(Topology topology, ConnectPoint connectPoint) { |
181 | checkPermission(Permission.TOPOLOGY_READ); | 165 | checkPermission(Permission.TOPOLOGY_READ); |
182 | - | ||
183 | checkNotNull(topology, TOPOLOGY_NULL); | 166 | checkNotNull(topology, TOPOLOGY_NULL); |
184 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); | 167 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); |
185 | return store.isInfrastructure(topology, connectPoint); | 168 | return store.isInfrastructure(topology, connectPoint); |
... | @@ -188,26 +171,11 @@ public class TopologyManager | ... | @@ -188,26 +171,11 @@ public class TopologyManager |
188 | @Override | 171 | @Override |
189 | public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) { | 172 | public boolean isBroadcastPoint(Topology topology, ConnectPoint connectPoint) { |
190 | checkPermission(Permission.TOPOLOGY_READ); | 173 | checkPermission(Permission.TOPOLOGY_READ); |
191 | - | ||
192 | checkNotNull(topology, TOPOLOGY_NULL); | 174 | checkNotNull(topology, TOPOLOGY_NULL); |
193 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); | 175 | checkNotNull(connectPoint, CONNECTION_POINT_NULL); |
194 | return store.isBroadcastPoint(topology, connectPoint); | 176 | return store.isBroadcastPoint(topology, connectPoint); |
195 | } | 177 | } |
196 | 178 | ||
197 | - @Override | ||
198 | - public void addListener(TopologyListener listener) { | ||
199 | - checkPermission(Permission.TOPOLOGY_EVENT); | ||
200 | - | ||
201 | - listenerRegistry.addListener(listener); | ||
202 | - } | ||
203 | - | ||
204 | - @Override | ||
205 | - public void removeListener(TopologyListener listener) { | ||
206 | - checkPermission(Permission.TOPOLOGY_EVENT); | ||
207 | - | ||
208 | - listenerRegistry.removeListener(listener); | ||
209 | - } | ||
210 | - | ||
211 | // Personalized host provider service issued to the supplied provider. | 179 | // Personalized host provider service issued to the supplied provider. |
212 | @Override | 180 | @Override |
213 | protected TopologyProviderService createProviderService(TopologyProvider provider) { | 181 | protected TopologyProviderService createProviderService(TopologyProvider provider) { |
... | @@ -231,7 +199,7 @@ public class TopologyManager | ... | @@ -231,7 +199,7 @@ public class TopologyManager |
231 | topoDescription, reasons); | 199 | topoDescription, reasons); |
232 | if (event != null) { | 200 | if (event != null) { |
233 | log.info("Topology {} changed", event.subject()); | 201 | log.info("Topology {} changed", event.subject()); |
234 | - eventDispatcher.post(event); | 202 | + post(event); |
235 | } | 203 | } |
236 | } | 204 | } |
237 | } | 205 | } |
... | @@ -240,7 +208,7 @@ public class TopologyManager | ... | @@ -240,7 +208,7 @@ public class TopologyManager |
240 | private class InternalStoreDelegate implements TopologyStoreDelegate { | 208 | private class InternalStoreDelegate implements TopologyStoreDelegate { |
241 | @Override | 209 | @Override |
242 | public void notify(TopologyEvent event) { | 210 | public void notify(TopologyEvent event) { |
243 | - eventDispatcher.post(event); | 211 | + post(event); |
244 | } | 212 | } |
245 | } | 213 | } |
246 | } | 214 | } | ... | ... |
... | @@ -41,6 +41,7 @@ import static org.onosproject.app.ApplicationEvent.Type.*; | ... | @@ -41,6 +41,7 @@ import static org.onosproject.app.ApplicationEvent.Type.*; |
41 | import static org.onosproject.app.ApplicationState.ACTIVE; | 41 | import static org.onosproject.app.ApplicationState.ACTIVE; |
42 | import static org.onosproject.app.ApplicationState.INSTALLED; | 42 | import static org.onosproject.app.ApplicationState.INSTALLED; |
43 | import static org.onosproject.app.DefaultApplicationDescriptionTest.*; | 43 | import static org.onosproject.app.DefaultApplicationDescriptionTest.*; |
44 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
44 | 45 | ||
45 | /** | 46 | /** |
46 | * Test of the application manager implementation. | 47 | * Test of the application manager implementation. |
... | @@ -54,7 +55,7 @@ public class ApplicationManagerTest { | ... | @@ -54,7 +55,7 @@ public class ApplicationManagerTest { |
54 | 55 | ||
55 | @Before | 56 | @Before |
56 | public void setUp() { | 57 | public void setUp() { |
57 | - mgr.eventDispatcher = new TestEventDispatcher(); | 58 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
58 | mgr.featuresService = new TestFeaturesService(); | 59 | mgr.featuresService = new TestFeaturesService(); |
59 | mgr.store = new TestStore(); | 60 | mgr.store = new TestStore(); |
60 | mgr.activate(); | 61 | mgr.activate(); | ... | ... |
... | @@ -41,6 +41,7 @@ import static org.junit.Assert.assertNull; | ... | @@ -41,6 +41,7 @@ import static org.junit.Assert.assertNull; |
41 | import static org.onosproject.net.MastershipRole.MASTER; | 41 | import static org.onosproject.net.MastershipRole.MASTER; |
42 | import static org.onosproject.net.MastershipRole.NONE; | 42 | import static org.onosproject.net.MastershipRole.NONE; |
43 | import static org.onosproject.net.MastershipRole.STANDBY; | 43 | import static org.onosproject.net.MastershipRole.STANDBY; |
44 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
44 | 45 | ||
45 | /** | 46 | /** |
46 | * Test codifying the mastership service contracts. | 47 | * Test codifying the mastership service contracts. |
... | @@ -60,7 +61,7 @@ public class MastershipManagerTest { | ... | @@ -60,7 +61,7 @@ public class MastershipManagerTest { |
60 | public void setUp() { | 61 | public void setUp() { |
61 | mgr = new MastershipManager(); | 62 | mgr = new MastershipManager(); |
62 | service = mgr; | 63 | service = mgr; |
63 | - mgr.eventDispatcher = new TestEventDispatcher(); | 64 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
64 | mgr.clusterService = new TestClusterService(); | 65 | mgr.clusterService = new TestClusterService(); |
65 | mgr.store = new TestSimpleMastershipStore(mgr.clusterService); | 66 | mgr.store = new TestSimpleMastershipStore(mgr.clusterService); |
66 | mgr.activate(); | 67 | mgr.activate(); |
... | @@ -70,7 +71,7 @@ public class MastershipManagerTest { | ... | @@ -70,7 +71,7 @@ public class MastershipManagerTest { |
70 | public void tearDown() { | 71 | public void tearDown() { |
71 | mgr.deactivate(); | 72 | mgr.deactivate(); |
72 | mgr.clusterService = null; | 73 | mgr.clusterService = null; |
73 | - mgr.eventDispatcher = null; | 74 | + injectEventDispatcher(mgr, null); |
74 | mgr.store = null; | 75 | mgr.store = null; |
75 | } | 76 | } |
76 | 77 | ... | ... |
... | @@ -15,12 +15,7 @@ | ... | @@ -15,12 +15,7 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.net.device.impl; | 16 | package org.onosproject.net.device.impl; |
17 | 17 | ||
18 | -import java.util.ArrayList; | 18 | +import com.google.common.collect.Sets; |
19 | -import java.util.Iterator; | ||
20 | -import java.util.List; | ||
21 | -import java.util.Set; | ||
22 | -import java.util.concurrent.CompletableFuture; | ||
23 | - | ||
24 | import org.junit.After; | 19 | import org.junit.After; |
25 | import org.junit.Before; | 20 | import org.junit.Before; |
26 | import org.junit.Test; | 21 | import org.junit.Test; |
... | @@ -30,8 +25,8 @@ import org.onosproject.cluster.ClusterServiceAdapter; | ... | @@ -30,8 +25,8 @@ import org.onosproject.cluster.ClusterServiceAdapter; |
30 | import org.onosproject.cluster.ControllerNode; | 25 | import org.onosproject.cluster.ControllerNode; |
31 | import org.onosproject.cluster.DefaultControllerNode; | 26 | import org.onosproject.cluster.DefaultControllerNode; |
32 | import org.onosproject.cluster.NodeId; | 27 | import org.onosproject.cluster.NodeId; |
33 | -import org.onosproject.event.Event; | ||
34 | import org.onosproject.common.event.impl.TestEventDispatcher; | 28 | import org.onosproject.common.event.impl.TestEventDispatcher; |
29 | +import org.onosproject.event.Event; | ||
35 | import org.onosproject.incubator.net.config.NetworkConfigServiceAdapter; | 30 | import org.onosproject.incubator.net.config.NetworkConfigServiceAdapter; |
36 | import org.onosproject.mastership.MastershipServiceAdapter; | 31 | import org.onosproject.mastership.MastershipServiceAdapter; |
37 | import org.onosproject.mastership.MastershipTerm; | 32 | import org.onosproject.mastership.MastershipTerm; |
... | @@ -57,21 +52,17 @@ import org.onosproject.net.provider.AbstractProvider; | ... | @@ -57,21 +52,17 @@ import org.onosproject.net.provider.AbstractProvider; |
57 | import org.onosproject.net.provider.ProviderId; | 52 | import org.onosproject.net.provider.ProviderId; |
58 | import org.onosproject.store.trivial.SimpleDeviceStore; | 53 | import org.onosproject.store.trivial.SimpleDeviceStore; |
59 | 54 | ||
60 | -import com.google.common.collect.Sets; | 55 | +import java.util.ArrayList; |
56 | +import java.util.Iterator; | ||
57 | +import java.util.List; | ||
58 | +import java.util.Set; | ||
59 | +import java.util.concurrent.CompletableFuture; | ||
61 | 60 | ||
62 | -import static org.junit.Assert.assertEquals; | 61 | +import static org.junit.Assert.*; |
63 | -import static org.junit.Assert.assertFalse; | ||
64 | -import static org.junit.Assert.assertNotNull; | ||
65 | -import static org.junit.Assert.assertNull; | ||
66 | -import static org.junit.Assert.assertTrue; | ||
67 | import static org.onosproject.net.Device.Type.SWITCH; | 62 | import static org.onosproject.net.Device.Type.SWITCH; |
68 | import static org.onosproject.net.DeviceId.deviceId; | 63 | import static org.onosproject.net.DeviceId.deviceId; |
69 | -import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_ADDED; | 64 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; |
70 | -import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED; | 65 | +import static org.onosproject.net.device.DeviceEvent.Type.*; |
71 | -import static org.onosproject.net.device.DeviceEvent.Type.DEVICE_UPDATED; | ||
72 | -import static org.onosproject.net.device.DeviceEvent.Type.PORT_ADDED; | ||
73 | -import static org.onosproject.net.device.DeviceEvent.Type.PORT_REMOVED; | ||
74 | -import static org.onosproject.net.device.DeviceEvent.Type.PORT_UPDATED; | ||
75 | 66 | ||
76 | /** | 67 | /** |
77 | * Test codifying the device service & device provider service contracts. | 68 | * Test codifying the device service & device provider service contracts. |
... | @@ -110,7 +101,7 @@ public class DeviceManagerTest { | ... | @@ -110,7 +101,7 @@ public class DeviceManagerTest { |
110 | admin = mgr; | 101 | admin = mgr; |
111 | registry = mgr; | 102 | registry = mgr; |
112 | mgr.store = new SimpleDeviceStore(); | 103 | mgr.store = new SimpleDeviceStore(); |
113 | - mgr.eventDispatcher = new TestEventDispatcher(); | 104 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
114 | TestMastershipManager mastershipManager = new TestMastershipManager(); | 105 | TestMastershipManager mastershipManager = new TestMastershipManager(); |
115 | mgr.mastershipService = mastershipManager; | 106 | mgr.mastershipService = mastershipManager; |
116 | mgr.termService = mastershipManager; | 107 | mgr.termService = mastershipManager; | ... | ... |
... | @@ -52,6 +52,7 @@ import java.util.Optional; | ... | @@ -52,6 +52,7 @@ import java.util.Optional; |
52 | import java.util.Set; | 52 | import java.util.Set; |
53 | 53 | ||
54 | import static org.junit.Assert.*; | 54 | import static org.junit.Assert.*; |
55 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
55 | import static org.onosproject.net.device.DeviceEvent.Type.*; | 56 | import static org.onosproject.net.device.DeviceEvent.Type.*; |
56 | import static org.onosproject.net.edge.EdgePortEvent.Type.EDGE_PORT_ADDED; | 57 | import static org.onosproject.net.edge.EdgePortEvent.Type.EDGE_PORT_ADDED; |
57 | import static org.onosproject.net.edge.EdgePortEvent.Type.EDGE_PORT_REMOVED; | 58 | import static org.onosproject.net.edge.EdgePortEvent.Type.EDGE_PORT_REMOVED; |
... | @@ -78,7 +79,7 @@ public class EdgeManagerTest { | ... | @@ -78,7 +79,7 @@ public class EdgeManagerTest { |
78 | @Before | 79 | @Before |
79 | public void setUp() { | 80 | public void setUp() { |
80 | mgr = new EdgeManager(); | 81 | mgr = new EdgeManager(); |
81 | - mgr.eventDispatcher = new TestEventDispatcher(); | 82 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
82 | testTopologyManager = new TestTopologyManager(infrastructurePorts); | 83 | testTopologyManager = new TestTopologyManager(infrastructurePorts); |
83 | mgr.topologyService = testTopologyManager; | 84 | mgr.topologyService = testTopologyManager; |
84 | mgr.deviceService = new TestDeviceManager(devices); | 85 | mgr.deviceService = new TestDeviceManager(devices); | ... | ... |
... | @@ -80,6 +80,7 @@ import static org.junit.Assert.assertEquals; | ... | @@ -80,6 +80,7 @@ import static org.junit.Assert.assertEquals; |
80 | import static org.junit.Assert.assertFalse; | 80 | import static org.junit.Assert.assertFalse; |
81 | import static org.junit.Assert.assertNotNull; | 81 | import static org.junit.Assert.assertNotNull; |
82 | import static org.junit.Assert.assertTrue; | 82 | import static org.junit.Assert.assertTrue; |
83 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
83 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADDED; | 84 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADDED; |
84 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; | 85 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_ADD_REQUESTED; |
85 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVED; | 86 | import static org.onosproject.net.flow.FlowRuleEvent.Type.RULE_REMOVED; |
... | @@ -112,7 +113,7 @@ public class FlowRuleManagerTest { | ... | @@ -112,7 +113,7 @@ public class FlowRuleManagerTest { |
112 | public void setUp() { | 113 | public void setUp() { |
113 | mgr = new FlowRuleManager(); | 114 | mgr = new FlowRuleManager(); |
114 | mgr.store = new SimpleFlowRuleStore(); | 115 | mgr.store = new SimpleFlowRuleStore(); |
115 | - mgr.eventDispatcher = new TestEventDispatcher(); | 116 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
116 | mgr.deviceService = new TestDeviceService(); | 117 | mgr.deviceService = new TestDeviceService(); |
117 | mgr.coreService = new TestCoreService(); | 118 | mgr.coreService = new TestCoreService(); |
118 | mgr.operationsService = MoreExecutors.newDirectExecutorService(); | 119 | mgr.operationsService = MoreExecutors.newDirectExecutorService(); |
... | @@ -137,7 +138,7 @@ public class FlowRuleManagerTest { | ... | @@ -137,7 +138,7 @@ public class FlowRuleManagerTest { |
137 | registry.getProviders().contains(provider.id())); | 138 | registry.getProviders().contains(provider.id())); |
138 | service.removeListener(listener); | 139 | service.removeListener(listener); |
139 | mgr.deactivate(); | 140 | mgr.deactivate(); |
140 | - mgr.eventDispatcher = null; | 141 | + injectEventDispatcher(mgr, null); |
141 | mgr.deviceService = null; | 142 | mgr.deviceService = null; |
142 | } | 143 | } |
143 | 144 | ... | ... |
... | @@ -20,6 +20,7 @@ import static org.junit.Assert.assertFalse; | ... | @@ -20,6 +20,7 @@ import static org.junit.Assert.assertFalse; |
20 | import static org.junit.Assert.assertNotEquals; | 20 | import static org.junit.Assert.assertNotEquals; |
21 | import static org.junit.Assert.assertNotNull; | 21 | import static org.junit.Assert.assertNotNull; |
22 | import static org.junit.Assert.assertTrue; | 22 | import static org.junit.Assert.assertTrue; |
23 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
23 | 24 | ||
24 | import java.util.ArrayList; | 25 | import java.util.ArrayList; |
25 | import java.util.Arrays; | 26 | import java.util.Arrays; |
... | @@ -89,7 +90,7 @@ public class GroupManagerTest { | ... | @@ -89,7 +90,7 @@ public class GroupManagerTest { |
89 | groupService = mgr; | 90 | groupService = mgr; |
90 | mgr.deviceService = new DeviceManager(); | 91 | mgr.deviceService = new DeviceManager(); |
91 | mgr.store = new SimpleGroupStore(); | 92 | mgr.store = new SimpleGroupStore(); |
92 | - mgr.eventDispatcher = new TestEventDispatcher(); | 93 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
93 | providerRegistry = mgr; | 94 | providerRegistry = mgr; |
94 | 95 | ||
95 | mgr.activate(); | 96 | mgr.activate(); |
... | @@ -110,7 +111,7 @@ public class GroupManagerTest { | ... | @@ -110,7 +111,7 @@ public class GroupManagerTest { |
110 | providerRegistry.getProviders().contains(provider.id())); | 111 | providerRegistry.getProviders().contains(provider.id())); |
111 | mgr.removeListener(listener); | 112 | mgr.removeListener(listener); |
112 | mgr.deactivate(); | 113 | mgr.deactivate(); |
113 | - mgr.eventDispatcher = null; | 114 | + injectEventDispatcher(mgr, null); |
114 | } | 115 | } |
115 | 116 | ||
116 | /** | 117 | /** | ... | ... |
... | @@ -20,6 +20,7 @@ import static org.junit.Assert.assertFalse; | ... | @@ -20,6 +20,7 @@ import static org.junit.Assert.assertFalse; |
20 | import static org.junit.Assert.assertNotNull; | 20 | import static org.junit.Assert.assertNotNull; |
21 | import static org.junit.Assert.assertNull; | 21 | import static org.junit.Assert.assertNull; |
22 | import static org.junit.Assert.assertTrue; | 22 | import static org.junit.Assert.assertTrue; |
23 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
23 | import static org.onosproject.net.host.HostEvent.Type.HOST_ADDED; | 24 | import static org.onosproject.net.host.HostEvent.Type.HOST_ADDED; |
24 | import static org.onosproject.net.host.HostEvent.Type.HOST_MOVED; | 25 | import static org.onosproject.net.host.HostEvent.Type.HOST_MOVED; |
25 | import static org.onosproject.net.host.HostEvent.Type.HOST_REMOVED; | 26 | import static org.onosproject.net.host.HostEvent.Type.HOST_REMOVED; |
... | @@ -122,7 +123,7 @@ public class HostManagerTest { | ... | @@ -122,7 +123,7 @@ public class HostManagerTest { |
122 | public void setUp() { | 123 | public void setUp() { |
123 | mgr = new HostManager(); | 124 | mgr = new HostManager(); |
124 | mgr.store = new SimpleHostStore(); | 125 | mgr.store = new SimpleHostStore(); |
125 | - mgr.eventDispatcher = new TestEventDispatcher(); | 126 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
126 | registry = mgr; | 127 | registry = mgr; |
127 | mgr.networkConfigService = new TestNetworkConfigService(); | 128 | mgr.networkConfigService = new TestNetworkConfigService(); |
128 | mgr.activate(); | 129 | mgr.activate(); |
... | @@ -143,7 +144,7 @@ public class HostManagerTest { | ... | @@ -143,7 +144,7 @@ public class HostManagerTest { |
143 | 144 | ||
144 | mgr.removeListener(listener); | 145 | mgr.removeListener(listener); |
145 | mgr.deactivate(); | 146 | mgr.deactivate(); |
146 | - mgr.eventDispatcher = null; | 147 | + injectEventDispatcher(mgr, null); |
147 | } | 148 | } |
148 | 149 | ||
149 | private void detect(HostId hid, MacAddress mac, VlanId vlan, | 150 | private void detect(HostId hid, MacAddress mac, VlanId vlan, | ... | ... |
... | @@ -63,6 +63,7 @@ import static org.hamcrest.Matchers.is; | ... | @@ -63,6 +63,7 @@ import static org.hamcrest.Matchers.is; |
63 | import static org.junit.Assert.*; | 63 | import static org.junit.Assert.*; |
64 | import static org.onlab.junit.TestTools.assertAfter; | 64 | import static org.onlab.junit.TestTools.assertAfter; |
65 | import static org.onlab.util.Tools.delay; | 65 | import static org.onlab.util.Tools.delay; |
66 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
66 | import static org.onosproject.net.intent.IntentState.*; | 67 | import static org.onosproject.net.intent.IntentState.*; |
67 | import static org.onosproject.net.intent.IntentTestsMocks.MockFlowRule; | 68 | import static org.onosproject.net.intent.IntentTestsMocks.MockFlowRule; |
68 | import static org.onosproject.net.intent.IntentTestsMocks.MockIntent; | 69 | import static org.onosproject.net.intent.IntentTestsMocks.MockIntent; |
... | @@ -226,7 +227,7 @@ public class IntentManagerTest { | ... | @@ -226,7 +227,7 @@ public class IntentManagerTest { |
226 | manager = new IntentManager(); | 227 | manager = new IntentManager(); |
227 | flowRuleService = new MockFlowRuleService(); | 228 | flowRuleService = new MockFlowRuleService(); |
228 | manager.store = new SimpleIntentStore(); | 229 | manager.store = new SimpleIntentStore(); |
229 | - manager.eventDispatcher = new TestEventDispatcher(); | 230 | + injectEventDispatcher(manager, new TestEventDispatcher()); |
230 | manager.trackerService = new TestIntentTracker(); | 231 | manager.trackerService = new TestIntentTracker(); |
231 | manager.flowRuleService = flowRuleService; | 232 | manager.flowRuleService = flowRuleService; |
232 | manager.coreService = new TestCoreManager(); | 233 | manager.coreService = new TestCoreManager(); | ... | ... |
... | @@ -53,6 +53,7 @@ import static org.junit.Assert.*; | ... | @@ -53,6 +53,7 @@ import static org.junit.Assert.*; |
53 | import static org.onosproject.net.DeviceId.deviceId; | 53 | import static org.onosproject.net.DeviceId.deviceId; |
54 | import static org.onosproject.net.Link.Type.DIRECT; | 54 | import static org.onosproject.net.Link.Type.DIRECT; |
55 | import static org.onosproject.net.Link.Type.INDIRECT; | 55 | import static org.onosproject.net.Link.Type.INDIRECT; |
56 | +import static org.onosproject.net.NetTestTools.injectEventDispatcher; | ||
56 | import static org.onosproject.net.link.LinkEvent.Type.*; | 57 | import static org.onosproject.net.link.LinkEvent.Type.*; |
57 | 58 | ||
58 | /** | 59 | /** |
... | @@ -95,7 +96,7 @@ public class LinkManagerTest { | ... | @@ -95,7 +96,7 @@ public class LinkManagerTest { |
95 | admin = mgr; | 96 | admin = mgr; |
96 | registry = mgr; | 97 | registry = mgr; |
97 | mgr.store = new SimpleLinkStore(); | 98 | mgr.store = new SimpleLinkStore(); |
98 | - mgr.eventDispatcher = new TestEventDispatcher(); | 99 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
99 | mgr.deviceService = devmgr; | 100 | mgr.deviceService = devmgr; |
100 | mgr.networkConfigService = new TestNetworkConfigService(); | 101 | mgr.networkConfigService = new TestNetworkConfigService(); |
101 | mgr.activate(); | 102 | mgr.activate(); | ... | ... |
... | @@ -100,8 +100,8 @@ public class DefaultTopologyProviderTest { | ... | @@ -100,8 +100,8 @@ public class DefaultTopologyProviderTest { |
100 | assertEquals(1, topologyChangedCounts.awaitAdvanceInterruptibly(0, 1, TimeUnit.SECONDS)); | 100 | assertEquals(1, topologyChangedCounts.awaitAdvanceInterruptibly(0, 1, TimeUnit.SECONDS)); |
101 | validateSubmission(); | 101 | validateSubmission(); |
102 | 102 | ||
103 | - deviceService.post(new DeviceEvent(DEVICE_ADDED, device("z"), null)); | 103 | + deviceService.postEvent(new DeviceEvent(DEVICE_ADDED, device("z"), null)); |
104 | - linkService.post(new LinkEvent(LINK_ADDED, link("z", 1, "a", 4))); | 104 | + linkService.postEvent(new LinkEvent(LINK_ADDED, link("z", 1, "a", 4))); |
105 | assertThat(topologyChangedCounts.awaitAdvanceInterruptibly(1, 1, TimeUnit.SECONDS), | 105 | assertThat(topologyChangedCounts.awaitAdvanceInterruptibly(1, 1, TimeUnit.SECONDS), |
106 | is(greaterThanOrEqualTo(2))); | 106 | is(greaterThanOrEqualTo(2))); |
107 | // Note: posting event, to trigger topologyChanged call, | 107 | // Note: posting event, to trigger topologyChanged call, |
... | @@ -162,7 +162,7 @@ public class DefaultTopologyProviderTest { | ... | @@ -162,7 +162,7 @@ public class DefaultTopologyProviderTest { |
162 | return getDevices(); | 162 | return getDevices(); |
163 | } | 163 | } |
164 | 164 | ||
165 | - void post(DeviceEvent event) { | 165 | + void postEvent(DeviceEvent event) { |
166 | eventDispatcher.post(event); | 166 | eventDispatcher.post(event); |
167 | } | 167 | } |
168 | } | 168 | } |
... | @@ -187,7 +187,7 @@ public class DefaultTopologyProviderTest { | ... | @@ -187,7 +187,7 @@ public class DefaultTopologyProviderTest { |
187 | return getLinks(); | 187 | return getLinks(); |
188 | } | 188 | } |
189 | 189 | ||
190 | - void post(LinkEvent event) { | 190 | + void postEvent(LinkEvent event) { |
191 | eventDispatcher.post(event); | 191 | eventDispatcher.post(event); |
192 | } | 192 | } |
193 | } | 193 | } | ... | ... |
... | @@ -73,7 +73,7 @@ public class TopologyManagerTest { | ... | @@ -73,7 +73,7 @@ public class TopologyManagerTest { |
73 | registry = mgr; | 73 | registry = mgr; |
74 | 74 | ||
75 | mgr.store = new SimpleTopologyStore(); | 75 | mgr.store = new SimpleTopologyStore(); |
76 | - mgr.eventDispatcher = new TestEventDispatcher(); | 76 | + injectEventDispatcher(mgr, new TestEventDispatcher()); |
77 | mgr.activate(); | 77 | mgr.activate(); |
78 | 78 | ||
79 | service.addListener(listener); | 79 | service.addListener(listener); | ... | ... |
... | @@ -57,6 +57,10 @@ | ... | @@ -57,6 +57,10 @@ |
57 | <groupId>org.osgi</groupId> | 57 | <groupId>org.osgi</groupId> |
58 | <artifactId>org.osgi.compendium</artifactId> | 58 | <artifactId>org.osgi.compendium</artifactId> |
59 | </dependency> | 59 | </dependency> |
60 | + <dependency> | ||
61 | + <groupId>org.apache.felix</groupId> | ||
62 | + <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
63 | + </dependency> | ||
60 | </dependencies> | 64 | </dependencies> |
61 | 65 | ||
62 | <build> | 66 | <build> |
... | @@ -70,6 +74,11 @@ | ... | @@ -70,6 +74,11 @@ |
70 | <groupId>org.onosproject</groupId> | 74 | <groupId>org.onosproject</groupId> |
71 | <artifactId>onos-maven-plugin</artifactId> | 75 | <artifactId>onos-maven-plugin</artifactId> |
72 | </plugin> | 76 | </plugin> |
77 | + | ||
78 | + <plugin> | ||
79 | + <groupId>org.apache.felix</groupId> | ||
80 | + <artifactId>maven-scr-plugin</artifactId> | ||
81 | + </plugin> | ||
73 | </plugins> | 82 | </plugins> |
74 | </build> | 83 | </build> |
75 | 84 | ... | ... |
... | @@ -37,14 +37,6 @@ | ... | @@ -37,14 +37,6 @@ |
37 | <artifactId>org.osgi.core</artifactId> | 37 | <artifactId>org.osgi.core</artifactId> |
38 | </dependency> | 38 | </dependency> |
39 | <dependency> | 39 | <dependency> |
40 | - <groupId>org.osgi</groupId> | ||
41 | - <artifactId>org.osgi.compendium</artifactId> | ||
42 | - </dependency> | ||
43 | - <dependency> | ||
44 | - <groupId>org.apache.felix</groupId> | ||
45 | - <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
46 | - </dependency> | ||
47 | - <dependency> | ||
48 | <groupId>org.onosproject</groupId> | 40 | <groupId>org.onosproject</groupId> |
49 | <artifactId>onos-api</artifactId> | 41 | <artifactId>onos-api</artifactId> |
50 | </dependency> | 42 | </dependency> |
... | @@ -54,14 +46,4 @@ | ... | @@ -54,14 +46,4 @@ |
54 | </dependency> | 46 | </dependency> |
55 | </dependencies> | 47 | </dependencies> |
56 | 48 | ||
57 | - <build> | ||
58 | - <plugins> | ||
59 | - <plugin> | ||
60 | - <groupId>org.apache.felix</groupId> | ||
61 | - <artifactId>maven-scr-plugin</artifactId> | ||
62 | - </plugin> | ||
63 | - </plugins> | ||
64 | - </build> | ||
65 | - | ||
66 | - | ||
67 | </project> | 49 | </project> |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -49,20 +49,6 @@ | ... | @@ -49,20 +49,6 @@ |
49 | <classifier>tests</classifier> | 49 | <classifier>tests</classifier> |
50 | <scope>test</scope> | 50 | <scope>test</scope> |
51 | </dependency> | 51 | </dependency> |
52 | - | ||
53 | - <dependency> | ||
54 | - <groupId>org.apache.felix</groupId> | ||
55 | - <artifactId>org.apache.felix.scr.annotations</artifactId> | ||
56 | - </dependency> | ||
57 | </dependencies> | 52 | </dependencies> |
58 | 53 | ||
59 | - <build> | ||
60 | - <plugins> | ||
61 | - <plugin> | ||
62 | - <groupId>org.apache.felix</groupId> | ||
63 | - <artifactId>maven-scr-plugin</artifactId> | ||
64 | - </plugin> | ||
65 | - </plugins> | ||
66 | - </build> | ||
67 | - | ||
68 | </project> | 54 | </project> | ... | ... |
... | @@ -17,6 +17,7 @@ package org.onosproject.incubator.net.config; | ... | @@ -17,6 +17,7 @@ package org.onosproject.incubator.net.config; |
17 | 17 | ||
18 | import com.fasterxml.jackson.databind.node.ObjectNode; | 18 | import com.fasterxml.jackson.databind.node.ObjectNode; |
19 | import com.google.common.annotations.Beta; | 19 | import com.google.common.annotations.Beta; |
20 | +import org.onosproject.event.ListenerService; | ||
20 | 21 | ||
21 | import java.util.Set; | 22 | import java.util.Set; |
22 | 23 | ||
... | @@ -26,7 +27,8 @@ import java.util.Set; | ... | @@ -26,7 +27,8 @@ import java.util.Set; |
26 | * should act on or configure the network. | 27 | * should act on or configure the network. |
27 | */ | 28 | */ |
28 | @Beta | 29 | @Beta |
29 | -public interface NetworkConfigService { | 30 | +public interface NetworkConfigService |
31 | + extends ListenerService<NetworkConfigEvent, NetworkConfigListener> { | ||
30 | 32 | ||
31 | /** | 33 | /** |
32 | * Returns the set of subject classes for which configuration may be | 34 | * Returns the set of subject classes for which configuration may be |
... | @@ -140,17 +142,4 @@ public interface NetworkConfigService { | ... | @@ -140,17 +142,4 @@ public interface NetworkConfigService { |
140 | */ | 142 | */ |
141 | <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass); | 143 | <S, C extends Config<S>> void removeConfig(S subject, Class<C> configClass); |
142 | 144 | ||
143 | - /** | ||
144 | - * Adds the specified network config listener. | ||
145 | - * | ||
146 | - * @param listener network config listener | ||
147 | - */ | ||
148 | - void addListener(NetworkConfigListener listener); | ||
149 | - | ||
150 | - /** | ||
151 | - * Removes the specified network config listener. | ||
152 | - * | ||
153 | - * @param listener network config listener | ||
154 | - */ | ||
155 | - void removeListener(NetworkConfigListener listener); | ||
156 | } | 145 | } | ... | ... |
... | @@ -4,6 +4,7 @@ import java.util.Collection; | ... | @@ -4,6 +4,7 @@ import java.util.Collection; |
4 | import java.util.Set; | 4 | import java.util.Set; |
5 | 5 | ||
6 | import com.google.common.annotations.Beta; | 6 | import com.google.common.annotations.Beta; |
7 | +import org.onosproject.event.ListenerService; | ||
7 | import org.onosproject.net.DeviceId; | 8 | import org.onosproject.net.DeviceId; |
8 | 9 | ||
9 | import com.google.common.collect.Multimap; | 10 | import com.google.common.collect.Multimap; |
... | @@ -12,7 +13,8 @@ import com.google.common.collect.Multimap; | ... | @@ -12,7 +13,8 @@ import com.google.common.collect.Multimap; |
12 | * Service for providing label resource allocation. | 13 | * Service for providing label resource allocation. |
13 | */ | 14 | */ |
14 | @Beta | 15 | @Beta |
15 | -public interface LabelResourceService { | 16 | +public interface LabelResourceService |
17 | + extends ListenerService<LabelResourceEvent, LabelResourceListener> { | ||
16 | 18 | ||
17 | /** | 19 | /** |
18 | * Returns labels from resource pool by a specific device id. | 20 | * Returns labels from resource pool by a specific device id. |
... | @@ -95,17 +97,4 @@ public interface LabelResourceService { | ... | @@ -95,17 +97,4 @@ public interface LabelResourceService { |
95 | */ | 97 | */ |
96 | LabelResourcePool getGlobalLabelResourcePool(); | 98 | LabelResourcePool getGlobalLabelResourcePool(); |
97 | 99 | ||
98 | - /** | ||
99 | - * Adds the specified label resource listener. | ||
100 | - * | ||
101 | - * @param listener label resource listener | ||
102 | - */ | ||
103 | - void addListener(LabelResourceListener listener); | ||
104 | - | ||
105 | - /** | ||
106 | - * Removes the specified label resource listener. | ||
107 | - * | ||
108 | - * @param listener label resource listener | ||
109 | - */ | ||
110 | - void removeListener(LabelResourceListener listener); | ||
111 | } | 100 | } | ... | ... |
... | @@ -19,6 +19,7 @@ import java.util.Collection; | ... | @@ -19,6 +19,7 @@ import java.util.Collection; |
19 | 19 | ||
20 | import com.google.common.annotations.Beta; | 20 | import com.google.common.annotations.Beta; |
21 | import org.onosproject.core.ApplicationId; | 21 | import org.onosproject.core.ApplicationId; |
22 | +import org.onosproject.event.ListenerService; | ||
22 | import org.onosproject.incubator.net.tunnel.Tunnel.Type; | 23 | import org.onosproject.incubator.net.tunnel.Tunnel.Type; |
23 | import org.onosproject.net.Annotations; | 24 | import org.onosproject.net.Annotations; |
24 | import org.onosproject.net.DeviceId; | 25 | import org.onosproject.net.DeviceId; |
... | @@ -27,7 +28,8 @@ import org.onosproject.net.DeviceId; | ... | @@ -27,7 +28,8 @@ import org.onosproject.net.DeviceId; |
27 | * Service for interacting with the inventory of tunnels. | 28 | * Service for interacting with the inventory of tunnels. |
28 | */ | 29 | */ |
29 | @Beta | 30 | @Beta |
30 | -public interface TunnelService { | 31 | +public interface TunnelService |
32 | + extends ListenerService<TunnelEvent, TunnelListener> { | ||
31 | 33 | ||
32 | /** | 34 | /** |
33 | * Borrows a specific tunnel. Annotations parameter is reserved.If there | 35 | * Borrows a specific tunnel. Annotations parameter is reserved.If there |
... | @@ -196,17 +198,4 @@ public interface TunnelService { | ... | @@ -196,17 +198,4 @@ public interface TunnelService { |
196 | */ | 198 | */ |
197 | Iterable<Tunnel> getTunnels(DeviceId deviceId); | 199 | Iterable<Tunnel> getTunnels(DeviceId deviceId); |
198 | 200 | ||
199 | - /** | ||
200 | - * Adds the specified tunnel listener. | ||
201 | - * | ||
202 | - * @param listener tunnel listener | ||
203 | - */ | ||
204 | - void addListener(TunnelListener listener); | ||
205 | - | ||
206 | - /** | ||
207 | - * Removes the specified tunnel listener. | ||
208 | - * | ||
209 | - * @param listener tunnel listener | ||
210 | - */ | ||
211 | - void removeListener(TunnelListener listener); | ||
212 | } | 201 | } | ... | ... |
... | @@ -56,6 +56,11 @@ | ... | @@ -56,6 +56,11 @@ |
56 | </dependency> | 56 | </dependency> |
57 | 57 | ||
58 | <dependency> | 58 | <dependency> |
59 | + <groupId>org.onosproject</groupId> | ||
60 | + <artifactId>onos-core-common</artifactId> | ||
61 | + </dependency> | ||
62 | + | ||
63 | + <dependency> | ||
59 | <groupId>org.easymock</groupId> | 64 | <groupId>org.easymock</groupId> |
60 | <artifactId>easymock</artifactId> | 65 | <artifactId>easymock</artifactId> |
61 | <scope>test</scope> | 66 | <scope>test</scope> | ... | ... |
... | @@ -24,8 +24,7 @@ import org.apache.felix.scr.annotations.Deactivate; | ... | @@ -24,8 +24,7 @@ import org.apache.felix.scr.annotations.Deactivate; |
24 | import org.apache.felix.scr.annotations.Reference; | 24 | import org.apache.felix.scr.annotations.Reference; |
25 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 25 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
26 | import org.apache.felix.scr.annotations.Service; | 26 | import org.apache.felix.scr.annotations.Service; |
27 | -import org.onosproject.event.EventDeliveryService; | 27 | +import org.onosproject.event.AbstractListenerManager; |
28 | -import org.onosproject.event.ListenerRegistry; | ||
29 | import org.onosproject.incubator.net.config.Config; | 28 | import org.onosproject.incubator.net.config.Config; |
30 | import org.onosproject.incubator.net.config.ConfigFactory; | 29 | import org.onosproject.incubator.net.config.ConfigFactory; |
31 | import org.onosproject.incubator.net.config.NetworkConfigEvent; | 30 | import org.onosproject.incubator.net.config.NetworkConfigEvent; |
... | @@ -49,7 +48,9 @@ import static com.google.common.base.Preconditions.checkNotNull; | ... | @@ -49,7 +48,9 @@ import static com.google.common.base.Preconditions.checkNotNull; |
49 | */ | 48 | */ |
50 | @Component(immediate = true) | 49 | @Component(immediate = true) |
51 | @Service | 50 | @Service |
52 | -public class NetworkConfigManager implements NetworkConfigRegistry, NetworkConfigService { | 51 | +public class NetworkConfigManager |
52 | + extends AbstractListenerManager<NetworkConfigEvent, NetworkConfigListener> | ||
53 | + implements NetworkConfigRegistry, NetworkConfigService { | ||
53 | 54 | ||
54 | private final Logger log = LoggerFactory.getLogger(getClass()); | 55 | private final Logger log = LoggerFactory.getLogger(getClass()); |
55 | 56 | ||
... | @@ -66,17 +67,11 @@ public class NetworkConfigManager implements NetworkConfigRegistry, NetworkConfi | ... | @@ -66,17 +67,11 @@ public class NetworkConfigManager implements NetworkConfigRegistry, NetworkConfi |
66 | private final Map<Class, SubjectFactory> subjectClassKeys = Maps.newConcurrentMap(); | 67 | private final Map<Class, SubjectFactory> subjectClassKeys = Maps.newConcurrentMap(); |
67 | private final Map<ConfigIdentifier, Class<? extends Config>> configClasses = Maps.newConcurrentMap(); | 68 | private final Map<ConfigIdentifier, Class<? extends Config>> configClasses = Maps.newConcurrentMap(); |
68 | 69 | ||
69 | - private final ListenerRegistry<NetworkConfigEvent, NetworkConfigListener> | ||
70 | - listenerRegistry = new ListenerRegistry<>(); | ||
71 | - | ||
72 | private final NetworkConfigStoreDelegate storeDelegate = new InternalStoreDelegate(); | 70 | private final NetworkConfigStoreDelegate storeDelegate = new InternalStoreDelegate(); |
73 | 71 | ||
74 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 72 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
75 | protected NetworkConfigStore store; | 73 | protected NetworkConfigStore store; |
76 | 74 | ||
77 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
78 | - protected EventDeliveryService eventDispatcher; | ||
79 | - | ||
80 | 75 | ||
81 | @Activate | 76 | @Activate |
82 | public void activate() { | 77 | public void activate() { |
... | @@ -215,23 +210,12 @@ public class NetworkConfigManager implements NetworkConfigRegistry, NetworkConfi | ... | @@ -215,23 +210,12 @@ public class NetworkConfigManager implements NetworkConfigRegistry, NetworkConfi |
215 | store.clearConfig(subject, configClass); | 210 | store.clearConfig(subject, configClass); |
216 | } | 211 | } |
217 | 212 | ||
218 | - @Override | ||
219 | - public void addListener(NetworkConfigListener listener) { | ||
220 | - listenerRegistry.addListener(listener); | ||
221 | - } | ||
222 | - | ||
223 | - @Override | ||
224 | - public void removeListener(NetworkConfigListener listener) { | ||
225 | - listenerRegistry.removeListener(listener); | ||
226 | - } | ||
227 | - | ||
228 | - | ||
229 | // Auxiliary store delegate to receive notification about changes in | 213 | // Auxiliary store delegate to receive notification about changes in |
230 | // the network configuration store state - by the store itself. | 214 | // the network configuration store state - by the store itself. |
231 | private class InternalStoreDelegate implements NetworkConfigStoreDelegate { | 215 | private class InternalStoreDelegate implements NetworkConfigStoreDelegate { |
232 | @Override | 216 | @Override |
233 | public void notify(NetworkConfigEvent event) { | 217 | public void notify(NetworkConfigEvent event) { |
234 | - eventDispatcher.post(event); | 218 | + post(event); |
235 | } | 219 | } |
236 | } | 220 | } |
237 | 221 | ... | ... |
1 | package org.onosproject.incubator.net.resource.label.impl; | 1 | package org.onosproject.incubator.net.resource.label.impl; |
2 | 2 | ||
3 | -import static org.slf4j.LoggerFactory.getLogger; | 3 | +import com.google.common.collect.Multimap; |
4 | - | ||
5 | -import java.util.Collection; | ||
6 | -import java.util.Set; | ||
7 | - | ||
8 | import org.apache.felix.scr.annotations.Activate; | 4 | import org.apache.felix.scr.annotations.Activate; |
9 | import org.apache.felix.scr.annotations.Component; | 5 | import org.apache.felix.scr.annotations.Component; |
10 | import org.apache.felix.scr.annotations.Deactivate; | 6 | import org.apache.felix.scr.annotations.Deactivate; |
11 | import org.apache.felix.scr.annotations.Reference; | 7 | import org.apache.felix.scr.annotations.Reference; |
12 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 8 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
13 | import org.apache.felix.scr.annotations.Service; | 9 | import org.apache.felix.scr.annotations.Service; |
14 | -import org.onosproject.event.EventDeliveryService; | 10 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; |
15 | -import org.onosproject.event.ListenerRegistry; | ||
16 | -import org.onosproject.net.Device; | ||
17 | -import org.onosproject.net.DeviceId; | ||
18 | -import org.onosproject.net.device.DeviceEvent; | ||
19 | -import org.onosproject.net.device.DeviceEvent.Type; | ||
20 | -import org.onosproject.net.device.DeviceListener; | ||
21 | -import org.onosproject.net.device.DeviceService; | ||
22 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
23 | -import org.onosproject.net.provider.AbstractProviderService; | ||
24 | import org.onosproject.incubator.net.resource.label.LabelResource; | 11 | import org.onosproject.incubator.net.resource.label.LabelResource; |
25 | import org.onosproject.incubator.net.resource.label.LabelResourceAdminService; | 12 | import org.onosproject.incubator.net.resource.label.LabelResourceAdminService; |
26 | import org.onosproject.incubator.net.resource.label.LabelResourceDelegate; | 13 | import org.onosproject.incubator.net.resource.label.LabelResourceDelegate; |
... | @@ -33,11 +20,21 @@ import org.onosproject.incubator.net.resource.label.LabelResourceProviderRegistr | ... | @@ -33,11 +20,21 @@ import org.onosproject.incubator.net.resource.label.LabelResourceProviderRegistr |
33 | import org.onosproject.incubator.net.resource.label.LabelResourceProviderService; | 20 | import org.onosproject.incubator.net.resource.label.LabelResourceProviderService; |
34 | import org.onosproject.incubator.net.resource.label.LabelResourceService; | 21 | import org.onosproject.incubator.net.resource.label.LabelResourceService; |
35 | import org.onosproject.incubator.net.resource.label.LabelResourceStore; | 22 | import org.onosproject.incubator.net.resource.label.LabelResourceStore; |
23 | +import org.onosproject.net.Device; | ||
24 | +import org.onosproject.net.DeviceId; | ||
25 | +import org.onosproject.net.device.DeviceEvent; | ||
26 | +import org.onosproject.net.device.DeviceEvent.Type; | ||
27 | +import org.onosproject.net.device.DeviceListener; | ||
28 | +import org.onosproject.net.device.DeviceService; | ||
29 | +import org.onosproject.net.provider.AbstractProviderService; | ||
36 | import org.slf4j.Logger; | 30 | import org.slf4j.Logger; |
37 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
38 | -import static com.google.common.base.Preconditions.checkArgument; | ||
39 | 31 | ||
40 | -import com.google.common.collect.Multimap; | 32 | +import java.util.Collection; |
33 | +import java.util.Set; | ||
34 | + | ||
35 | +import static com.google.common.base.Preconditions.checkArgument; | ||
36 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
37 | +import static org.slf4j.LoggerFactory.getLogger; | ||
41 | 38 | ||
42 | /** | 39 | /** |
43 | * provides implementation of the label resource NB & SB APIs. | 40 | * provides implementation of the label resource NB & SB APIs. |
... | @@ -46,23 +43,16 @@ import com.google.common.collect.Multimap; | ... | @@ -46,23 +43,16 @@ import com.google.common.collect.Multimap; |
46 | @Component(immediate = true) | 43 | @Component(immediate = true) |
47 | @Service | 44 | @Service |
48 | public class LabelResourceManager | 45 | public class LabelResourceManager |
49 | - extends | 46 | + extends AbstractListenerProviderRegistry<LabelResourceEvent, LabelResourceListener, |
50 | - AbstractProviderRegistry<LabelResourceProvider, LabelResourceProviderService> | 47 | + LabelResourceProvider, LabelResourceProviderService> |
51 | - implements LabelResourceService, LabelResourceAdminService, | 48 | + implements LabelResourceService, LabelResourceAdminService, LabelResourceProviderRegistry { |
52 | - LabelResourceProviderRegistry { | ||
53 | private final Logger log = getLogger(getClass()); | 49 | private final Logger log = getLogger(getClass()); |
54 | private final LabelResourceDelegate delegate = new InternalLabelResourceDelegate(); | 50 | private final LabelResourceDelegate delegate = new InternalLabelResourceDelegate(); |
55 | 51 | ||
56 | - private final ListenerRegistry<LabelResourceEvent, LabelResourceListener> listenerRegistry | ||
57 | - = new ListenerRegistry<>(); | ||
58 | - | ||
59 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 52 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
60 | protected LabelResourceStore store; | 53 | protected LabelResourceStore store; |
61 | 54 | ||
62 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 55 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
63 | - protected EventDeliveryService eventDispatcher; | ||
64 | - | ||
65 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
66 | protected DeviceService deviceService; | 56 | protected DeviceService deviceService; |
67 | 57 | ||
68 | private DeviceListener deviceListener = new InternalDeviceListener(); | 58 | private DeviceListener deviceListener = new InternalDeviceListener(); |
... | @@ -104,9 +94,9 @@ public class LabelResourceManager | ... | @@ -104,9 +94,9 @@ public class LabelResourceManager |
104 | checkNotNull(beginLabel, "beginLabel is not null"); | 94 | checkNotNull(beginLabel, "beginLabel is not null"); |
105 | checkNotNull(endLabel, "beginLabel is not null"); | 95 | checkNotNull(endLabel, "beginLabel is not null"); |
106 | checkArgument(beginLabel.labelId() >= 0 && endLabel.labelId() >= 0, | 96 | checkArgument(beginLabel.labelId() >= 0 && endLabel.labelId() >= 0, |
107 | - "The value of beginLabel and the value of endLabel must be both positive number."); | 97 | + "The value of beginLabel and the value of endLabel must be both positive number."); |
108 | checkArgument(beginLabel.labelId() <= endLabel.labelId(), | 98 | checkArgument(beginLabel.labelId() <= endLabel.labelId(), |
109 | - "The value of endLabel must be greater than the value of endLabel."); | 99 | + "The value of endLabel must be greater than the value of endLabel."); |
110 | return store.createGlobalPool(beginLabel, endLabel); | 100 | return store.createGlobalPool(beginLabel, endLabel); |
111 | } | 101 | } |
112 | 102 | ||
... | @@ -180,26 +170,7 @@ public class LabelResourceManager | ... | @@ -180,26 +170,7 @@ public class LabelResourceManager |
180 | return store.getGlobalLabelResourcePool(); | 170 | return store.getGlobalLabelResourcePool(); |
181 | } | 171 | } |
182 | 172 | ||
183 | - @Override | 173 | + private class InternalLabelResourceDelegate implements LabelResourceDelegate { |
184 | - public void addListener(LabelResourceListener listener) { | ||
185 | - listenerRegistry.addListener(listener); | ||
186 | - } | ||
187 | - | ||
188 | - @Override | ||
189 | - public void removeListener(LabelResourceListener listener) { | ||
190 | - listenerRegistry.removeListener(listener); | ||
191 | - | ||
192 | - } | ||
193 | - | ||
194 | - private void post(LabelResourceEvent event) { | ||
195 | - if (event != null) { | ||
196 | - eventDispatcher.post(event); | ||
197 | - } | ||
198 | - } | ||
199 | - | ||
200 | - private class InternalLabelResourceDelegate | ||
201 | - implements LabelResourceDelegate { | ||
202 | - | ||
203 | @Override | 174 | @Override |
204 | public void notify(LabelResourceEvent event) { | 175 | public void notify(LabelResourceEvent event) { |
205 | post(event); | 176 | post(event); |
... | @@ -208,7 +179,6 @@ public class LabelResourceManager | ... | @@ -208,7 +179,6 @@ public class LabelResourceManager |
208 | } | 179 | } |
209 | 180 | ||
210 | private class InternalDeviceListener implements DeviceListener { | 181 | private class InternalDeviceListener implements DeviceListener { |
211 | - | ||
212 | @Override | 182 | @Override |
213 | public void event(DeviceEvent event) { | 183 | public void event(DeviceEvent event) { |
214 | Device device = event.subject(); | 184 | Device device = event.subject(); | ... | ... |
... | @@ -15,25 +15,17 @@ | ... | @@ -15,25 +15,17 @@ |
15 | */ | 15 | */ |
16 | package org.onosproject.incubator.net.tunnel.impl; | 16 | package org.onosproject.incubator.net.tunnel.impl; |
17 | 17 | ||
18 | -import static com.google.common.base.Preconditions.checkNotNull; | ||
19 | -import static org.slf4j.LoggerFactory.getLogger; | ||
20 | - | ||
21 | -import java.util.Collection; | ||
22 | -import java.util.Collections; | ||
23 | -import java.util.Set; | ||
24 | - | ||
25 | import org.apache.felix.scr.annotations.Activate; | 18 | import org.apache.felix.scr.annotations.Activate; |
26 | import org.apache.felix.scr.annotations.Component; | 19 | import org.apache.felix.scr.annotations.Component; |
27 | import org.apache.felix.scr.annotations.Deactivate; | 20 | import org.apache.felix.scr.annotations.Deactivate; |
28 | import org.apache.felix.scr.annotations.Reference; | 21 | import org.apache.felix.scr.annotations.Reference; |
29 | import org.apache.felix.scr.annotations.ReferenceCardinality; | 22 | import org.apache.felix.scr.annotations.ReferenceCardinality; |
30 | import org.apache.felix.scr.annotations.Service; | 23 | import org.apache.felix.scr.annotations.Service; |
24 | +import org.onosproject.net.provider.AbstractListenerProviderRegistry; | ||
31 | import org.onosproject.core.ApplicationId; | 25 | import org.onosproject.core.ApplicationId; |
32 | -import org.onosproject.event.EventDeliveryService; | ||
33 | -import org.onosproject.event.ListenerRegistry; | ||
34 | import org.onosproject.incubator.net.tunnel.DefaultTunnel; | 26 | import org.onosproject.incubator.net.tunnel.DefaultTunnel; |
35 | -import org.onosproject.incubator.net.tunnel.Tunnel.Type; | ||
36 | import org.onosproject.incubator.net.tunnel.Tunnel; | 27 | import org.onosproject.incubator.net.tunnel.Tunnel; |
28 | +import org.onosproject.incubator.net.tunnel.Tunnel.Type; | ||
37 | import org.onosproject.incubator.net.tunnel.TunnelAdminService; | 29 | import org.onosproject.incubator.net.tunnel.TunnelAdminService; |
38 | import org.onosproject.incubator.net.tunnel.TunnelDescription; | 30 | import org.onosproject.incubator.net.tunnel.TunnelDescription; |
39 | import org.onosproject.incubator.net.tunnel.TunnelEndPoint; | 31 | import org.onosproject.incubator.net.tunnel.TunnelEndPoint; |
... | @@ -51,35 +43,36 @@ import org.onosproject.incubator.net.tunnel.TunnelSubscription; | ... | @@ -51,35 +43,36 @@ import org.onosproject.incubator.net.tunnel.TunnelSubscription; |
51 | import org.onosproject.net.Annotations; | 43 | import org.onosproject.net.Annotations; |
52 | import org.onosproject.net.DeviceId; | 44 | import org.onosproject.net.DeviceId; |
53 | import org.onosproject.net.Path; | 45 | import org.onosproject.net.Path; |
54 | -import org.onosproject.net.provider.AbstractProviderRegistry; | ||
55 | import org.onosproject.net.provider.AbstractProviderService; | 46 | import org.onosproject.net.provider.AbstractProviderService; |
56 | import org.onosproject.net.provider.ProviderId; | 47 | import org.onosproject.net.provider.ProviderId; |
57 | import org.slf4j.Logger; | 48 | import org.slf4j.Logger; |
58 | 49 | ||
50 | +import java.util.Collection; | ||
51 | +import java.util.Collections; | ||
52 | +import java.util.Set; | ||
53 | + | ||
54 | +import static com.google.common.base.Preconditions.checkNotNull; | ||
55 | +import static org.slf4j.LoggerFactory.getLogger; | ||
56 | + | ||
59 | /** | 57 | /** |
60 | * Provides implementation of the tunnel NB/SB APIs. | 58 | * Provides implementation of the tunnel NB/SB APIs. |
61 | */ | 59 | */ |
62 | @Component(immediate = true, enabled = true) | 60 | @Component(immediate = true, enabled = true) |
63 | @Service | 61 | @Service |
64 | public class TunnelManager | 62 | public class TunnelManager |
65 | - extends AbstractProviderRegistry<TunnelProvider, TunnelProviderService> | 63 | + extends AbstractListenerProviderRegistry<TunnelEvent, TunnelListener, |
64 | + TunnelProvider, TunnelProviderService> | ||
66 | implements TunnelService, TunnelAdminService, TunnelProviderRegistry { | 65 | implements TunnelService, TunnelAdminService, TunnelProviderRegistry { |
67 | 66 | ||
68 | private static final String TUNNNEL_ID_NULL = "Tunnel ID cannot be null"; | 67 | private static final String TUNNNEL_ID_NULL = "Tunnel ID cannot be null"; |
69 | 68 | ||
70 | private final Logger log = getLogger(getClass()); | 69 | private final Logger log = getLogger(getClass()); |
71 | 70 | ||
72 | - protected final ListenerRegistry<TunnelEvent, TunnelListener> | ||
73 | - listenerRegistry = new ListenerRegistry<>(); | ||
74 | - | ||
75 | private final TunnelStoreDelegate delegate = new InternalStoreDelegate(); | 71 | private final TunnelStoreDelegate delegate = new InternalStoreDelegate(); |
76 | 72 | ||
77 | - | ||
78 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | 73 | @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) |
79 | protected TunnelStore store; | 74 | protected TunnelStore store; |
80 | 75 | ||
81 | - @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) | ||
82 | - protected EventDeliveryService eventDispatcher; | ||
83 | 76 | ||
84 | @Activate | 77 | @Activate |
85 | public void activate() { | 78 | public void activate() { |
... | @@ -294,16 +287,6 @@ public class TunnelManager | ... | @@ -294,16 +287,6 @@ public class TunnelManager |
294 | return new InternalTunnelProviderService(provider); | 287 | return new InternalTunnelProviderService(provider); |
295 | } | 288 | } |
296 | 289 | ||
297 | - @Override | ||
298 | - public void addListener(TunnelListener listener) { | ||
299 | - listenerRegistry.addListener(listener); | ||
300 | - } | ||
301 | - | ||
302 | - @Override | ||
303 | - public void removeListener(TunnelListener listener) { | ||
304 | - listenerRegistry.removeListener(listener); | ||
305 | - } | ||
306 | - | ||
307 | private class InternalTunnelProviderService | 290 | private class InternalTunnelProviderService |
308 | extends AbstractProviderService<TunnelProvider> | 291 | extends AbstractProviderService<TunnelProvider> |
309 | implements TunnelProviderService { | 292 | implements TunnelProviderService { |
... | @@ -370,7 +353,7 @@ public class TunnelManager | ... | @@ -370,7 +353,7 @@ public class TunnelManager |
370 | @Override | 353 | @Override |
371 | public void notify(TunnelEvent event) { | 354 | public void notify(TunnelEvent event) { |
372 | if (event != null) { | 355 | if (event != null) { |
373 | - eventDispatcher.post(event); | 356 | + post(event); |
374 | } | 357 | } |
375 | } | 358 | } |
376 | } | 359 | } | ... | ... |
-
Please register or login to post a comment