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
10
11
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 }