EasyMock example source code file (LastControl.java)
This example EasyMock source code file (LastControl.java) is included in the DevDaily.com
"Java Source Code
Warehouse " project. The intent of this project is to help you "Learn Java by Example " TM .
The EasyMock LastControl.java source code
/*
* Copyright (c) 2001-2007 OFFIS, Tammo Freese.
* This program is made available under the terms of the MIT License.
*/
package org.easymock.internal;
import java.util.*;
import org.easymock.IArgumentMatcher;
import org.easymock.internal.matchers.And;
import org.easymock.internal.matchers.Not;
import org.easymock.internal.matchers.Or;
public class LastControl {
private static final ThreadLocal<MocksControl> threadToControl = new ThreadLocal();
private static final ThreadLocal<Stack threadToCurrentArguments = new ThreadLocal>();
private static final ThreadLocal<Stack threadToArgumentMatcherStack = new ThreadLocal>();
public static synchronized void reportLastControl(MocksControl control) {
if (control != null) {
threadToControl.set(control);
} else {
threadToControl.remove();
}
}
public static synchronized MocksControl lastControl() {
return threadToControl.get();
}
public static synchronized void reportMatcher(IArgumentMatcher matcher) {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
if (stack == null) {
stack = new Stack<IArgumentMatcher>();
threadToArgumentMatcherStack.set(stack);
}
stack.push(matcher);
}
public static synchronized List<IArgumentMatcher> pullMatchers() {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
if (stack == null) {
return null;
}
threadToArgumentMatcherStack.remove();
return new ArrayList<IArgumentMatcher>(stack);
}
public static synchronized void reportAnd(int count) {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
assertState(stack != null, "no matchers found.");
stack.push(new And(popLastArgumentMatchers(count)));
}
public static synchronized void reportNot() {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
assertState(stack != null, "no matchers found.");
stack.push(new Not(popLastArgumentMatchers(1).get(0)));
}
private static List<IArgumentMatcher> popLastArgumentMatchers(int count) {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
assertState(stack != null, "no matchers found.");
assertState(stack.size() >= count, "" + count + " matchers expected, "
+ stack.size() + " recorded.");
List<IArgumentMatcher> result = new LinkedList();
result.addAll(stack.subList(stack.size() - count, stack.size()));
for (int i = 0; i < count; i++) {
stack.pop();
}
return result;
}
private static void assertState(boolean toAssert, String message) {
if (!toAssert) {
threadToArgumentMatcherStack.remove();
throw new IllegalStateException(message);
}
}
public static void reportOr(int count) {
Stack<IArgumentMatcher> stack = threadToArgumentMatcherStack.get();
assertState(stack != null, "no matchers found.");
stack.push(new Or(popLastArgumentMatchers(count)));
}
public static Object[] getCurrentArguments() {
Stack<Object[]> stack = threadToCurrentArguments.get();
if (stack == null || stack.empty()) {
return null;
}
return stack.lastElement();
}
public static void pushCurrentArguments(Object[] args) {
Stack<Object[]> stack = threadToCurrentArguments.get();
if (stack == null) {
stack = new Stack<Object[]>();
threadToCurrentArguments.set(stack);
}
stack.push(args);
}
public static void popCurrentArguments() {
Stack<Object[]> stack = threadToCurrentArguments.get();
stack.pop();
}
}
Other EasyMock examples (source code examples)
Here is a short list of links related to this EasyMock LastControl.java source code file: