Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] aspectj agent decorating

Hello,

I'd like to enhance AspectJ Java agent processing a bit, so I
decorated ClassFileTransformer from AspectJ agent using this code in
my ClassFileTransformer:

public synchronized byte[] transform(ClassLoader loader, final String
name, Class<?> classBeingRedefined, ProtectionDomain protectionDomain,
			byte[] code) throws IllegalClassFormatException {
    code = myPreModifications(code);
    code = aspectjClassFileTransformer.transform(loader, name,
classBeingRedefined, protectionDomain, code);
    return myPostModifications(code);
}


Changes done by myPostModifications method are visible, but changes
done before AspectJ (myPreModifications) aren't visible.
I've found that AspectJ just ignores "code" parameter (i can just pass
null: aspectjClassFileTransformer.transform(loader, name,
classBeingRedefined, protectionDomain, NULL)). AspectJ seems to
perform some class caching in World.TypeMap.expendableMap, and reuses
previously loaded classes.
I tried to set World.TypeMap.useExpendableMap to false, but then
AspectJ stops working.

How to make this preprocessing before AspectJ work? How to disable
this ugly caching?


Irek


Back to the top