Offline support added
[iotcloud.git] / version2 / src / java / iotcloud / KeyValue.java
index 79b9e60bd84c62a93d628a341407290b0cd1c162..cd4821acbe457f4d265b9bdc9ac66ffad4edd413 100644 (file)
@@ -28,24 +28,45 @@ class KeyValue { /*extends Entry */
                int keylength = bb.getInt();
                int valuelength = bb.getInt();
                byte[] key = new byte[keylength];
-               byte[] value = new byte[valuelength];
                bb.get(key);
-               bb.get(value);
-               return new KeyValue(IoTString.shallow(key), IoTString.shallow(value));
+
+               if (valuelength != 0) {
+                       byte[] value = new byte[valuelength];
+                       bb.get(value);
+                       return new KeyValue(IoTString.shallow(key), IoTString.shallow(value));
+               }
+
+               return new KeyValue(IoTString.shallow(key), null);
        }
 
        public void encode(ByteBuffer bb) {
                bb.putInt(key.length());
-               bb.putInt(value.length());
+
+               if (value != null) {
+                       bb.putInt(value.length());
+               } else {
+                       bb.putInt(0);
+               }
+
                bb.put(key.internalBytes());
-               bb.put(value.internalBytes());
+
+               if (value != null) {
+                       bb.put(value.internalBytes());
+               }
        }
 
        public int getSize() {
-               return 2 * Integer.BYTES + key.length() + value.length();
+               if (value != null) {
+                       return 2 * Integer.BYTES + key.length() + value.length();
+               }
+
+               return 2 * Integer.BYTES + key.length();
        }
 
        public String toString() {
+               if (value == null) {
+                       return "null";
+               }
                return value.toString();
        }