Refactor VPLS IntentInstaller
Change-Id: Ia729849fd0c939b6399abad5f15658b48fbb62b4
diff --git a/apps/vpls/src/main/java/org/onosproject/vpls/IntentInstaller.java b/apps/vpls/src/main/java/org/onosproject/vpls/IntentInstaller.java
index 156936c..013461e 100644
--- a/apps/vpls/src/main/java/org/onosproject/vpls/IntentInstaller.java
+++ b/apps/vpls/src/main/java/org/onosproject/vpls/IntentInstaller.java
@@ -37,7 +37,6 @@
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -87,42 +86,38 @@
MacAddress>> confHostPresentCPoint) {
List<Intent> intents = new ArrayList<>();
- confHostPresentCPoint.asMap().keySet()
+ confHostPresentCPoint.keySet()
+ .stream()
+ .filter(vlanId -> confHostPresentCPoint.get(vlanId) != null)
.forEach(vlanId -> {
- List<Pair<ConnectPoint, MacAddress>> cPoints =
- confHostPresentCPoint.get(vlanId).stream().collect(Collectors.toList());
-
- if (cPoints != null && !cPoints.isEmpty()) {
- for (int i = 0; i < cPoints.size(); i++) {
- ConnectPoint src = cPoints.get(i).getKey();
- Set<ConnectPoint> dsts = new HashSet<>();
- MacAddress mac = cPoints.get(i).getValue();
- for (int j = 0; j < cPoints.size(); j++) {
- ConnectPoint dst = cPoints.get(j).getKey();
- if (!dst.equals(src)) {
- dsts.add(dst);
- }
- }
- Key brcKey = buildKey(PREFIX_BROADCAST, src, vlanId);
- if (intentService.getIntent(brcKey) == null) {
- SinglePointToMultiPointIntent brcIntent =
- buildBrcIntent(brcKey, src, dsts, vlanId);
- intents.add(brcIntent);
- }
- if (mac != null && countMacInCPoints(cPoints) > 1) {
- Key uniKey = buildKey(PREFIX_UNICAST, src, vlanId);
- if (intentService.getIntent(uniKey) == null) {
- MultiPointToSinglePointIntent uniIntent =
- buildUniIntent(uniKey,
- dsts,
- src,
- vlanId,
- mac);
- intents.add(uniIntent);
- }
+ Set<Pair<ConnectPoint, MacAddress>> cPoints =
+ confHostPresentCPoint.get(vlanId);
+ cPoints.forEach(cPoint -> {
+ MacAddress mac = cPoint.getValue();
+ ConnectPoint src = cPoint.getKey();
+ Set<ConnectPoint> dsts = cPoints.stream()
+ .map(Pair::getKey)
+ .filter(cp -> !cp.equals(src))
+ .collect(Collectors.toSet());
+ Key brcKey = buildKey(PREFIX_BROADCAST, src, vlanId);
+ if (intentService.getIntent(brcKey) == null) {
+ SinglePointToMultiPointIntent brcIntent =
+ buildBrcIntent(brcKey, src, dsts, vlanId);
+ intents.add(brcIntent);
+ }
+ if (mac != null && countMacInCPoints(cPoints) > 1) {
+ Key uniKey = buildKey(PREFIX_UNICAST, src, vlanId);
+ if (intentService.getIntent(uniKey) == null) {
+ MultiPointToSinglePointIntent uniIntent =
+ buildUniIntent(uniKey,
+ dsts,
+ src,
+ vlanId,
+ mac);
+ intents.add(uniIntent);
}
}
- }
+ });
});
submitIntents(intents);
}
@@ -133,11 +128,10 @@
* @param intents intents to be submitted
*/
private void submitIntents(Collection<Intent> intents) {
- log.debug("Submitting intents to the IntentSynchronizer");
-
- for (Intent intent : intents) {
+ log.debug("Submitting intents to the Intent Synchronizer");
+ intents.forEach(intent -> {
intentSynchronizer.submit(intent);
- }
+ });
}
/**
@@ -240,18 +234,12 @@
* Counts the number of mac addresses associated to a specific list of
* ConnectPoint.
*
- * @param cPoints List of ConnectPoints, eventually binded to the MAC of the
+ * @param cPoints Set of ConnectPoints, eventually bound to the MAC of the
* host attached
* @return number of mac addresses found.
*/
- private int countMacInCPoints(List<Pair<ConnectPoint, MacAddress>> cPoints) {
- int macFound = 0;
- for (Pair<ConnectPoint, MacAddress> p : cPoints) {
- if (p.getValue() != null) {
- macFound++;
- }
- }
- return macFound;
+ private int countMacInCPoints(Set<Pair<ConnectPoint, MacAddress>> cPoints) {
+ return (int) cPoints.stream().filter(p -> p.getValue() != null).count();
}
}