package org.neo4j.smack.serialization.strategy; import org.neo4j.smack.serialization.SerializationException; import org.neo4j.smack.serialization.SerializationStrategy; import org.neo4j.smack.serialization.Serializer; /** * Serializes a database property value. */ public class PropertyValueSerializationStrategy implements SerializationStrategy<Object> { @Override public void serialize(Object value, Serializer out) { if(value instanceof String) { out.putString((String)value); } else if( value instanceof Integer) { out.putInteger((Integer)value); } else if( value instanceof Boolean) { out.putBoolean((Boolean)value); } else if( value instanceof Double) { out.putDouble((Double)value); } else if( value instanceof Float) { out.putFloat((Float)value); } else if( value instanceof Long) { out.putLong((Long)value); } else if(value.getClass().isArray()) { Class<?> cls = value.getClass(); out.startList(); if(cls.equals(String[].class)) { for(String str : (String[])value) { out.putString(str); } } else if(cls.equals(int[].class)) { for(int integer : (int[])value) { out.putInteger(integer); } } else if(cls.equals(boolean[].class)) { for(boolean item : (boolean[])value) { out.putBoolean(item); } } else if(cls.equals(double[].class)) { for(double item : (double[])value) { out.putDouble(item); } } else if(cls.equals(float[].class)) { for(float item : (float[])value) { out.putFloat(item); } } else if(cls.equals(long[].class)) { for(long item : (long[])value) { out.putLong(item); } } else { throw new SerializationException("Unknown property value array type: " + value.getClass()); } out.endList(); } else { throw new SerializationException("Unknown property value type: " + value.getClass()); } } public void serialize(String value, Serializer out) throws SerializationException { out.putString(value); } public void serialize(int value, Serializer out) throws SerializationException { out.putInteger(value); } public void serialize(int [] value, Serializer out) throws SerializationException { out.startList(); for(int i : value) { out.putInteger(i); } out.endList(); } }