package lawOfDemeter.classform; import java.util.*; import lawOfDemeter.Any; /** * @authors David H. Lorenz and Pengcheng Wu * @version 0.4, 12/19/02 */ abstract aspect Perscope extends ClassSupplier { abstract pointcut Perscope(); before() : Any.Execution() { st.push(new HashSet()); } before() : Perscope() { HashSet aSet = (HashSet) st.peek(); aSet.addAll(getSuppliers( thisEnclosingJoinPointStaticPart, thisJoinPointStaticPart)); } after(): Any.Execution() { st.pop(); } static boolean contains(Class targetType) { HashSet innermost = (HashSet)Perscope.st.peek(); return innermost.contains(targetType); } private static Stack st = new Stack(); }