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