MockitoSerializationIssue.java revision e0ae5d7e87b1dd6e789803c1b9615a84bd7488b7
1/*
2 * Copyright (c) 2007 Mockito contributors
3 * This program is made available under the terms of the MIT License.
4 */
5
6package org.mockito.exceptions.base;
7
8import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter;
9
10import java.io.ObjectStreamException;
11
12/**
13 * Raised by mockito to emit an error either due to Mockito, or due to the User.
14 *
15 * <p>
16 *     The stack trace is filtered from mockito calls if you are using {@link #getStackTrace()}.
17 *     For debugging purpose though you can still access the full stacktrace using {@link #getUnfilteredStackTrace()}.
18 *     However note that other calls related to the stackTrace will refer to the filter stacktrace.
19 * </p>
20 *
21 * @since 1.9.6
22 */
23public class MockitoSerializationIssue extends ObjectStreamException {
24
25    private StackTraceElement[] unfilteredStackTrace;
26
27    public MockitoSerializationIssue(String message, Exception cause) {
28        super(message);
29        initCause(cause);
30        filterStackTrace();
31    }
32
33    @Override
34    public StackTraceElement[] getStackTrace() {
35        filterStackTrace();
36        return super.getStackTrace();
37    }
38
39    private void filterStackTrace() {
40        unfilteredStackTrace = super.getStackTrace();
41
42        ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter();
43        filter.filter(this);
44    }
45
46    public StackTraceElement[] getUnfilteredStackTrace() {
47        return unfilteredStackTrace;
48    }
49}
50