Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] Re: Using aspects on Swing classes?

The regular system classes will take precedence, unless you explicitly add the woven jar file to the front of the bootclasspath.



Kevin A. Roll wrote:
Hello all... I am very new to aspect-oriented programming, so forgive my simple questions. I'm interesting in applying aspects to base Java classes... in this particular case I want to modify the painting behavior of Swing components. I've written a basic aspect like this:

aspect ComponentSupport
pointcut paint(Graphics g): execution(void paintComponent(Graphics)) && args(g);

    void around(Graphics g): paint(g)

In this case I am theoretically intercepting any calls to paintComponent() and doing nothing, so I should see nothing on my GUI. However, everything looks the same. This is the latest in a long series of test aspects I've written; I can't seem to alter any painting behavior. Am I doing something wrong with my pointcut?

The second question concerns how to build this stuff. I put the standard jar as the inpath:

inPath="/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/classes.jar" aspectPath="${project_base}/ThirdPartyLibraries/trunk/lib/com.e-nspire.gemini-1.0.jar;${anaglyph}/trunk/build/lib/anaglyph.jar"

I'm building on a Mac, which explains the unusual location of the standard classes. The aspect shown above is in the anaglyph.jar. When I run this the compiler regenerates every single class in the Java runtime into the output directory, even though only a small number of classes should be affected by my aspect. I end up with a huge jar file which essentially duplicates the runtime jar plus my application. I hope that when I run my modified classes are overriding the base library, although I'm not sure which ones will take precedence...

Thanks in advance!

Back to the top