## 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

  See Also:
    Constant Field Values

### SHOW_WEAVE_INFO_PROPERTY

    public static final String SHOW_WEAVE_INFO_PROPERTY

See Also:
  Constant Field Values

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