org.jibx.binding.def
Class ObjectStringConversion

java.lang.Object
  extended by org.jibx.binding.def.StringConversion
      extended by org.jibx.binding.def.ObjectStringConversion

public class ObjectStringConversion
extends StringConversion

Object string conversion handling. Defines serialization handling for converting objects to and from a String value. The default is to just use the object toString() method for serialization and a constructor from a String value for deserialization. java.lang.String itself is a special case, with no added code used by default for either serializing or deserializing. java.lang.Object is also a special case, with no added code used by default for deserializing (the String value is used directly). Other classes must either implement toString() and a constructor from String, or use custom serializers and/or deserializers.

Author:
Dennis M. Sosnoski

Field Summary
private static java.lang.String FROMSTRING_SIGNATURE
           
private  ClassItem m_initFromString
          Initializer used for creating instance from String (only used if no conversion needed and no deserializer supplied; may be null)
private  ClassItem m_instToString
          toString() method for converting instance to String (only used if conversion needed and no serializer supplied; may be null)
private  boolean m_needDeserialize
          Flag for conversion from String needed (type is anything other than String or Object)
private  boolean m_needSerialize
          Flag for conversion to String needed (type is anything other than String)
private static java.lang.String NAME_METHOD
           
private static java.lang.String NAME_SIGNATURE
           
private static java.lang.String TOSTRING_METHOD
           
private static java.lang.String TOSTRING_SIGNATURE
           
 
Fields inherited from class org.jibx.binding.def.StringConversion
COMPARE_OBJECTS_METHOD, COMPARE_OBJECTS_SIGNATURE, DESERIALIZER_SIGNATURES, m_converter, m_default, m_deserializer, m_serializer, m_typeName, m_typeSignature, MARSHAL_ATTRIBUTE, MARSHAL_ELEMENT, MARSHAL_NAME_VALUES, MARSHAL_SIGNATURE, UNMARSHAL_OPT_ATTRIBUTE, UNMARSHAL_OPT_ELEMENT, UNMARSHAL_OPT_SIGNATURE, UNMARSHAL_REQ_ATTRIBUTE, UNMARSHAL_REQ_ELEMENT, UNMARSHAL_REQ_SIGNATURE, WHITESPACE_CONVERT_SIGNATURES
 
Constructor Summary
ObjectStringConversion(java.lang.Object dflt, java.lang.String ser, java.lang.String deser, java.lang.String type)
          Constructor.
ObjectStringConversion(java.lang.String type, ObjectStringConversion inherit)
          Constructor.
 
Method Summary
protected  java.lang.Object convertDefault(java.lang.String text)
          Convert text representation into default value object.
 StringConversion derive(java.lang.String type, java.lang.String ser, java.lang.String conv, java.lang.String dser, java.lang.String dflt)
          Derive from existing formatting information.
 void genFromText(ContextMethodBuilder mb)
          Generate code to convert String representation.
 void genParseOptional(boolean attr, ContextMethodBuilder mb)
          Generate code to parse and convert optional attribute or element.
 void genParseRequired(boolean attr, ContextMethodBuilder mb)
          Generate code to parse and convert required attribute or element.
protected  BranchWrapper genToOptionalText(java.lang.String type, ContextMethodBuilder mb, int extra)
          Generate code to check if an optional value is not equal to the default.
 void genToText(java.lang.String type, ContextMethodBuilder mb)
          Shared code generation for converting instance of type to String.
private  void initMethods(boolean require)
          Initialize methods used for conversion of types without serializer or deserializer.
 boolean isPrimitive()
          Check if the type handled by this conversion is of a primitive type.
 
Methods inherited from class org.jibx.binding.def.StringConversion
genPopValues, genWriteOptional, genWriteRequired, genWriteText, getTypeName, setDeserializer, setSerializer, setWhitespaceConverter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TOSTRING_METHOD

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

TOSTRING_SIGNATURE

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

FROMSTRING_SIGNATURE

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

NAME_METHOD

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

NAME_SIGNATURE

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

m_needDeserialize

private boolean m_needDeserialize
Flag for conversion from String needed (type is anything other than String or Object)


m_initFromString

private ClassItem m_initFromString
Initializer used for creating instance from String (only used if no conversion needed and no deserializer supplied; may be null)


m_needSerialize

private boolean m_needSerialize
Flag for conversion to String needed (type is anything other than String)


m_instToString

private ClassItem m_instToString
toString() method for converting instance to String (only used if conversion needed and no serializer supplied; may be null)

Constructor Detail

ObjectStringConversion

ObjectStringConversion(java.lang.String type,
                       ObjectStringConversion inherit)
                 throws JiBXException
Constructor. Initializes conversion handling based on the supplied inherited handling.

Parameters:
type - fully qualified name of class handled by conversion
inherit - conversion information inherited by this conversion
Throws:
JiBXException - if error in configuration

