java_gen.HashValueUtils - prefixBit - remove useless hash value, add unit test
Also fix numBits==0 corner case bug discovered by unit test
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/HashValueUtils.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/HashValueUtils.java
index 6780035..15f8a9b 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/HashValueUtils.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/HashValueUtils.java
@@ -14,4 +14,16 @@
return key ^ (value & valueMask);
}
+ public static int prefixBits(long raw1, int numBits) {
+ Preconditions.checkArgument(numBits >= 0 && numBits <= 32,
+ "numBits must be in range [0, 32]");
+
+ if(numBits == 0)
+ return 0;
+
+ final int shiftDown = 64 - numBits;
+
+ return (int) (raw1 >>> shiftDown);
+ }
+
}
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U128.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U128.java
index 747e566..af76aee 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U128.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U128.java
@@ -2,7 +2,6 @@
import org.jboss.netty.buffer.ChannelBuffer;
-import com.google.common.base.Preconditions;
import com.google.common.hash.PrimitiveSink;
public class U128 implements OFValueType<U128>, HashValue<U128> {
@@ -121,15 +120,7 @@
@Override
public int prefixBits(int numBits) {
- Preconditions.checkArgument(numBits <= 31, "numBits must be <= 31");
-
- Preconditions.checkArgument(numBits >= 0 && numBits < 32,
- "numBits must be in range [0, 32[");
-
- final int mask = (1 << numBits) -1;
- final int shiftDown = 64 - numBits;
-
- return (int) ((raw1 >>> shiftDown) & mask);
+ return HashValueUtils.prefixBits(this.raw1, numBits);
}
@Override
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
index dd62cd0..9001eb8 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/types/U64.java
@@ -24,7 +24,6 @@
import org.projectfloodlight.openflow.protocol.OFMessageReader;
import org.projectfloodlight.openflow.protocol.Writeable;
-import com.google.common.base.Preconditions;
import com.google.common.hash.PrimitiveSink;
import com.google.common.primitives.UnsignedLongs;
@@ -154,13 +153,7 @@
*/
@Override
public int prefixBits(int numBits) {
- Preconditions.checkArgument(numBits >= 0 && numBits < 32,
- "numBits must be in range [0, 32[");
-
- final int mask = (1 << numBits) -1;
- final int shiftDown = 64 - numBits;
-
- return (int) ((raw >>> shiftDown) & mask);
+ return HashValueUtils.prefixBits(raw, numBits);
}
@Override