1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.exceptions.stacktrace;
2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.Incubating;
4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/**
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Decides if particular StackTraceElement is excluded from the human-readable stack trace output.
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Mockito stack trace filtering mechanism uses this information.
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Excluding an element will make it not show in the cleaned stack trace.
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Not-excluding an element does not guarantee it will be shown
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * (e.g. it depends on the implementation of
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Mockito internal {@link org.mockito.internal.exceptions.stacktrace.StackTraceFilter}).
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * The implementations are required to be thread safe. For example, make them stateless.
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * <p>
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * See the default implementation: {@link org.mockito.internal.exceptions.stacktrace.DefaultStackTraceCleaner}.
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson *
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson@Incubating
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic interface StackTraceCleaner {
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    /**
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * Decides if element is excluded.
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     *
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @param candidate element of the actual stack trace
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     * @return whether the element should be excluded from cleaned stack trace.
27e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson     */
28e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    boolean isOut(StackTraceElement candidate);
29e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}
30