ObjectStringConversion

ObjectStringConversion(java.lang.Object dflt,
                       java.lang.String ser,
                       java.lang.String deser,
                       java.lang.String type)
Constructor. Initializes conversion handling based on argument values. This form is only used for constructing the default set of conversions. Because of this, it throws an unchecked exception on error.

Parameters:
dflt - default value object (wrapped value for primitive types, otherwise String)
ser - fully qualified name of serialization method (null if none)
deser - fully qualified name of deserialization method (null if none)
type - fully qualified name of class handled by conversion
Method Detail

initMethods

private void initMethods(boolean require)
                  throws JiBXException
Initialize methods used for conversion of types without serializer or deserializer. Sets flags for types needed, with errors thrown at time of attempted use rather than at definition time. That offers the advantages of simpler handling (we don't need to know which directions are supported in a binding) and more flexibility (can support nested partial definitions cleanly).

Parameters:
require - class loading required flag
Throws:
JiBXException

genFromText

public void genFromText(ContextMethodBuilder mb)
                 throws JiBXException
Generate code to convert String representation. The code generated by this method assumes that the String value has already been pushed on the stack. It consumes this and leaves the converted value on the stack.

Specified by:
genFromText in class StringConversion
Parameters:
mb - method builder
Throws:
JiBXException

genParseOptional

public void genParseOptional(boolean attr,
                             ContextMethodBuilder mb)
                      throws JiBXException
Generate code to parse and convert optional attribute or element. The code generated by this method assumes that the unmarshalling context and name information for the attribute or element have already been pushed on the stack. It consumes these and leaves the converted value (or converted default value, if the item itself is missing) on the stack.

Specified by:
genParseOptional in class StringConversion
Parameters:
attr - item is an attribute (vs element) flag
mb - method builder
Throws:
JiBXException - if error in configuration

genParseRequired

public void genParseRequired(boolean attr,
                             ContextMethodBuilder mb)
                      throws JiBXException
Generate code to parse and convert required attribute or element. The code generated by this method assumes that the unmarshalling context and name information for the attribute or element have already been pushed on the stack. It consumes these and leaves the converted value on the stack.

Specified by:
genParseRequired in class StringConversion
Parameters:
attr - item is an attribute (vs element) flag
mb - method builder
Throws:
JiBXException - if error in configuration

genToText

public void genToText(java.lang.String type,
                      ContextMethodBuilder mb)
               throws JiBXException
Shared code generation for converting instance of type to String. This override of the base class method checks for serialization using the toString method and implements that case directly, while calling the base class method for normal handling. The code generated by this method assumes that the reference to the instance to be converted is on the stack. It consumes the reference, replacing it with the corresponding String value.

Overrides:
genToText in class StringConversion
Parameters:
type - fully qualified class name for value on stack
mb - marshal method builder
Throws:
JiBXException - if error in configuration

genToOptionalText

protected BranchWrapper genToOptionalText(java.lang.String type,
                                          ContextMethodBuilder mb,
                                          int extra)
                                   throws JiBXException
Generate code to check if an optional value is not equal to the default. The code generated by this method assumes that the actual value to be converted has already been pushed on the stack. It consumes this, leaving the converted text reference on the stack if it's not equal to the default value.

Specified by:
genToOptionalText in class StringConversion
Parameters:
type - fully qualified class name for value on stack
mb - method builder
extra - count of extra values to be popped from stack if missing
Returns:
handle for branch taken when value is equal to the default (target must be set by caller)
Throws:
JiBXException - if error in configuration

isPrimitive

public boolean isPrimitive()
Check if the type handled by this conversion is of a primitive type.

Specified by:
isPrimitive in class StringConversion
Returns:
false to indicate object type

convertDefault

protected java.lang.Object convertDefault(java.lang.String text)
                                   throws JiBXException
Convert text representation into default value object. For object types this just returns the text value.

Specified by:
convertDefault in class StringConversion
Parameters:
text - value representation to be converted
Returns:
converted default value object
Throws:
JiBXException - on conversion error

derive

public StringConversion derive(java.lang.String type,
                               java.lang.String ser,
                               java.lang.String conv,
                               java.lang.String dser,
                               java.lang.String dflt)
                        throws JiBXException
Derive from existing formatting information. This allows constructing a new instance from an existing format of the same or an ancestor type, with the properties of the existing format copied to the new instance except where overridden by the supplied values.

Specified by:
derive in class StringConversion
Parameters:
type - fully qualified name of class handled by conversion (null if inherited)
ser - fully qualified name of serialization method (null if inherited)
conv - fully qualified name of whitespace conversion method (null if inherited)
dser - fully qualified name of deserialization method (null if inherited)
dflt - default value text (null if inherited)
Returns:
new instance initialized from existing one
Throws:
JiBXException - if error in configuration information


Project Web Site