|
||||||||||
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
Method
s and
Field
s 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 Method s
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.Exception
private 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
Method
private boolean isInitialized()
static BCELCodeGenerator.MethodDesc[] extractMethods(org.apache.bcel.classfile.JavaClass[] interfacesToImplement) throws java.lang.Exception
Method
s
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.
Method
s
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 |