Package 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

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

## Method Summary

Modifier and Type
Method
Description
`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 Details

### WeavingTransformer

public WeavingTransformer(@Nullable ClassLoader classLoader)
Create a new WeavingTransformer for the given class loader.

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

## Method Details

### 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, @Nullable 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