Sho SHIMIZU

Remove dependency on LinkResourceService from ObjectiveTracker

This resolves ONOS-3262.

Change-Id: I57b51b9d8ef1ed2d847ecddeca279b8afdb8725e
...@@ -48,9 +48,9 @@ import org.onosproject.net.intent.PartitionEvent; ...@@ -48,9 +48,9 @@ import org.onosproject.net.intent.PartitionEvent;
48 import org.onosproject.net.intent.PartitionEventListener; 48 import org.onosproject.net.intent.PartitionEventListener;
49 import org.onosproject.net.intent.PartitionService; 49 import org.onosproject.net.intent.PartitionService;
50 import org.onosproject.net.link.LinkEvent; 50 import org.onosproject.net.link.LinkEvent;
51 -import org.onosproject.net.resource.link.LinkResourceEvent; 51 +import org.onosproject.net.newresource.ResourceEvent;
52 -import org.onosproject.net.resource.link.LinkResourceListener; 52 +import org.onosproject.net.newresource.ResourceListener;
53 -import org.onosproject.net.resource.link.LinkResourceService; 53 +import org.onosproject.net.newresource.ResourceService;
54 import org.onosproject.net.topology.TopologyEvent; 54 import org.onosproject.net.topology.TopologyEvent;
55 import org.onosproject.net.topology.TopologyListener; 55 import org.onosproject.net.topology.TopologyListener;
56 import org.onosproject.net.topology.TopologyService; 56 import org.onosproject.net.topology.TopologyService;
...@@ -60,6 +60,7 @@ import java.util.Collection; ...@@ -60,6 +60,7 @@ import java.util.Collection;
60 import java.util.Collections; 60 import java.util.Collections;
61 import java.util.HashSet; 61 import java.util.HashSet;
62 import java.util.List; 62 import java.util.List;
63 +import java.util.Optional;
63 import java.util.Set; 64 import java.util.Set;
64 import java.util.concurrent.ExecutorService; 65 import java.util.concurrent.ExecutorService;
65 import java.util.concurrent.Executors; 66 import java.util.concurrent.Executors;
...@@ -101,7 +102,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { ...@@ -101,7 +102,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
101 protected TopologyService topologyService; 102 protected TopologyService topologyService;
102 103
103 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 104 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
104 - protected LinkResourceService resourceManager; 105 + protected ResourceService resourceService;
105 106
106 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 107 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
107 protected DeviceService deviceService; 108 protected DeviceService deviceService;
...@@ -122,8 +123,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { ...@@ -122,8 +123,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
122 .newScheduledThreadPool(1); 123 .newScheduledThreadPool(1);
123 124
124 private TopologyListener listener = new InternalTopologyListener(); 125 private TopologyListener listener = new InternalTopologyListener();
125 - private LinkResourceListener linkResourceListener = 126 + private ResourceListener resourceListener = new InternalResourceListener();
126 - new InternalLinkResourceListener();
127 private DeviceListener deviceListener = new InternalDeviceListener(); 127 private DeviceListener deviceListener = new InternalDeviceListener();
128 private HostListener hostListener = new InternalHostListener(); 128 private HostListener hostListener = new InternalHostListener();
129 private PartitionEventListener partitionListener = new InternalPartitionListener(); 129 private PartitionEventListener partitionListener = new InternalPartitionListener();
...@@ -134,7 +134,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { ...@@ -134,7 +134,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
134 @Activate 134 @Activate
135 public void activate() { 135 public void activate() {
136 topologyService.addListener(listener); 136 topologyService.addListener(listener);
137 - resourceManager.addListener(linkResourceListener); 137 + resourceService.addListener(resourceListener);
138 deviceService.addListener(deviceListener); 138 deviceService.addListener(deviceListener);
139 hostService.addListener(hostListener); 139 hostService.addListener(hostListener);
140 partitionService.addListener(partitionListener); 140 partitionService.addListener(partitionListener);
...@@ -144,7 +144,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService { ...@@ -144,7 +144,7 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
144 @Deactivate 144 @Deactivate
145 public void deactivate() { 145 public void deactivate() {
146 topologyService.removeListener(listener); 146 topologyService.removeListener(listener);
147 - resourceManager.removeListener(linkResourceListener); 147 + resourceService.removeListener(resourceListener);
148 deviceService.removeListener(deviceListener); 148 deviceService.removeListener(deviceListener);
149 hostService.removeListener(hostListener); 149 hostService.removeListener(hostListener);
150 partitionService.removeListener(partitionListener); 150 partitionService.removeListener(partitionListener);
...@@ -299,35 +299,22 @@ public class ObjectiveTracker implements ObjectiveTrackerService { ...@@ -299,35 +299,22 @@ public class ObjectiveTracker implements ObjectiveTrackerService {
299 } 299 }
300 } 300 }
301 301
302 - /** 302 + private class InternalResourceListener implements ResourceListener {
303 - * Internal re-actor to resource available events.
304 - */
305 - private class InternalLinkResourceListener implements LinkResourceListener {
306 - @Override
307 - public void event(LinkResourceEvent event) {
308 - executorService.execute(new ResourceAvailableHandler(event));
309 - }
310 - }
311 -
312 - /*
313 - * Re-dispatcher of resource available events.
314 - */
315 - private class ResourceAvailableHandler implements Runnable {
316 -
317 - private final LinkResourceEvent event;
318 -
319 - ResourceAvailableHandler(LinkResourceEvent event) {
320 - this.event = event;
321 - }
322 -
323 @Override 303 @Override
324 - public void run() { 304 + public void event(ResourceEvent event) {
325 - // If there is no delegate, why bother? Just bail. 305 + Optional<Class<?>> linkEvent = event.subject().components().stream()
306 + .map(Object::getClass)
307 + .filter(x -> x == LinkKey.class)
308 + .findFirst();
309 + if (linkEvent.isPresent()) {
310 + executorService.execute(() -> {
326 if (delegate == null) { 311 if (delegate == null) {
327 return; 312 return;
328 } 313 }
329 314
330 delegate.triggerCompile(Collections.emptySet(), true); 315 delegate.triggerCompile(Collections.emptySet(), true);
316 + });
317 + }
331 } 318 }
332 } 319 }
333 320
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
16 package org.onosproject.net.intent.impl; 16 package org.onosproject.net.intent.impl;
17 17
18 import java.util.Collection; 18 import java.util.Collection;
19 -import java.util.HashSet;
20 import java.util.LinkedList; 19 import java.util.LinkedList;
21 import java.util.List; 20 import java.util.List;
22 import java.util.concurrent.CountDownLatch; 21 import java.util.concurrent.CountDownLatch;
...@@ -38,8 +37,9 @@ import org.onosproject.net.intent.Intent; ...@@ -38,8 +37,9 @@ import org.onosproject.net.intent.Intent;
38 import org.onosproject.net.intent.Key; 37 import org.onosproject.net.intent.Key;
39 import org.onosproject.net.intent.MockIdGenerator; 38 import org.onosproject.net.intent.MockIdGenerator;
40 import org.onosproject.net.link.LinkEvent; 39 import org.onosproject.net.link.LinkEvent;
41 -import org.onosproject.net.resource.link.LinkResourceEvent; 40 +import org.onosproject.net.newresource.ResourceEvent;
42 -import org.onosproject.net.resource.link.LinkResourceListener; 41 +import org.onosproject.net.newresource.ResourceListener;
42 +import org.onosproject.net.newresource.ResourcePath;
43 import org.onosproject.net.topology.Topology; 43 import org.onosproject.net.topology.Topology;
44 import org.onosproject.net.topology.TopologyEvent; 44 import org.onosproject.net.topology.TopologyEvent;
45 import org.onosproject.net.topology.TopologyListener; 45 import org.onosproject.net.topology.TopologyListener;
...@@ -52,6 +52,8 @@ import static org.hamcrest.MatcherAssert.assertThat; ...@@ -52,6 +52,8 @@ import static org.hamcrest.MatcherAssert.assertThat;
52 import static org.hamcrest.Matchers.equalTo; 52 import static org.hamcrest.Matchers.equalTo;
53 import static org.hamcrest.Matchers.hasSize; 53 import static org.hamcrest.Matchers.hasSize;
54 import static org.hamcrest.Matchers.is; 54 import static org.hamcrest.Matchers.is;
55 +import static org.onosproject.net.LinkKey.linkKey;
56 +import static org.onosproject.net.newresource.ResourceEvent.Type.*;
55 import static org.onosproject.net.NetTestTools.APP_ID; 57 import static org.onosproject.net.NetTestTools.APP_ID;
56 import static org.onosproject.net.NetTestTools.device; 58 import static org.onosproject.net.NetTestTools.device;
57 import static org.onosproject.net.NetTestTools.link; 59 import static org.onosproject.net.NetTestTools.link;
...@@ -67,7 +69,7 @@ public class ObjectiveTrackerTest { ...@@ -67,7 +69,7 @@ public class ObjectiveTrackerTest {
67 private List<Event> reasons; 69 private List<Event> reasons;
68 private TopologyListener listener; 70 private TopologyListener listener;
69 private DeviceListener deviceListener; 71 private DeviceListener deviceListener;
70 - private LinkResourceListener linkResourceListener; 72 + private ResourceListener resourceListener;
71 private IdGenerator mockGenerator; 73 private IdGenerator mockGenerator;
72 74
73 /** 75 /**
...@@ -84,7 +86,7 @@ public class ObjectiveTrackerTest { ...@@ -84,7 +86,7 @@ public class ObjectiveTrackerTest {
84 reasons = new LinkedList<>(); 86 reasons = new LinkedList<>();
85 listener = TestUtils.getField(tracker, "listener"); 87 listener = TestUtils.getField(tracker, "listener");
86 deviceListener = TestUtils.getField(tracker, "deviceListener"); 88 deviceListener = TestUtils.getField(tracker, "deviceListener");
87 - linkResourceListener = TestUtils.getField(tracker, "linkResourceListener"); 89 + resourceListener = TestUtils.getField(tracker, "resourceListener");
88 mockGenerator = new MockIdGenerator(); 90 mockGenerator = new MockIdGenerator();
89 Intent.bindIdGenerator(mockGenerator); 91 Intent.bindIdGenerator(mockGenerator);
90 } 92 }
...@@ -228,10 +230,9 @@ public class ObjectiveTrackerTest { ...@@ -228,10 +230,9 @@ public class ObjectiveTrackerTest {
228 */ 230 */
229 @Test 231 @Test
230 public void testResourceEvent() throws Exception { 232 public void testResourceEvent() throws Exception {
231 - LinkResourceEvent event = new LinkResourceEvent( 233 + ResourceEvent event = new ResourceEvent(RESOURCE_ADDED,
232 - LinkResourceEvent.Type.ADDITIONAL_RESOURCES_AVAILABLE, 234 + new ResourcePath(linkKey(link("a", 1, "b", 1))));
233 - new HashSet<>()); 235 + resourceListener.event(event);
234 - linkResourceListener.event(event);
235 236
236 assertThat( 237 assertThat(
237 delegate.latch.await(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS), 238 delegate.latch.await(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS),
......