Hi, 1) You might want to try the preinitialization pointcut here http://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html
2) Just make sure the static keywird is part of your method signature, Eg- pointcut staticCalls() : execution(* static * BorderFactory.*(..)); (not sure if that first * is really necessary, or you may have to explicitly include a visibility modifier, try it out) On Sun, Jan 11, 2009 at 11:25 AM, Ryan Sawatzky <[email protected]> wrote: > Hello, > > I am attempting to use AspectJ to detect EDT thread violations in my Swing > project. I am referencing the implementation of EdtRuleChecker that > Alexander Potochkin posted in his blog, here: > http://weblogs.java.net/blog/alexfromsun/archive/2006/02/debugging_swing.html > > The idea is straightforward. Before any call to any method on any Swing > object, check to see if the calling thread is the EDT. If not, then write > an error. While the posted aspect is good, it is also incomplete in that it > fails to check any object which is not derived from JComponent. So I've > been adding to the list of classes that are checked by the aspect, and I've > run into two problems. > > 1) There are several interfaces defined in Swing (ButtonModel, ListModel). > When I attempt to change the aspect to include the constructor of any class > which implements these interfaces, I receive the following compiler > warning... > EdtRuleChecker.aj:172::0 advice defined in > com.openfox.messenger.EdtRuleChecker has not been applied > [Xlint:adviceDidNotMatch] > > The aspect code which generates this warning is... > //calls of any ButtonModel constructor, including subclasses > before(): call(ButtonModel+.new(..)) { > if (isStressChecking && !SwingUtilities.isEventDispatchThread()) { > System.err.println(thisJoinPoint.getSourceLocation()); > System.err.println(thisJoinPoint.getSignature() + > " *constructor*"); > System.err.println(); > } > } > > So, is there a different way to insert code when the constructor of any > class which implements the ButtonModel interface is called? > > 2) There are several static methods which should only be called from the > EDT. For example, the static methods of the BorderFactory class. How can I > catch static method calls of a specific class? > > > Thanks, > -Ryan > > > _______________________________________________ > aspectj-users mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/aspectj-users > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
