public class InjectionGenerator
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
static class |
InjectionGenerator.BranchFixup |
static class |
InjectionGenerator.PrimitiveTypeInfo |
Modifier and Type | Field and Description |
---|---|
protected boolean |
generateClassFiles |
protected static InjectionGenerator |
instance |
protected boolean |
listGeneratedCode |
protected java.lang.String |
outputDir |
protected static InjectionGenerator.PrimitiveTypeInfo[] |
primitiveTypes |
Constructor and Description |
---|
InjectionGenerator(boolean generateClassFiles,
java.lang.String outputDir,
boolean listGeneratedCode)
InjectionGenerator constructor
|
Modifier and Type | Method and Description |
---|---|
protected void |
addAOByteBufferFieldGet(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.Type fieldType,
InjectionGenerator.PrimitiveTypeInfo info,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.generic.InstructionList il) |
protected void |
addAOByteBufferFieldPut(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.Type fieldType,
InjectionGenerator.PrimitiveTypeInfo info,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.generic.InstructionList il) |
protected void |
addFieldFetch(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.InstructionList il) |
protected void |
addMarshallingForField(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.generic.InstructionList il) |
protected void |
addStack(int count) |
protected void |
addUnmarshallingForField(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.generic.ConstantPoolGen cp,
org.apache.bcel.generic.InstructionList il) |
protected java.lang.String |
aggregateTypeString(org.apache.bcel.generic.ObjectType fieldObjectType) |
protected org.apache.bcel.generic.MethodGen |
createMarshallingMethod(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.JavaClass superclass,
org.apache.bcel.generic.ConstantPoolGen cp,
org.apache.bcel.generic.InstructionFactory factory,
java.util.LinkedList<org.apache.bcel.classfile.Field> fields,
java.util.LinkedList<java.lang.Integer> nullTestedFields,
int flagBitCount)
Create the marshalObject method
|
protected org.apache.bcel.generic.MethodGen |
createUnmarshallingMethod(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.JavaClass superclass,
org.apache.bcel.generic.ConstantPoolGen cp,
org.apache.bcel.generic.InstructionFactory factory,
java.util.LinkedList<org.apache.bcel.classfile.Field> fields,
java.util.LinkedList<java.lang.Integer> nullTestedFields,
int flagBitCount)
Create the unmarshalObject method
|
protected boolean |
doesOrWillHandleMarshallable(org.apache.bcel.generic.ObjectType type) |
protected java.lang.Short |
getAggregateTypeNum(org.apache.bcel.generic.ObjectType fieldObjectType) |
protected int |
getFinalStack() |
static InjectionGenerator |
getInstance()
Get the InjectionGenerator singleton instance
|
protected static InjectionGenerator.PrimitiveTypeInfo |
getPrimitiveTypeInfo(org.apache.bcel.generic.Type type) |
protected static java.util.LinkedList<org.apache.bcel.classfile.Field> |
getValidClassFields(org.apache.bcel.classfile.JavaClass c) |
static org.apache.bcel.classfile.JavaClass |
getValidSuperclass(org.apache.bcel.classfile.JavaClass c) |
static boolean |
handlesMarshallable(org.apache.bcel.classfile.JavaClass clazz) |
protected boolean |
handlesMarshallable(org.apache.bcel.generic.ObjectType type) |
static boolean |
handlesMarshallable(java.lang.String typeName) |
static void |
initialize(boolean generateClassFiles,
java.lang.String outputDir,
boolean listGeneratedCode) |
protected void |
initializeGlobals() |
protected void |
initStack() |
protected org.apache.bcel.classfile.JavaClass |
injectMarshallingMethods(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.JavaClass superclass,
java.util.LinkedList<org.apache.bcel.classfile.Field> fields,
java.util.LinkedList<java.lang.Integer> nullTestedFields,
int flagBitCount)
Inject the marshalling methods for this class
|
static boolean |
interfaceClass(java.lang.String s) |
protected static boolean |
isPrimitiveObjectType(org.apache.bcel.generic.Type type) |
protected static boolean |
isPrimitiveType(org.apache.bcel.generic.Type type) |
protected boolean |
isStringType(org.apache.bcel.generic.Type type) |
protected void |
logGeneratedMethod(org.apache.bcel.generic.ClassGen classGen,
org.apache.bcel.generic.MethodGen method) |
protected static void |
logInvoke(java.lang.String s,
org.apache.bcel.generic.InvokeInstruction iv,
org.apache.bcel.generic.ConstantPoolGen cp) |
protected static org.apache.bcel.classfile.JavaClass |
lookupClass(java.lang.String className) |
protected InjectionGenerator.BranchFixup[] |
makeOmittedTest(org.apache.bcel.classfile.JavaClass clazz,
org.apache.bcel.classfile.Field f,
org.apache.bcel.generic.InstructionFactory factory,
org.apache.bcel.generic.InstructionList il) |
protected boolean |
marshalledByMarshallingRuntimeMarshalObject(org.apache.bcel.generic.ObjectType fieldObjectType) |
org.apache.bcel.classfile.JavaClass |
maybeInjectMarshalling(org.apache.bcel.classfile.JavaClass clazz,
java.lang.Short typeNum)
This is the public method called by MarshallingRuntime to
inject marshalling methods into the clazz argument
|
protected static java.lang.String |
nonPrimitiveObjectTypeName(org.apache.bcel.generic.Type type) |
protected void |
noteBranchTargets(InjectionGenerator.BranchFixup[] branchFixups,
org.apache.bcel.generic.InstructionList il) |
protected boolean |
objectTypeIsInterface(org.apache.bcel.generic.ObjectType type) |
protected boolean |
referencesInterface(org.apache.bcel.generic.ObjectType type) |
protected org.apache.bcel.generic.Type |
storageType(org.apache.bcel.generic.Type type) |
protected static void |
throwError(java.lang.String msg) |
protected org.apache.bcel.generic.Type |
underlyingPrimitiveType(org.apache.bcel.generic.Type type) |
protected boolean generateClassFiles
protected java.lang.String outputDir
protected boolean listGeneratedCode
protected static InjectionGenerator.PrimitiveTypeInfo[] primitiveTypes
protected static InjectionGenerator instance
public InjectionGenerator(boolean generateClassFiles, java.lang.String outputDir, boolean listGeneratedCode)
generateClassFiles
- True if we should generate new class files
containing injected methods. This is used by the batch injection code.outputDir
- If not the empty string, this is the directory in
which generated class files should be stored.listGeneratedCode
- True if we should log the generated methods
in the log file. This is only set when debugging InjectionGenerator.public static InjectionGenerator getInstance()
public org.apache.bcel.classfile.JavaClass maybeInjectMarshalling(org.apache.bcel.classfile.JavaClass clazz, java.lang.Short typeNum)
clazz
- The BCEL JavaClass instance representing the class filetypeNum
- The type number for the classprotected org.apache.bcel.classfile.JavaClass injectMarshallingMethods(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.JavaClass superclass, java.util.LinkedList<org.apache.bcel.classfile.Field> fields, java.util.LinkedList<java.lang.Integer> nullTestedFields, int flagBitCount)
protected void logGeneratedMethod(org.apache.bcel.generic.ClassGen classGen, org.apache.bcel.generic.MethodGen method)
protected org.apache.bcel.generic.MethodGen createMarshallingMethod(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.JavaClass superclass, org.apache.bcel.generic.ConstantPoolGen cp, org.apache.bcel.generic.InstructionFactory factory, java.util.LinkedList<org.apache.bcel.classfile.Field> fields, java.util.LinkedList<java.lang.Integer> nullTestedFields, int flagBitCount)
protected void addMarshallingForField(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.generic.InstructionList il)
protected void addAOByteBufferFieldPut(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.Type fieldType, InjectionGenerator.PrimitiveTypeInfo info, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.generic.InstructionList il)
protected InjectionGenerator.BranchFixup[] makeOmittedTest(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.generic.InstructionList il)
protected org.apache.bcel.generic.MethodGen createUnmarshallingMethod(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.JavaClass superclass, org.apache.bcel.generic.ConstantPoolGen cp, org.apache.bcel.generic.InstructionFactory factory, java.util.LinkedList<org.apache.bcel.classfile.Field> fields, java.util.LinkedList<java.lang.Integer> nullTestedFields, int flagBitCount)
protected void addUnmarshallingForField(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.generic.ConstantPoolGen cp, org.apache.bcel.generic.InstructionList il)
protected void addAOByteBufferFieldGet(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.Type fieldType, InjectionGenerator.PrimitiveTypeInfo info, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.generic.InstructionList il)
protected void addFieldFetch(org.apache.bcel.classfile.JavaClass clazz, org.apache.bcel.generic.InstructionFactory factory, org.apache.bcel.classfile.Field f, org.apache.bcel.generic.InstructionList il)
protected static org.apache.bcel.classfile.JavaClass lookupClass(java.lang.String className)
protected static InjectionGenerator.PrimitiveTypeInfo getPrimitiveTypeInfo(org.apache.bcel.generic.Type type)
protected boolean isStringType(org.apache.bcel.generic.Type type)
protected static boolean isPrimitiveObjectType(org.apache.bcel.generic.Type type)
protected static boolean isPrimitiveType(org.apache.bcel.generic.Type type)
protected static java.lang.String nonPrimitiveObjectTypeName(org.apache.bcel.generic.Type type)
protected org.apache.bcel.generic.Type underlyingPrimitiveType(org.apache.bcel.generic.Type type)
protected org.apache.bcel.generic.Type storageType(org.apache.bcel.generic.Type type)
protected java.lang.Short getAggregateTypeNum(org.apache.bcel.generic.ObjectType fieldObjectType)
protected java.lang.String aggregateTypeString(org.apache.bcel.generic.ObjectType fieldObjectType)
protected boolean marshalledByMarshallingRuntimeMarshalObject(org.apache.bcel.generic.ObjectType fieldObjectType)
protected boolean referencesInterface(org.apache.bcel.generic.ObjectType type)
protected boolean doesOrWillHandleMarshallable(org.apache.bcel.generic.ObjectType type)
protected boolean handlesMarshallable(org.apache.bcel.generic.ObjectType type)
public static boolean handlesMarshallable(java.lang.String typeName)
public static boolean handlesMarshallable(org.apache.bcel.classfile.JavaClass clazz)
protected boolean objectTypeIsInterface(org.apache.bcel.generic.ObjectType type)
public static boolean interfaceClass(java.lang.String s)
protected static java.util.LinkedList<org.apache.bcel.classfile.Field> getValidClassFields(org.apache.bcel.classfile.JavaClass c)
public static org.apache.bcel.classfile.JavaClass getValidSuperclass(org.apache.bcel.classfile.JavaClass c)
protected void noteBranchTargets(InjectionGenerator.BranchFixup[] branchFixups, org.apache.bcel.generic.InstructionList il)
protected void initStack()
protected void addStack(int count)
protected int getFinalStack()
protected static void logInvoke(java.lang.String s, org.apache.bcel.generic.InvokeInstruction iv, org.apache.bcel.generic.ConstantPoolGen cp)
protected static void throwError(java.lang.String msg)
protected void initializeGlobals()
public static void initialize(boolean generateClassFiles, java.lang.String outputDir, boolean listGeneratedCode)