package de.vanmar.android.yarrn.sentry;
public class Frame extends BaseObject {
public final static String TAG = SentrySender.TAG + "/Frame";
public final static String SENTRY_STACKTRACE_FRAME_FILENAME = "filename";
public final static String SENTRY_STACKTRACE_FRAME_LINENO = "lineno";
public final static String SENTRY_STACKTRACE_FRAME_MODULE = "module";
public final static String SENTRY_STACKTRACE_FRAME_FUNCTION = "function";
public final static String SENTRY_STACKTRACE_FRAME_IN_APP = "in_app";
String filename;
Integer linenumber;
String module;
String function;
Boolean inApp;
public Frame(StackTraceElement stackTraceElement) {
// Set filename and line number if available
String filename = stackTraceElement.getFileName();
if (filename != null && !filename.isEmpty()) {
setFilename(filename);
setLinenumber(stackTraceElement.getLineNumber());
}
// Set module and function
setModule(stackTraceElement.getClassName());
setFunction(stackTraceElement.getMethodName());
// Set if this frame is in app or native
setInApp(!isNative(stackTraceElement));
}
public String getFilename() {
return filename;
}
public void setFilename(String filename) {
this.filename = filename;
put(SENTRY_STACKTRACE_FRAME_FILENAME, filename);
}
public Integer getLinenumber() {
return linenumber;
}
public void setLinenumber(Integer linenumber) {
this.linenumber = linenumber;
put(SENTRY_STACKTRACE_FRAME_LINENO, linenumber);
}
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
put(SENTRY_STACKTRACE_FRAME_MODULE, module);
}
public String getFunction() {
return function;
}
public void setFunction(String function) {
this.function = function;
put(SENTRY_STACKTRACE_FRAME_FUNCTION, function);
}
public Boolean getInApp() {
return inApp;
}
public void setInApp(Boolean inApp) {
this.inApp = inApp;
put(SENTRY_STACKTRACE_FRAME_IN_APP, inApp);
}
protected boolean isNative(StackTraceElement stackTraceElement) {
if (stackTraceElement.isNativeMethod()) {
return true;
}
return false;
}
@Override
public String getTag() {
return TAG;
}
public String toString() {
return String.format("%s.%s", getModule(), getFunction());
}
}