org.jibx.binding.def
Class StringConversion

java.lang.Object
  extended by org.jibx.binding.def.StringConversion
Direct Known Subclasses:
ObjectStringConversion, PrimitiveStringConversion

public abstract class StringConversion
extends java.lang.Object

String conversion handling. Defines serialization handling for converting to and from a String value. This uses an inheritance approach, where each serialization definition is initialized based on the handling set for the containing definition of the same (or parent class) type.

Version:
1.0
Author:
Dennis M. Sosnoski

Field Summary
protected static java.lang.String COMPARE_OBJECTS_METHOD
           
protected static java.lang.String COMPARE_OBJECTS_SIGNATURE
           
protected static java.lang.String[] DESERIALIZER_SIGNATURES
           
protected  java.lang.Object m_default
          Default value used for this type (wrapper for primitives, otherwise String or null).
protected  ClassItem m_deserializer
          Deserializer method information.
protected  java.lang.String m_formatName
          Name of format.
protected  ClassItem m_serializer
          Serializer method information.
protected  java.lang.String m_typeName
          Fully qualified name of class handled by conversion.
protected  java.lang.String m_typeSignature
          Signature of class handled by conversion.
protected static java.lang.String MARSHAL_ATTRIBUTE
           
protected static java.lang.String MARSHAL_ELEMENT
           
static int MARSHAL_NAME_VALUES
           
protected static java.lang.String MARSHAL_SIGNATURE
           
protected static java.lang.String UNMARSHAL_OPT_ATTRIBUTE
           
protected static java.lang.String UNMARSHAL_OPT_ELEMENT
           
protected static java.lang.String UNMARSHAL_OPT_SIGNATURE
           
protected static java.lang.String UNMARSHAL_REQ_ATTRIBUTE
           
protected static java.lang.String UNMARSHAL_REQ_ELEMENT
           
protected static java.lang.String UNMARSHAL_REQ_SIGNATURE
           
 
Constructor Summary
(package private) StringConversion(java.lang.Object dflt, java.lang.String ser, java.lang.String deser, java.lang.String type)
          Constructor.
private StringConversion(java.lang.String type)
          Constructor.
protected StringConversion(java.lang.String type, StringConversion inherit)
          Constructor.
 
Method Summary
protected abstract  java.lang.Object convertDefault(java.lang.String text)
          Convert text representation into default value object.
abstract  StringConversion derive(java.lang.String type, java.lang.String ser, java.lang.String dser, java.lang.String dflt)
          Derive from existing formatting information.
abstract  void genFromText(ContextMethodBuilder mb)
          Generate code to convert String representation.
abstract  void genParseOptional(boolean attr, ContextMethodBuilder mb)
          Generate code to parse and convert optional attribute or element.
abstract  void genParseRequired(boolean attr, ContextMethodBuilder mb)
          Generate code to parse and convert required attribute or element.
 void genPopValues(int count, ContextMethodBuilder mb)
          Generate code to pop values from stack.
protected abstract  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)
          Generate code to convert value to a String.
 void genWriteOptional(boolean attr, java.lang.String type, ContextMethodBuilder mb)
          Generate code to convert and write optional value to generated document.
 void genWriteRequired(boolean attr, java.lang.String type, ContextMethodBuilder mb)
          Generate code to convert and write required value to generated document.
 void genWriteText(boolean attr, ContextMethodBuilder mb)
          Generate code to write String value to generated document.
 java.lang.String getTypeName()
          Get name of type handled by this conversion.
abstract  boolean isPrimitive()
          Check if the type handled by this conversion is of a primitive type.
protected  void setDeserializer(java.lang.String deser)
          Set deserializer for conversion.
protected  void setSerializer(java.lang.String ser)
          Set serializer for conversion.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

UNMARSHAL_OPT_ATTRIBUTE

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

UNMARSHAL_OPT_ELEMENT

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

UNMARSHAL_OPT_SIGNATURE

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

UNMARSHAL_REQ_ATTRIBUTE

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

UNMARSHAL_REQ_ELEMENT

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

UNMARSHAL_REQ_SIGNATURE

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

MARSHAL_ATTRIBUTE

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

MARSHAL_ELEMENT

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

MARSHAL_SIGNATURE

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

COMPARE_OBJECTS_METHOD

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

COMPARE_OBJECTS_SIGNATURE

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

DESERIALIZER_SIGNATURES

protected static final java.lang.String[] DESERIALIZER_SIGNATURES

MARSHAL_NAME_VALUES

public static final int MARSHAL_NAME_VALUES
See Also:
Constant Field Values

m_formatName

protected java.lang.String m_formatName
Name of format.


m_default

protected java.lang.Object m_default
Default value used for this type (wrapper for primitives, otherwise String or null).


m_serializer

protected ClassItem m_serializer
Serializer method information.


m_deserializer

protected ClassItem m_deserializer
Deserializer method information.


m_typeName

protected java.lang.String m_typeName
Fully qualified name of class handled by conversion.


m_typeSignature

protected java.lang.String m_typeSignature
Signature of class handled by conversion.

Constructor Detail

StringConversion

private StringConversion(java.lang.String type)
Constructor. This internal form only initializes the type information.

Parameters:
type - fully qualified name of class handled by conversion

StringConversion

protected StringConversion(java.lang.String type,
                           StringConversion inherit)
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

StringConversion

StringConversion(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
deser - fully qualified name of deserialization method
type - fully qualified name of class handled by conversion
Method Detail

getTypeName

public java.lang.String getTypeName()
Get name of type handled by this conversion.

Returns:
fully qualified class name of type handled by conversion

genFromText

public abstract 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.

Parameters:
mb - method builder
Throws:
JiBXException - if error in configuration

genParseOptional

public abstract void genParseOptional(boolean attr,
                                      ContextMethodBuilder mb)
                               throws JiBXException
Generate code to parse and convert optional attribute or element. This abstract base class method must be implemented by every subclass. 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.

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

genParseRequired

public abstract void genParseRequired(boolean attr,
                                      ContextMethodBuilder mb)
                               throws JiBXException
Generate code to parse and convert required attribute or element. This abstract base class method must be implemented by every subclass. 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.

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

genWriteText

public void genWriteText(boolean attr,
                         ContextMethodBuilder mb)
Generate code to write String value to generated document. The code generated by this method assumes that the marshalling context, the name information, and the actual value to be converted have already been pushed on the stack. It consumes these, leaving the marshalling context on the stack.

Parameters:
attr - item is an attribute (vs element) flag
mb - method builder

genPopValues

public void genPopValues(int count,
                         ContextMethodBuilder mb)
Generate code to pop values from stack.

Parameters:
count - number of values to be popped
mb - method builder

genToOptionalText

protected abstract 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. This abstract base class method must be implemented by every subclass. 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.

Parameters:
type - fully qualified class name for value on stack
mb - method builder
extra - count of extra words 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

genToText

public void genToText(java.lang.String type,
                      ContextMethodBuilder mb)
               throws JiBXException
Generate code to convert value to a String. 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.

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

genWriteOptional

public void genWriteOptional(boolean attr,
                             java.lang.String type,
                             ContextMethodBuilder mb)
                      throws JiBXException
Generate code to convert and write optional value to generated document. The generated code first tests if the value is the same as the supplied default, and if so skips writing. The code assumes that the marshalling context, the name information, and the actual value to be converted have already been pushed on the stack. It consumes these, leaving only the marshalling context on the stack.

Parameters:
attr - item is an attribute (vs element) flag
type - fully qualified class name for value on stack
mb - method builder
Throws:
JiBXException - if error in configuration

genWriteRequired

public void genWriteRequired(boolean attr,
                             java.lang.String type,
                             ContextMethodBuilder mb)
                      throws JiBXException
Generate code to convert and write required value to generated document. The code generated by this method assumes that the marshalling context, the name information, and the actual value to be converted have already been pushed on the stack. It consumes these, leaving the returned marshalling context on the stack.

Parameters:
attr - item is an attribute (vs element) flag
type - fully qualified class name for value on stack
mb - method builder
Throws:
JiBXException - if error in configuration

isPrimitive

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

Returns:
true if a primitive type, false if an object type

setSerializer

protected void setSerializer(java.lang.String ser)
                      throws JiBXException
Set serializer for conversion. This finds the named static method and sets it as the serializer to be used for this conversion. The serializer method is expected to take a single argument of either the handled type or a superclass or interface of the handled type, and to return a String result.

Parameters:
ser - fully qualified class and method name of serializer
Throws:
JiBXException - if serializer not found or not usable

setDeserializer

protected void setDeserializer(java.lang.String deser)
                        throws JiBXException
Set deserializer for conversion. This finds the named static method and sets it as the deserializer to be used for this conversion. The deserializer method is expected to take a single argument of type String, and to return a value of the handled type or a subtype of that type.

Parameters:
deser - fully qualified class and method name of deserializer
Throws:
JiBXException - if deserializer not found or not usable

convertDefault

protected abstract java.lang.Object convertDefault(java.lang.String text)
                                            throws JiBXException
Convert text representation into default value object. Each subclass must implement this with the appropriate conversion handling.

Parameters:
text - value representation to be converted
Returns:
converted default value object
Throws:
JiBXException - on conversion error

derive

public abstract StringConversion derive(java.lang.String type,
                                        java.lang.String ser,
                                        java.lang.String dser,
                                        java.lang.String dflt)
                                 throws JiBXException
Derive from existing formatting information. This abstract base class method must be implemented by every subclass. It 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.

Parameters:
type - fully qualified name of class handled by conversion
ser - fully qualified name of serialization 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