org.mockito.internal.stubbing.StubbedInvocationMatcher Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of securemock Show documentation
Show all versions of securemock Show documentation
Libraries for Elasticsearch
The newest version!
/*
* Copyright (c) 2007 Mockito contributors
* This program is made available under the terms of the MIT License.
*/
package org.mockito.internal.stubbing;
import org.mockito.internal.invocation.InvocationMatcher;
import org.mockito.invocation.MatchableInvocation;
import org.mockito.stubbing.Stubbing;
import org.mockito.invocation.DescribedInvocation;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.io.Serializable;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
@SuppressWarnings("unchecked")
public class StubbedInvocationMatcher extends InvocationMatcher implements Serializable, Stubbing {
private static final long serialVersionUID = 4919105134123672727L;
private final Queue answers = new ConcurrentLinkedQueue();
private DescribedInvocation usedAt;
public StubbedInvocationMatcher(MatchableInvocation invocation, Answer answer) {
super(invocation.getInvocation(), invocation.getMatchers());
this.answers.add(answer);
}
public Object answer(InvocationOnMock invocation) throws Throwable {
//see ThreadsShareGenerouslyStubbedMockTest
Answer a;
synchronized(answers) {
a = answers.size() == 1 ? answers.peek() : answers.poll();
}
return a.answer(invocation);
}
public void addAnswer(Answer answer) {
answers.add(answer);
}
public void markStubUsed(DescribedInvocation usedAt) {
this.usedAt = usedAt;
}
public boolean wasUsed() {
return usedAt != null;
}
@Override
public String toString() {
return super.toString() + " stubbed with: " + answers;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy