diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java
index 2ddb7a3..b3a138f 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NexthopIPv6addressTlv.java
@@ -23,7 +23,7 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.Objects;
+import java.util.Arrays;
 
 /**
  * NexthopIPv6addressTlv provides Ipv6  address of next hop.
@@ -135,7 +135,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(rawValue);
+        return Arrays.hashCode(rawValue);
     }
 
     @Override
@@ -145,7 +145,7 @@
         }
         if (obj instanceof NexthopIPv6addressTlv) {
             NexthopIPv6addressTlv other = (NexthopIPv6addressTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
+            return Arrays.equals(this.rawValue, other.rawValue);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java
index 6ed8283..cd4e741 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/NodeNameSubTlv.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.pcepio.types;
 
-import java.util.Objects;
+import java.util.Arrays;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.pcepio.protocol.PcepVersion;
 import org.slf4j.Logger;
@@ -99,7 +99,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(rawValue);
+        return Arrays.hashCode(rawValue);
     }
 
     @Override
@@ -109,7 +109,7 @@
         }
         if (obj instanceof NodeNameSubTlv) {
             NodeNameSubTlv other = (NodeNameSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
+            return Arrays.equals(this.rawValue, other.rawValue);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java
index 997f4f2..1e66c06 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueLinkAttributeSubTlv.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.pcepio.types;
 
-import java.util.Objects;
+import java.util.Arrays;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.pcepio.protocol.PcepVersion;
 import org.slf4j.Logger;
@@ -100,7 +100,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(rawValue);
+        return Arrays.hashCode(rawValue);
     }
 
     @Override
@@ -110,7 +110,7 @@
         }
         if (obj instanceof OpaqueLinkAttributeSubTlv) {
             OpaqueLinkAttributeSubTlv other = (OpaqueLinkAttributeSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
+            return Arrays.equals(this.rawValue, other.rawValue);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java
index f8b994c..af8d81e 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/OpaqueNodePropertiesSubTlv.java
@@ -15,7 +15,7 @@
  */
 package org.onosproject.pcepio.types;
 
-import java.util.Objects;
+import java.util.Arrays;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.pcepio.protocol.PcepVersion;
 import org.slf4j.Logger;
@@ -99,7 +99,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(rawValue);
+        return Arrays.hashCode(rawValue);
     }
 
     @Override
@@ -109,7 +109,7 @@
         }
         if (obj instanceof OpaqueNodePropertiesSubTlv) {
             OpaqueNodePropertiesSubTlv other = (OpaqueNodePropertiesSubTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
+            return Arrays.equals(this.rawValue, other.rawValue);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java
index 8169898..c6ea327 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6Adjacency.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.pcepio.types;
 
+import java.util.Arrays;
 import java.util.Objects;
 
 import org.jboss.netty.buffer.ChannelBuffer;
@@ -74,7 +75,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(localIpv6Addr, remoteIpv6Addr);
+        return Objects.hash(Arrays.hashCode(localIpv6Addr), Arrays.hashCode(remoteIpv6Addr));
     }
 
     @Override
@@ -84,8 +85,8 @@
         }
         if (obj instanceof PcepNaiIpv6Adjacency) {
             PcepNaiIpv6Adjacency other = (PcepNaiIpv6Adjacency) obj;
-            return Objects.equals(this.localIpv6Addr, other.localIpv6Addr)
-                    && Objects.equals(this.remoteIpv6Addr, other.remoteIpv6Addr);
+            return Arrays.equals(this.localIpv6Addr, other.localIpv6Addr)
+                    && Arrays.equals(this.remoteIpv6Addr, other.remoteIpv6Addr);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java
index 830c634..10b5314 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/PcepNaiIpv6NodeId.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.pcepio.types;
 
-import java.util.Objects;
+import java.util.Arrays;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.pcepio.protocol.PcepNai;
@@ -78,7 +78,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(ipv6NodeId);
+        return Arrays.hashCode(ipv6NodeId);
     }
 
     @Override
@@ -88,7 +88,7 @@
         }
         if (obj instanceof PcepNaiIpv6NodeId) {
             PcepNaiIpv6NodeId other = (PcepNaiIpv6NodeId) obj;
-            return Objects.equals(this.ipv6NodeId, other.ipv6NodeId);
+            return Arrays.equals(this.ipv6NodeId, other.ipv6NodeId);
         }
         return false;
     }
diff --git a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java
index 8645a6d..97ceed2 100644
--- a/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java
+++ b/protocols/pcep/pcepio/src/main/java/org/onosproject/pcepio/types/SymbolicPathNameTlv.java
@@ -16,7 +16,7 @@
 
 package org.onosproject.pcepio.types;
 
-import java.util.Objects;
+import java.util.Arrays;
 
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.onosproject.pcepio.protocol.PcepVersion;
@@ -113,7 +113,7 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(rawValue);
+        return Arrays.hashCode(rawValue);
     }
 
     @Override
@@ -123,7 +123,7 @@
         }
         if (obj instanceof SymbolicPathNameTlv) {
             SymbolicPathNameTlv other = (SymbolicPathNameTlv) obj;
-            return Objects.equals(this.rawValue, other.rawValue);
+            return Arrays.equals(this.rawValue, other.rawValue);
         }
         return false;
     }
