1 27 package ch.ethz.prose.filter; 28 29 import java.io.Serializable ; 31 import java.lang.reflect.Member ; 32 33 import org.apache.regexp.RE; 34 import org.apache.regexp.RESyntaxException; 35 36 37 44 class NameExpression implements Serializable 45 { 46 String regexp; 47 transient RE re = null; 48 NameExpression(String regexp) 49 { 50 51 this.regexp = regexp; 52 try 53 { 54 re = new RE(regexp); 55 } 56 catch (RESyntaxException e) 57 { 58 throw new IllegalArgumentException ("NameExpression: " + regexp + " is not a valid regexp." + 59 e.toString()); 60 } 61 62 } 63 64 private RE getRE() 65 { 66 try 67 { 68 if (re == null) 69 re = new RE(regexp); 70 } 71 catch (RESyntaxException cannotB) 72 { 73 throw new Error ("NameExpression.getRE: regezp was not verified"); 74 } 75 return re; 76 } 77 78 boolean classMatchesRegexp(Class cls) 79 { 80 return getRE().match(className(cls.getName())); 83 } 84 85 boolean packageMatchesRegexp(Class cls) 86 { 87 return getRE().match(packageName(cls.getName())); 88 } 89 90 boolean qualifiedClassMatchesRegexp(Class cls) 91 { 92 return getRE().match(cls.getName()); 93 } 94 95 boolean memberMatchesRegexp(Member m) 96 { 97 return getRE().match(m.getName()); 98 } 99 100 101 private String className(String qualifiedClassName) 102 { 103 int lastDotIndex = qualifiedClassName.lastIndexOf('.'); 104 return qualifiedClassName.substring(lastDotIndex+1); 105 } 106 107 private String packageName(String qualifiedClassName) 108 { 109 int lastDotIndex = qualifiedClassName.lastIndexOf('.'); 110 return (lastDotIndex != -1)?qualifiedClassName.substring(0,lastDotIndex):""; 111 } 112 113 public String toString() 114 { 115 return regexp; 116 } 117 118 } 119 120 121 | Popular Tags |