| /* |
| * Copyright (c) 2007 Mockito contributors |
| * This program is made available under the terms of the MIT License. |
| */ |
| |
| package org.mockito.exceptions.base; |
| |
| import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter; |
| |
| |
| /** |
| * Raised by mockito to emit an error either due to Mockito, or due to the User. |
| * All exception classes that inherit from this class will have the stack trace filtered. |
| * Filtering removes Mockito internal stack trace elements to provide clean stack traces and improve productivity. |
| * <p> |
| * The stack trace is filtered from mockito calls if you are using {@link #getStackTrace()}. |
| * For debugging purpose though you can still access the full stacktrace using {@link #getUnfilteredStackTrace()}. |
| * However note that other calls related to the stackTrace will refer to the filter stacktrace. |
| * <p> |
| * Advanced users and framework integrators can control stack trace filtering behavior |
| * via {@link org.mockito.plugins.StackTraceCleanerProvider} classpath plugin. |
| */ |
| public class MockitoException extends RuntimeException { |
| |
| private static final long serialVersionUID = 1L; |
| |
| private StackTraceElement[] unfilteredStackTrace; |
| |
| // TODO lazy filtered stacktrace initialization |
| public MockitoException(String message, Throwable t) { |
| super(message, t); |
| filterStackTrace(); |
| } |
| |
| public MockitoException(String message) { |
| super(message); |
| filterStackTrace(); |
| } |
| |
| private void filterStackTrace() { |
| unfilteredStackTrace = getStackTrace(); |
| |
| ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); |
| filter.filter(this); |
| } |
| |
| public StackTraceElement[] getUnfilteredStackTrace() { |
| return unfilteredStackTrace; |
| } |
| } |