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
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 |
ClassReader
protected ClassReader(byte[] buf,
java.util.Map attrMethods)
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.
resolveMethod
protected final java.lang.reflect.Member resolveMethod(int index)
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
resolveNameAndType
protected final org.apache.axis.utils.bytecode.ClassReader.NameAndType resolveNameAndType(int i)
throws java.io.IOException
resolveClass
protected final java.lang.Class resolveClass(int i)
throws java.io.IOException,
java.lang.ClassNotFoundException
resolveUtf8
protected final java.lang.String resolveUtf8(int i)
throws java.io.IOException
readCpool
protected final void readCpool()
throws java.io.IOException
skipAttributes
protected final void skipAttributes()
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.
readCode
public void readCode()
throws java.io.IOException
- read a code attribute
- Throws:
java.io.IOException
-
Copyright © 2003 Apache Web Services Project. All Rights Reserved.