ThrowsExceptionClass.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.internal.stubbing.answers;
7
8import org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter;
9import org.mockito.invocation.InvocationOnMock;
10import org.mockito.stubbing.Answer;
11import org.objenesis.ObjenesisHelper;
12
13import java.io.Serializable;
14
15public class ThrowsExceptionClass implements Answer<Object>, Serializable {
16
17    private Class<? extends Throwable> throwableClass;
18    private final ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter();
19
20    public ThrowsExceptionClass(Class<? extends Throwable> throwableClass) {
21
22        this.throwableClass = throwableClass;
23    }
24
25    public Object answer(InvocationOnMock invocation) throws Throwable {
26
27        Throwable throwable = (Throwable) ObjenesisHelper.newInstance(throwableClass);
28        throwable.fillInStackTrace();
29        filter.filter(throwable);
30        throw throwable;
31    }
32
33    public Class<? extends Throwable> getThrowableClass() {
34        return throwableClass;
35    }
36}
37