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 org.apache.log4j.Logger;
27
28 /***
29 * TODO Add docs
30 *
31 * Created on 07.12.2004
32 * Contributing Author(s):
33 *
34 * Misha Lifschitz <mishalifschitz at users.sourceforge.net> (Inital implementation)
35 * Vlad Skarzhevskyy <vlads at users.sourceforge.net> (Inital implementation)
36 *
37 * @author vlads
38 * @version $Revision: 1.1 $ ($Author: vlads $) $Date: 2004/12/08 07:53:28 $
39 */
40 public class PointcutModifierFiler extends MatchFilter {
41
42 protected static final Logger log = Logger.getLogger(PointcutModifierFiler.class);
43
44 private static Hashtable map = buildMap();
45
46 private int modifier;
47
48 public PointcutModifierFiler(String modifier) {
49 if (!this.setModifier(modifier)) {
50 throw new Error("Wrong modifier " + modifier);
51 }
52 }
53
54 private static void mapPut(Hashtable hmap, String str, int mod) {
55 hmap.put(str, new Integer(mod));
56 }
57
58 private static Hashtable buildMap() {
59 map = new Hashtable();
60 mapPut(map, "public", Modifier.PUBLIC);
61 mapPut(map, "protected", Modifier.PROTECTED);
62 mapPut(map, "private", Modifier.PRIVATE);
63 mapPut(map, "abstract", Modifier.ABSTRACT);
64 mapPut(map, "static", Modifier.STATIC);
65 mapPut(map, "final", Modifier.FINAL);
66 mapPut(map, "transient", Modifier.TRANSIENT);
67 mapPut(map, "volatile", Modifier.VOLATILE);
68 mapPut(map, "synchronized", Modifier.SYNCHRONIZED);
69 mapPut(map, "native", Modifier.NATIVE);
70 mapPut(map, "strictfp", Modifier.STRICT);
71 mapPut(map, "interface", Modifier.INTERFACE);
72 return map;
73 }
74
75 public boolean setModifier(String modifier) {
76 Integer i = (Integer)map.get(modifier.trim());
77 if (i == null) {
78 log.error("Wrong modifier " + modifier);
79 return false;
80 }
81 this.modifier = i.intValue();
82 return true;
83 }
84
85 public int matchState(Object obj) {
86 if (!(obj instanceof Integer)) {
87 return MATCH_NO;
88 }
89
90 int mod = ((Integer)obj).intValue();
91
92 if ((mod & this.modifier) != 0) {
93 if (debug) {
94 log.debug("MATCH " + Modifier.toString(this.modifier) + " for :" + Modifier.toString(mod));
95 }
96 return MATCH_YES;
97 } else {
98 if (debug) {
99 log.debug("NOTMATCH " + Modifier.toString(this.modifier) + " for :" + Modifier.toString(mod));
100 }
101 return MATCH_NO;
102 }
103 }
104
105 public void debug() {
106 log.debug(Modifier.toString(this.modifier));
107 }
108
109 }