KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > reflect > visitor > QueryVisitor


1 package spoon.reflect.visitor;
2
3 import java.util.ArrayList JavaDoc;
4 import java.util.List JavaDoc;
5
6 import spoon.reflect.declaration.CtElement;
7
8 /**
9  * A simple visitor that takes a filter and returns all the elements that match
10  * it.
11  */

12 public class QueryVisitor<T extends CtElement> extends CtScanner {
13     Filter<T> filter;
14
15     List JavaDoc<T> result = new ArrayList JavaDoc<T>();
16
17     /**
18      * Constructs a query visitor with a given filter.
19      */

20     public QueryVisitor(Filter<T> filter) {
21         super();
22         this.filter = filter;
23     }
24
25     /**
26      * Gets the result (elements matching the filter).
27      */

28     public List JavaDoc<T> getResult() {
29         return result;
30     }
31
32     @SuppressWarnings JavaDoc("unchecked")
33     @Override JavaDoc
34     public void scan(CtElement element) {
35         if (element == null)
36             return;
37         if (filter.getType().isAssignableFrom(element.getClass())) {
38             if (filter.matches((T) element)) {
39                 result.add((T) element);
40             }
41         }
42         super.scan(element);
43     }
44 }
45
Popular Tags