| /* |
| * 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<Invocation> invocations = new LinkedList<Invocation>(); |
| |
| 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<Invocation> getAll() { |
| List<Invocation> copiedList; |
| synchronized (invocations) { |
| copiedList = new LinkedList<Invocation>(invocations) ; |
| } |
| |
| return ListUtil.filter(copiedList, new RemoveToString()); |
| } |
| |
| public boolean isEmpty() { |
| synchronized (invocations) { |
| return invocations.isEmpty(); |
| } |
| } |
| |
| private static class RemoveToString implements Filter<Invocation> { |
| public boolean isOut(Invocation invocation) { |
| return new ObjectMethodsGuru().isToString(invocation.getMethod()); |
| } |
| } |
| |
| } |