1 package org.codehaus.groovy.runtime; 2 3 import groovy.lang.Closure; 4 import groovy.lang.MetaClass; 5 6 import java.util.ArrayList; 7 import java.util.List; 8 9 /*** 10 * A closure which stores calls in a List so that method calls 11 * can be iterated over in a 'yield' style way 12 * 13 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a> 14 * @version $Revision: 1.2 $ 15 */ 16 public class IteratorClosureAdapter extends Closure { 17 18 private List list = new ArrayList(); 19 private MetaClass metaClass = InvokerHelper.getMetaClass(this); 20 21 public IteratorClosureAdapter(Object delegate) { 22 super(delegate); 23 } 24 25 public MetaClass getMetaClass() { 26 return metaClass; 27 } 28 29 public void setMetaClass(MetaClass metaClass) { 30 this.metaClass = metaClass; 31 } 32 33 public List asList() { 34 return list; 35 } 36 37 protected Object doCall(Object argument) { 38 list.add(argument); 39 return null; 40 } 41 }