public final class BCELCodeGenerator
extends java.lang.Object
BCELCodeGenerator creates implementations for the
Methods and
Fields needed in creating a
WrapperClass.
| Modifier and Type | Class and Description |
|---|---|
private static class |
BCELCodeGenerator.MethodDesc |
| Modifier and Type | Field and Description |
|---|---|
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 and Description |
|---|
BCELCodeGenerator()
Default constructor.
|
| Modifier and Type | Method and Description |
|---|---|
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?
|
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
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.IllegalArgumentExceptionpublic 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.IllegalStateExceptionpublic org.apache.bcel.classfile.Method createMethodWrapper(BCELCodeGenerator.MethodDesc meth) throws java.lang.IllegalArgumentException, java.lang.IllegalStateException
public ()
throws
{
return this..();
}
meth - The method descriptorMethod
object representing the created methodjava.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 forMethod
instances representing the interface implementation.java.lang.IllegalArgumentException - If interfaceToImplement is null
or does not represent an interfacejava.lang.IllegalStateException - If this instance has not been initializedjava.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
extractMethodprivate 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 interfacejava.lang.IllegalArgumentException - If interfaceToImplement does not represent an interfacejava.lang.NullPointerException - if the interfaceToImplement is nulljava.lang.Exceptionprivate static final void extractMethods(org.apache.bcel.classfile.JavaClass interfaceToImplement,
java.util.Set methods)