/*
* Created on 03.12.2007
* Caleido AG, All Rights Reserved
* Author: Luzius Meisser
*/
package quickbase.internal.mixed;
import quickbase.exception.SerializationDatabaseException;
import quickbase.serializer.ISerializer;
public class MixedValue {
private Object object;
private byte[] data;
public MixedValue(byte[] data) {
this.data = data;
}
public <K,V> MixedValue(ISerializer<V> serializer, V key, byte id) throws SerializationDatabaseException {
this.object = key;
byte[] temp = serializer.toBytes(key);
byte[] data = new byte[temp.length + 1];
data[0] = id;
System.arraycopy(temp, 0, data, 1, temp.length);
this.data = data;
}
@SuppressWarnings("unchecked")
public <K, V> V getWrapped(ISerializer<V> serializer) throws SerializationDatabaseException {
if (object == null){
object = serializer.fromBytes(data, 1);
}
return (V)object;
}
@SuppressWarnings("unchecked")
public byte[] getBytes() {
return data;
}
}