Bump MRI upstreams
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / main / java / org / opendaylight / openflowjava / nx / codec / match / NxmHeader.java
index 3e91ba81c7b5c823040420ac83c47fc2085fbcc9..e1e0d7ad28cb4f8745d4d7b3b7ea0ff449530961 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.openflowjava.nx.codec.match;
 
 import com.google.common.base.MoreObjects;
-import com.google.common.primitives.Ints;
 import java.math.BigInteger;
 import java.util.Objects;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -19,7 +18,7 @@ import org.opendaylight.yangtools.yang.common.Uint64;
  *
  * @author msunal
  */
-public class NxmHeader {
+public final class NxmHeader {
 
     // Full 4 or 8 byte header as big integer
     private final Uint64 header;
@@ -41,21 +40,25 @@ public class NxmHeader {
      * @param header the header as {@code BigInteger}.
      * @see NxmHeader#NxmHeader(long)
      */
-    public NxmHeader(Uint64 header) {
-        this.headerAsLong = header.longValue();
+    public NxmHeader(final Uint64 header) {
+        headerAsLong = header.longValue();
         if (isExperimenter(header)) {
-            this.experimenterId = (int) this.headerAsLong;
-            this.shortHeader = this.headerAsLong >>> 32;
+            experimenterId = (int) headerAsLong;
+            shortHeader = headerAsLong >>> 32;
         } else {
-            this.shortHeader = this.headerAsLong;
-            this.experimenterId = -1;
+            shortHeader = headerAsLong;
+            experimenterId = -1;
         }
 
         this.header = header;
-        this.oxmClass = Ints.checkedCast(extractSub(this.shortHeader, 16, 16));
-        this.nxmField = Ints.checkedCast(extractSub(this.shortHeader, 7, 9));
-        this.hasMask = extractSub(this.shortHeader, 1, 8) == 1;
-        this.length = Ints.checkedCast(extractSub(this.shortHeader, 8, 0));
+        try {
+            oxmClass = Math.toIntExact(extractSub(shortHeader, 16, 16));
+            nxmField = Math.toIntExact(extractSub(shortHeader, 7, 9));
+            hasMask = extractSub(shortHeader, 1, 8) == 1;
+            length = Math.toIntExact(extractSub(shortHeader, 8, 0));
+        } catch (ArithmeticException e) {
+            throw new IllegalArgumentException(e);
+        }
     }
 
     /**
@@ -67,7 +70,7 @@ public class NxmHeader {
      *
      * @param header the header as a {@code long}.
      */
-    public NxmHeader(long header) {
+    public NxmHeader(final long header) {
         this(Uint64.fromLongBits(header));
     }
 
@@ -79,7 +82,7 @@ public class NxmHeader {
      * @param hasMask the hasMask field.
      * @param length the length field.
      */
-    public NxmHeader(int oxmClass, int nxmField, boolean hasMask, int length) {
+    public NxmHeader(final int oxmClass, final int nxmField, final boolean hasMask, final int length) {
         this(oxmClass, nxmField, hasMask, length, -1);
     }
 
@@ -92,23 +95,24 @@ public class NxmHeader {
      * @param length the length field.
      * @param experimenterId the esperimenter id field.
      */
-    public NxmHeader(int nxmField, boolean hasMask, int length, long experimenterId) {
+    public NxmHeader(final int nxmField, final boolean hasMask, final int length, final long experimenterId) {
         this(EncodeConstants.EXPERIMENTER_VALUE, nxmField, hasMask, length, experimenterId);
     }
 
-    private NxmHeader(int oxmClass, int nxmField, boolean hasMask, int length, long experimenterId) {
+    private NxmHeader(final int oxmClass, final int nxmField, final boolean hasMask, final int length,
+            final long experimenterId) {
         this.oxmClass = oxmClass;
         this.nxmField = nxmField;
         this.hasMask = hasMask;
         this.length = length;
-        this.shortHeader = (long) oxmClass << 16 | nxmField << 9 | (hasMask ? 1 : 0) << 8 | length;
+        shortHeader = (long) oxmClass << 16 | nxmField << 9 | (hasMask ? 1 : 0) << 8 | length;
         this.experimenterId = experimenterId;
         if (isExperimenter()) {
-            this.header = Uint64.fromLongBits((this.shortHeader << 32) + experimenterId);
+            header = Uint64.fromLongBits((shortHeader << 32) + experimenterId);
         } else {
-            this.header = Uint64.valueOf(this.shortHeader);
+            header = Uint64.valueOf(shortHeader);
         }
-        this.headerAsLong = this.header.longValue();
+        headerAsLong = header.longValue();
     }
 
     private static long extractSub(final long value, final int nrBits, final int offset) {
@@ -161,7 +165,7 @@ public class NxmHeader {
         return oxmClass == EncodeConstants.EXPERIMENTER_VALUE;
     }
 
-    public static boolean isExperimenter(Uint64 uint) {
+    public static boolean isExperimenter(final Uint64 uint) {
         return uint.longValue() >>> 48 == EncodeConstants.EXPERIMENTER_VALUE;
     }
 
@@ -171,7 +175,7 @@ public class NxmHeader {
     }
 
     @Override
-    public boolean equals(Object obj) {
+    public boolean equals(final Object obj) {
         if (this == obj) {
             return true;
         }