Skip to content

Commit

Permalink
refactor: extract separate method for deserialising individual Threads
Browse files Browse the repository at this point in the history
  • Loading branch information
fractalwrench committed Jan 18, 2019
1 parent 31bdd2d commit bdc8386
Showing 1 changed file with 42 additions and 31 deletions.
73 changes: 42 additions & 31 deletions sdk/src/main/java/com/bugsnag/android/ErrorReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -389,43 +389,54 @@ private static ThreadState readThreadState(Configuration config, JsonReader read
List<CachedThread> threads = new ArrayList<>();
reader.beginArray();
while (reader.hasNext()) {
long id = 0;
String name = null;
String type = null;
boolean errorReportingThread = false;
StackTraceElement[] frames = null;
reader.beginObject();
while (reader.hasNext()) {
switch (reader.nextName()) {
case "id":
id = reader.nextLong();
break;
case "name":
name = reader.nextString();
break;
case "type":
type = reader.nextString();
break;
case "stacktrace":
frames = readStackFrames(reader);
break;
case "errorReportingThread":
errorReportingThread = reader.nextBoolean();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
if (type != null && frames != null) {
threads.add(new CachedThread(config, id, name, type, errorReportingThread, frames));
CachedThread cachedThread = readThread(config, reader);

if (cachedThread != null) {
threads.add(cachedThread);
}
}
reader.endArray();
return new ThreadState(threads.toArray(new CachedThread[threads.size()]));
}

private static CachedThread readThread(Configuration config,
JsonReader reader) throws IOException {
long id = 0;
String name = null;
String type = null;
boolean errorReportingThread = false;
StackTraceElement[] frames = null;
reader.beginObject();
while (reader.hasNext()) {
switch (reader.nextName()) {
case "id":
id = reader.nextLong();
break;
case "name":
name = reader.nextString();
break;
case "type":
type = reader.nextString();
break;
case "stacktrace":
frames = readStackFrames(reader);
break;
case "errorReportingThread":
errorReportingThread = reader.nextBoolean();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
if (type != null && frames != null) {
return new CachedThread(config, id, name, type, errorReportingThread, frames);
} else {
return null;
}
}

private static Map<String, Object> jsonObjectToMap(JsonReader reader) throws IOException {
Map<String, Object> data = new HashMap<>();
reader.beginObject();
Expand Down

0 comments on commit bdc8386

Please sign in to comment.