## org.springframework.instrument.classloading
Class WeavingTransformer

    java.lang.Object
      org.springframework.instrument.classloading.WeavingTransformer

    public class WeavingTransformer

extends Object

ClassFileTransformer-based weaver, allowing for a list of transformers to be applied on a class byte array. Normally used inside class loaders.

Note: This class is deliberately implemented for minimal external dependencies, since it is included in weaver jars (to be deployed into application servers).

Since:
  2.0
Author:
  Rod Johnson, Costin Leau, Juergen Hoeller

Constructor Summary
`WeavingTransformer(ClassLoader classLoader)` Create a new WeavingTransformer for the given class loader.

Method Summary
`void` `addTransformer(ClassFileTransformer transformer)` Add a class file transformer to be applied by this weaver.
`byte[]` `transformIfNecessary(String className, byte[] bytes)` Apply transformation on a given class byte definition.
`byte[]` `transformIfNecessary(String className, String internalName, byte[] bytes, ProtectionDomain pd)` Apply transformation on a given class byte definition.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### WeavingTransformer

    public WeavingTransformer(ClassLoader classLoader)

  Create a new WeavingTransformer for the given class loader.

  Parameters:
    `classLoader` - the ClassLoader to build a transformer for

Method Detail

### addTransformer

    public void addTransformer(ClassFileTransformer transformer)

  Add a class file transformer to be applied by this weaver.

  Parameters:
    `transformer` - the class file transformer to register

### transformIfNecessary

    public byte[] transformIfNecessary(String className,
                                       byte[] bytes)

  Apply transformation on a given class byte definition. The method will always return a non-null byte array (if no transformation has taken place the array content will be identical to the original one).

  Parameters:
    `className` - the full qualified name of the class in dot format (i.e. some.package.SomeClass)
    `bytes` - class byte definition
  Returns:
    (possibly transformed) class byte definition

### transformIfNecessary

    public byte[] transformIfNecessary(String className,
                                       String internalName,
                                       byte[] bytes,
                                       ProtectionDomain pd)

  Apply transformation on a given class byte definition. The method will always return a non-null byte array (if no transformation has taken place the array content will be identical to the original one).

  Parameters:
    `className` - the full qualified name of the class in dot format (i.e. some.package.SomeClass)
    `internalName` - class name internal name in / format (i.e. some/package/SomeClass)
    `bytes` - class byte definition
    `pd` - protection domain to be used (can be null)
  Returns:
    (possibly transformed) class byte definition