Home | History | Annotate | Download | only in verification
      1 /*
      2  * Copyright (c) 2007 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 
      6 package org.mockito.internal.verification;
      7 
      8 import org.mockito.internal.util.ObjectMethodsGuru;
      9 import org.mockito.internal.util.collections.ListUtil;
     10 import org.mockito.internal.util.collections.ListUtil.Filter;
     11 import org.mockito.invocation.Invocation;
     12 
     13 import java.io.Serializable;
     14 import java.util.LinkedList;
     15 import java.util.List;
     16 
     17 
     18 public class DefaultRegisteredInvocations implements RegisteredInvocations, Serializable {
     19 
     20     private static final long serialVersionUID = -2674402327380736290L;
     21     private final LinkedList<Invocation> invocations = new LinkedList<Invocation>();
     22 
     23     public void add(Invocation invocation) {
     24         synchronized (invocations) {
     25             invocations.add(invocation);
     26         }
     27     }
     28 
     29     public void removeLast() {
     30         //TODO: add specific test for synchronization of this block (it is tested by InvocationContainerImplTest at the moment)
     31         synchronized (invocations) {
     32             if (! invocations.isEmpty()) {
     33                 invocations.removeLast();
     34             }
     35         }
     36     }
     37 
     38     public List<Invocation> getAll() {
     39     	List<Invocation> copiedList;
     40     	synchronized (invocations) {
     41 			copiedList = new LinkedList<Invocation>(invocations) ;
     42 		}
     43 
     44         return ListUtil.filter(copiedList, new RemoveToString());
     45     }
     46 
     47     public boolean isEmpty() {
     48         synchronized (invocations) {
     49             return invocations.isEmpty();
     50         }
     51     }
     52 
     53     private static class RemoveToString implements Filter<Invocation> {
     54         public boolean isOut(Invocation invocation) {
     55             return new ObjectMethodsGuru().isToString(invocation.getMethod());
     56         }
     57     }
     58 
     59 }
     60