1 16 package net.sf.cglib.core; 17 18 import java.lang.reflect.*; 19 import org.objectweb.asm.Type; 20 21 public class VisibilityPredicate implements Predicate { 22 private boolean protectedOk; 23 private String pkg; 24 25 public VisibilityPredicate(Class source, boolean protectedOk) { 26 this.protectedOk = protectedOk; 27 pkg = TypeUtils.getPackageName(Type.getType(source)); 28 } 29 30 public boolean evaluate(Object arg) { 31 int mod = (arg instanceof Member) ? ((Member)arg).getModifiers() : ((Integer )arg).intValue(); 32 if (Modifier.isPrivate(mod)) { 33 return false; 34 } else if (Modifier.isPublic(mod)) { 35 return true; 36 } else if (Modifier.isProtected(mod)) { 37 return protectedOk; 38 } else { 39 return pkg.equals(TypeUtils.getPackageName(Type.getType(((Member)arg).getDeclaringClass()))); 40 } 41 } 42 } 43 44 | Popular Tags |