1 package perf; 2 3 import java.io.IOException; 4 import java.util.UUID; 5 6 import com.fasterxml.jackson.core.JsonProcessingException; 7 import com.fasterxml.jackson.databind.DeserializationContext; 8 import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 9 import com.fasterxml.jackson.databind.deser.std.FromStringDeserializer; 10 import com.fasterxml.jackson.databind.json.JsonMapper; 11 12 public class ManualReadPerfWithUUID extends ObjectReaderTestBase 13 { 14 static class UUIDNative { 15 public UUID[] ids; UUIDNative()16 public UUIDNative() { } UUIDNative(UUID[] ids)17 public UUIDNative(UUID[] ids) { this.ids = ids; } 18 } 19 20 @Override targetSizeMegs()21 protected int targetSizeMegs() { return 8; } 22 23 @SuppressWarnings("serial") 24 static class SlowDeser extends FromStringDeserializer<UUID> 25 { SlowDeser()26 public SlowDeser() { super(UUID.class); } 27 28 @Override _deserialize(String id, DeserializationContext ctxt)29 protected UUID _deserialize(String id, DeserializationContext ctxt) 30 throws IOException, JsonProcessingException 31 { 32 return UUID.fromString(id); 33 } 34 } 35 36 static class UUIDWithJdk { 37 @JsonDeserialize(contentUsing=SlowDeser.class) 38 public UUID[] ids; UUIDWithJdk()39 public UUIDWithJdk() { } UUIDWithJdk(UUID[] ids)40 public UUIDWithJdk(UUID[] ids) { this.ids = ids; } 41 } 42 main(String[] args)43 public static void main(String[] args) throws Exception 44 { 45 if (args.length != 0) { 46 System.err.println("Usage: java ..."); 47 System.exit(1); 48 } 49 UUID[] uuids = new UUID[8]; 50 for (int i = 0; i < uuids.length; ++i) { 51 uuids[i] = UUID.randomUUID(); 52 } 53 UUIDNative input1 = new UUIDNative(uuids); 54 UUIDWithJdk input2 = new UUIDWithJdk(uuids); 55 56 JsonMapper m = new JsonMapper(); 57 58 new ManualReadPerfWithRecord().testFromBytes( 59 m, "JSON-as-Object", input1, UUIDNative.class, 60 m, "JSON-as-Array", input2, UUIDWithJdk.class); 61 } 62 } 63