View Javadoc

1   package net.sf.crispy.filter;
2   
3   import java.lang.reflect.Method;
4   import java.util.HashSet;
5   import java.util.Set;
6   
7   import net.sf.crispy.InterceptorFilterContext;
8   
9   public class SimpleNameInterceptorFilter extends AbstractInterceptorFilter {
10  
11  	private Set filterObjects = null;
12  
13  	
14  	public SimpleNameInterceptorFilter(Class pvFilterClass) {
15  		filterObjects = new HashSet(1);
16  		filterObjects.add(pvFilterClass.getName());
17  		filterObjectsType = FILTER_TYPE_CLASS;
18  	}
19  
20  	public SimpleNameInterceptorFilter(Class pvFilterClass[]) {
21  		filterObjects = new HashSet (pvFilterClass.length);
22  		filterObjectsType = FILTER_TYPE_CLASS;
23  		for (int i = 0; i < pvFilterClass.length; i++) {
24  			filterObjects.add(pvFilterClass[i].getName());	
25  		}			
26  	}
27  	
28  	public SimpleNameInterceptorFilter(Method pvFilterMethod) {
29  		filterObjects = new HashSet(1);
30  		filterObjects.add(pvFilterMethod.getName());
31  		filterObjectsType = FILTER_TYPE_METHOD;
32  	}
33  
34  	public SimpleNameInterceptorFilter(Method pvFilterMethod[]) {
35  		filterObjects = new HashSet (pvFilterMethod.length);
36  		filterObjectsType = FILTER_TYPE_METHOD;
37  		for (int i = 0; i < pvFilterMethod.length; i++) {
38  			filterObjects.add(pvFilterMethod[i].getName());	
39  		}			
40  	}
41  
42  	public SimpleNameInterceptorFilter(Throwable pvFilterThrowable) {
43  		filterObjects = new HashSet(1);
44  		filterObjects.add(pvFilterThrowable.getClass().getName());
45  		filterObjectsType = FILTER_TYPE_THROWABLE;
46  	}
47  
48  	public SimpleNameInterceptorFilter(Throwable pvFilterThrowable[]) {
49  		filterObjects = new HashSet (pvFilterThrowable.length);
50  		filterObjectsType = FILTER_TYPE_THROWABLE;
51  		for (int i = 0; i < pvFilterThrowable.length; i++) {
52  			filterObjects.add(pvFilterThrowable[i].getClass().getName());	
53  		}			
54  	}
55  	
56  
57  	public SimpleNameInterceptorFilter(String pvFilterNames, int pvFilterType) {
58  		filterObjects = new HashSet(1);
59  		filterObjects.add(pvFilterNames);
60  		filterObjectsType = pvFilterType;
61  	}
62  
63  	public SimpleNameInterceptorFilter(String pvFilterNames[], int pvFilterType) {
64  		filterObjects = new HashSet (pvFilterNames.length);
65  		filterObjectsType = pvFilterType;
66  		for (int i = 0; i < pvFilterNames.length; i++) {
67  			filterObjects.add(pvFilterNames[i]);	
68  		}			
69  	}
70  	
71  
72  	
73  	public boolean accept(InterceptorFilterContext pvContext) {
74  		boolean ret = false;
75  		switch (filterObjectsType) {
76  			case FILTER_TYPE_METHOD:
77  				if (pvContext.getMethod() != null) {
78  					ret = filterObjects.contains(pvContext.getMethod().getName());
79  				}
80  				break;
81  			case FILTER_TYPE_CLASS:
82  				if (pvContext.getInvocationClass() != null) {
83  					ret = filterObjects.contains(pvContext.getInvocationClass().getName());
84  				}
85  				break;
86  			case FILTER_TYPE_THROWABLE:
87  				if (pvContext.getThrowable() != null) {
88  					ret = filterObjects.contains(pvContext.getThrowable().getClass().getName());
89  				}
90  				break;
91  			default:
92  				ret = false;
93  				break;
94  		}
95  		return negate(ret);
96  	}
97  	
98  
99  }