Update net.onrc.onos.core.matchaction.action package.
- Added ModifySrcMacActions class.
- Implemented hashCode() and equals() methods for all Action classes.
Change-Id: I568d5fe7a105bb1553642a9e8af782248835a183
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
index 47e0d44..491d986 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyDstMacAction.java
@@ -1,7 +1,10 @@
package net.onrc.onos.core.matchaction.action;
+import static com.google.common.base.Preconditions.checkNotNull;
import net.floodlightcontroller.util.MACAddress;
+import com.google.common.base.Objects;
+
/**
* An action object to modify destination MAC address.
* <p>
@@ -17,7 +20,7 @@
* @param dstMac destination MAC address after the modification
*/
public ModifyDstMacAction(MACAddress dstMac) {
- this.dstMac = dstMac;
+ this.dstMac = checkNotNull(dstMac);
}
/**
@@ -29,4 +32,20 @@
return dstMac;
}
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(dstMac);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ ModifyDstMacAction that = (ModifyDstMacAction) obj;
+ return Objects.equal(this.dstMac, that.dstMac);
+ }
}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyLambdaAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyLambdaAction.java
index f2d313d..ee78481 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/ModifyLambdaAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/ModifyLambdaAction.java
@@ -1,5 +1,7 @@
package net.onrc.onos.core.matchaction.action;
+import java.util.Objects;
+
/**
* An action object to modify lambda.
* <p>
@@ -7,7 +9,7 @@
* MatchAction, Flow or Intent class.
*/
public class ModifyLambdaAction implements Action {
- protected int lambda;
+ private final int lambda;
/**
* Constructor.
@@ -27,4 +29,21 @@
return lambda;
}
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(lambda);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ ModifyLambdaAction other = (ModifyLambdaAction) obj;
+ return lambda == other.lambda;
+ }
+
}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java
new file mode 100644
index 0000000..21ecf32
--- /dev/null
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/ModifySrcMacAction.java
@@ -0,0 +1,51 @@
+package net.onrc.onos.core.matchaction.action;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import net.floodlightcontroller.util.MACAddress;
+
+import com.google.common.base.Objects;
+
+/**
+ * An action object to modify source MAC address.
+ * <p>
+ * This class does not have a switch ID. The switch ID is handled by
+ * MatchAction, Flow or Intent class.
+ */
+public class ModifySrcMacAction implements Action {
+ private final MACAddress srcMac;
+
+ /**
+ * Constructor.
+ *
+ * @param srcMac source MAC address after the modification
+ */
+ public ModifySrcMacAction(MACAddress srcMac) {
+ this.srcMac = checkNotNull(srcMac);
+ }
+
+ /**
+ * Gets the source MAC address.
+ *
+ * @return the source MAC address
+ */
+ public MACAddress getSrcMac() {
+ return srcMac;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(srcMac);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ ModifySrcMacAction that = (ModifySrcMacAction) obj;
+ return Objects.equal(this.srcMac, that.srcMac);
+ }
+}
diff --git a/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java b/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
index a86b4d0..792b76e 100644
--- a/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
+++ b/src/main/java/net/onrc/onos/core/matchaction/action/OutputAction.java
@@ -1,7 +1,10 @@
package net.onrc.onos.core.matchaction.action;
+import static com.google.common.base.Preconditions.checkNotNull;
import net.onrc.onos.core.util.PortNumber;
+import com.google.common.base.Objects;
+
/**
* An action object to output traffic to specified port.
* <p>
@@ -9,7 +12,7 @@
* MatchAction, Flow or Intent class.
*/
public class OutputAction implements Action {
- protected PortNumber portNumber;
+ private final PortNumber portNumber;
/**
* Constructor.
@@ -17,7 +20,7 @@
* @param dstPort The port number of the target output port.
*/
public OutputAction(PortNumber dstPort) {
- this.portNumber = dstPort;
+ this.portNumber = checkNotNull(dstPort);
}
/**
@@ -28,4 +31,22 @@
public PortNumber getPortNumber() {
return portNumber;
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hashCode(portNumber);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
+ OutputAction that = (OutputAction) obj;
+ return Objects.equal(this.portNumber, that.portNumber);
+ }
+
}