1 package dynaop.example; 2 3 import net.sf.cglib.Factory; 4 5 import com.zanthan.sequence.SequenceFrame; 6 7 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 proxy, Object target, String 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 baseName(String name) { 31 int index = name.lastIndexOf('.'); 32 if (index > -1) 33 name = name.substring(index + 1); 34 return name; 35 } 36 37 static String getName(Object proxy, Object target) { 38 if (proxy instanceof Factory) { 40 String name = proxy.getClass().getSuperclass().getName(); 41 name = baseName(name) + "@" + 42 Integer.toHexString(System.identityHashCode(proxy)); 43 return name; 44 } 45 46 String name = target.getClass().getName(); 48 name = baseName(name) + "@" + 49 Integer.toHexString(System.identityHashCode(target)); 50 return name; 51 } 52 } 53 | Popular Tags |