All Downloads are FREE. Search and download functionalities are using the official Maven repository.

backtrace.io.data.report.BacktraceStackTrace Maven / Gradle / Ivy

Go to download

Backtrace's integration with Java applications allows customers to capture and report handled and unhandled java exceptions.

The newest version!
package backtrace.io.data.report;

import java.io.Serializable;
import java.util.ArrayList;


/**
 * Backtrace stack trace
 */
public class BacktraceStackTrace implements Serializable {

    /**
     * Current exception
     */
    private Exception exception;

    /**
     * Collection of stacktrace elements
     */
    private ArrayList stackFrames = new ArrayList<>();

    private transient final static String NAME = "backtrace";

    /**
     * Create new instance of BacktraceStackTrace object
     *
     * @param exception current exception
     */
    public BacktraceStackTrace(Exception exception) {
        this.exception = exception;
        this.stackFrames = gatherStacktraceInformation();
    }

    public ArrayList getStackFrames() {
        return stackFrames;
    }

    /**
     * Get collection of stacktrace elements from current exception/thread
     * after filtering out frames from inside the Backtrace library
     *
     * @return collection of stacktrace frames
     */
    private ArrayList gatherStacktraceInformation() {
        StackTraceElement[] stackTraceElements = this.exception != null ?
                this.exception.getStackTrace() : Thread.currentThread().getStackTrace();

        if (stackTraceElements == null || stackTraceElements.length == 0) {
            return null;
        }

        ArrayList result = new ArrayList<>();
        for (StackTraceElement frame : stackTraceElements) {
            if ((frame == null) || (frame.getClassName().isEmpty() && frame.getClassName().toLowerCase().startsWith(NAME)) ||
                    (frame.getClassName().toLowerCase().equals("java.lang.thread") && frame.getMethodName().equals("getStackTrace"))) {
                continue;
            }
            result.add(new BacktraceStackFrame(frame));
        }

        return result;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy