package org.ovirt.engine.core.common.queries; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; import com.google.gwt.user.client.rpc.SerializationException; import com.google.gwt.user.client.rpc.SerializationStreamReader; import com.google.gwt.user.client.rpc.SerializationStreamWriter; public class VdcQueryReturnValue_CustomFieldSerializer { public static void deserialize(SerializationStreamReader streamReader, VdcQueryReturnValue instance) throws SerializationException { instance.setSucceeded(streamReader.readBoolean()); instance.setExceptionString(streamReader.readString()); String type = streamReader.readString(); if (type == null) { // a null return value } else if (type.equals("java.lang.String")) { instance.setReturnValue(streamReader.readString()); } else if (type.equals("java.lang.Integer")) { instance.setReturnValue(streamReader.readInt()); } else if (type.equals("java.lang.Boolean")) { instance.setReturnValue(streamReader.readBoolean()); } else if (type.equals("java.lang.Double")) { instance.setReturnValue(streamReader.readDouble()); } else if (type.equals("java.lang.Float")) { instance.setReturnValue(streamReader.readFloat()); } else if (type.equals("java.lang.Character")) { instance.setReturnValue(streamReader.readChar()); } else if (type.equals("java.lang.Short")) { instance.setReturnValue(streamReader.readShort()); } else if (type.equals("java.lang.Byte")) { instance.setReturnValue(streamReader.readByte()); } else if (type.equals("java.util.List")) { instance.setReturnValue(streamReader.readObject()); } else if (type.equals("java.util.Map")) { instance.setReturnValue(streamReader.readObject()); } else if (type.equals("java.util.Set")) { instance.setReturnValue(streamReader.readObject()); } else if (type.equals("IVdcQueryable")) { instance.setReturnValue(streamReader.readObject()); } else if (type.equals("UNKNOWN")) { instance.setReturnValue(streamReader.readObject()); } } public static VdcQueryReturnValue instantiate( SerializationStreamReader streamReader) throws SerializationException { return new VdcQueryReturnValue(); } public static void serialize(SerializationStreamWriter streamWriter, VdcQueryReturnValue instance) throws SerializationException { streamWriter.writeBoolean(instance.getSucceeded()); streamWriter.writeString(instance.getExceptionString()); Object returnValue = instance.getReturnValue(); if (returnValue == null) { streamWriter.writeString(null); return; } String className = returnValue.getClass().getName(); String serializedAs = null; if (returnValue instanceof String) { serializedAs = "java.lang.String"; streamWriter.writeString(serializedAs); streamWriter.writeString((String) instance.getReturnValue()); } else if (returnValue instanceof Integer) { serializedAs = "java.lang.Integer"; streamWriter.writeString(serializedAs); streamWriter.writeInt((Integer) instance.getReturnValue()); } else if (returnValue instanceof Boolean) { serializedAs = "java.lang.Boolean"; streamWriter.writeString(serializedAs); streamWriter.writeBoolean((Boolean) instance.getReturnValue()); } else if (returnValue instanceof Double) { serializedAs = "java.lang.Double"; streamWriter.writeString(serializedAs); streamWriter.writeDouble((Double) instance.getReturnValue()); } else if (returnValue instanceof Float) { serializedAs = "java.lang.Float"; streamWriter.writeString(serializedAs); streamWriter.writeFloat((Float) instance.getReturnValue()); } else if (returnValue instanceof Character) { serializedAs = "java.lang.Character"; streamWriter.writeString(serializedAs); streamWriter.writeChar((Character) instance.getReturnValue()); } else if (returnValue instanceof Short) { serializedAs = "java.lang.Short"; streamWriter.writeString(serializedAs); streamWriter.writeShort((Short) instance.getReturnValue()); } else if (returnValue instanceof Byte) { serializedAs = "java.lang.Byte"; streamWriter.writeString(serializedAs); streamWriter.writeByte((Byte) instance.getReturnValue()); } else if (className.equals("java.util.ArrayList$SubList") || className.equals("java.util.RandomAccessSubList") || className.equals("java.util.SubList")) { // SubList and RandomAccessSubList need to be serialized as List since these object aren't implementing // java.io.Serializable. serializedAs = "java.util.List"; streamWriter.writeString(serializedAs); streamWriter.writeObject(new ArrayList((List) instance.getReturnValue())); } else if (returnValue instanceof List) { serializedAs = "java.util.List"; streamWriter.writeString(serializedAs); streamWriter.writeObject(instance.getReturnValue()); } else if (returnValue instanceof Map) { serializedAs = "java.util.Map"; streamWriter.writeString(serializedAs); streamWriter.writeObject(instance.getReturnValue()); } else if (returnValue instanceof Set) { serializedAs = "java.util.Set"; streamWriter.writeString(serializedAs); streamWriter.writeObject(instance.getReturnValue()); } else if (returnValue instanceof IVdcQueryable) { serializedAs = "IVdcQueryable"; streamWriter.writeString(serializedAs); streamWriter.writeObject(instance.getReturnValue()); } else { serializedAs = "UNKNOWN"; streamWriter.writeString(serializedAs); streamWriter.writeObject(instance.getReturnValue()); } } }