-
Notifications
You must be signed in to change notification settings - Fork 70
/
SerializeNoPathExample.java
67 lines (54 loc) · 1.93 KB
/
SerializeNoPathExample.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import io.activej.codegen.DefiningClassLoader;
import io.activej.serializer.BinarySerializer;
import io.activej.serializer.SerializerBuilder;
import io.activej.serializer.annotations.Deserialize;
import io.activej.serializer.annotations.Serialize;
import io.activej.serializer.annotations.SerializeNullable;
import java.util.ArrayList;
import java.util.List;
/**
* <b>This example does not work on Java version less than Java 12</b>
* <p>
* <a href="https://activej.io/serializer/examples#path-based-serialization">See more</a>
*/
public class SerializeNoPathExample {
//[START Storage]
public static class Storage {
@Serialize
public List<@SerializeNullable Nested<Integer, @SerializeNullable String>> listOfNested;
}
//[END Storage]
public static class Nested<T1, T2> {
@Serialize
public final T1 first;
@Serialize
public final T2 second;
public Nested(@Deserialize("first") T1 first, @Deserialize("second") T2 second) {
this.first = first;
this.second = second;
}
@Override
public String toString() {
return "Nested{" + first + ", " + second + '}';
}
}
public static void main(String[] args) {
DefiningClassLoader definingClassLoader = DefiningClassLoader.create(Thread.currentThread().getContextClassLoader());
//[START Serializer]
BinarySerializer<Storage> serializer = SerializerBuilder.create(definingClassLoader)
.build(Storage.class);
//[END Serializer]
Storage storage = new Storage();
storage.listOfNested = new ArrayList<>();
Nested<Integer, String> nested1 = new Nested<>(1, "abc");
storage.listOfNested.add(nested1);
storage.listOfNested.add(null);
Nested<Integer, String> nested2 = new Nested<>(5, null);
storage.listOfNested.add(nested2);
byte[] buffer = new byte[200];
serializer.encode(buffer, 0, storage);
Storage deserializedStorage = serializer.decode(buffer, 0);
System.out.println(storage.listOfNested);
System.out.println(deserializedStorage.listOfNested);
}
}