Remove dependency on LinkResourceService from ObjectiveTracker

This resolves ONOS-3262.

Change-Id: I57b51b9d8ef1ed2d847ecddeca279b8afdb8725e
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
index 5ebc812..ebf681a 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/ObjectiveTracker.java
@@ -48,9 +48,9 @@
 import org.onosproject.net.intent.PartitionEventListener;
 import org.onosproject.net.intent.PartitionService;
 import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.resource.link.LinkResourceEvent;
-import org.onosproject.net.resource.link.LinkResourceListener;
-import org.onosproject.net.resource.link.LinkResourceService;
+import org.onosproject.net.newresource.ResourceEvent;
+import org.onosproject.net.newresource.ResourceListener;
+import org.onosproject.net.newresource.ResourceService;
 import org.onosproject.net.topology.TopologyEvent;
 import org.onosproject.net.topology.TopologyListener;
 import org.onosproject.net.topology.TopologyService;
@@ -60,6 +60,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Optional;
 import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -101,7 +102,7 @@
     protected TopologyService topologyService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected LinkResourceService resourceManager;
+    protected ResourceService resourceService;
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected DeviceService deviceService;
@@ -122,8 +123,7 @@
             .newScheduledThreadPool(1);
 
     private TopologyListener listener = new InternalTopologyListener();
-    private LinkResourceListener linkResourceListener =
-            new InternalLinkResourceListener();
+    private ResourceListener resourceListener = new InternalResourceListener();
     private DeviceListener deviceListener = new InternalDeviceListener();
     private HostListener hostListener = new InternalHostListener();
     private PartitionEventListener partitionListener = new InternalPartitionListener();
@@ -134,7 +134,7 @@
     @Activate
     public void activate() {
         topologyService.addListener(listener);
-        resourceManager.addListener(linkResourceListener);
+        resourceService.addListener(resourceListener);
         deviceService.addListener(deviceListener);
         hostService.addListener(hostListener);
         partitionService.addListener(partitionListener);
@@ -144,7 +144,7 @@
     @Deactivate
     public void deactivate() {
         topologyService.removeListener(listener);
-        resourceManager.removeListener(linkResourceListener);
+        resourceService.removeListener(resourceListener);
         deviceService.removeListener(deviceListener);
         hostService.removeListener(hostListener);
         partitionService.removeListener(partitionListener);
@@ -299,35 +299,22 @@
         }
     }
 
-    /**
-     * Internal re-actor to resource available events.
-     */
-    private class InternalLinkResourceListener implements LinkResourceListener {
+    private class InternalResourceListener implements ResourceListener {
         @Override
-        public void event(LinkResourceEvent event) {
-            executorService.execute(new ResourceAvailableHandler(event));
-        }
-    }
+        public void event(ResourceEvent event) {
+            Optional<Class<?>> linkEvent = event.subject().components().stream()
+                    .map(Object::getClass)
+                    .filter(x -> x == LinkKey.class)
+                    .findFirst();
+            if (linkEvent.isPresent()) {
+                executorService.execute(() -> {
+                    if (delegate == null) {
+                        return;
+                    }
 
-    /*
-     * Re-dispatcher of resource available events.
-     */
-    private class ResourceAvailableHandler implements Runnable {
-
-        private final LinkResourceEvent event;
-
-        ResourceAvailableHandler(LinkResourceEvent event) {
-            this.event = event;
-        }
-
-        @Override
-        public void run() {
-            // If there is no delegate, why bother? Just bail.
-            if (delegate == null) {
-                return;
+                    delegate.triggerCompile(Collections.emptySet(), true);
+                });
             }
-
-            delegate.triggerCompile(Collections.emptySet(), true);
         }
     }
 
diff --git a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
index 58fa129..8d7452b 100644
--- a/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
+++ b/core/net/src/test/java/org/onosproject/net/intent/impl/ObjectiveTrackerTest.java
@@ -16,7 +16,6 @@
 package org.onosproject.net.intent.impl;
 
 import java.util.Collection;
-import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.concurrent.CountDownLatch;
@@ -38,8 +37,9 @@
 import org.onosproject.net.intent.Key;
 import org.onosproject.net.intent.MockIdGenerator;
 import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.resource.link.LinkResourceEvent;
-import org.onosproject.net.resource.link.LinkResourceListener;
+import org.onosproject.net.newresource.ResourceEvent;
+import org.onosproject.net.newresource.ResourceListener;
+import org.onosproject.net.newresource.ResourcePath;
 import org.onosproject.net.topology.Topology;
 import org.onosproject.net.topology.TopologyEvent;
 import org.onosproject.net.topology.TopologyListener;
@@ -52,6 +52,8 @@
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.hasSize;
 import static org.hamcrest.Matchers.is;
+import static org.onosproject.net.LinkKey.linkKey;
+import static org.onosproject.net.newresource.ResourceEvent.Type.*;
 import static org.onosproject.net.NetTestTools.APP_ID;
 import static org.onosproject.net.NetTestTools.device;
 import static org.onosproject.net.NetTestTools.link;
@@ -67,7 +69,7 @@
     private List<Event> reasons;
     private TopologyListener listener;
     private DeviceListener deviceListener;
-    private LinkResourceListener linkResourceListener;
+    private ResourceListener resourceListener;
     private IdGenerator mockGenerator;
 
     /**
@@ -84,7 +86,7 @@
         reasons = new LinkedList<>();
         listener = TestUtils.getField(tracker, "listener");
         deviceListener = TestUtils.getField(tracker, "deviceListener");
-        linkResourceListener = TestUtils.getField(tracker, "linkResourceListener");
+        resourceListener = TestUtils.getField(tracker, "resourceListener");
         mockGenerator = new MockIdGenerator();
         Intent.bindIdGenerator(mockGenerator);
     }
@@ -228,10 +230,9 @@
      */
     @Test
     public void testResourceEvent() throws Exception {
-        LinkResourceEvent event = new LinkResourceEvent(
-                LinkResourceEvent.Type.ADDITIONAL_RESOURCES_AVAILABLE,
-                new HashSet<>());
-        linkResourceListener.event(event);
+        ResourceEvent event = new ResourceEvent(RESOURCE_ADDED,
+                new ResourcePath(linkKey(link("a", 1, "b", 1))));
+        resourceListener.event(event);
 
         assertThat(
                 delegate.latch.await(WAIT_TIMEOUT_SECONDS, TimeUnit.SECONDS),