1515import org .jetbrains .annotations .Nullable ;
1616
1717@ ApiStatus .Internal
18- public final class JsonObjectReader extends JsonReader {
18+ public final class JsonObjectReader implements ObjectReader {
19+
20+ private final @ NotNull JsonReader jsonReader ;
1921
2022 public JsonObjectReader (Reader in ) {
21- super (in );
23+ this . jsonReader = new JsonReader (in );
2224 }
2325
26+ @ Override
2427 public @ Nullable String nextStringOrNull () throws IOException {
25- if (peek () == JsonToken .NULL ) {
26- nextNull ();
28+ if (jsonReader . peek () == JsonToken .NULL ) {
29+ jsonReader . nextNull ();
2730 return null ;
2831 }
29- return nextString ();
32+ return jsonReader . nextString ();
3033 }
3134
35+ @ Override
3236 public @ Nullable Double nextDoubleOrNull () throws IOException {
33- if (peek () == JsonToken .NULL ) {
34- nextNull ();
37+ if (jsonReader . peek () == JsonToken .NULL ) {
38+ jsonReader . nextNull ();
3539 return null ;
3640 }
37- return nextDouble ();
41+ return jsonReader . nextDouble ();
3842 }
3943
44+ @ Override
4045 public @ Nullable Float nextFloatOrNull () throws IOException {
41- if (peek () == JsonToken .NULL ) {
42- nextNull ();
46+ if (jsonReader . peek () == JsonToken .NULL ) {
47+ jsonReader . nextNull ();
4348 return null ;
4449 }
4550 return nextFloat ();
4651 }
4752
48- public @ NotNull Float nextFloat () throws IOException {
49- return (float ) nextDouble ();
53+ @ Override
54+ public float nextFloat () throws IOException {
55+ return (float ) jsonReader .nextDouble ();
5056 }
5157
58+ @ Override
5259 public @ Nullable Long nextLongOrNull () throws IOException {
53- if (peek () == JsonToken .NULL ) {
54- nextNull ();
60+ if (jsonReader . peek () == JsonToken .NULL ) {
61+ jsonReader . nextNull ();
5562 return null ;
5663 }
57- return nextLong ();
64+ return jsonReader . nextLong ();
5865 }
5966
67+ @ Override
6068 public @ Nullable Integer nextIntegerOrNull () throws IOException {
61- if (peek () == JsonToken .NULL ) {
62- nextNull ();
69+ if (jsonReader . peek () == JsonToken .NULL ) {
70+ jsonReader . nextNull ();
6371 return null ;
6472 }
65- return nextInt ();
73+ return jsonReader . nextInt ();
6674 }
6775
76+ @ Override
6877 public @ Nullable Boolean nextBooleanOrNull () throws IOException {
69- if (peek () == JsonToken .NULL ) {
70- nextNull ();
78+ if (jsonReader . peek () == JsonToken .NULL ) {
79+ jsonReader . nextNull ();
7180 return null ;
7281 }
73- return nextBoolean ();
82+ return jsonReader . nextBoolean ();
7483 }
7584
85+ @ Override
7686 public void nextUnknown (ILogger logger , Map <String , Object > unknown , String name ) {
7787 try {
7888 unknown .put (name , nextObjectOrNull ());
@@ -81,90 +91,79 @@ public void nextUnknown(ILogger logger, Map<String, Object> unknown, String name
8191 }
8292 }
8393
94+ @ Override
8495 public <T > @ Nullable List <T > nextListOrNull (
8596 @ NotNull ILogger logger , @ NotNull JsonDeserializer <T > deserializer ) throws IOException {
86- if (peek () == JsonToken .NULL ) {
87- nextNull ();
97+ if (jsonReader . peek () == JsonToken .NULL ) {
98+ jsonReader . nextNull ();
8899 return null ;
89100 }
90- beginArray ();
101+ jsonReader . beginArray ();
91102 List <T > list = new ArrayList <>();
92- if (hasNext ()) {
103+ if (jsonReader . hasNext ()) {
93104 do {
94105 try {
95106 list .add (deserializer .deserialize (this , logger ));
96107 } catch (Exception e ) {
97108 logger .log (SentryLevel .WARNING , "Failed to deserialize object in list." , e );
98109 }
99- } while (peek () == JsonToken .BEGIN_OBJECT );
110+ } while (jsonReader . peek () == JsonToken .BEGIN_OBJECT );
100111 }
101- endArray ();
112+ jsonReader . endArray ();
102113 return list ;
103114 }
104115
116+ @ Override
105117 public <T > @ Nullable Map <String , T > nextMapOrNull (
106118 @ NotNull ILogger logger , @ NotNull JsonDeserializer <T > deserializer ) throws IOException {
107- if (peek () == JsonToken .NULL ) {
108- nextNull ();
119+ if (jsonReader . peek () == JsonToken .NULL ) {
120+ jsonReader . nextNull ();
109121 return null ;
110122 }
111- beginObject ();
123+ jsonReader . beginObject ();
112124 Map <String , T > map = new HashMap <>();
113- if (hasNext ()) {
125+ if (jsonReader . hasNext ()) {
114126 do {
115127 try {
116- String key = nextName ();
128+ String key = jsonReader . nextName ();
117129 map .put (key , deserializer .deserialize (this , logger ));
118130 } catch (Exception e ) {
119131 logger .log (SentryLevel .WARNING , "Failed to deserialize object in map." , e );
120132 }
121- } while (peek () == JsonToken .BEGIN_OBJECT || peek () == JsonToken .NAME );
133+ } while (jsonReader . peek () == JsonToken .BEGIN_OBJECT || jsonReader . peek () == JsonToken .NAME );
122134 }
123135
124- endObject ();
136+ jsonReader . endObject ();
125137 return map ;
126138 }
127139
140+ @ Override
128141 public <T > @ Nullable T nextOrNull (
129142 @ NotNull ILogger logger , @ NotNull JsonDeserializer <T > deserializer ) throws Exception {
130- if (peek () == JsonToken .NULL ) {
131- nextNull ();
143+ if (jsonReader . peek () == JsonToken .NULL ) {
144+ jsonReader . nextNull ();
132145 return null ;
133146 }
134147 return deserializer .deserialize (this , logger );
135148 }
136149
150+ @ Override
137151 public @ Nullable Date nextDateOrNull (ILogger logger ) throws IOException {
138- if (peek () == JsonToken .NULL ) {
139- nextNull ();
140- return null ;
141- }
142- return JsonObjectReader .dateOrNull (nextString (), logger );
143- }
144-
145- public static @ Nullable Date dateOrNull (@ Nullable String dateString , ILogger logger ) {
146- if (dateString == null ) {
152+ if (jsonReader .peek () == JsonToken .NULL ) {
153+ jsonReader .nextNull ();
147154 return null ;
148155 }
149- try {
150- return DateUtils .getDateTime (dateString );
151- } catch (Exception ignored ) {
152- try {
153- return DateUtils .getDateTimeWithMillisPrecision (dateString );
154- } catch (Exception e ) {
155- logger .log (SentryLevel .ERROR , "Error when deserializing millis timestamp format." , e );
156- }
157- }
158- return null ;
156+ return ObjectReader .dateOrNull (jsonReader .nextString (), logger );
159157 }
160158
159+ @ Override
161160 public @ Nullable TimeZone nextTimeZoneOrNull (ILogger logger ) throws IOException {
162- if (peek () == JsonToken .NULL ) {
163- nextNull ();
161+ if (jsonReader . peek () == JsonToken .NULL ) {
162+ jsonReader . nextNull ();
164163 return null ;
165164 }
166165 try {
167- return TimeZone .getTimeZone (nextString ());
166+ return TimeZone .getTimeZone (jsonReader . nextString ());
168167 } catch (Exception e ) {
169168 logger .log (SentryLevel .ERROR , "Error when deserializing TimeZone" , e );
170169 }
@@ -177,7 +176,88 @@ public void nextUnknown(ILogger logger, Map<String, Object> unknown, String name
177176 *
178177 * @return The deserialized object from json.
179178 */
179+ @ Override
180180 public @ Nullable Object nextObjectOrNull () throws IOException {
181181 return new JsonObjectDeserializer ().deserialize (this );
182182 }
183+
184+ @ Override
185+ public @ NotNull JsonToken peek () throws IOException {
186+ return jsonReader .peek ();
187+ }
188+
189+ @ Override
190+ public @ NotNull String nextName () throws IOException {
191+ return jsonReader .nextName ();
192+ }
193+
194+ @ Override
195+ public void beginObject () throws IOException {
196+ jsonReader .beginObject ();
197+ }
198+
199+ @ Override
200+ public void endObject () throws IOException {
201+ jsonReader .endObject ();
202+ }
203+
204+ @ Override
205+ public void beginArray () throws IOException {
206+ jsonReader .beginArray ();
207+ }
208+
209+ @ Override
210+ public void endArray () throws IOException {
211+ jsonReader .endArray ();
212+ }
213+
214+ @ Override
215+ public boolean hasNext () throws IOException {
216+ return jsonReader .hasNext ();
217+ }
218+
219+ @ Override
220+ public int nextInt () throws IOException {
221+ return jsonReader .nextInt ();
222+ }
223+
224+ @ Override
225+ public long nextLong () throws IOException {
226+ return jsonReader .nextLong ();
227+ }
228+
229+ @ Override
230+ public String nextString () throws IOException {
231+ return jsonReader .nextString ();
232+ }
233+
234+ @ Override
235+ public boolean nextBoolean () throws IOException {
236+ return jsonReader .nextBoolean ();
237+ }
238+
239+ @ Override
240+ public double nextDouble () throws IOException {
241+ return jsonReader .nextDouble ();
242+ }
243+
244+ @ Override
245+ public void nextNull () throws IOException {
246+ jsonReader .nextNull ();
247+ }
248+
249+ @ Override
250+ public void setLenient (boolean lenient ) {
251+ jsonReader .setLenient (lenient );
252+ }
253+
254+ @ Override
255+ public void skipValue () throws IOException {
256+ jsonReader .skipValue ();
257+ }
258+
259+ @ Override
260+ public void close () throws IOException {
261+ jsonReader .close ();
262+ }
183263}
0 commit comments