1
1
package codes .laivy .serializable .context ;
2
2
3
3
import codes .laivy .serializable .Serializer ;
4
+ import codes .laivy .serializable .annotations .serializers .MethodSerialization ;
5
+ import codes .laivy .serializable .json .JsonSerializer ;
4
6
import org .jetbrains .annotations .NotNull ;
5
7
import org .jetbrains .annotations .Nullable ;
6
8
10
12
import java .util .LinkedList ;
11
13
import java .util .Objects ;
12
14
15
+ @ MethodSerialization
13
16
final class ArrayContextImpl implements ArrayContext {
14
17
15
18
// Object
16
19
17
20
private final @ NotNull Object lock = new Object ();
18
21
private final @ NotNull Serializer serializer ;
19
22
20
- private final @ NotNull LinkedList <Context > contexts = new LinkedList <>() ;
23
+ private final @ NotNull LinkedList <Context > list ;
21
24
22
25
public ArrayContextImpl (@ NotNull Serializer serializer ) {
23
26
this .serializer = serializer ;
27
+ this .list = new LinkedList <>();
28
+ }
29
+ public ArrayContextImpl (@ NotNull LinkedList <Context > list ) {
30
+ this .serializer = JsonSerializer .getInstance ();
31
+ this .list = list ;
24
32
}
25
33
26
34
// Modules
@@ -35,11 +43,11 @@ public ArrayContextImpl(@NotNull Serializer serializer) {
35
43
@ Override
36
44
public @ NotNull Context readContext () throws EOFException {
37
45
synchronized (lock ) {
38
- if (contexts .isEmpty ()) {
46
+ if (list .isEmpty ()) {
39
47
throw new EOFException ();
40
48
}
41
49
42
- return contexts .poll ();
50
+ return list .poll ();
43
51
}
44
52
}
45
53
@ Override
@@ -51,61 +59,70 @@ public void write(@NotNull Context context) {
51
59
52
60
@ Override
53
61
public int size () {
54
- return contexts .size ();
62
+ return list .size ();
55
63
}
56
64
@ Override
57
65
public boolean isEmpty () {
58
- return contexts .isEmpty ();
66
+ return list .isEmpty ();
59
67
}
60
68
61
69
@ Override
62
70
public boolean contains (Object o ) {
63
- return contexts .contains (o );
71
+ return list .contains (o );
64
72
}
65
73
66
74
@ Override
67
75
public @ NotNull Iterator <Context > iterator () {
68
- return contexts .iterator ();
76
+ return list .iterator ();
69
77
}
70
78
71
79
@ Override
72
80
public @ Nullable Object @ NotNull [] toArray () {
73
- return contexts .toArray ();
81
+ return list .toArray ();
74
82
}
75
83
@ Override
76
84
public <T > @ NotNull T @ NotNull [] toArray (@ NotNull T @ NotNull [] a ) {
77
- return contexts .toArray (a );
85
+ return list .toArray (a );
78
86
}
79
87
80
88
@ Override
81
89
public boolean add (@ NotNull Context context ) {
82
- return contexts .add (context );
90
+ return list .add (context );
83
91
}
84
92
@ Override
85
93
public boolean remove (Object o ) {
86
- return contexts .remove (o );
94
+ return list .remove (o );
87
95
}
88
96
89
97
@ Override
90
98
public boolean containsAll (@ NotNull Collection <?> c ) {
91
- return contexts .containsAll (c );
99
+ return list .containsAll (c );
92
100
}
93
101
@ Override
94
102
public boolean addAll (@ NotNull Collection <? extends Context > c ) {
95
- return contexts .addAll (c );
103
+ return list .addAll (c );
96
104
}
97
105
@ Override
98
106
public boolean removeAll (@ NotNull Collection <?> c ) {
99
- return contexts .removeAll (c );
107
+ return list .removeAll (c );
100
108
}
101
109
@ Override
102
110
public boolean retainAll (@ NotNull Collection <?> c ) {
103
- return contexts .retainAll (c );
111
+ return list .retainAll (c );
104
112
}
105
113
106
114
@ Override
107
115
public void clear () {
108
- contexts .clear ();
116
+ list .clear ();
117
+ }
118
+
119
+ // Serializers
120
+
121
+ private static @ NotNull LinkedList <Context > serialize (@ NotNull ArrayContextImpl context ) {
122
+ return context .list ;
123
+ }
124
+ private static @ NotNull ArrayContextImpl deserialize (@ NotNull LinkedList <Context > list ) {
125
+ return new ArrayContextImpl (list );
109
126
}
110
127
111
128
// Implementations
@@ -115,19 +132,16 @@ public boolean equals(@Nullable Object object) {
115
132
if (this == object ) return true ;
116
133
if (!(object instanceof ArrayContextImpl )) return false ;
117
134
@ NotNull ArrayContextImpl contexts1 = (ArrayContextImpl ) object ;
118
- return Objects .equals (getSerializer (), contexts1 .getSerializer ()) && Objects .equals (contexts , contexts1 .contexts );
135
+ return Objects .equals (getSerializer (), contexts1 .getSerializer ()) && Objects .equals (list , contexts1 .list );
119
136
}
120
137
@ Override
121
138
public int hashCode () {
122
- return Objects .hash (getSerializer (), contexts );
139
+ return Objects .hash (getSerializer (), list );
123
140
}
124
141
125
142
@ Override
126
143
public @ NotNull String toString () {
127
- return "ArrayContextImpl{" +
128
- "serializer=" + serializer +
129
- ", contexts=" + contexts +
130
- '}' ;
144
+ return list .toString ();
131
145
}
132
146
133
147
}
0 commit comments