|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.avalon.fortress.impl.factory.BCELCodeGenerator
public final class BCELCodeGenerator
BCELCodeGenerator creates implementations for the
Methods and
Fields needed in creating a
WrapperClass.
| Nested Class Summary | |
|---|---|
private static class |
BCELCodeGenerator.MethodDesc
|
| Field Summary | |
|---|---|
private static java.lang.String |
ACCESSOR_METHOD_NAME
The name of the field accessor used to ask the generated wrapper for the wrapped class instance. |
private org.apache.bcel.generic.ClassGen |
m_classGenerator
The ClassGen instance to use for
code generation. |
private org.apache.bcel.classfile.JavaClass |
m_classToWrap
Class object holding the type of the object we want to create a wrapper for. |
private org.apache.bcel.generic.Type |
m_classToWrapType
The Type of the class we want to
create a wrapper for. |
private org.apache.bcel.generic.ConstantPoolGen |
m_constPoolGenerator
The ConstantPoolGen
instance to use for code generation. |
private org.apache.bcel.generic.InstructionFactory |
m_instructionFactory
The InstructionFactory to
use during code gereration. |
private org.apache.bcel.generic.InstructionList |
m_instructionList
The InstructionList instance
to use during code generation. |
private boolean |
m_isInitialized
Flag indicating whether this instance is already initialized or not. |
private java.lang.String |
m_wrapperClassName
The name of the wrapper class to be created. |
private java.lang.String |
m_wrapperSuperclassName
The name of the superclass of the wrapper class to be generated. |
private static java.lang.String |
WRAPPED_CLASS_FN
The name of the field holding the wrapped class in the generated wrapper, e.g. |
| Constructor Summary | |
|---|---|
BCELCodeGenerator()
Default constructor. |
|
| Method Summary | |
|---|---|
org.apache.bcel.classfile.Method |
createDefaultConstructor()
Create the wrapper class' default constructor: |
org.apache.bcel.classfile.Method[] |
createImplementation(org.apache.bcel.classfile.JavaClass[] interfacesToImplement)
Creates an implementation for the supplied JavaClass
instance representing an interface. |
org.apache.bcel.classfile.Method |
createMethodWrapper(BCELCodeGenerator.MethodDesc meth)
Create a method declaration/definition of the form |
org.apache.bcel.classfile.Method |
createMethodWrapper(org.apache.bcel.classfile.Method methodToWrap)
Create a method declaration/definition of the form |
org.apache.bcel.classfile.Method |
createWrappedClassAccessor()
Create a field accessor for the wrapped class instance of the form |
org.apache.bcel.classfile.Field |
createWrappedClassField()
Create a field declaration of the form |
private org.apache.bcel.classfile.Method |
extractMethod(org.apache.bcel.generic.MethodGen mg)
Extracts the Method out of
the supplied MethodGen instance,
clears the InstructionList
and returns the extracted Method. |
(package private) static BCELCodeGenerator.MethodDesc[] |
extractMethods(org.apache.bcel.classfile.JavaClass[] interfacesToImplement)
Extracts the collection of Methods
declared in the supplied JavaClass
instance. |
private static void |
extractMethods(org.apache.bcel.classfile.JavaClass interfaceToImplement,
java.util.Set methods)
|
private void |
findImplementation(BCELCodeGenerator.MethodDesc meth)
|
void |
init(java.lang.String wrapperClassName,
java.lang.String wrapperSuperclassName,
org.apache.bcel.classfile.JavaClass classToWrap,
org.apache.bcel.generic.ClassGen classGenerator)
|
private boolean |
isInitialized()
Has this instance already been initialized? |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
private static final java.lang.String WRAPPED_CLASS_FN
private final WRAPPED_CLASS_FN;
private static final java.lang.String ACCESSOR_METHOD_NAME
private java.lang.String m_wrapperClassName
private java.lang.String m_wrapperSuperclassName
private org.apache.bcel.classfile.JavaClass m_classToWrap
private org.apache.bcel.generic.Type m_classToWrapType
Type of the class we want to
create a wrapper for.
private org.apache.bcel.generic.ClassGen m_classGenerator
ClassGen instance to use for
code generation.
private org.apache.bcel.generic.ConstantPoolGen m_constPoolGenerator
ConstantPoolGen
instance to use for code generation.
private final org.apache.bcel.generic.InstructionList m_instructionList
InstructionList instance
to use during code generation.
private org.apache.bcel.generic.InstructionFactory m_instructionFactory
InstructionFactory to
use during code gereration.
private boolean m_isInitialized
| Constructor Detail |
|---|
public BCELCodeGenerator()
| Method Detail |
|---|
public void init(java.lang.String wrapperClassName,
java.lang.String wrapperSuperclassName,
org.apache.bcel.classfile.JavaClass classToWrap,
org.apache.bcel.generic.ClassGen classGenerator)
throws java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
public org.apache.bcel.classfile.Field createWrappedClassField()
throws java.lang.IllegalStateException
private WRAPPED_CLASS_FN;
java.lang.IllegalStateException - If this instance is not initialized.
public org.apache.bcel.classfile.Method createDefaultConstructor()
throws java.lang.IllegalStateException
public ( classToWrap)
{
this. = classToWrap;
}
java.lang.IllegalStateException - If this instance is not initialized.
public org.apache.bcel.classfile.Method createWrappedClassAccessor()
throws java.lang.IllegalStateException
public Object ()
{
return this.;
}
java.lang.IllegalStateException
public org.apache.bcel.classfile.Method createMethodWrapper(BCELCodeGenerator.MethodDesc meth)
throws java.lang.IllegalArgumentException,
java.lang.IllegalStateException
public ()
throws
{
return this..();
}
meth - The method descriptor
Method
object representing the created method
java.lang.IllegalArgumentException - If any of the parameters passed in is null.
java.lang.IllegalStateException - If this instance is not initialized.private void findImplementation(BCELCodeGenerator.MethodDesc meth)
public org.apache.bcel.classfile.Method createMethodWrapper(org.apache.bcel.classfile.Method methodToWrap)
throws java.lang.IllegalArgumentException,
java.lang.IllegalStateException
public ()
throws
{
return this..();
}
methodToWrap - The Method to create a wrapper for.
java.lang.IllegalArgumentException - If methodToWrao is null.
java.lang.IllegalStateException - If this instance is not initialized.
public org.apache.bcel.classfile.Method[] createImplementation(org.apache.bcel.classfile.JavaClass[] interfacesToImplement)
throws java.lang.Exception
JavaClass
instance representing an interface.
interfacesToImplement - The interfaces we want to create an implementation for
Method
instances representing the interface implementation.
java.lang.IllegalArgumentException - If interfaceToImplement is null
or does not represent an interface
java.lang.IllegalStateException - If this instance has not been initialized
java.lang.Exceptionprivate org.apache.bcel.classfile.Method extractMethod(org.apache.bcel.generic.MethodGen mg)
Method out of
the supplied MethodGen instance,
clears the InstructionList
and returns the extracted Method.
mg - The MethodGen instance
holding the Method to
extract
Methodprivate boolean isInitialized()
static BCELCodeGenerator.MethodDesc[] extractMethods(org.apache.bcel.classfile.JavaClass[] interfacesToImplement)
throws java.lang.Exception
Methods
declared in the supplied JavaClass
instance. This instance is supposed to represent an interface.
interfacesToImplement - The JavaClass
instances representing the interfaces we are asking for
its methods.
Methods
declared by the interface
java.lang.IllegalArgumentException - If interfaceToImplement does not represent an interface
java.lang.NullPointerException - if the interfaceToImplement is null
java.lang.Exception
private static final void extractMethods(org.apache.bcel.classfile.JavaClass interfaceToImplement,
java.util.Set methods)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||