Class StringConversion

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

public abstract class StringConversion extends 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.
Author:
Dennis M. Sosnoski
  • Field Details

    • UNMARSHAL_OPT_ATTRIBUTE

      protected static final String UNMARSHAL_OPT_ATTRIBUTE
      See Also:
    • UNMARSHAL_OPT_ELEMENT

      protected static final String UNMARSHAL_OPT_ELEMENT
      See Also:
    • UNMARSHAL_OPT_SIGNATURE

      protected static final String UNMARSHAL_OPT_SIGNATURE
      See Also:
    • UNMARSHAL_REQ_ATTRIBUTE

      protected static final String UNMARSHAL_REQ_ATTRIBUTE
      See Also:
    • UNMARSHAL_REQ_ELEMENT

      protected static final String UNMARSHAL_REQ_ELEMENT
      See Also:
    • UNMARSHAL_REQ_SIGNATURE

      protected static final String UNMARSHAL_REQ_SIGNATURE
      See Also:
    • MARSHAL_ATTRIBUTE

      protected static final String MARSHAL_ATTRIBUTE
      See Also:
    • MARSHAL_ELEMENT

      protected static final String MARSHAL_ELEMENT
      See Also:
    • MARSHAL_SIGNATURE

      protected static final String MARSHAL_SIGNATURE
      See Also:
    • COMPARE_OBJECTS_METHOD

      protected static final String COMPARE_OBJECTS_METHOD
      See Also:
    • COMPARE_OBJECTS_SIGNATURE

      protected static final String COMPARE_OBJECTS_SIGNATURE
      See Also:
    • WHITESPACE_CONVERT_SIGNATURES

      protected static final String[] WHITESPACE_CONVERT_SIGNATURES
    • DESERIALIZER_SIGNATURES

      protected static final String[] DESERIALIZER_SIGNATURES
    • MARSHAL_NAME_VALUES

      public static final int MARSHAL_NAME_VALUES
      See Also:
    • m_default

      protected 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_converter

      protected ClassItem m_converter
      Whitespace conversion method information.
    • m_deserializer

      protected ClassItem m_deserializer
      Deserializer method information.
    • m_typeName

      protected String m_typeName
      Fully qualified name of class handled by conversion.
    • m_typeSignature

      protected String m_typeSignature
      Signature of class handled by conversion.
  • Constructor Details

    • StringConversion

      private StringConversion(String type)
      Constructor. This internal form only initializes the type information.
      Parameters:
      type - fully qualified name of class handled by conversion
    • StringConversion

      protected StringConversion(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(Object dflt, String ser, String conv, String deser, 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)
      conv - fully qualified name of whitespace conversion method (null if none)
      deser - fully qualified name of deserialization method (null if none)
      type - fully qualified name of class handled by conversion
  • Method Details

    • getTypeName

      public 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(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(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, 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, 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(String ser, boolean variant) 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
      variant - allow variants of the specified type
      Throws:
      JiBXException - if serializer not found or not usable
    • setWhitespaceConverter

      protected void setWhitespaceConverter(String wsconv) throws JiBXException
      Set whitespace converter for conversion. This finds the named static method and sets it as the whitespace converter to be used for this conversion. The whitespace converter method is expected to take a single argument of type String, and to return the same.
      Parameters:
      wsconv - fully qualified class and method name of whitespace converter
      Throws:
      JiBXException - if whitespace converter not found or not usable
    • setDeserializer

      protected void setDeserializer(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 Object convertDefault(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(String type, String ser, String conv, String dser, 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 (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