/* * Copyright (c) 2007 Mockito contributors * This program is made available under the terms of the MIT License. */ package org.mockito.internal.verification; import org.mockito.internal.util.ObjectMethodsGuru; import org.mockito.internal.util.collections.ListUtil; import org.mockito.internal.util.collections.ListUtil.Filter; import org.mockito.invocation.Invocation; import java.io.Serializable; import java.util.LinkedList; import java.util.List; public class DefaultRegisteredInvocations implements RegisteredInvocations, Serializable { private static final long serialVersionUID = -2674402327380736290L; private final LinkedList invocations = new LinkedList(); public void add(Invocation invocation) { synchronized (invocations) { invocations.add(invocation); } } public void removeLast() { //TODO: add specific test for synchronization of this block (it is tested by InvocationContainerImplTest at the moment) synchronized (invocations) { if (! invocations.isEmpty()) { invocations.removeLast(); } } } public List getAll() { List copiedList; synchronized (invocations) { copiedList = new LinkedList(invocations) ; } return ListUtil.filter(copiedList, new RemoveToString()); } public boolean isEmpty() { synchronized (invocations) { return invocations.isEmpty(); } } private static class RemoveToString implements Filter { public boolean isOut(Invocation invocation) { return new ObjectMethodsGuru().isToString(invocation.getMethod()); } } }