Fix NeighbourResolutionManager which always
sets the context as handled, updates learningswitch
version and fixes a checkstyle error.
Change-Id: I30a9abae60a808e3d610e5a7086cc7ee53720bb9
diff --git a/incubator/net/src/main/java/org/onosproject/incubator/net/neighbour/impl/NeighbourResolutionManager.java b/incubator/net/src/main/java/org/onosproject/incubator/net/neighbour/impl/NeighbourResolutionManager.java
index fe1a800..ed6c856 100644
--- a/incubator/net/src/main/java/org/onosproject/incubator/net/neighbour/impl/NeighbourResolutionManager.java
+++ b/incubator/net/src/main/java/org/onosproject/incubator/net/neighbour/impl/NeighbourResolutionManager.java
@@ -71,6 +71,7 @@
import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
+import java.util.stream.Collectors;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.onlab.packet.Ethernet.TYPE_ARP;
@@ -280,19 +281,24 @@
return;
}
- handleMessage(msgContext);
+ if (handleMessage(msgContext)) {
+ context.block();
+ }
- context.block();
}
- private void handleMessage(NeighbourMessageContext context) {
+ private boolean handleMessage(NeighbourMessageContext context) {
Collection<NeighbourHandlerRegistration> handlers = packetHandlers.get(context.inPort());
- handlers.forEach(registration -> {
- if (registration.intf() == null || matches(context, registration.intf())) {
- registration.handler().handleMessage(context, hostService);
- }
- });
+ Collection<NeighbourHandlerRegistration> handled = handlers
+ .stream()
+ .filter(registration -> registration.intf() == null || matches(context, registration.intf()))
+ .collect(Collectors.toSet());
+
+ handled.forEach(registration -> registration.handler().handleMessage(context, hostService));
+
+ return !handled.isEmpty();
+
}
/**