View Javadoc
1   package civitas.bboard.server.controllers;
2   
3   import java.util.Map;
4   
5   import org.mockito.invocation.InvocationOnMock;
6   import org.mockito.stubbing.Answer;
7   
8   import civitas.common.EnvironmentState;
9   import civitas.common.RandomAwareTestBase;
10  
11  public class EnvDependentAnswer<T> implements Answer<T> {
12  
13  	private final Map<EnvironmentState, AnswerOrThrowable<T>> answer;
14  
15  	public EnvDependentAnswer(final Map<EnvironmentState, AnswerOrThrowable<T>> answer) {
16  		this.answer = answer;
17  	}
18  
19  	@Override
20  	public T answer(final InvocationOnMock invocation) throws Throwable {
21  
22  		AnswerOrThrowable<T> theAnswer = answer.get(RandomAwareTestBase.state);
23  		if (null == theAnswer) {
24  			theAnswer = answer.get(EnvironmentState.NORMAL);
25  		}
26  		if (null != theAnswer.throwable()) {
27  			throw theAnswer.throwable();
28  		}
29  		return theAnswer.answer();
30  	}
31  }