View Javadoc

1   package org.sourceforge.jemm.client;
2   
3   import java.lang.reflect.Field;
4   import java.lang.reflect.Modifier;
5   
6   import org.sourceforge.jemm.util.JEMMObject;
7   
8   /**
9    * A Filter which checks for fields that are JEMMObjects only.
10   * 
11   * @author Paul Keeble
12   *
13   */
14  public class JEMMObjectFilter implements FieldFilter {
15  
16  	@Override
17  	public boolean accepts(Field f) {
18  		Class<?> type = f.getType();
19  		if(type.isPrimitive())
20  			return false;
21  		
22  		if((f.getModifiers() & Modifier.STATIC)>0)
23  			return false;
24  		
25  		if(type.equals(JEMMObject.class))
26  			return true;
27  		
28  		
29  		ClassHierarchyIterator it = new ClassHierarchyIterator(type);
30  		for(Class<?> clazz : it) {
31  			Class<?>[] interfaces = clazz.getInterfaces();
32  			for(Class<?> i : interfaces) {
33  				if(i.equals(JEMMObject.class))
34  					return true;
35  			}
36  		}
37  		
38  		return false;
39  	}
40  
41  }