Class PlasticClassImpl

    • Field Summary

      • Fields inherited from interface org.apache.tapestry5.internal.plastic.asm.Opcodes

        AALOAD, AASTORE, ACC_ABSTRACT, ACC_ANNOTATION, ACC_BRIDGE, ACC_DEPRECATED, ACC_ENUM, ACC_FINAL, ACC_INTERFACE, ACC_MANDATED, ACC_MODULE, ACC_NATIVE, ACC_OPEN, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_RECORD, ACC_STATIC, ACC_STATIC_PHASE, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_TRANSITIVE, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM10_EXPERIMENTAL, ASM4, ASM5, ASM6, ASM7, ASM8, ASM9, ASTORE, ATHROW, BALOAD, BASTORE, BIPUSH, CALOAD, CASTORE, CHECKCAST, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DMUL, DNEG, DOUBLE, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F_APPEND, F_CHOP, F_FULL, F_NEW, F_SAME, F_SAME1, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAT, FMUL, FNEG, FREM, FRETURN, FSTORE, FSUB, GETFIELD, GETSTATIC, GOTO, H_GETFIELD, H_GETSTATIC, H_INVOKEINTERFACE, H_INVOKESPECIAL, H_INVOKESTATIC, H_INVOKEVIRTUAL, H_NEWINVOKESPECIAL, H_PUTFIELD, H_PUTSTATIC, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILOAD, IMUL, INEG, INSTANCEOF, INTEGER, INVOKEDYNAMIC, INVOKEINTERFACE, INVOKESPECIAL, INVOKESTATIC, INVOKEVIRTUAL, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISUB, IUSHR, IXOR, JSR, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDIV, LLOAD, LMUL, LNEG, LONG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, NULL, POP, POP2, PUTFIELD, PUTSTATIC, RET, RETURN, SALOAD, SASTORE, SIPUSH, SOURCE_DEPRECATED, SOURCE_MASK, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V_PREVIEW, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7, V1_8, V10, V11, V12, V13, V14, V15, V16, V17, V18, V19, V20, V21, V22, V9
    • Constructor Summary

      Constructors 
      Constructor Description
      PlasticClassImpl​(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode, org.apache.tapestry5.internal.plastic.asm.tree.ClassNode implementationClassNode, PlasticClassPool pool, InheritanceData parentInheritanceData, StaticContext parentStaticContext, boolean proxy)  
    • Constructor Detail

      • PlasticClassImpl

        public PlasticClassImpl​(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode,
                                org.apache.tapestry5.internal.plastic.asm.tree.ClassNode implementationClassNode,
                                PlasticClassPool pool,
                                InheritanceData parentInheritanceData,
                                StaticContext parentStaticContext,
                                boolean proxy)
        Parameters:
        classNode -
        implementationClassNode -
        pool -
        parentInheritanceData -
        parentStaticContext -
        proxy -
    • Method Detail

      • hasAnnotation

        public <T extends java.lang.annotation.Annotation> boolean hasAnnotation​(java.lang.Class<T> annotationType)
        Description copied from interface: AnnotationAccess
        Checks to see if the target has an annotation of the given type.
        Specified by:
        hasAnnotation in interface AnnotationAccess
      • getAnnotation

        public <T extends java.lang.annotation.Annotation> T getAnnotation​(java.lang.Class<T> annotationType)
        Description copied from interface: AnnotationAccess
        Returns an instantiated annotation, or null if the target does not have the indicated annotation.
        Specified by:
        getAnnotation in interface AnnotationAccess
      • getFieldsWithAnnotation

        public <T extends java.lang.annotation.Annotation> java.util.List<PlasticFieldgetFieldsWithAnnotation​(java.lang.Class<T> annotationType)
        Description copied from interface: PlasticClass
        Matches all fields (claimed or not) that have the given annotation. Returns the fields in sorted order.
        Specified by:
        getFieldsWithAnnotation in interface PlasticClass
        Returns:
        Unmodifiable List of fields.
      • introducePrivateMethod

        public PlasticMethod introducePrivateMethod​(java.lang.String typeName,
                                                    java.lang.String suggestedName,
                                                    java.lang.String[] argumentTypes,
                                                    java.lang.String[] exceptionTypes)
        Description copied from interface: PlasticClass
        Introduces a new private method into the class, ensuring that the method name is unique.
        Specified by:
        introducePrivateMethod in interface PlasticClass
        Parameters:
        typeName - return type of method
        suggestedName - suggested name for the method; the actual method name may be modified to ensure uniqueness
        argumentTypes - types of any arguments (may be null)
        exceptionTypes - type of any checked exceptions (may be null)
        Returns:
        new method, with default implementation
      • introduceField

        public PlasticField introduceField​(java.lang.String className,
                                           java.lang.String suggestedName)
        Description copied from interface: PlasticClass
        Introduces a new private field into the class.
        Specified by:
        introduceField in interface PlasticClass
        Parameters:
        className - the Java class name for the field, or (possibly) a primitive type name or an array
        suggestedName - the suggested name for the field, which may be modified to ensure that the field name is unique
        Returns:
        PlasticField for the introduced field
      • introduceMethod

        public PlasticMethod introduceMethod​(MethodDescription description)
        Description copied from interface: PlasticClass
        Returns an existing method declared in this class, or introduces a new method into this class. The method is created with default behavior. If the method overrides a non-private, non-abstract method implemented in a transformed super class, the the default behavior is to invoke that method and return its value. Otherwise, the default behavior is to ignore parameters and return 0, false, or null. Void methods will invoke the super-class implementation (if it exists) and return no value. It is allowed for the method description to indicate an abstract method; however the abstract flag will be removed, and a non-abstract method will be created.
        Specified by:
        introduceMethod in interface PlasticClass
        Parameters:
        description - describes the method name, visibility, return value, etc.
        Returns:
        a new (or previously created) PlasticMethod for the method
      • introduceMethod

        public PlasticMethod introduceMethod​(MethodDescription description,
                                             InstructionBuilderCallback callback)
        Description copied from interface: PlasticClass
        Returns an existing method declared in this class, or introduces a new method into this class. The method is created with default behavior. It is allowed for the method description to indicate an abstract method; however the abstract flag will be removed, and a non-abstract method will be created.
        Specified by:
        introduceMethod in interface PlasticClass
        Parameters:
        description - describes the method name, visibility, return value, etc.
        callback - used to create the implementation of the method
        Returns:
        a new (or previously created) PlasticMethod for the method
      • introduceMethod

        public PlasticMethod introduceMethod​(java.lang.reflect.Method method)
        Description copied from interface: PlasticClass
        A convenience that creates a MethodDescription from the Method and introduces that. This is often invoked when walking the methods of an interface and introducing each of those methods. Introduced methods are always concrete, not abstract. The abstract flag on the method modifiers will always be stripped off, which is handy when introducing methods from an interface.
        Specified by:
        introduceMethod in interface PlasticClass
        Parameters:
        method - to introduce
        Returns:
        new (or previously created) PlasticMethod
      • introduceInterface

        public java.util.Set<PlasticMethodintroduceInterface​(java.lang.Class interfaceType)
        Description copied from interface: PlasticClass
        Introduces each method defined by the interface into the class. Determines which new methods must be introduced in order to ensure that all methods of the interface are implemented. The newly introduced methods, if any, are returned.
        Specified by:
        introduceInterface in interface PlasticClass
      • addToString

        public PlasticClass addToString​(java.lang.String toStringValue)
        Description copied from interface: PlasticClass
        Conditionally adds an implementation of toString() to the class, but only if it is not already present in the class, or in a (transformed) super-class.
        Specified by:
        addToString in interface PlasticClass
        Parameters:
        toStringValue - the fixed value to be returned from invoking toString()
        Returns:
        this plastic class, for further configuration
      • isInterfaceImplemented

        public boolean isInterfaceImplemented​(java.lang.Class interfaceType)
        Description copied from interface: PlasticClass
        Returns true if this class, or a super-class, implements the indicated interface.
        Specified by:
        isInterfaceImplemented in interface PlasticClass
        Returns:
        true if the interface is implemented
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object