Class TypeProxy.ForSuperMethodByReflectionFactory

  • All Implemented Interfaces:
    StackManipulation
    Enclosing class:
    TypeProxy

    @Enhance
    public static class TypeProxy.ForSuperMethodByReflectionFactory
    extends java.lang.Object
    implements StackManipulation
    Loads a type proxy onto the operand stack which is created by constructing a serialization constructor using the Oracle JDK's ReflectionFactory.newConstructorForSerialization(Class, java.lang.reflect.Constructor) method which might not be available in any Java runtime. When this stack manipulation is applied, an instance of the instrumented type must lie on top of the operand stack.
    • Field Detail

      • proxiedType

        private final TypeDescription proxiedType
        The type for which a proxy type is created.
      • implementationTarget

        private final Implementation.Target implementationTarget
        The implementation target of the proxied type.
      • ignoreFinalizer

        private final boolean ignoreFinalizer
        true true if any finalizer methods should be ignored for proxying.
      • serializableProxy

        private final boolean serializableProxy
        Determines if the proxy should be serializable.
    • Constructor Detail

      • ForSuperMethodByReflectionFactory

        public ForSuperMethodByReflectionFactory​(TypeDescription proxiedType,
                                                 Implementation.Target implementationTarget,
                                                 boolean ignoreFinalizer,
                                                 boolean serializableProxy)
        Creates a new stack operation for reflectively creating a type proxy for the given arguments.
        Parameters:
        proxiedType - The type for the type proxy to subclass or implement.
        implementationTarget - The implementation target this type proxy is created for.
        ignoreFinalizer - true if any finalizer methods should be ignored for proxying.
        serializableProxy - Determines if the proxy should be serializable.
    • Method Detail

      • isValid

        public boolean isValid()
        Determines if this stack manipulation is valid.
        Specified by:
        isValid in interface StackManipulation
        Returns:
        If false, this manipulation cannot be applied and should throw an exception.
      • apply

        public StackManipulation.Size apply​(org.objectweb.asm.MethodVisitor methodVisitor,
                                            Implementation.Context implementationContext)
        Applies the stack manipulation that is described by this instance.
        Specified by:
        apply in interface StackManipulation
        Parameters:
        methodVisitor - The method visitor used to write the method implementation to.
        implementationContext - The context of the current implementation.
        Returns:
        The changes to the size of the operand stack that are implied by this stack manipulation.