1 package org.kohsuke.stapler; 2 3 import java.util.ArrayList ; 4 import java.util.Arrays ; 5 import java.util.Collection ; 6 import java.util.Iterator ; 7 import java.util.List ; 8 9 14 final class FunctionList implements Iterable <Function> { 15 private final Function[] functions; 16 17 public FunctionList(Function... functions) { 18 this.functions = functions; 19 } 20 21 public FunctionList(Collection <Function> functions) { 22 this.functions = functions.toArray(new Function[0]); 23 } 24 25 private FunctionList filter(Filter f) { 26 List <Function> r = new ArrayList <Function>(); 27 for (Function m : functions) 28 if (f.keep(m)) 29 r.add(m); 30 return new FunctionList(r.toArray(new Function[0])); 31 } 32 33 public Iterator <Function> iterator() { 34 return Arrays.asList(functions).iterator(); 35 } 36 37 45 public interface Filter { 46 boolean keep(Function m); 47 } 48 49 52 public FunctionList prefix(final String prefix) { 53 return filter(new Filter() { 54 public boolean keep(Function m) { 55 return m.getName().startsWith(prefix); 56 } 57 }); 58 } 59 60 63 public FunctionList name(final String name) { 64 return filter(new Filter() { 65 public boolean keep(Function m) { 66 return m.getName().equals(name); 67 } 68 }); 69 } 70 71 74 public FunctionList signature(final Class ... args) { 75 return filter(new Filter() { 76 public boolean keep(Function m) { 77 return Arrays.equals(m.getParameterTypes(),args); 78 } 79 }); 80 } 81 } 82 | Popular Tags |