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.stubbing.Answer; 9 import org.mockito.stubbing.OngoingStubbing; 10 11 import static org.mockito.internal.exceptions.Reporter.incorrectUseOfApi; 12 13 import java.util.List; 14 15 public class OngoingStubbingImpl<T> extends BaseStubbing<T> { 16 17 private final InvocationContainerImpl invocationContainer; 18 19 public OngoingStubbingImpl(InvocationContainerImpl invocationContainer) { 20 this.invocationContainer = invocationContainer; 21 } 22 23 @Override 24 public OngoingStubbing<T> thenAnswer(Answer<?> answer) { 25 if(!invocationContainer.hasInvocationForPotentialStubbing()) { 26 throw incorrectUseOfApi(); 27 } 28 29 invocationContainer.addAnswer(answer); 30 return new ConsecutiveStubbing<T>(invocationContainer); 31 } 32 33 @Override 34 public OngoingStubbing<T> then(Answer<?> answer) { 35 return thenAnswer(answer); 36 } 37 38 public List<Invocation> getRegisteredInvocations() { 39 //TODO interface for tests 40 return invocationContainer.getInvocations(); 41 } 42 43 @Override 44 @SuppressWarnings("unchecked") 45 public <M> M getMock() { 46 return (M) invocationContainer.invokedMock(); 47 } 48 } 49 50 51