samples/consistency/src-api2.0/api/Lookups.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:04:06 +0200
changeset 199 ef3e24d5cb1c
parent 26 913d1d0a7bdf
child 209 1c999569643b
permissions -rw-r--r--
Reimplementing the lookups once again
jtulach@26
     1
package api;
jtulach@26
     2
jtulach@199
     3
import java.util.ArrayList;
jtulach@26
     4
import java.util.Collection;
jtulach@199
     5
import java.util.Iterator;
jtulach@26
     6
import java.util.Set;
jtulach@26
     7
jtulach@26
     8
/** Factory to create various types of lookup instances.
jtulach@26
     9
 *
jtulach@26
    10
 * @author Jaroslav Tulach <jtulach@netbeans.org>
jtulach@26
    11
 * @version 2.0
jtulach@26
    12
 */
jtulach@26
    13
public final class Lookups {
jtulach@26
    14
    private Lookups() {
jtulach@26
    15
    }
jtulach@26
    16
    
jtulach@199
    17
    public static Lookup fixed(final Object... instances) {
jtulach@199
    18
        return new Lookup() {
jtulach@199
    19
            @Override
jtulach@199
    20
            <T> Iterator<T> doLookup(Class<T> clazz) {
jtulach@199
    21
                ArrayList<T> result = new ArrayList<T>();
jtulach@199
    22
                for (Object obj : instances) {
jtulach@199
    23
                    if (clazz.isInstance(obj)) {
jtulach@199
    24
                        result.add(clazz.cast(obj));
jtulach@199
    25
                    }
jtulach@199
    26
                }
jtulach@199
    27
                return result.iterator();
jtulach@199
    28
            }
jtulach@199
    29
        };
jtulach@26
    30
    }
jtulach@26
    31
    
jtulach@199
    32
    public static Lookup dynamic(final Dynamic provider) {
jtulach@199
    33
        return new Lookup() {
jtulach@199
    34
            @Override
jtulach@199
    35
            <T> Iterator<T> doLookup(Class<T> clazz) {
jtulach@199
    36
                ArrayList<T> result = new ArrayList<T>();
jtulach@199
    37
                provider.computeInstances(clazz, result);
jtulach@199
    38
                return result.iterator();
jtulach@199
    39
            }
jtulach@199
    40
        };
jtulach@26
    41
    }
jtulach@26
    42
    
jtulach@26
    43
    public interface Dynamic {
jtulach@26
    44
        public <T> void computeInstances(Class<T> requestedType, Collection<? super T> addInstancesTo);
jtulach@26
    45
    }
jtulach@26
    46
}