Interface ClassTransform

All Superinterfaces:
ClassfileTransform<ClassTransform,ClassElement,ClassBuilder>
All Known Subinterfaces:
ClassRemapper
All Known Implementing Classes:
ClassRemapper.ClassRemapperImpl, TransformImpl.ChainedClassTransform, TransformImpl.ClassFieldTransform, TransformImpl.ClassMethodTransform, TransformImpl.SupplierClassTransform
Functional Interface:
This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public non-sealed interface ClassTransform extends ClassfileTransform<ClassTransform,ClassElement,ClassBuilder>
A transformation on streams of ClassElement.
See Also:
  • Field Details

    • ACCEPT_ALL

      static final ClassTransform ACCEPT_ALL
      A class transform that sends all elements to the builder.
  • Method Details

    • ofStateful

      static ClassTransform ofStateful(Supplier<ClassTransform> supplier)
      Create a stateful class transform from a Supplier. The supplier will be invoked for each transformation.
      Parameters:
      supplier - a Supplier that produces a fresh transform object for each traversal
      Returns:
      the stateful class transform
    • endHandler

      static ClassTransform endHandler(Consumer<ClassBuilder> finisher)
      Create a class transform that passes each element through to the builder, and calls the specified function when transformation is complete.
      Parameters:
      finisher - the function to call when transformation is complete
      Returns:
      the class transform
    • dropping

      static ClassTransform dropping(Predicate<ClassElement> filter)
      Create a class transform that passes each element through to the builder, except for those that the supplied Predicate is true for.
      Parameters:
      filter - the predicate that determines which elements to drop
      Returns:
      the class transform
    • transformingMethods

      static ClassTransform transformingMethods(Predicate<MethodModel> filter, MethodTransform xform)
      Create a class transform that transforms MethodModel elements with the supplied method transform.
      Parameters:
      filter - a predicate that determines which methods to transform
      xform - the method transform
      Returns:
      the class transform
    • transformingMethods

      static ClassTransform transformingMethods(MethodTransform xform)
      Create a class transform that transforms MethodModel elements with the supplied method transform.
      Parameters:
      xform - the method transform
      Returns:
      the class transform
    • transformingMethodBodies

      static ClassTransform transformingMethodBodies(Predicate<MethodModel> filter, CodeTransform xform)
      Create a class transform that transforms the CodeAttribute (method body) of MethodModel elements with the supplied code transform.
      Parameters:
      filter - a predicate that determines which methods to transform
      xform - the code transform
      Returns:
      the class transform
    • transformingMethodBodies

      static ClassTransform transformingMethodBodies(CodeTransform xform)
      Create a class transform that transforms the CodeAttribute (method body) of MethodModel elements with the supplied code transform.
      Parameters:
      xform - the code transform
      Returns:
      the class transform
    • transformingFields

      static ClassTransform transformingFields(FieldTransform xform)
      Create a class transform that transforms FieldModel elements with the supplied field transform.
      Parameters:
      xform - the field transform
      Returns:
      the class transform
    • andThen

      default ClassTransform andThen(ClassTransform t)
      Description copied from interface: ClassfileTransform
      Chain this transform with another; elements presented to the builder of this transform will become the input to the next transform.
      Specified by:
      andThen in interface ClassfileTransform<ClassTransform,ClassElement,ClassBuilder>
      Parameters:
      t - the downstream transform
      Returns:
      the chained transform
    • resolve

      Description copied from interface: ClassfileTransform
      Bind a transform to a builder. If the transform is chained, intermediate builders are created for each chain link. If the transform is stateful (see, e.g., ofStateful(Supplier)), the supplier is invoked to get a fresh transform object.

      This method is a low-level method that should rarely be used by user code; most of the time, user code should prefer ClassfileBuilder.transform(CompoundElement, ClassfileTransform), which resolves the transform and executes it on the current builder.

      Specified by:
      resolve in interface ClassfileTransform<ClassTransform,ClassElement,ClassBuilder>
      Parameters:
      builder - the builder to bind to
      Returns:
      the bound result