- All Superinterfaces:
ClassFileTransform<ClassTransform,ClassElement, ClassBuilder>
- All Known Subinterfaces:
ClassRemapper
- All Known Implementing Classes:
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.- Since:
- 22
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.glavo.classfile.ClassFileTransform
ClassFileTransform.ResolvedTransform<E extends ClassFileElement> -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final ClassTransformA class transform that sends all elements to the builder. -
Method Summary
Modifier and TypeMethodDescriptiondefault ClassTransformChain this transform with another; elements presented to the builder of this transform will become the input to the next transform.static ClassTransformdropping(Predicate<ClassElement> filter) Create a class transform that passes each element through to the builder, except for those that the suppliedPredicateis true for.static ClassTransformendHandler(Consumer<ClassBuilder> finisher) Create a class transform that passes each element through to the builder, and calls the specified function when transformation is complete.static ClassTransformofStateful(Supplier<ClassTransform> supplier) Create a stateful class transform from aSupplier.resolve(ClassBuilder builder) Bind a transform to a builder.static ClassTransformtransformingFields(FieldTransform xform) Create a class transform that transformsFieldModelelements with the supplied field transform.static ClassTransformtransformingMethodBodies(Predicate<MethodModel> filter, CodeTransform xform) Create a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform.static ClassTransformCreate a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform.static ClassTransformtransformingMethods(Predicate<MethodModel> filter, MethodTransform xform) Create a class transform that transformsMethodModelelements with the supplied method transform.static ClassTransformCreate a class transform that transformsMethodModelelements with the supplied method transform.Methods inherited from interface org.glavo.classfile.ClassFileTransform
accept, atEnd, atStart
-
Field Details
-
ACCEPT_ALL
A class transform that sends all elements to the builder.
-
-
Method Details
-
ofStateful
Create a stateful class transform from aSupplier. The supplier will be invoked for each transformation.- Parameters:
supplier- aSupplierthat produces a fresh transform object for each traversal- Returns:
- the stateful class transform
-
endHandler
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
Create a class transform that passes each element through to the builder, except for those that the suppliedPredicateis true for.- Parameters:
filter- the predicate that determines which elements to drop- Returns:
- the class transform
-
transformingMethods
Create a class transform that transformsMethodModelelements with the supplied method transform.- Parameters:
filter- a predicate that determines which methods to transformxform- the method transform- Returns:
- the class transform
-
transformingMethods
Create a class transform that transformsMethodModelelements with the supplied method transform.- Parameters:
xform- the method transform- Returns:
- the class transform
-
transformingMethodBodies
Create a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform.- Parameters:
filter- a predicate that determines which methods to transformxform- the code transform- Returns:
- the class transform
-
transformingMethodBodies
Create a class transform that transforms theCodeAttribute(method body) ofMethodModelelements with the supplied code transform.- Parameters:
xform- the code transform- Returns:
- the class transform
-
transformingFields
Create a class transform that transformsFieldModelelements with the supplied field transform.- Parameters:
xform- the field transform- Returns:
- the class transform
-
andThen
Description copied from interface:ClassFileTransformChain this transform with another; elements presented to the builder of this transform will become the input to the next transform.- Specified by:
andThenin interfaceClassFileTransform<ClassTransform,ClassElement, ClassBuilder> - Parameters:
t- the downstream transform- Returns:
- the chained transform
- ImplSpec:
- The default implementation returns this class transform chained with another class transform from the argument. Chaining of two transforms requires to involve a chained builder serving as a target builder for this transform and also as a source of elements for the downstream transform.
-
resolve
Description copied from interface:ClassFileTransformBind 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:
resolvein interfaceClassFileTransform<ClassTransform,ClassElement, ClassBuilder> - Parameters:
builder- the builder to bind to- Returns:
- the bound result
- ImplSpec:
- The default implementation returns a resolved transform bound to the given class builder.
-