1 /* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 package org.mockito.internal.stubbing; 6 7 import org.mockito.invocation.Invocation; 8 import org.mockito.quality.Strictness; 9 import org.mockito.stubbing.Answer; 10 import org.mockito.stubbing.OngoingStubbing; 11 12 import java.util.List; 13 14 import static org.mockito.internal.exceptions.Reporter.incorrectUseOfApi; 15 16 public class OngoingStubbingImpl<T> extends BaseStubbing<T> { 17 18 private final InvocationContainerImpl invocationContainer; 19 private Strictness strictness; 20 21 public OngoingStubbingImpl(InvocationContainerImpl invocationContainer) { 22 this.invocationContainer = invocationContainer; 23 } 24 25 @Override 26 public OngoingStubbing<T> thenAnswer(Answer<?> answer) { 27 if(!invocationContainer.hasInvocationForPotentialStubbing()) { 28 throw incorrectUseOfApi(); 29 } 30 31 invocationContainer.addAnswer(answer, strictness); 32 return new ConsecutiveStubbing<T>(invocationContainer); 33 } 34 35 @Override 36 public OngoingStubbing<T> then(Answer<?> answer) { 37 return thenAnswer(answer); 38 } 39 40 public List<Invocation> getRegisteredInvocations() { 41 //TODO interface for tests 42 return invocationContainer.getInvocations(); 43 } 44 45 @Override 46 @SuppressWarnings("unchecked") 47 public <M> M getMock() { 48 return (M) invocationContainer.invokedMock(); 49 } 50 51 public void setStrictness(Strictness strictness) { 52 this.strictness = strictness; 53 } 54 } 55 56 57