Adding emptyTreatment() and emptySelector()
Note: There was a change that adds a DROP action to
a traffic treatment if there are no other actions present.
To get a traffic treatment without the drop rule, use
emptyTreatment()
Change-Id: I1f23ed5e1fa7519eb94fcafa85facbad815d5e9c
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
index d67e63a..5675d2e 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficSelector.java
@@ -15,23 +15,23 @@
*/
package org.onosproject.net.flow;
+import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableSet;
+import org.onlab.packet.Ip6Address;
+import org.onlab.packet.IpPrefix;
+import org.onlab.packet.MacAddress;
+import org.onlab.packet.MplsLabel;
+import org.onlab.packet.VlanId;
+import org.onosproject.net.PortNumber;
+import org.onosproject.net.flow.criteria.Criteria;
+import org.onosproject.net.flow.criteria.Criterion;
+
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.flow.criteria.Criteria;
-import org.onosproject.net.flow.criteria.Criterion;
-import org.onlab.packet.IpPrefix;
-import org.onlab.packet.Ip6Address;
-import org.onlab.packet.MacAddress;
-import org.onlab.packet.MplsLabel;
-import org.onlab.packet.VlanId;
-
-import com.google.common.base.MoreObjects;
-import com.google.common.collect.ImmutableSet;
-
/**
* Default traffic selector implementation.
*/
@@ -39,6 +39,9 @@
private final Set<Criterion> criteria;
+ private static final TrafficSelector EMPTY
+ = new DefaultTrafficSelector(Collections.emptySet());
+
/**
* Creates a new traffic selector with the specified criteria.
*
@@ -98,6 +101,15 @@
}
/**
+ * Returns an empty traffic selector.
+ *
+ * @return empty traffic selector
+ */
+ public static TrafficSelector emptySelector() {
+ return EMPTY;
+ }
+
+ /**
* Returns a new traffic selector builder primed to produce entities
* patterned after the supplied selector.
*
diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index 499e9e7..7249ac0 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -27,6 +27,7 @@
import org.onosproject.net.flow.instructions.Instruction;
import org.onosproject.net.flow.instructions.Instructions;
+import java.util.Collections;
import java.util.List;
import java.util.Objects;
@@ -41,6 +42,9 @@
private final boolean hasClear;
+ private static final DefaultTrafficTreatment EMPTY
+ = new DefaultTrafficTreatment(Collections.emptyList());
+
/**
* Creates a new traffic treatment from the specified list of instructions.
*
@@ -99,6 +103,15 @@
}
/**
+ * Returns an empty traffic treatment.
+ *
+ * @return empty traffic treatment
+ */
+ public static TrafficTreatment emptyTreatment() {
+ return EMPTY;
+ }
+
+ /**
* Returns a new traffic treatment builder primed to produce entities
* patterned after the supplied treatment.
*
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index db634ff..5f62442 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -273,12 +273,14 @@
/**
* Builds an immutable traffic treatment descriptor.
+ * <p>
+ * If the treatment is empty when build() is called, it will add a default
+ * drop rule automatically. For a treatment that is actually empty, use
+ * {@link org.onosproject.net.flow.DefaultTrafficTreatment#emptyTreatment}.
+ * </p>
*
* @return traffic treatment
*/
TrafficTreatment build();
-
-
}
-
}
diff --git a/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java b/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java
index 8add596..d47594a 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/HostToHostIntent.java
@@ -50,8 +50,8 @@
*/
public HostToHostIntent(ApplicationId appId, HostId one, HostId two) {
this(appId, one, two,
- DefaultTrafficSelector.builder().build(),
- DefaultTrafficTreatment.builder().build(),
+ DefaultTrafficSelector.emptySelector(),
+ DefaultTrafficTreatment.emptyTreatment(),
ImmutableList.of(new LinkTypeConstraint(false, Link.Type.OPTICAL)));
}
diff --git a/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java b/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java
index 707ee6c..b6d0246 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/TwoWayP2PIntent.java
@@ -51,8 +51,8 @@
*/
public TwoWayP2PIntent(ApplicationId appId, ConnectPoint one, ConnectPoint two) {
this(appId, one, two,
- DefaultTrafficSelector.builder().build(),
- DefaultTrafficTreatment.builder().build(),
+ DefaultTrafficSelector.emptySelector(),
+ DefaultTrafficTreatment.emptyTreatment(),
ImmutableList.of(new LinkTypeConstraint(false, Link.Type.OPTICAL)));
}