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