Fixing FlowMod comparison bug

Also, implemented barriers before sending installed notification to high-level runtime

Change-Id: I17de82d4d0d2d5656e003c784084da172339aaf1
diff --git a/src/main/java/net/onrc/onos/intent/Match.java b/src/main/java/net/onrc/onos/intent/Match.java
index 5adb598..886fb64 100644
--- a/src/main/java/net/onrc/onos/intent/Match.java
+++ b/src/main/java/net/onrc/onos/intent/Match.java
@@ -1,5 +1,7 @@
 package net.onrc.onos.intent;
 
+import java.util.Arrays;
+
 import net.floodlightcontroller.util.MACAddress;
 //import net.onrc.onos.ofcontroller.networkgraph.Port;
 //import net.onrc.onos.ofcontroller.networkgraph.Switch;
@@ -30,9 +32,9 @@
 		if(obj instanceof Match) {
 			Match other = (Match) obj;
 			return this.sw == other.sw &&
-					this.srcMac.equals(other.srcMac) &&
-					this.dstMac.equals(other.dstMac) &&
-					this.srcPort == other.srcPort;
+			       this.srcMac.equals(other.srcMac) &&
+			       this.dstMac.equals(other.dstMac) &&
+			       this.srcPort == other.srcPort;
 		}
 		else {
 			return false;
@@ -51,4 +53,14 @@
 	public String toString() {
 		return "Sw:" + sw + " (" + srcPort + "," + srcMac + "," + dstMac + ")";
 	}
+	
+	@Override
+	public int hashCode() {
+	    long[] nums = new long[4];
+	    nums[0] = sw;
+	    nums[1] = srcPort;
+	    nums[2] = srcMac.toLong();
+	    nums[3] = dstMac.toLong();
+	    return Arrays.hashCode(nums);
+	}
 }