1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.util; 2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.ArrayList; 4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.Collection; 5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.Iterator; 6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.util.List; 7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom/** 9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * A simple collection backed store. 10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom */ 11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic class CollectionStore 12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom implements Store 13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{ 14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom private Collection _local; 15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom /** 17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * Basic constructor. 18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * 19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * @param collection - initial contents for the store, this is copied. 20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom */ 21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public CollectionStore( 22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom Collection collection) 23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom _local = new ArrayList(collection); 25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom /** 28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * Return the matches in the collection for the passed in selector. 29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * 30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * @param selector the selector to match against. 31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom * @return a possibly empty collection of matching objects. 32e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom */ 33e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom public Collection getMatches(Selector selector) 34e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 35e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom if (selector == null) 36e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 37e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return new ArrayList(_local); 38e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 39e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom else 40e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 41e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom List col = new ArrayList(); 42e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom Iterator iter = _local.iterator(); 43e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 44e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom while (iter.hasNext()) 45e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 46e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom Object obj = iter.next(); 47e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 48e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom if (selector.match(obj)) 49e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom { 50e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom col.add(obj); 51e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 52e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 53e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom 54e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom return col; 55e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 56e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom } 57e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom} 58