Skip to content

Commit 6e79b82

Browse files
authored
Merge 28d341f into b8cb924
2 parents b8cb924 + 28d341f commit 6e79b82

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+1155
-278
lines changed

sentry/api/sentry.api

Lines changed: 445 additions & 109 deletions
Large diffs are not rendered by default.

sentry/src/main/java/io/sentry/Breadcrumb.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ public static Breadcrumb fromMap(
8686
switch (entry.getKey()) {
8787
case JsonKeys.TIMESTAMP:
8888
if (value instanceof String) {
89-
Date deserializedDate =
90-
JsonObjectReader.dateOrNull((String) value, options.getLogger());
89+
Date deserializedDate = ObjectReader.dateOrNull((String) value, options.getLogger());
9190
if (deserializedDate != null) {
9291
timestamp = deserializedDate;
9392
}
@@ -700,8 +699,8 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
700699
public static final class Deserializer implements JsonDeserializer<Breadcrumb> {
701700
@SuppressWarnings("unchecked")
702701
@Override
703-
public @NotNull Breadcrumb deserialize(
704-
@NotNull JsonObjectReader reader, @NotNull ILogger logger) throws Exception {
702+
public @NotNull Breadcrumb deserialize(@NotNull ObjectReader reader, @NotNull ILogger logger)
703+
throws Exception {
705704
reader.beginObject();
706705
@NotNull Date timestamp = DateUtils.getCurrentDateTime();
707706
String message = null;

sentry/src/main/java/io/sentry/CheckIn.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
170170

171171
public static final class Deserializer implements JsonDeserializer<CheckIn> {
172172
@Override
173-
public @NotNull CheckIn deserialize(@NotNull JsonObjectReader reader, @NotNull ILogger logger)
173+
public @NotNull CheckIn deserialize(@NotNull ObjectReader reader, @NotNull ILogger logger)
174174
throws Exception {
175175
SentryId sentryId = null;
176176
MonitorConfig monitorConfig = null;

sentry/src/main/java/io/sentry/JsonDeserializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@
66
@ApiStatus.Internal
77
public interface JsonDeserializer<T> {
88
@NotNull
9-
T deserialize(@NotNull JsonObjectReader reader, @NotNull ILogger logger) throws Exception;
9+
T deserialize(@NotNull ObjectReader reader, @NotNull ILogger logger) throws Exception;
1010
}

sentry/src/main/java/io/sentry/JsonObjectReader.java

Lines changed: 138 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -15,64 +15,74 @@
1515
import 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
}

sentry/src/main/java/io/sentry/MonitorConfig.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,8 +105,8 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
105105

106106
public static final class Deserializer implements JsonDeserializer<MonitorConfig> {
107107
@Override
108-
public @NotNull MonitorConfig deserialize(
109-
@NotNull JsonObjectReader reader, @NotNull ILogger logger) throws Exception {
108+
public @NotNull MonitorConfig deserialize(@NotNull ObjectReader reader, @NotNull ILogger logger)
109+
throws Exception {
110110
MonitorSchedule schedule = null;
111111
Long checkinMargin = null;
112112
Long maxRuntime = null;

sentry/src/main/java/io/sentry/MonitorContexts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static final class Deserializer implements JsonDeserializer<MonitorContex
6666

6767
@Override
6868
public @NotNull MonitorContexts deserialize(
69-
final @NotNull JsonObjectReader reader, final @NotNull ILogger logger) throws Exception {
69+
final @NotNull ObjectReader reader, final @NotNull ILogger logger) throws Exception {
7070
final MonitorContexts contexts = new MonitorContexts();
7171
reader.beginObject();
7272
while (reader.peek() == JsonToken.NAME) {

sentry/src/main/java/io/sentry/MonitorSchedule.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ public void serialize(final @NotNull ObjectWriter writer, final @NotNull ILogger
123123
public static final class Deserializer implements JsonDeserializer<MonitorSchedule> {
124124
@Override
125125
public @NotNull MonitorSchedule deserialize(
126-
@NotNull JsonObjectReader reader, @NotNull ILogger logger) throws Exception {
126+
@NotNull ObjectReader reader, @NotNull ILogger logger) throws Exception {
127127
String type = null;
128128
String value = null;
129129
String unit = null;

0 commit comments

Comments
 (0)