BUG 2667 : Handle null value type
[controller.git] / opendaylight / md-sal / sal-clustering-commons / src / main / java / org / opendaylight / controller / cluster / datastore / node / utils / serialization / ValueSerializer.java
index f562d8b35dd09995ac03d9ce2b3f4436518c8c6f..9e3230a623855d4add4249d68af0c2c216f4d79f 100644 (file)
@@ -9,16 +9,15 @@
 package org.opendaylight.controller.cluster.datastore.node.utils.serialization;
 
 import com.google.protobuf.ByteString;
-import java.math.BigDecimal;
-import java.math.BigInteger;
 import java.util.HashSet;
 import java.util.Set;
-import org.opendaylight.controller.cluster.datastore.node.utils.QNameFactory;
 import org.opendaylight.controller.cluster.datastore.util.InstanceIdentifierUtils;
 import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
 public class ValueSerializer {
+    private static final String NULL_VALUE = "";
+
     public static void serialize(NormalizedNodeMessages.Node.Builder builder,
             QNameSerializationContext context, Object value) {
         builder.setIntValueType(ValueType.getSerializableType(value).ordinal());
@@ -38,8 +37,10 @@ public class ValueSerializer {
                     }
                 }
             }
-        } else if(value instanceof byte[]){
+        } else if(value instanceof byte[]) {
             builder.setBytesValue(ByteString.copyFrom((byte[]) value));
+        } else if(value == null){
+            builder.setValue(NULL_VALUE);
         } else {
             builder.setValue(value.toString());
         }
@@ -67,6 +68,8 @@ public class ValueSerializer {
             }
         } else if(value instanceof byte[]){
             builder.setBytesValue(ByteString.copyFrom((byte[]) value));
+        } else if(value == null){
+            builder.setValue(NULL_VALUE);
         } else {
             builder.setValue(value.toString());
         }
@@ -101,35 +104,7 @@ public class ValueSerializer {
 
 
     private static Object deSerializeBasicTypes(int valueType, String value) {
-        switch(ValueType.values()[valueType]){
-           case SHORT_TYPE: {
-               return Short.valueOf(value);
-           }
-           case BOOL_TYPE: {
-               return Boolean.valueOf(value);
-           }
-           case BYTE_TYPE: {
-               return Byte.valueOf(value);
-           }
-           case INT_TYPE : {
-                return Integer.valueOf(value);
-           }
-           case LONG_TYPE: {
-               return Long.valueOf(value);
-           }
-           case QNAME_TYPE: {
-               return QNameFactory.create(value);
-           }
-           case BIG_INTEGER_TYPE: {
-               return new BigInteger(value);
-           }
-           case BIG_DECIMAL_TYPE: {
-               return new BigDecimal(value);
-           }
-           default: {
-               return value;
-           }
-        }
+        return ValueType.values()[valueType].deserialize(value);
     }
 
 }