## org.apache.axis.utils.bytecode
Class ClassReader

    java.lang.Object
      java.io.InputStream
          java.io.ByteArrayInputStream
              org.apache.axis.utils.bytecode.ClassReader

Direct Known Subclasses:
  ParamReader

public class ClassReader
extends java.io.ByteArrayInputStream

This is the class file reader for obtaining the parameter names for declared methods in a class. The class must have debugging attributes for us to obtain this information.

This does not work for inherited methods. To obtain parameter names for inherited methods, you must use a paramReader for the class that originally declared the method.

don't get tricky, it's the bare minimum. Instances of this class are not threadsafe -- don't share them.

Author:
  Edwin Smith, Macromedia

Field Summary

Fields inherited from class java.io.ByteArrayInputStream
`buf, count, mark, pos`

Constructor Summary
`protected` `ClassReader(byte[] buf, java.util.Map attrMethods)`

Method Summary
`protected static java.util.Map` `findAttributeReaders(java.lang.Class c)`
`protected static byte[]` `getBytes(java.lang.Class c)` load the bytecode for a given class, by using the class's defining classloader and assuming that for a class named P.C, the bytecodes are in a resource named /P/C.class.
`protected static java.lang.String` `getSignature(java.lang.reflect.Member method, java.lang.Class[] paramTypes)`
`protected void` `readAttributes()` read an attributes array.
`void` `readCode()` read a code attribute
`protected void` `readCpool()`
`protected int` `readInt()`
`protected int` `readShort()`
`protected java.lang.Class` `resolveClass(int i)`
`protected java.lang.reflect.Field` `resolveField(int i)`
`protected java.lang.reflect.Member` `resolveMethod(int index)`
`protected org.apache.axis.utils.bytecode.ClassReader.NameAndType` `resolveNameAndType(int i)`
`protected java.lang.String` `resolveUtf8(int i)`
`protected void` `skipAttributes()`
`protected void` `skipFully(int n)` skip n bytes in the input stream.

Methods inherited from class java.io.ByteArrayInputStream
`available, close, mark, markSupported, read, read, reset, skip`

Methods inherited from class java.io.InputStream
`read`

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

Constructor Detail

### ClassReader

    protected ClassReader(byte[] buf,
                          java.util.Map attrMethods)

Method Detail

### getBytes

    protected static byte[] getBytes(java.lang.Class c)
                              throws java.io.IOException

  load the bytecode for a given class, by using the class's defining classloader and assuming that for a class named P.C, the bytecodes are in a resource named /P/C.class.

  Parameters:
    `c` - the class of interest
  Returns:
    a byte array containing the bytecode
  Throws:
    `java.io.IOException`

### findAttributeReaders

    protected static java.util.Map findAttributeReaders(java.lang.Class c)

### getSignature

    protected static java.lang.String getSignature(java.lang.reflect.Member method,
                                                   java.lang.Class[] paramTypes)

### readShort

    protected final int readShort()

  Returns:
    the next unsigned 16 bit value

### readInt

    protected final int readInt()

  Returns:
    the next signed 32 bit value

### skipFully

    protected void skipFully(int n)
                      throws java.io.IOException

  skip n bytes in the input stream.

  Throws:
    `java.io.IOException`

### resolveMethod

    protected final java.lang.reflect.Member resolveMethod(int index)
                                                    throws java.io.IOException,
                                                           java.lang.ClassNotFoundException,
                                                           java.lang.NoSuchMethodException

  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`
    `java.lang.NoSuchMethodException`

### resolveField

    protected final java.lang.reflect.Field resolveField(int i)
                                                  throws java.io.IOException,
                                                         java.lang.ClassNotFoundException,
                                                         java.lang.NoSuchFieldException

  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`
    `java.lang.NoSuchFieldException`

### resolveNameAndType

    protected final org.apache.axis.utils.bytecode.ClassReader.NameAndType resolveNameAndType(int i)
                                                                                       throws java.io.IOException

  Throws:
    `java.io.IOException`

### resolveClass

    protected final java.lang.Class resolveClass(int i)
                                          throws java.io.IOException,
                                                 java.lang.ClassNotFoundException

  Throws:
    `java.io.IOException`
    `java.lang.ClassNotFoundException`

### resolveUtf8

    protected final java.lang.String resolveUtf8(int i)
                                          throws java.io.IOException

  Throws:
    `java.io.IOException`

### readCpool

    protected final void readCpool()
                            throws java.io.IOException

  Throws:
    `java.io.IOException`

### skipAttributes

    protected final void skipAttributes()
                                 throws java.io.IOException

  Throws:
    `java.io.IOException`

### readAttributes

    protected final void readAttributes()
                                 throws java.io.IOException

  read an attributes array. the elements of a class file that can contain attributes are: fields, methods, the class itself, and some other types of attributes.

  Throws:
    `java.io.IOException`

### readCode

    public void readCode()
                  throws java.io.IOException

  read a code attribute

  Throws:
    `java.io.IOException`

Copyright © 2005 Apache Web Services Project. All Rights Reserved.