Sho SHIMIZU

Fix the issue of ONOS-3423

Change-Id: I60c3105149f6ef46e2effb7de6d8f40152027ec7
...@@ -121,10 +121,10 @@ public abstract class ResourcePath { ...@@ -121,10 +121,10 @@ public abstract class ResourcePath {
121 public List<Object> components() { 121 public List<Object> components() {
122 LinkedList<Object> components = new LinkedList<>(); 122 LinkedList<Object> components = new LinkedList<>();
123 123
124 - Optional<Discrete> parentPath = Optional.ofNullable(parent); 124 + ResourcePath current = this;
125 - while (parentPath.isPresent()) { 125 + while (current.parent().isPresent()) {
126 - components.addFirst(last); 126 + components.addFirst(current.last);
127 - parentPath = parent.parent(); 127 + current = current.parent;
128 } 128 }
129 129
130 return components; 130 return components;
......
...@@ -26,6 +26,7 @@ import org.onosproject.net.PortNumber; ...@@ -26,6 +26,7 @@ import org.onosproject.net.PortNumber;
26 26
27 import java.util.Optional; 27 import java.util.Optional;
28 28
29 +import static org.hamcrest.Matchers.contains;
29 import static org.hamcrest.Matchers.is; 30 import static org.hamcrest.Matchers.is;
30 import static org.junit.Assert.assertThat; 31 import static org.junit.Assert.assertThat;
31 32
...@@ -63,6 +64,13 @@ public class ResourcePathTest { ...@@ -63,6 +64,13 @@ public class ResourcePathTest {
63 } 64 }
64 65
65 @Test 66 @Test
67 + public void testComponents() {
68 + ResourcePath port = ResourcePath.discrete(D1, P1);
69 +
70 + assertThat(port.components(), contains(D1, P1));
71 + }
72 +
73 + @Test
66 public void testThereIsParent() { 74 public void testThereIsParent() {
67 ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1); 75 ResourcePath path = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1), VLAN1);
68 ResourcePath parent = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1)); 76 ResourcePath parent = ResourcePath.discrete(LinkKey.linkKey(CP1_1, CP2_1));
......
...@@ -59,17 +59,15 @@ public final class ResourceRegistrar { ...@@ -59,17 +59,15 @@ public final class ResourceRegistrar {
59 59
60 @Activate 60 @Activate
61 public void activate() { 61 public void activate() {
62 - // FIXME there is a loop causing high resource utilization on device registration 62 + deviceListener = new ResourceDeviceListener(adminService, executor);
63 -// deviceListener = new ResourceDeviceListener(adminService, executor); 63 + deviceService.addListener(deviceListener);
64 -// deviceService.addListener(deviceListener); 64 + linkListener = new ResourceLinkListener(adminService, driverService, executor);
65 -// linkListener = new ResourceLinkListener(adminService, driverService, executor); 65 + linkService.addListener(linkListener);
66 -// linkService.addListener(linkListener);
67 } 66 }
68 67
69 @Deactivate 68 @Deactivate
70 public void deactivate() { 69 public void deactivate() {
71 - // FIXME there is a loop causing high resource utilization on device registration 70 + deviceService.removeListener(deviceListener);
72 -// deviceService.removeListener(deviceListener); 71 + linkService.removeListener(linkListener);
73 -// linkService.removeListener(linkListener);
74 } 72 }
75 } 73 }
......