1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package net.sf.jour.filter;
22
23 import java.lang.reflect.Modifier;
24 import java.util.Hashtable;
25
26 import net.sf.jour.log.Logger;
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 public class PointcutModifierFiler extends MatchFilter {
42
43 protected static final Logger log = Logger.getLogger();
44
45 private static Hashtable map = buildMap();
46
47 private int modifier;
48
49 public PointcutModifierFiler(String modifier) {
50 if (!this.setModifier(modifier)) {
51 throw new Error("Wrong modifier " + modifier);
52 }
53 }
54
55 private static void mapPut(Hashtable hmap, String str, int mod) {
56 hmap.put(str, new Integer(mod));
57 }
58
59 private static Hashtable buildMap() {
60 map = new Hashtable();
61 mapPut(map, "public", Modifier.PUBLIC);
62 mapPut(map, "protected", Modifier.PROTECTED);
63 mapPut(map, "private", Modifier.PRIVATE);
64 mapPut(map, "abstract", Modifier.ABSTRACT);
65 mapPut(map, "static", Modifier.STATIC);
66 mapPut(map, "final", Modifier.FINAL);
67 mapPut(map, "transient", Modifier.TRANSIENT);
68 mapPut(map, "volatile", Modifier.VOLATILE);
69 mapPut(map, "synchronized", Modifier.SYNCHRONIZED);
70 mapPut(map, "native", Modifier.NATIVE);
71 mapPut(map, "strictfp", Modifier.STRICT);
72 mapPut(map, "interface", Modifier.INTERFACE);
73 return map;
74 }
75
76 public boolean setModifier(String modifier) {
77 Integer i = (Integer) map.get(modifier.trim());
78 if (i == null) {
79 log.error("Wrong modifier " + modifier);
80 return false;
81 }
82 this.modifier = i.intValue();
83 return true;
84 }
85
86 public int matchState(Object obj) {
87 if (!(obj instanceof Integer)) {
88 return MATCH_NO;
89 }
90
91 int mod = ((Integer) obj).intValue();
92
93 if ((mod & this.modifier) != 0) {
94 if (debug) {
95 log.debug("MATCH " + Modifier.toString(this.modifier) + " for :" + Modifier.toString(mod));
96 }
97 return MATCH_YES;
98 } else {
99 if (debug) {
100 log.debug("NOTMATCH " + Modifier.toString(this.modifier) + " for :" + Modifier.toString(mod));
101 }
102 return MATCH_NO;
103 }
104 }
105
106 public void debug() {
107 log.debug(Modifier.toString(this.modifier));
108 }
109
110 }