## org.aspectj.weaver.tools
Class WeavingAdaptor

    java.lang.Object
      org.aspectj.weaver.tools.WeavingAdaptor

All Implemented Interfaces:
  org.aspectj.bridge.IMessageContext

Direct Known Subclasses:
  ClassLoaderWeavingAdaptor

    public class WeavingAdaptor

extends java.lang.Object
implements org.aspectj.bridge.IMessageContext

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.

Nested Class Summary
`protected class` `WeavingAdaptor.WeavingAdaptorMessageHolder` Processes messages arising from weaver operations.
`protected class` `WeavingAdaptor.WeavingAdaptorMessageWriter`

Field Summary
`protected org.aspectj.weaver.bcel.BcelWorld` `bcelWorld`
`org.aspectj.weaver.bcel.BcelObjectType` `delegateForCurrentClass`
`protected java.util.Map` `generatedClasses`
`protected GeneratedClassHandler` `generatedClassHandler`
`static java.lang.String` `SHOW_WEAVE_INFO_PROPERTY`
`static java.lang.String` `TRACE_MESSAGES_PROPERTY`
`protected boolean` `verbose`
`protected org.aspectj.weaver.bcel.BcelWeaver` `weaver`
`static java.lang.String` `WEAVING_ADAPTOR_VERBOSE` System property used to turn on verbose weaving messages

Constructor Summary
`protected` `WeavingAdaptor()`
`` `WeavingAdaptor(GeneratedClassHandler handler, java.net.URL[] classURLs, java.net.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
`protected boolean` `accept(java.lang.String name, byte[] bytes)`
`void` `addURL(java.net.URL url)` Appends URL to path used by the WeavingAdptor to resolve classes
`protected void` `createMessageHandler()`
`protected boolean` `debug(java.lang.String message)`
`protected void` `disable()`
`protected void` `dump(java.lang.String name, byte[] b, boolean before)` Dump the given bytcode in _dump/...
`protected void` `enable()`
`protected void` `ensureDelegateInitialized(java.lang.String name, byte[] bytes)`
`protected boolean` `error(java.lang.String message)`
`protected boolean` `error(java.lang.String message, java.lang.Throwable th)`
`java.lang.String` `getContextId()`
`protected java.lang.String` `getDumpDir()`
`protected org.aspectj.bridge.IMessageHandler` `getMessageHandler()`
`org.aspectj.bridge.IMessageHolder` `getMessageHolder()`
`protected boolean` `info(java.lang.String message)`
`protected boolean` `isEnabled()`
`protected void` `setMessageHandler(org.aspectj.bridge.IMessageHandler mh)`
`protected boolean` `shouldDump(java.lang.String name, boolean before)`
`protected boolean` `warn(java.lang.String message)`
`protected boolean` `warn(java.lang.String message, java.lang.Throwable th)`
`byte[]` `weaveClass(java.lang.String name, byte[] bytes)` Weave a class using aspects previously supplied to the adaptor.
`byte[]` `weaveClass(java.lang.String name, byte[] bytes, boolean mustWeave)` 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 java.lang.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 java.lang.String SHOW_WEAVE_INFO_PROPERTY

See Also:
  Constant Field Values

### TRACE_MESSAGES_PROPERTY

    public static final java.lang.String TRACE_MESSAGES_PROPERTY

See Also:
  Constant Field Values

### verbose

    protected boolean verbose

### bcelWorld

    protected org.aspectj.weaver.bcel.BcelWorld bcelWorld

### weaver

    protected org.aspectj.weaver.bcel.BcelWeaver weaver

### generatedClassHandler

    protected GeneratedClassHandler generatedClassHandler

### generatedClasses

    protected java.util.Map generatedClasses

### delegateForCurrentClass

    public org.aspectj.weaver.bcel.BcelObjectType delegateForCurrentClass

Constructor Detail

### WeavingAdaptor

    protected WeavingAdaptor()

### 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,
                          java.net.URL[] classURLs,
                          java.net.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

### createMessageHandler

    protected void createMessageHandler()

### getMessageHandler

    protected org.aspectj.bridge.IMessageHandler getMessageHandler()

### getMessageHolder

    public org.aspectj.bridge.IMessageHolder getMessageHolder()

### setMessageHandler

    protected void setMessageHandler(org.aspectj.bridge.IMessageHandler mh)

### disable

    protected void disable()

### enable

    protected void enable()

### isEnabled

    protected boolean isEnabled()

### addURL

    public void addURL(java.net.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(java.lang.String name,
                             byte[] bytes)
                      throws java.io.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:
    `java.io.IOException` - weave failed

### weaveClass

    public byte[] weaveClass(java.lang.String name,
                             byte[] bytes,
                             boolean mustWeave)
                      throws java.io.IOException

  Weave a class using aspects previously supplied to the adaptor.

  Parameters:
    `name` - the name of the class
    `bytes` - the class bytes
    `mustWeave` - if true then this class *must* get woven (used for concrete aspects generated from XML)
  Returns:
    the woven bytes
  Throws:
    `java.io.IOException` - weave failed

### accept

    protected boolean accept(java.lang.String name,
                             byte[] bytes)

### shouldDump

    protected boolean shouldDump(java.lang.String name,
                                 boolean before)

### ensureDelegateInitialized

    protected void ensureDelegateInitialized(java.lang.String name,
                                             byte[] bytes)

### debug

    protected boolean debug(java.lang.String message)

### info

    protected boolean info(java.lang.String message)

### warn

    protected boolean warn(java.lang.String message)

### warn

    protected boolean warn(java.lang.String message,
                           java.lang.Throwable th)

### error

    protected boolean error(java.lang.String message)

### error

    protected boolean error(java.lang.String message,
                            java.lang.Throwable th)

### getContextId

    public java.lang.String getContextId()

  Specified by:
    `getContextId` in interface `org.aspectj.bridge.IMessageContext`

### dump

    protected void dump(java.lang.String name,
                        byte[] b,
                        boolean before)

  Dump the given bytcode in _dump/... (dev mode)

  Parameters:
    `name` -
    `b` -
    `before` - whether we are dumping before weaving
  Throws:
    `java.lang.Throwable`

### getDumpDir

    protected java.lang.String getDumpDir()

  Returns:
    the directory in which to dump - default is _ajdump but it