Refactor connectivity intent creation to use builders
- Each connectivity intent now has only one constructor
- Intent constructors are now private for leaf classes and
protected for classes that can be derived from
- Each intent class has a Builder class that accumulates
parameters for intent creation
- Each intent class has a public static builder() method
to create a builder
- Each Builder class has a build() method to create the
intent from the accumulated parameters
- Added keys to a few intent types that were missing them
- Tightened up usage of checkNotNull(), taking advantage of
the return value to save some lines of code
- Modified callers to use the builders instead of directly
calling the constructors
Change-Id: I713185d5ecbadbf51f87ef7f68fec41102106c78
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
index a4a3a7c..f1554b6 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddHostToHostIntentCommand.java
@@ -15,19 +15,15 @@
*/
package org.onosproject.cli.net;
+import java.util.List;
+
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.net.HostId;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.intent.Constraint;
import org.onosproject.net.intent.HostToHostIntent;
import org.onosproject.net.intent.IntentService;
-import java.util.List;
-
/**
* Installs host-to-host connectivity intent.
*/
@@ -50,14 +46,16 @@
HostId oneId = HostId.hostId(one);
HostId twoId = HostId.hostId(two);
- TrafficSelector selector = DefaultTrafficSelector.emptySelector();
- TrafficTreatment treatment = DefaultTrafficTreatment.emptyTreatment();
List<Constraint> constraints = buildConstraints();
- HostToHostIntent intent = new HostToHostIntent(appId(), key(),
- oneId, twoId,
- selector, treatment,
- constraints, priority());
+ HostToHostIntent intent = HostToHostIntent.builder()
+ .appId(appId())
+ .key(key())
+ .one(oneId)
+ .two(twoId)
+ .constraints(constraints)
+ .priority(priority())
+ .build();
service.submit(intent);
print("Host to Host intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddMplsIntent.java b/cli/src/main/java/org/onosproject/cli/net/AddMplsIntent.java
index 7de49c9..ebaf89b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddMplsIntent.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddMplsIntent.java
@@ -75,10 +75,17 @@
List<Constraint> constraints = buildConstraints();
- MplsIntent intent = new MplsIntent(appId(), selector, treatment,
- ingress, ingressLabel, egress,
- egressLabel, constraints,
- priority());
+ MplsIntent intent = MplsIntent.builder()
+ .appId(appId())
+ .selector(selector)
+ .treatment(treatment)
+ .ingressPoint(ingress)
+ .ingressLabel(ingressLabel)
+ .egressPoint(egress)
+ .egressLabel(egressLabel)
+ .constraints(constraints)
+ .priority(priority())
+ .build();
service.submit(intent);
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
index abc0c4b..892f819 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddMultiPointToSinglePointIntentCommand.java
@@ -72,11 +72,16 @@
TrafficTreatment treatment = buildTrafficTreatment();
List<Constraint> constraints = buildConstraints();
- Intent intent = new MultiPointToSinglePointIntent(appId(), key(),
- selector, treatment,
- ingressPoints, egress,
- constraints,
- priority());
+ Intent intent = MultiPointToSinglePointIntent.builder()
+ .appId(appId())
+ .key(key())
+ .selector(selector)
+ .treatment(treatment)
+ .ingressPoints(ingressPoints)
+ .egressPoint(egress)
+ .constraints(constraints)
+ .priority(priority())
+ .build();
service.submit(intent);
print("Multipoint to single point intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
index b6193fa..83ef66f 100644
--- a/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/AddSinglePointToMultiPointIntentCommand.java
@@ -72,15 +72,16 @@
List<Constraint> constraints = buildConstraints();
SinglePointToMultiPointIntent intent =
- new SinglePointToMultiPointIntent(
- appId(),
- key(),
- selector,
- treatment,
- ingressPoint,
- egressPoints,
- constraints,
- priority());
+ SinglePointToMultiPointIntent.builder()
+ .appId(appId())
+ .key(key())
+ .selector(selector)
+ .treatment(treatment)
+ .ingressPoint(ingressPoint)
+ .egressPoints(egressPoints)
+ .constraints(constraints)
+ .priority(priority())
+ .build();
service.submit(intent);
print("Single point to multipoint intent submitted:\n%s", intent.toString());
}
diff --git a/cli/src/main/java/org/onosproject/cli/net/RandomIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/RandomIntentCommand.java
index 5eb592a..152e659 100644
--- a/cli/src/main/java/org/onosproject/cli/net/RandomIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/RandomIntentCommand.java
@@ -15,25 +15,22 @@
*/
package org.onosproject.cli.net;
-import com.google.common.collect.Lists;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
import org.apache.karaf.shell.commands.Argument;
import org.apache.karaf.shell.commands.Command;
import org.onosproject.cli.AbstractShellCommand;
import org.onosproject.core.ApplicationId;
import org.onosproject.core.CoreService;
import org.onosproject.net.Host;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
import org.onosproject.net.host.HostService;
import org.onosproject.net.intent.HostToHostIntent;
import org.onosproject.net.intent.Intent;
import org.onosproject.net.intent.IntentService;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
+import com.google.common.collect.Lists;
/**
* Installs point-to-point connectivity intents.
@@ -67,17 +64,16 @@
}
private Collection<Intent> generateIntents() {
- TrafficSelector selector = DefaultTrafficSelector.emptySelector();
- TrafficTreatment treatment = DefaultTrafficTreatment.emptyTreatment();
-
List<Host> hosts = Lists.newArrayList(hostService.getHosts());
List<Intent> fullMesh = Lists.newArrayList();
for (int i = 0; i < hosts.size(); i++) {
for (int j = i + 1; j < hosts.size(); j++) {
- fullMesh.add(new HostToHostIntent(appId(),
- hosts.get(i).id(),
- hosts.get(j).id(),
- selector, treatment));
+ fullMesh.add(HostToHostIntent.builder()
+ .appId(appId())
+ .one(hosts.get(i).id())
+ .two(hosts.get(j).id())
+ .build());
+
}
}
Collections.shuffle(fullMesh);