1e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson/*
2e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * Copyright (c) 2007 Mockito contributors
3e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson * This program is made available under the terms of the MIT License.
4e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson */
5e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
6e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpackage org.mockito.internal.exceptions.stacktrace;
7e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
8e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.configuration.IMockitoConfiguration;
9e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport org.mockito.internal.configuration.GlobalConfiguration;
10e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
11e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonimport java.io.Serializable;
12e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
13e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinsonpublic class ConditionalStackTraceFilter implements Serializable {
14e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    static final long serialVersionUID = -8085849703510292641L;
15e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
16e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private IMockitoConfiguration config = new GlobalConfiguration();
17e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    private StackTraceFilter filter = new StackTraceFilter();
18e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson
19e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    public void filter(Throwable throwable) {
20e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        if (!config.cleansStackTrace()) {
21e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson            return;
22e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        }
23e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        StackTraceElement[] filtered = filter.filter(throwable.getStackTrace(), true);
24e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson        throwable.setStackTrace(filtered);
25e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson    }
26e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7Ian Parkinson}