Use ArrayUtils.clone() to clone byte[] arrays.

Using ArrayUtils.clone() simplifies the code, because it handles
null arrays.

Change-Id: I434856c5a9713759a642dd32a7ca8dfafb136047
diff --git a/src/main/java/net/onrc/onos/core/packet/ARP.java b/src/main/java/net/onrc/onos/core/packet/ARP.java
index 3b315f3..3d11649 100644
--- a/src/main/java/net/onrc/onos/core/packet/ARP.java
+++ b/src/main/java/net/onrc/onos/core/packet/ARP.java
@@ -20,6 +20,8 @@
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -122,21 +124,14 @@
      * @return the senderHardwareAddress
      */
     public byte[] getSenderHardwareAddress() {
-        if (this.senderHardwareAddress == null) {
-            return null;
-        }
-        return this.senderHardwareAddress.clone();
+        return ArrayUtils.clone(this.senderHardwareAddress);
     }
 
     /**
      * @param senderHardwareAddress the senderHardwareAddress to set
      */
     public ARP setSenderHardwareAddress(byte[] senderHardwareAddress) {
-        if (senderHardwareAddress == null) {
-            this.senderHardwareAddress = null;
-        } else {
-            this.senderHardwareAddress = senderHardwareAddress.clone();
-        }
+        this.senderHardwareAddress = ArrayUtils.clone(senderHardwareAddress);
         return this;
     }
 
@@ -144,21 +139,14 @@
      * @return the senderProtocolAddress
      */
     public byte[] getSenderProtocolAddress() {
-        if (this.senderProtocolAddress == null) {
-            return null;
-        }
-        return this.senderProtocolAddress.clone();
+        return ArrayUtils.clone(this.senderProtocolAddress);
     }
 
     /**
      * @param senderProtocolAddress the senderProtocolAddress to set
      */
     public ARP setSenderProtocolAddress(byte[] senderProtocolAddress) {
-        if (senderProtocolAddress == null) {
-            this.senderProtocolAddress = null;
-        } else {
-            this.senderProtocolAddress = senderProtocolAddress.clone();
-        }
+        this.senderProtocolAddress = ArrayUtils.clone(senderProtocolAddress);
         return this;
     }
 
@@ -171,21 +159,14 @@
      * @return the targetHardwareAddress
      */
     public byte[] getTargetHardwareAddress() {
-        if (this.targetHardwareAddress == null) {
-            return null;
-        }
-        return this.targetHardwareAddress.clone();
+        return ArrayUtils.clone(this.targetHardwareAddress);
     }
 
     /**
      * @param targetHardwareAddress the targetHardwareAddress to set
      */
     public ARP setTargetHardwareAddress(byte[] targetHardwareAddress) {
-        if (targetHardwareAddress == null) {
-            this.targetHardwareAddress = null;
-        } else {
-            this.targetHardwareAddress = targetHardwareAddress.clone();
-        }
+        this.targetHardwareAddress = ArrayUtils.clone(targetHardwareAddress);
         return this;
     }
 
