Check key/value size to mimic RAMCloud limit.

Note: In RAMCloud spec, it is defined as Key <= 64KB, Value Blob <= 1MB.

Change-Id: I3924f50f27353238d7d5859bb2d644a7968955c9
diff --git a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
index c83e45d..da2c102 100644
--- a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZTable.java
@@ -7,12 +7,14 @@
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicLong;
 
+import net.onrc.onos.core.datastore.DataStoreClient;
 import net.onrc.onos.core.datastore.IKVTable;
 import net.onrc.onos.core.datastore.IKVTableID;
 import net.onrc.onos.core.datastore.ObjectDoesntExistException;
 import net.onrc.onos.core.datastore.ObjectExistsException;
 import net.onrc.onos.core.datastore.WrongVersionException;
 
+import org.apache.commons.collections.BufferOverflowException;
 import org.apache.commons.lang.ArrayUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -69,7 +71,7 @@
         }
 
         public VersionedValue(final byte[] value, final long version) {
-            this.value = ArrayUtils.clone(value);
+            setValue(value);
             this.version = version;
         }
 
@@ -82,6 +84,9 @@
         }
 
         public void setValue(final byte[] value) {
+            if (value != null && value.length > DataStoreClient.MAX_VALUE_BYTES) {
+                throw new BufferOverflowException("Value must be smaller than 1MB");
+            }
             this.value = ArrayUtils.clone(value);
         }
 
@@ -154,6 +159,9 @@
         long version;
 
         public Entry(final byte[] key, final byte[] value, final long version) {
+            if (key.length > DataStoreClient.MAX_KEY_BYTES) {
+                throw new BufferOverflowException("Key must be smaller than 64KB");
+            }
             this.key = key.clone();
             this.setValue(value);
             this.setVersion(version);