org.aspectj.weaver.tools
Class WeavingAdaptor

java.lang.Object
  |
  +--org.aspectj.weaver.tools.WeavingAdaptor

public class WeavingAdaptor
extends Object

This adaptor allows the AspectJ compiler to be embedded in an existing system to facilitate load-time weaving. It provides an interface for a weaving class loader to provide a classpath to be woven by a set of aspects. A callback is supplied to allow a class loader to define classes generated by the compiler during the weaving process.

A weaving class loader should create a WeavingAdaptor before any classes are defined, typically during construction. The set of aspects passed to the adaptor is fixed for the lifetime of the adaptor although the classpath can be augmented. A system property can be set to allow verbose weaving messages to be written to the console.


Field Summary
static String SHOW_WEAVE_INFO_PROPERTY
           
static String WEAVING_ADAPTOR_VERBOSE
          System property used to turn on verbose weaving messages
 
Constructor Summary
WeavingAdaptor(GeneratedClassHandler handler, URL[] classURLs, URL[] aspectURLs)
          Construct a WeavingAdator with a reference to a GeneratedClassHandler, a full search path for resolving classes and a complete set of aspects.
WeavingAdaptor(WeavingClassLoader loader)
          Construct a WeavingAdaptor with a reference to a weaving class loader.
 
Method Summary
 void addURL(URL url)
          Appends URL to path used by the WeavingAdptor to resolve classes
 byte[] weaveClass(String name, byte[] bytes)
          Weave a class using aspects previously supplied to the adaptor.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WEAVING_ADAPTOR_VERBOSE

public static final String WEAVING_ADAPTOR_VERBOSE
System property used to turn on verbose weaving messages

SHOW_WEAVE_INFO_PROPERTY

public static final String SHOW_WEAVE_INFO_PROPERTY
Constructor Detail

WeavingAdaptor

public WeavingAdaptor(WeavingClassLoader loader)
Construct a WeavingAdaptor with a reference to a weaving class loader. The adaptor will automatically search the class loader hierarchy to resolve classes. The adaptor will also search the hierarchy for WeavingClassLoader instances to determine the set of aspects to be used ofr weaving.
Parameters:
loader - instance of ClassLoader

WeavingAdaptor

public WeavingAdaptor(GeneratedClassHandler handler,
                      URL[] classURLs,
                      URL[] aspectURLs)
Construct a WeavingAdator with a reference to a GeneratedClassHandler, a full search path for resolving classes and a complete set of aspects. The search path must include classes loaded by the class loader constructing the WeavingAdaptor and all its parents in the hierarchy.
Parameters:
handler - GeneratedClassHandler
classURLs - the URLs from which to resolve classes
aspectURLs - the aspects used to weave classes defined by this class loader
Method Detail

addURL

public void addURL(URL url)
Appends URL to path used by the WeavingAdptor to resolve classes
Parameters:
url - to be appended to search path

weaveClass

public byte[] weaveClass(String name,
                         byte[] bytes)
                  throws IOException
Weave a class using aspects previously supplied to the adaptor.
Parameters:
name - the name of the class
bytes - the class bytes
Returns:
the woven bytes
Throws:
IOException - weave failed