@@ -193,10 +174,7 @@
      * @return the targetProtocolAddress
      */
     public byte[] getTargetProtocolAddress() {
-        if (this.targetProtocolAddress == null) {
-            return null;
-        }
-        return this.targetProtocolAddress.clone();
+        return ArrayUtils.clone(this.targetProtocolAddress);
     }
 
     /**
@@ -220,11 +198,7 @@
      * @param targetProtocolAddress the targetProtocolAddress to set
      */
     public ARP setTargetProtocolAddress(byte[] targetProtocolAddress) {
-        if (targetProtocolAddress == null) {
-            this.targetProtocolAddress = null;
-        } else {
-            this.targetProtocolAddress = targetProtocolAddress.clone();
-        }
+        this.targetProtocolAddress = ArrayUtils.clone(targetProtocolAddress);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/BSNPROBE.java b/src/main/java/net/onrc/onos/core/packet/BSNPROBE.java
index 03e1666..1daccda 100644
--- a/src/main/java/net/onrc/onos/core/packet/BSNPROBE.java
+++ b/src/main/java/net/onrc/onos/core/packet/BSNPROBE.java
@@ -22,6 +22,7 @@
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
 import org.openflow.util.HexString;
 
 /**
@@ -60,34 +61,20 @@
     }
 
     public byte[] getSrcMac() {
-        if (this.srcMac == null) {
-            return null;
-        }
-        return this.srcMac.clone();
+        return ArrayUtils.clone(this.srcMac);
     }
 
     public BSNPROBE setSrcMac(byte[] srcMac) {
-        if (srcMac == null) {
-            this.srcMac = null;
-        } else {
-            this.srcMac = srcMac.clone();
-        }
+        this.srcMac = ArrayUtils.clone(srcMac);
         return this;
     }
 
     public byte[] getDstMac() {
-        if (this.dstMac == null) {
-            return null;
-        }
-        return this.dstMac.clone();
+        return ArrayUtils.clone(this.dstMac);
     }
 
     public BSNPROBE setDstMac(byte[] dstMac) {
-        if (dstMac == null) {
-            this.dstMac = null;
-        } else {
-            this.dstMac = dstMac.clone();
-        }
+        this.dstMac = ArrayUtils.clone(dstMac);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/DHCP.java b/src/main/java/net/onrc/onos/core/packet/DHCP.java
index 22d6c7a..82ba850 100644
--- a/src/main/java/net/onrc/onos/core/packet/DHCP.java
+++ b/src/main/java/net/onrc/onos/core/packet/DHCP.java
@@ -23,6 +23,8 @@
 import java.util.List;
 import java.util.ListIterator;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -268,21 +270,14 @@
      * @return the clientHardwareAddress
      */
     public byte[] getClientHardwareAddress() {
-        if (this.clientHardwareAddress == null) {
-            return null;
-        }
-        return this.clientHardwareAddress.clone();
+        return ArrayUtils.clone(this.clientHardwareAddress);
     }
 
     /**
      * @param clientHardwareAddress the clientHardwareAddress to set
      */
     public DHCP setClientHardwareAddress(byte[] clientHardwareAddress) {
-        if (clientHardwareAddress == null) {
-            this.clientHardwareAddress = null;
-        } else {
-            this.clientHardwareAddress = clientHardwareAddress.clone();
-        }
+        this.clientHardwareAddress = ArrayUtils.clone(clientHardwareAddress);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/DHCPOption.java b/src/main/java/net/onrc/onos/core/packet/DHCPOption.java
index d24541e..63e2741 100644
--- a/src/main/java/net/onrc/onos/core/packet/DHCPOption.java
+++ b/src/main/java/net/onrc/onos/core/packet/DHCPOption.java
@@ -19,6 +19,8 @@
 
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -61,21 +63,14 @@
      * @return the data
      */
     public byte[] getData() {
-        if (this.data == null) {
-            return null;
-        }
-        return this.data.clone();
+        return ArrayUtils.clone(this.data);
     }
 
     /**
      * @param data the data to set
      */
     public DHCPOption setData(byte[] data) {
-        if (data == null) {
-            this.data = null;
-        } else {
-            this.data = data.clone();
-        }
+        this.data = ArrayUtils.clone(data);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/Data.java b/src/main/java/net/onrc/onos/core/packet/Data.java
index e79cf7b..f63306b 100644
--- a/src/main/java/net/onrc/onos/core/packet/Data.java
+++ b/src/main/java/net/onrc/onos/core/packet/Data.java
@@ -19,6 +19,8 @@
 
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -35,40 +37,26 @@
      * @param data
      */
     public Data(byte[] data) {
-        if (data == null) {
-            this.data = null;
-        } else {
-            this.data = data.clone();
-        }
+        this.data = ArrayUtils.clone(data);
     }
 
     /**
      * @return the data
      */
     public byte[] getData() {
-        if (this.data == null) {
-            return null;
-        }
-        return this.data.clone();
+        return ArrayUtils.clone(this.data);
     }
 
     /**
      * @param data the data to set
      */
     public Data setData(byte[] data) {
-        if (data == null) {
-            this.data = null;
-        } else {
-            this.data = data.clone();
-        }
+        this.data = ArrayUtils.clone(data);
         return this;
     }
 
     public byte[] serialize() {
-        if (this.data == null) {
-            return null;
-        }
-        return this.data.clone();
+        return ArrayUtils.clone(this.data);
     }
 
     @Override
diff --git a/src/main/java/net/onrc/onos/core/packet/IPv4.java b/src/main/java/net/onrc/onos/core/packet/IPv4.java
index fbb91ab..f105428 100644
--- a/src/main/java/net/onrc/onos/core/packet/IPv4.java
+++ b/src/main/java/net/onrc/onos/core/packet/IPv4.java
@@ -26,6 +26,8 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -266,10 +268,7 @@
      * @return the options
      */
     public byte[] getOptions() {
-        if (this.options == null) {
-            return null;
-        }
-        return this.options.clone();
+        return ArrayUtils.clone(this.options);
     }
 
     /**
@@ -280,11 +279,7 @@
             throw new IllegalArgumentException(
                     "Options length must be a multiple of 4");
         }
-        if (options == null) {
-            this.options = null;
-        } else {
-            this.options = options.clone();
-        }
+        this.options = ArrayUtils.clone(options);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/LLDPTLV.java b/src/main/java/net/onrc/onos/core/packet/LLDPTLV.java
index 8de0d8a..d41b088 100644
--- a/src/main/java/net/onrc/onos/core/packet/LLDPTLV.java
+++ b/src/main/java/net/onrc/onos/core/packet/LLDPTLV.java
@@ -20,6 +20,8 @@
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author David Erickson (daviderickson@cs.stanford.edu)
  */
@@ -62,21 +64,14 @@
      * @return the value
      */
     public byte[] getValue() {
-        if (this.value == null) {
-            return null;
-        }
-        return this.value.clone();
+        return ArrayUtils.clone(this.value);
     }
 
     /**
      * @param value the value to set
      */
     public LLDPTLV setValue(byte[] value) {
-        if (value == null) {
-            this.value = null;
-        } else {
-            this.value = value.clone();
-        }
+        this.value = ArrayUtils.clone(value);
         return this;
     }
 
diff --git a/src/main/java/net/onrc/onos/core/packet/TCP.java b/src/main/java/net/onrc/onos/core/packet/TCP.java
index def194c..6b6c355 100644
--- a/src/main/java/net/onrc/onos/core/packet/TCP.java
+++ b/src/main/java/net/onrc/onos/core/packet/TCP.java
@@ -20,6 +20,8 @@
 import java.nio.ByteBuffer;
 import java.util.Arrays;
 
+import org.apache.commons.lang.ArrayUtils;
+
 /**
  * @author shudong.zhou@bigswitch.com
  */
@@ -142,19 +144,15 @@
     }
 
     public byte[] getOptions() {
-        if (this.options == null) {
-            return null;
-        }
-        return this.options.clone();
+        return ArrayUtils.clone(this.options);
     }
 
     public TCP setOptions(final byte[] options) {
-        if (options == null) {
-            this.options = null;
+        this.options = ArrayUtils.clone(options);
+        if (this.options == null) {
             this.dataOffset = 0;
         } else {
-            this.options = options.clone();
-            this.dataOffset = (byte) ((20 + options.length + 3) >> 2);
+            this.dataOffset = (byte) ((20 + this.options.length + 3) >> 2);
         }
         return this;
     }