org.apache.axis2.description.java2wsdl.bytecode
Class ClassReader

java.lang.Object
  extended by java.io.InputStream
      extended by java.io.ByteArrayInputStream
          extended by org.apache.axis2.description.java2wsdl.bytecode.ClassReader
All Implemented Interfaces:
java.io.Closeable
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.


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)
          Loads 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()
          Reads an attributes array.
 void readCode()
          Reads 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.axis2.description.java2wsdl.bytecode.ClassReader.NameAndType resolveNameAndType(int i)
           
protected  java.lang.String resolveUtf8(int i)
           
protected  void skipAttributes()
           
protected  void skipFully(int n)
          Skips 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
Loads 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:
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:
Returns the next unsigned 16 bit value.

readInt

protected final int readInt()
Returns:
Returns the next signed 32 bit value.

skipFully

protected void skipFully(int n)
                  throws java.io.IOException
Skips 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.axis2.description.java2wsdl.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
Reads 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
Reads a code attribute.

Throws:
java.io.IOException


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