1 30 31 package jbet; 32 33 38 39 abstract public class ClassFilter 40 { 41 public boolean check (String name) throws ClassFileException { return check (Jbet.loader.getClass (name)); } 42 public boolean check (ClassInfo cr) throws ClassFileException { return check (cr.name ()); } 43 44 public static final ClassFilter ALL = new ClassFilter() { 45 public boolean check (String name) { 46 return true; 47 } 48 }; 49 public static final ClassFilter NONE = new ClassFilter() { 50 public boolean check (String name) { 51 return false; 52 } 53 }; 54 55 56 57 public static final ClassFilter JAVA = new ClassFilter() { 58 public boolean check (String name) { 59 return name.startsWith ("java/") || name.startsWith ("sun/") || name.startsWith ("com/sun/") || 60 name.startsWith ("javax/"); 61 } 62 }; 63 64 public ClassFilter invert () { 65 final ClassFilter This = this; 66 return new ClassFilter () { 67 public boolean check (String name) throws ClassFileException { 68 return !This.check (name); 69 } 70 71 public boolean check (ClassInfo cr) throws ClassFileException { 72 return !This.check (cr); 73 } 74 }; 75 } 76 77 public static ClassFilter subtract (final ClassFilter a, final ClassFilter b) { 78 return new ClassFilter() { 79 public boolean check (String name) throws ClassFileException { 80 if (b.check (name)) 81 return false; 82 return a.check (name); 83 } 84 85 public boolean check (ClassInfo cr) throws ClassFileException { 86 if (b.check (cr)) 87 return false; 88 return a.check (cr); 89 } 90 }; 91 } 92 } 93 | Popular Tags |