KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dynaop > example > Sequence


1 package dynaop.example;
2
3 import net.sf.cglib.Factory;
4
5 import com.zanthan.sequence.SequenceFrame;
6
7 /**
8  * Sequence diagram manager.
9  *
10  * @author Bob Lee (crazybob@crazybob.org)
11  */

12 public class Sequence {
13
14     static SequenceFrame frame;
15
16     static void setFrame(SequenceFrame f) {
17         frame = f;
18     }
19         
20     static void start(Object JavaDoc proxy, Object JavaDoc target, String JavaDoc methodName) {
21         if (frame != null)
22             frame.update("(" + getName(proxy, target) + " " + methodName);
23     }
24
25     static void end() {
26         if (frame != null)
27             frame.update(")");
28     }
29     
30     static String JavaDoc baseName(String JavaDoc name) {
31         int index = name.lastIndexOf('.');
32         if (index > -1)
33             name = name.substring(index + 1);
34         return name;
35     }
36     
37     static String JavaDoc getName(Object JavaDoc proxy, Object JavaDoc target) {
38         // cglib proxy.
39
if (proxy instanceof Factory) {
40             String JavaDoc name = proxy.getClass().getSuperclass().getName();
41             name = baseName(name) + "@" +
42                 Integer.toHexString(System.identityHashCode(proxy));
43             return name;
44         }
45
46         // dynamic proxy.
47
String JavaDoc name = target.getClass().getName();
48         name = baseName(name) + "@" +
49             Integer.toHexString(System.identityHashCode(target));
50         return name;
51     }
52 }
53
Popular Tags