Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.codehaus.aspectwerkz.transform.inlining.weaver
Class SerialVersionUidVisitor

    java.lang.Object
      org.objectweb.asm.ClassAdapter
          org.codehaus.aspectwerkz.transform.inlining.weaver.SerialVersionUidVisitor

All Implemented Interfaces:
  org.objectweb.asm.ClassVisitor, org.objectweb.asm.Constants

    public class SerialVersionUidVisitor

extends org.objectweb.asm.ClassAdapter
implements org.objectweb.asm.Constants

See http://java.sun.com/j2se/1.5.0/docs/guide/serialization/spec/class.html#60

The SerialVersionUidVisitor lookups for the serial ver uid and compute it when not found. See Add and Compute subclasses. Initial implementation courtesy of Vishal Vishnoi

Author:
  Alexandre Vasseur

Nested Class Summary
`static class` | `SerialVersionUidVisitor.Add` Add the serial version uid to the class if not already present

Field Summary
`static String` | `CLINIT`
`static String` | `INIT`
`protected int` | `m_access` Classes access flag
`protected String` | `m_className` Internal name of the class
`protected boolean` | `m_computeSVUID` flag that indicates if we need to compute SVUID (no need for interfaces)
`protected boolean` | `m_hadSVUID` Set to true if the class already has SVUID
`protected boolean` | `m_hasStaticInitializer` Set to true if the class has static initializer
`protected String[]` | `m_interfaces` Interfaces implemented by the class
`protected long` | `m_SVUID` The SVUID value (valid at the end of the visit only ie the one that was present or the computed one)
`protected Collection` | `m_svuidConstructors` Collection of non private constructors.
`protected Collection` | `m_svuidFields` Collection of fields.
`protected Collection` | `m_svuidMethods` Collection of non private method
`static String` | `SVUID_NAME`

Fields inherited from class org.objectweb.asm.ClassAdapter
`cv`

Fields inherited from interface org.objectweb.asm.Constants
`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, DREM, DRETURN, DSTORE, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, 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, 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, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSUB, LUSHR, LXOR, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, NEW, NEWARRAY, NOP, 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, V1_1, V1_2, V1_3, V1_4, V1_5`

Method Summary
`static long` | `calculateSerialVersionUID(Class klass)` helper method (test purpose)
`protected long` | `computeSVUID()` Returns the value of SVUID if the class doesn't have one already.
`protected boolean` | `mayNeedSerialVersionUid(int access)`
`void` | `visit(int version, int access, String name, String superName, String[] interfaces, String sourceFile)` Visit class header and get class name, access , and interfaces information (step 1,2, and 3) for SVUID computation.
`void` | `visitEnd()` Add the SVUID if class doesn't have one
`void` | `visitField(int access, String name, String desc, Object value, org.objectweb.asm.Attribute attrs)` Gets class field information for step 4 of the alogrithm.
`org.objectweb.asm.CodeVisitor` | `visitMethod(int access, String name, String desc, String[] exceptions, org.objectweb.asm.Attribute attrs)` Visit the methods and get constructor and method information (step 5 and 7).
`protected void` | `writeItems(Collection itemCollection, DataOutputStream dos, boolean dotted)` Sorts the items in the collection and writes it to the data output stream

Methods inherited from class org.objectweb.asm.ClassAdapter
`visitAttribute, visitInnerClass`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### CLINIT

    public static final String CLINIT

See Also:
  Constant Field Values

### INIT

    public static final String INIT

See Also:
  Constant Field Values

### SVUID_NAME

    public static final String SVUID_NAME

See Also:
  Constant Field Values

### m_computeSVUID

    protected boolean m_computeSVUID

  flag that indicates if we need to compute SVUID (no need for interfaces)

### m_hadSVUID

    protected boolean m_hadSVUID

  Set to true if the class already has SVUID

### m_SVUID

    protected long m_SVUID

  The SVUID value (valid at the end of the visit only ie the one that was present or the computed one)

### m_className

    protected String m_className

  Internal name of the class

### m_access

    protected int m_access

  Classes access flag

### m_interfaces

    protected String[] m_interfaces

  Interfaces implemented by the class

### m_svuidFields

    protected Collection m_svuidFields

  Collection of fields. (except private static and private transient fields)

### m_hasStaticInitializer

    protected boolean m_hasStaticInitializer

  Set to true if the class has static initializer

### m_svuidConstructors

    protected Collection m_svuidConstructors

  Collection of non private constructors.

### m_svuidMethods

    protected Collection m_svuidMethods

  Collection of non private method

Method Detail

### calculateSerialVersionUID

    public static long calculateSerialVersionUID(Class klass)

  helper method (test purpose)

  Parameters:
    `klass` -
  Returns:

### visit

    public void visit(int version,
                      int access,
                      String name,
                      String superName,
                      String[] interfaces,
                      String sourceFile)

  Visit class header and get class name, access , and interfaces information (step 1,2, and 3) for SVUID computation.

  Specified by:
    `visit` in interface `org.objectweb.asm.ClassVisitor`
  Overrides:
    `visit` in class `org.objectweb.asm.ClassAdapter`

### visitMethod

    public org.objectweb.asm.CodeVisitor visitMethod(int access,
                                                     String name,
                                                     String desc,
                                                     String[] exceptions,
                                                     org.objectweb.asm.Attribute attrs)

  Visit the methods and get constructor and method information (step 5 and 7). Also determince if there is a class initializer (step 6).

  Specified by:
    `visitMethod` in interface `org.objectweb.asm.ClassVisitor`
  Overrides:
    `visitMethod` in class `org.objectweb.asm.ClassAdapter`

### visitField

    public void visitField(int access,
                           String name,
                           String desc,
                           Object value,
                           org.objectweb.asm.Attribute attrs)

  Gets class field information for step 4 of the alogrithm. Also determines if the class already has a SVUID.

  Specified by:
    `visitField` in interface `org.objectweb.asm.ClassVisitor`
  Overrides:
    `visitField` in class `org.objectweb.asm.ClassAdapter`

### visitEnd

    public void visitEnd()

  Add the SVUID if class doesn't have one

  Specified by:
    `visitEnd` in interface `org.objectweb.asm.ClassVisitor`
  Overrides:
    `visitEnd` in class `org.objectweb.asm.ClassAdapter`

### mayNeedSerialVersionUid

    protected boolean mayNeedSerialVersionUid(int access)

### computeSVUID

    protected long computeSVUID()
                         throws IOException,
                                NoSuchAlgorithmException

  Returns the value of SVUID if the class doesn't have one already. Please note that 0 is returned if the class already has SVUID, thus use `isHasSVUID` to determine if the class already had an SVUID.

  Returns:
    Returns the serila version UID
  Throws:
    `IOException`
    `NoSuchAlgorithmException`

### writeItems

    protected void writeItems(Collection itemCollection,
                              DataOutputStream dos,
                              boolean dotted)
                       throws IOException

  Sorts the items in the collection and writes it to the data output stream

  Parameters:
    `itemCollection` - collection of items
    `dos` - a `DataOutputStream` value
    `dotted` - a `boolean` value
  Throws:
    `IOException` - if an error occurs

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2005 Jonas Bonér, Alexandre Vasseur. All Rights Reserved.