[
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.
Regards,
Matt.
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:
<iajc
sourceRoots="build/src:src"
destdir="build/classes"
debug="on"
source="1.5"
target="1.5"
classpathref="project.classpath"
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"
fork="yes"
maxmem="1024m"
>
</iajc>
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!