package perf;
import java.io.IOException;
import java.util.UUID;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer;
public class ManualReadPerfWithUUID extends ObjectReaderTestBase
{
static class UUIDNative {
public UUID[] ids;
public UUIDNative() { }
public UUIDNative(UUID[] ids) { this.ids = ids; }
}
@Override
protected int targetSizeMegs() { return 8; }
@SuppressWarnings("serial")
static class SlowDeser extends FromStringDeserializer<UUID>
{
public SlowDeser() { super(UUID.class); }
@Override
protected UUID _deserialize(String id, DeserializationContext ctxt)
throws IOException, JsonProcessingException
{
return UUID.fromString(id);
}
}
static class UUIDWithJdk {
@JsonDeserialize(contentUsing=SlowDeser.class)
public UUID[] ids;
public UUIDWithJdk() { }
public UUIDWithJdk(UUID[] ids) { this.ids = ids; }
}
public static void main(String[] args) throws Exception
{
if (args.length != 0) {
System.err.println("Usage: java ...");
System.exit(1);
}
UUID[] uuids = new UUID[8];
for (int i = 0; i < uuids.length; ++i) {
uuids[i] = UUID.randomUUID();
}
UUIDNative input1 = new UUIDNative(uuids);
UUIDWithJdk input2 = new UUIDWithJdk(uuids);
ObjectMapper m = new ObjectMapper();
new ManualReadPerfWithRecord().testFromBytes(
m, "JSON-as-Object", input1, UUIDNative.class,
m, "JSON-as-Array", input2, UUIDWithJdk.class);
}
}