org.jibx.binding.classes
Class MarshalBuilder

java.lang.Object
  extended by org.jibx.binding.classes.BindingMethod
      extended by org.jibx.binding.classes.MethodBuilder
          extended by org.jibx.binding.classes.ExceptionMethodBuilder
              extended by org.jibx.binding.classes.ContextMethodBuilder
                  extended by org.jibx.binding.classes.MarshalUnmarshalBuilder
                      extended by org.jibx.binding.classes.MarshalBuilder

public class MarshalBuilder
extends MarshalUnmarshalBuilder

Marshalling method builder. Tracks the creation of a marshalling method, including special handling of exceptions that may be generated by object accesses during the marshalling process.

Author:
Dennis M. Sosnoski

Field Summary
protected static java.lang.String MARSHAL_EXCEPTION_TEXT
           
private static java.lang.String MARSHALCONTEXT_CLASS
           
private static Type MARSHALCONTEXT_TYPE
           
 
Fields inherited from class org.jibx.binding.classes.MethodBuilder
EXCEPTION_CONSTRUCTOR_SIGNATURE1, EXCEPTION_CONSTRUCTOR_SIGNATURE2, FRAMEWORK_EXCEPTION_CLASS, m_exceptions, m_generator, m_hashCode, m_instructionBuilder, m_item, m_method, m_targetBranches, m_valueMap, s_argNameLists, SYNTHETIC_ACCESS_FLAG
 
Constructor Summary
MarshalBuilder(java.lang.String name, ClassFile cf, ClassFile mf)
          Constructor.
 
Method Summary
 InstructionHandle genExceptionHandler()
          Add exception handler code.
 
Methods inherited from class org.jibx.binding.classes.MarshalUnmarshalBuilder
handleExceptions
 
Methods inherited from class org.jibx.binding.classes.ContextMethodBuilder
getFullName, isStaticMethod, loadContext, loadContext, loadObject, loadObject, setObjectSlot, storeObject
 
Methods inherited from class org.jibx.binding.classes.ExceptionMethodBuilder
defineSlot, freeSlot, getSlot
 
Methods inherited from class org.jibx.binding.classes.MethodBuilder
addException, addLocal, addMethod, addMethodExceptions, appendAASTORE, appendACONST_NULL, appendALOAD, appendARRAYLENGTH, appendASTORE, appendCall, appendCallInit, appendCallInterface, appendCallStatic, appendCallVirtual, appendCreateArray, appendCreateCast, appendCreateCast, appendCreateNew, appendDCMPG, appendDUP_X1, appendDUP, appendDUP2, appendFCMPG, appendGet, appendGetField, appendGetStatic, appendIASTORE, appendICONST_0, appendICONST_1, appendIF_ICMPNE, appendIFEQ, appendIFGE, appendIFLT, appendIFNE, appendIFNONNULL, appendIFNULL, appendIncrementLocal, appendInstanceOf, appendISUB, appendIXOR, appendLCMP, appendLoadConstant, appendLoadConstant, appendLoadConstant, appendLoadLocal, appendPOP, appendPOP2, appendPut, appendPutField, appendPutStatic, appendReturn, appendReturn, appendStoreLocal, appendSWAP, appendSWAP1For2, appendTargetACONST_NULL, appendTargetCreateNew, appendTargetLoadConstant, appendTargetLoadConstant, appendTargetNOP, appendThrow, appendUnconditionalBranch, codeComplete, createLocal, getAccessFlags, getFirstInstruction, getItem, getKeyValue, getLastInstruction, getMethod, getName, getSignature, hashCode, initStackState, initStackState, initStackState, internalAppendCreateNew, isStackTopLong, setAccessFlags, setKeyValue, setTarget, targetNext, targetNext
 
Methods inherited from class org.jibx.binding.classes.BindingMethod
computeMethodHash, equals, getClassFile, makeAccessible
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

MARSHALCONTEXT_CLASS

private static final java.lang.String MARSHALCONTEXT_CLASS
See Also:
Constant Field Values

MARSHAL_EXCEPTION_TEXT

protected static final java.lang.String MARSHAL_EXCEPTION_TEXT
See Also:
Constant Field Values

MARSHALCONTEXT_TYPE

private static final Type MARSHALCONTEXT_TYPE
Constructor Detail

MarshalBuilder

public MarshalBuilder(java.lang.String name,
                      ClassFile cf,
                      ClassFile mf)
Constructor. This sets up for constructing a marshalling method with public access and wrapped exception handling. If the method is being generated directly to the class being marshalled it's built as a virtual method; otherwise, it's done as a static method.

Parameters:
name - method name to be built
cf - owning class file information
mf - method generation class file information
Method Detail

genExceptionHandler

public InstructionHandle genExceptionHandler()
Add exception handler code. The implementation of this abstract base class method provides handling specific to a marshalling method.

Specified by:
genExceptionHandler in class MarshalUnmarshalBuilder
Returns:
handle for first instruction in handler


Project Web Site