xref: /aosp_15_r20/external/jackson-databind/src/test/java/perf/ManualReadPerfWithUUID.java (revision 0ed15c778abdfe0f5f51f6133673e1619d6e56e4)
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