org.springsource.loaded
Class IncrementalTypeDescriptor

java.lang.Object
  extended by org.springsource.loaded.IncrementalTypeDescriptor
All Implemented Interfaces:
org.objectweb.asm.Opcodes, Constants

public class IncrementalTypeDescriptor
extends java.lang.Object
implements Constants

This class computes and then encapsulates what has changed between the original form of a type and a newly loaded version.

Since:
0.5.0

Field Summary
 
Fields inherited from interface org.springsource.loaded.Constants
ACC_PRIVATE_PROTECTED, ACC_PRIVATE_STATIC, ACC_PRIVATE_STATIC_FINAL, ACC_PUBLIC_ABSTRACT, ACC_PUBLIC_INTERFACE, ACC_PUBLIC_PRIVATE_PROTECTED, ACC_PUBLIC_PROTECTED, ACC_PUBLIC_STATIC, ACC_PUBLIC_STATIC_FINAL, ACC_PUBLIC_STATIC_SYNTHETIC, ACC_PUBLIC_SYNTHETIC, DEFAULT_BOOLEAN, DEFAULT_BYTE, DEFAULT_CHAR, DEFAULT_DOUBLE, DEFAULT_FLOAT, DEFAULT_INT, DEFAULT_LONG, DEFAULT_SHORT, descriptorChangedForInvokeSpecialName, executorClassNamePattern, fInstanceFieldsName, fReloadableTypeFieldName, fStaticFieldsName, JLC_GETCONSTRUCTOR, JLC_GETDECLAREDCONSTRUCTOR, JLC_GETDECLAREDFIELD, JLC_GETDECLAREDFIELDS, JLC_GETDECLAREDMETHOD, JLC_GETDECLAREDMETHODS, JLC_GETFIELD, JLC_GETMETHOD, JLC_GETMETHODS, JLC_GETMODIFIERS, jlcgc, jlcgcDescriptor, jlcgdc, jlcgdcDescriptor, jlcgdf, jlcgdfDescriptor, jlcgdfs, jlcgdfsDescriptor, jlcgdm, jlcgdmDescriptor, jlcgdms, jlcgdmsDescriptor, jlcgf, jlcgfDescriptor, jlcgm, jlcgmDescriptor, jlcgmods, jlcgmodsDescriptor, jlcgms, jlcgmsDescriptor, jlObject, lDynamicallyDispatchable, lInstanceStateManager, lRegistryType, lReloadableType, lStaticStateManager, magicDescriptorForGeneratedCtors, mChangedForConstructorName, mChangedForInvocationName, mChangedForInvokeInterfaceName, mChangedForInvokeSpecialName, mChangedForInvokeStaticName, mChangedForInvokeVirtualName, mDynamicDispatchDescriptor, mDynamicDispatchName, methodSuffixSuperDispatcher, mInitializerName, mInstanceFieldGetterDescriptor, mInstanceFieldGetterName, mInstanceFieldInterceptionRequired, mInstanceFieldSetterDescriptor, mInstanceFieldSetterName, mStaticFieldGetterName, mStaticFieldInterceptionRequired, mStaticFieldSetterDescriptor, mStaticFieldSetterName, mStaticInitializerName, NO_FIELDS, NO_METHODS, NO_STRINGS, PREFIX, tDynamicallyDispatchable, tInstanceStateManager, tRegistryType, tReloadableType, tStaticStateManager, WAS_INVOKESTATIC, WAS_INVOKEVIRTUAL
 
Fields inherited from interface org.objectweb.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, 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, 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, INVOKEDYNAMIC_OWNER, 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
IncrementalTypeDescriptor(TypeDescriptor initialTypeDescriptor)
           
 
Method Summary
 java.util.List<MethodMember> getDeletedMethods()
           
 MethodMember getFromLatestByDescriptor(java.lang.String nameAndDescriptor)
           
 TypeDescriptor getLatestTypeDescriptor()
           
 java.util.List<MethodMember> getNewOrChangedConstructors()
          Return the list of 'new or changed' constructors.
 java.util.List<MethodMember> getNewOrChangedMethods()
          Return the list of 'new or changed' methods.
 TypeDescriptor getOriginal()
           
 boolean hasBeenDeleted(int methodId)
           
static boolean hasChanged(MethodMember mm)
           
static boolean hasVisibilityChanged(MethodMember method)
           
static boolean isBrandNewMethod(MethodMember mm)
           
static boolean isCatcher(MethodMember method)
           
static boolean isNowNonStatic(MethodMember method)
           
static boolean isNowStatic(MethodMember method)
           
 boolean mustUseExecutorForThisMethod(int methodId)
           
 void setLatestTypeDescriptor(TypeDescriptor typeDescriptor)
           
 java.lang.String toString()
           
 java.lang.String toString(boolean compute)
           
static boolean wasDeleted(MethodMember method)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

IncrementalTypeDescriptor

public IncrementalTypeDescriptor(TypeDescriptor initialTypeDescriptor)
Method Detail

getLatestTypeDescriptor

public TypeDescriptor getLatestTypeDescriptor()

setLatestTypeDescriptor

public void setLatestTypeDescriptor(TypeDescriptor typeDescriptor)

getNewOrChangedMethods

public java.util.List<MethodMember> getNewOrChangedMethods()
Return the list of 'new or changed' methods. New or changed is characterised as: * It does not include catchers.


getNewOrChangedConstructors

public java.util.List<MethodMember> getNewOrChangedConstructors()
Return the list of 'new or changed' constructors. New or changed is characterized as:


getDeletedMethods

public java.util.List<MethodMember> getDeletedMethods()

mustUseExecutorForThisMethod

public boolean mustUseExecutorForThisMethod(int methodId)

hasBeenDeleted

public boolean hasBeenDeleted(int methodId)

getFromLatestByDescriptor

public MethodMember getFromLatestByDescriptor(java.lang.String nameAndDescriptor)

isBrandNewMethod

public static boolean isBrandNewMethod(MethodMember mm)
Returns:
true if the method is brand new after a reload (i.e. was never defined in the original type)

hasChanged

public static boolean hasChanged(MethodMember mm)

isCatcher

public static boolean isCatcher(MethodMember method)

isNowNonStatic

public static boolean isNowNonStatic(MethodMember method)

isNowStatic

public static boolean isNowStatic(MethodMember method)

hasVisibilityChanged

public static boolean hasVisibilityChanged(MethodMember method)

wasDeleted

public static boolean wasDeleted(MethodMember method)

getOriginal

public TypeDescriptor getOriginal()

toString

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

toString

public java.lang.String toString(boolean compute)