|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.tapestry5.internal.plastic.Lockable org.apache.tapestry5.internal.plastic.PlasticClassImpl
public 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_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VARARGS, ACC_VOLATILE, ACONST_NULL, ALOAD, ANEWARRAY, ARETURN, ARRAYLENGTH, ASM4, 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, SWAP, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_SHORT, TABLESWITCH, TOP, UNINITIALIZED_THIS, V1_1, V1_2, V1_3, V1_4, V1_5, V1_6, V1_7 |
Constructor Summary | |
---|---|
PlasticClassImpl(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode,
PlasticClassPool pool,
InheritanceData parentInheritanceData,
StaticContext parentStaticContext,
boolean proxy)
|
Method Summary | ||
---|---|---|
PlasticClass |
addToString(String toStringValue)
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. |
|
ClassInstantiator |
createInstantiator()
Terminates the class transformation process, finishes any final bookkeeping, and returns an object used to instantiate the transformed class. |
|
PlasticClassHandleShim |
createShimInstance()
|
|
List<PlasticField> |
getAllFields()
Returns all non-introduced fields, in sorted order by name. |
|
|
getAnnotation(Class<T> annotationType)
Returns an instantiated annotation, or null if the target does not have the indicated annotation. |
|
String |
getClassName()
Returns the fully qualified class name of the class being transformed. |
|
|
getFieldsWithAnnotation(Class<T> annotationType)
Matches all fields (claimed or not) that have the given annotation. |
|
List<PlasticMethod> |
getMethods()
Returns all methods of the class, in sorted order. |
|
|
getMethodsWithAnnotation(Class<T> annotationType)
Matches methods with the given annotation. |
|
PlasticClass |
getPlasticClass()
Returns the PlasticClass being transformed. |
|
String |
getSuperClassName()
Returns the name of the super-class of the class being transformed. |
|
Class<?> |
getTransformedClass()
|
|
List<PlasticField> |
getUnclaimedFields()
Returns all unclaimed fields, in sorted order by name. |
|
|
hasAnnotation(Class<T> annotationType)
Checks to see if the target has an annotation of the given type. |
|
void |
installShim(PlasticClassHandleShim shim)
|
|
PlasticField |
introduceField(Class fieldType,
String suggestedName)
Convenience method that uses a Java class rather than a type name. |
|
PlasticField |
introduceField(String className,
String suggestedName)
Introduces a new private field into the class. |
|
Set<PlasticMethod> |
introduceInterface(Class interfaceType)
Introduces each method defined by the interface into the class. |
|
PlasticMethod |
introduceMethod(Method method)
A convenience that creates a MethodDescription from the Method and introduces that. |
|
PlasticMethod |
introduceMethod(MethodDescription description)
Returns an existing method declared in this class, or introduces a new method into this class. |
|
PlasticMethod |
introduceMethod(MethodDescription description,
InstructionBuilderCallback callback)
Returns an existing method declared in this class, or introduces a new method into this class. |
|
PlasticMethod |
introducePrivateMethod(String typeName,
String suggestedName,
String[] argumentTypes,
String[] exceptionTypes)
Introduces a new private method into the class, ensuring that the method name is unique. |
|
boolean |
isInterfaceImplemented(Class interfaceType)
Returns true if this class, or a super-class, implements the indicated interface. |
|
boolean |
isMethodImplemented(MethodDescription description)
Returns true if this class has an implementation of the indicated method, or a super-class provides a non-abstract implementation. |
|
PlasticClass |
onConstruct(ConstructorCallback callback)
Adds the callback for execution when an instance of the class is instantiated. |
|
PlasticClass |
proxyInterface(Class interfaceType,
PlasticField field)
Introduces the interface, and then invokes PlasticMethod.delegateTo(PlasticField) on each method
defined by the interface. |
Methods inherited from class org.apache.tapestry5.internal.plastic.Lockable |
---|
check, lock |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public PlasticClassImpl(org.apache.tapestry5.internal.plastic.asm.tree.ClassNode classNode, PlasticClassPool pool, InheritanceData parentInheritanceData, StaticContext parentStaticContext, boolean proxy)
classNode
- pool
- parentInheritanceData
- parentStaticContext
- proxy
- Method Detail |
---|
public <T extends Annotation> boolean hasAnnotation(Class<T> annotationType)
AnnotationAccess
hasAnnotation
in interface AnnotationAccess
public <T extends Annotation> T getAnnotation(Class<T> annotationType)
AnnotationAccess
getAnnotation
in interface AnnotationAccess
public PlasticClass proxyInterface(Class interfaceType, PlasticField field)
PlasticClass
PlasticMethod.delegateTo(PlasticField)
on each method
defined by the interface.
proxyInterface
in interface PlasticClass
interfaceType
- defines the interface to proxyfield
- field containing an object to delegate to
public ClassInstantiator createInstantiator()
PlasticClassTransformation
PlasticClass
(or related objects) can be invoked.
The returned ClassInstantiator has an empty InstanceContext
map. Use
ClassInstantiator.with(Class, Object)
to create a new ClassInstantiator with new InstanceContext entries.
createInstantiator
in interface PlasticClassTransformation
public <T extends Annotation> List<PlasticField> getFieldsWithAnnotation(Class<T> annotationType)
PlasticClass
getFieldsWithAnnotation
in interface PlasticClass
public List<PlasticField> getAllFields()
PlasticClass
getAllFields
in interface PlasticClass
public List<PlasticField> getUnclaimedFields()
PlasticClass
getUnclaimedFields
in interface PlasticClass
PlasticField.claim(Object)
public PlasticMethod introducePrivateMethod(String typeName, String suggestedName, String[] argumentTypes, String[] exceptionTypes)
PlasticClass
introducePrivateMethod
in interface PlasticClass
typeName
- return type of methodsuggestedName
- suggested name for the method; the actual method name may be modified to ensure uniquenessargumentTypes
- types of any arguments (may be null)exceptionTypes
- type of any checked exceptions (may be null)
public PlasticField introduceField(String className, String suggestedName)
PlasticClass
introduceField
in interface PlasticClass
className
- the Java class name for the field, or (possibly) a primitive type name or an arraysuggestedName
- the suggested name for the field, which may be modified to ensure that the field name
is unique
public PlasticField introduceField(Class fieldType, String suggestedName)
PlasticClass
introduceField
in interface PlasticClass
public <T extends Annotation> List<PlasticMethod> getMethodsWithAnnotation(Class<T> annotationType)
PlasticClass
getMethodsWithAnnotation
in interface PlasticClass
public List<PlasticMethod> getMethods()
PlasticClass
getMethods
in interface PlasticClass
public PlasticMethod introduceMethod(MethodDescription description)
PlasticClass
introduceMethod
in interface PlasticClass
description
- describes the method name, visibility, return value, etc.
public PlasticMethod introduceMethod(MethodDescription description, InstructionBuilderCallback callback)
PlasticClass
introduceMethod
in interface PlasticClass
description
- describes the method name, visibility, return value, etc.callback
- used to create the implementation of the method
public PlasticMethod introduceMethod(Method method)
PlasticClass
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.
introduceMethod
in interface PlasticClass
method
- to introduce
public void installShim(PlasticClassHandleShim shim)
public PlasticClassHandleShim createShimInstance()
public PlasticClass getPlasticClass()
PlasticClassTransformation
getPlasticClass
in interface PlasticClassTransformation
public Class<?> getTransformedClass()
getTransformedClass
in interface InternalPlasticClassTransformation
public String getClassName()
PlasticClass
getClassName
in interface PlasticClass
public Set<PlasticMethod> introduceInterface(Class interfaceType)
PlasticClass
introduceInterface
in interface PlasticClass
public PlasticClass addToString(String toStringValue)
PlasticClass
toString()
to the class, but only if it is not already
present in the class, or in a (transformed) super-class.
addToString
in interface PlasticClass
toStringValue
- the fixed value to be returned from invoking toString()
public boolean isMethodImplemented(MethodDescription description)
PlasticClass
isMethodImplemented
in interface PlasticClass
public boolean isInterfaceImplemented(Class interfaceType)
PlasticClass
isInterfaceImplemented
in interface PlasticClass
public String getSuperClassName()
PlasticClass
getSuperClassName
in interface PlasticClass
public PlasticClass onConstruct(ConstructorCallback callback)
PlasticClass
onConstruct
in interface PlasticClass
callback
- to execute at instance construction time
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |