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
All Methods Instance Methods Concrete Methods 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.
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 definitionpd
- protection domain to be used (can be null)- Returns:
- (possibly transformed) class byte definition