package com.bugsnag.android;
import android.support.annotation.NonNull;
import java.io.IOException;
/**
* Serialize an exception stacktrace and mark frames as "in-project"
* where appropriate.
*/
class Stacktrace implements JsonStream.Streamable {
final Configuration config;
final StackTraceElement[] stacktrace;
Stacktrace(Configuration config, StackTraceElement[] stacktrace) {
this.config = config;
this.stacktrace = stacktrace;
}
public void toStream(@NonNull JsonStream writer) throws IOException {
writer.beginArray();
for(StackTraceElement el : stacktrace) {
try {
writer.beginObject();
writer.name("method").value(el.getClassName() + "." + el.getMethodName());
writer.name("file").value(el.getFileName() == null ? "Unknown" : el.getFileName());
writer.name("lineNumber").value(el.getLineNumber());
if(config.inProject(el.getClassName())) {
writer.name("inProject").value(true);
}
writer.endObject();
} catch(Exception lineEx) {
lineEx.printStackTrace(System.err);
}
}
writer.endArray();
}
}