/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.matchers; import java.io.Serializable; import java.util.LinkedList; import java.util.List; import org.hamcrest.Description; import org.mockito.ArgumentMatcher; import org.mockito.exceptions.Reporter; @SuppressWarnings("unchecked") public class CapturingMatcher extends ArgumentMatcher implements CapturesArguments, Serializable { private static final long serialVersionUID = 4274067078639307295L; private LinkedList arguments = new LinkedList(); /* (non-Javadoc) * @see org.mockito.ArgumentMatcher#matches(java.lang.Object) */ public boolean matches(Object argument) { return true; } /* (non-Javadoc) * @see org.mockito.ArgumentMatcher#describeTo(org.hamcrest.Description) */ public void describeTo(Description description) { description.appendText(""); } public T getLastValue() { if (arguments.isEmpty()) { new Reporter().noArgumentValueWasCaptured(); return null; } else { return (T) arguments.getLast(); } } public List getAllValues() { return (List) arguments; } public void captureFrom(Object argument) { this.arguments.add(argument); } }