The reverse method in Match clones the current object and swaps the reversible match... 96/496/1
authorMadhu Venugopal <vmadhu@cisco.com>
Tue, 18 Jun 2013 07:51:11 +0000 (00:51 -0700)
committerMadhu Venugopal <vmadhu@cisco.com>
Tue, 18 Jun 2013 07:52:37 +0000 (00:52 -0700)
While doing so, it fails to reset the field in the cloned object if the corresponding reversible field is not present.

Change-Id: I0a2356ac9d4f0306f77afa2c3aa7908277c4c30e
Signed-off-by: Madhu Venugopal <vmadhu@cisco.com>
opendaylight/sal/api/src/main/java/org/opendaylight/controller/sal/match/Match.java

index 00a2f57..4dcf2b3 100644 (file)
@@ -225,13 +225,14 @@ public class Match implements Cloneable, Serializable {
         Match reverse = this.clone();
 
         // Flip symmetric fields
-        for (Map.Entry<MatchType, MatchType> entry : Match.reversableMatches
-                .entrySet()) {
+        for (Map.Entry<MatchType, MatchType> entry : Match.reversableMatches.entrySet()) {
             MatchType from = entry.getKey();
             MatchType to = entry.getValue();
             if (this.isPresent(from)) {
-                reverse.setField(to, this.getField(from).getValue(), this
-                        .getField(from).getMask());
+                reverse.setField(to, this.getField(from).getValue(), this.getField(from).getMask());
+                if (!this.isPresent(to)) {
+                    reverse.clearField(from);
+                }
             }
         }