Committed by
Jonathan Hart
Guard malformed intent by pre-condition check on instantiation
Change-Id: I90ca0fac2e3b68c4ca5b464777b0cdaa2227c2e5
Showing
4 changed files
with
20 additions
and
4 deletions
... | @@ -71,6 +71,8 @@ public final class HostToHostIntent extends ConnectivityIntent { | ... | @@ -71,6 +71,8 @@ public final class HostToHostIntent extends ConnectivityIntent { |
71 | super(id(HostToHostIntent.class, min(one, two), max(one, two), | 71 | super(id(HostToHostIntent.class, min(one, two), max(one, two), |
72 | selector, treatment, constraints), | 72 | selector, treatment, constraints), |
73 | appId, null, selector, treatment, constraints); | 73 | appId, null, selector, treatment, constraints); |
74 | + | ||
75 | + // TODO: consider whether the case one and two are same is allowed | ||
74 | this.one = checkNotNull(one); | 76 | this.one = checkNotNull(one); |
75 | this.two = checkNotNull(two); | 77 | this.two = checkNotNull(two); |
76 | 78 | ... | ... |
... | @@ -86,9 +86,12 @@ public final class MultiPointToSinglePointIntent extends ConnectivityIntent { | ... | @@ -86,9 +86,12 @@ public final class MultiPointToSinglePointIntent extends ConnectivityIntent { |
86 | 86 | ||
87 | checkNotNull(ingressPoints); | 87 | checkNotNull(ingressPoints); |
88 | checkArgument(!ingressPoints.isEmpty(), "Ingress point set cannot be empty"); | 88 | checkArgument(!ingressPoints.isEmpty(), "Ingress point set cannot be empty"); |
89 | + checkNotNull(egressPoint); | ||
90 | + checkArgument(!ingressPoints.contains(egressPoint), | ||
91 | + "Set of ingresses should not contain egress (egress: %s)", egressPoint); | ||
89 | 92 | ||
90 | this.ingressPoints = Sets.newHashSet(ingressPoints); | 93 | this.ingressPoints = Sets.newHashSet(ingressPoints); |
91 | - this.egressPoint = checkNotNull(egressPoint); | 94 | + this.egressPoint = egressPoint; |
92 | } | 95 | } |
93 | 96 | ||
94 | /** | 97 | /** | ... | ... |
... | @@ -26,6 +26,7 @@ import org.onlab.onos.net.intent.constraint.LinkTypeConstraint; | ... | @@ -26,6 +26,7 @@ import org.onlab.onos.net.intent.constraint.LinkTypeConstraint; |
26 | 26 | ||
27 | import java.util.List; | 27 | import java.util.List; |
28 | 28 | ||
29 | +import static com.google.common.base.Preconditions.checkArgument; | ||
29 | import static com.google.common.base.Preconditions.checkNotNull; | 30 | import static com.google.common.base.Preconditions.checkNotNull; |
30 | 31 | ||
31 | /** | 32 | /** |
... | @@ -75,8 +76,14 @@ public class PointToPointIntent extends ConnectivityIntent { | ... | @@ -75,8 +76,14 @@ public class PointToPointIntent extends ConnectivityIntent { |
75 | super(id(PointToPointIntent.class, selector, treatment, | 76 | super(id(PointToPointIntent.class, selector, treatment, |
76 | ingressPoint, egressPoint, constraints), | 77 | ingressPoint, egressPoint, constraints), |
77 | appId, null, selector, treatment, constraints); | 78 | appId, null, selector, treatment, constraints); |
78 | - this.ingressPoint = checkNotNull(ingressPoint); | 79 | + |
79 | - this.egressPoint = checkNotNull(egressPoint); | 80 | + checkNotNull(ingressPoint); |
81 | + checkNotNull(egressPoint); | ||
82 | + checkArgument(!ingressPoint.equals(egressPoint), | ||
83 | + "ingress and egress should be different (ingress: %s, egress: %s)", ingressPoint, egressPoint); | ||
84 | + | ||
85 | + this.ingressPoint = ingressPoint; | ||
86 | + this.egressPoint = egressPoint; | ||
80 | } | 87 | } |
81 | 88 | ||
82 | /** | 89 | /** | ... | ... |
... | @@ -56,8 +56,12 @@ public class SinglePointToMultiPointIntent extends ConnectivityIntent { | ... | @@ -56,8 +56,12 @@ public class SinglePointToMultiPointIntent extends ConnectivityIntent { |
56 | super(id(SinglePointToMultiPointIntent.class, selector, treatment, | 56 | super(id(SinglePointToMultiPointIntent.class, selector, treatment, |
57 | ingressPoint, egressPoints), appId, null, selector, treatment); | 57 | ingressPoint, egressPoints), appId, null, selector, treatment); |
58 | checkNotNull(egressPoints); | 58 | checkNotNull(egressPoints); |
59 | + checkNotNull(ingressPoint); | ||
59 | checkArgument(!egressPoints.isEmpty(), "Egress point set cannot be empty"); | 60 | checkArgument(!egressPoints.isEmpty(), "Egress point set cannot be empty"); |
60 | - this.ingressPoint = checkNotNull(ingressPoint); | 61 | + checkArgument(!egressPoints.contains(ingressPoint), |
62 | + "Set of egresses should not contain ingress (ingress: %s)", ingressPoint); | ||
63 | + | ||
64 | + this.ingressPoint = ingressPoint; | ||
61 | this.egressPoints = Sets.newHashSet(egressPoints); | 65 | this.egressPoints = Sets.newHashSet(egressPoints); |
62 | } | 66 | } |
63 | 67 | ... | ... |
-
Please register or login to post a comment