flowrules are pushed: we still have an intermittent hang though
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java
new file mode 100644
index 0000000..801e8f9
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultFlowRule.java
@@ -0,0 +1,38 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.DeviceId;
+
+public class DefaultFlowRule implements FlowRule {
+
+ private final TrafficSelector selector;
+ private final TrafficTreatment treatment;
+ private final DeviceId deviceId;
+
+ public DefaultFlowRule(DeviceId deviceId,
+ TrafficSelector selector, TrafficTreatment treatment) {
+ this.treatment = treatment;
+ this.selector = selector;
+ this.deviceId = deviceId;
+ }
+
+ @Override
+ public int priority() {
+ return 0;
+ }
+
+ @Override
+ public DeviceId deviceId() {
+ return deviceId;
+ }
+
+ @Override
+ public TrafficSelector selector() {
+ return selector;
+ }
+
+ @Override
+ public TrafficTreatment treatment() {
+ return treatment;
+ }
+
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java
new file mode 100644
index 0000000..9ec49e4
--- /dev/null
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficSelector.java
@@ -0,0 +1,44 @@
+package org.onlab.onos.net.flow;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.onlab.onos.net.flow.criteria.Criterion;
+import org.slf4j.Logger;
+
+public final class DefaultTrafficSelector implements TrafficSelector {
+
+ private final List<Criterion> selector;
+
+ private DefaultTrafficSelector(List<Criterion> selector) {
+ this.selector = Collections.unmodifiableList(selector);
+ }
+
+ @Override
+ public List<Criterion> criteria() {
+ return selector;
+ }
+
+ public static class Builder implements TrafficSelector.Builder {
+
+ private final Logger log = getLogger(getClass());
+
+ private final List<Criterion> selector = new LinkedList<>();
+
+ @Override
+ public TrafficSelector.Builder add(Criterion criterion) {
+ selector.add(criterion);
+ return this;
+ }
+
+ @Override
+ public TrafficSelector build() {
+ return new DefaultTrafficSelector(selector);
+ }
+
+ }
+
+}
diff --git a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
index 0bf4ea8..9de68dc 100644
--- a/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onlab/onos/net/flow/DefaultTrafficTreatment.java
@@ -9,12 +9,11 @@
import org.onlab.onos.net.flow.instructions.Instruction;
import org.slf4j.Logger;
-@SuppressWarnings("rawtypes")
-public class DefaultTrafficTreatment implements TrafficTreatment {
+public final class DefaultTrafficTreatment implements TrafficTreatment {
private final List<Instruction> instructions;
- public DefaultTrafficTreatment(List<Instruction> instructions) {
+ private DefaultTrafficTreatment(List<Instruction> instructions) {
this.instructions = Collections.unmodifiableList(instructions);
}