Class SerializationContext

java.lang.Object
org.apache.axis.encoding.SerializationContext
All Implemented Interfaces:
SerializationContext
Direct Known Subclasses:
AttributeSerializationContextImpl, TextSerializationContext

public class SerializationContext extends Object implements SerializationContext
Manage a serialization, including keeping track of namespace mappings and element stacks.
Author:
Glen Daniels (gdaniels@apache.org), Rich Scheuerle invalid input: '<'scheu@us.ibm.com>
  • Field Details

    • log

      protected static org.apache.commons.logging.Log log
    • startOfDocument

      protected boolean startOfDocument
      The flag whether the XML decl should be written
  • Constructor Details

    • SerializationContext

      public SerializationContext(Writer writer)
      Construct SerializationContext with associated writer
      Parameters:
      writer - java.io.Writer
    • SerializationContext

      public SerializationContext(Writer writer, MessageContext msgContext)
      Construct SerializationContext with associated writer and MessageContext
      Parameters:
      writer - java.io.Writer
      msgContext - is the MessageContext
  • Method Details

    • getPretty

      public boolean getPretty()
      Get whether the serialization should be pretty printed.
      Returns:
      true/false
    • setPretty

      public void setPretty(boolean pretty)
      Indicate whether the serialization should be pretty printed.
      Parameters:
      pretty - true/false
    • getDoMultiRefs

      public boolean getDoMultiRefs()
      Are we doing multirefs?
      Returns:
      true or false
    • setDoMultiRefs

      public void setDoMultiRefs(boolean shouldDo)
      Set whether we are doing multirefs
    • setSendDecl

      public void setSendDecl(boolean sendDecl)
      Set whether or not we should write XML declarations.
      Parameters:
      sendDecl - true/false
    • shouldSendXSIType

      public boolean shouldSendXSIType()
      Get whether or not to write xsi:type attributes.
      Returns:
      true/false
    • getTypeMapping

      public TypeMapping getTypeMapping()
      Get the TypeMapping we're using.
      Returns:
      TypeMapping or null
    • getTypeMappingRegistry

      public TypeMappingRegistry getTypeMappingRegistry()
      Get the TypeMappingRegistry we're using.
      Returns:
      TypeMapping or null
    • getPrefixForURI

      public String getPrefixForURI(String uri)
      Get a prefix for a namespace URI. This method will ALWAYS return a valid prefix - if the given URI is already mapped in this serialization, we return the previous prefix. If it is not mapped, we will add a new mapping and return a generated prefix of the form "ns".
      Parameters:
      uri - is the namespace uri
      Returns:
      prefix
    • getPrefixForURI

      public String getPrefixForURI(String uri, String defaultPrefix)
      Get a prefix for the given namespace URI. If one has already been defined in this serialization, use that. Otherwise, map the passed default prefix to the URI, and return that. If a null default prefix is passed, use one of the form "ns"
    • getPrefixForURI

      public String getPrefixForURI(String uri, String defaultPrefix, boolean attribute)
      Get a prefix for the given namespace URI. If one has already been defined in this serialization, use that. Otherwise, map the passed default prefix to the URI, and return that. If a null default prefix is passed, use one of the form "ns"
    • registerPrefixForURI

      public void registerPrefixForURI(String prefix, String uri)
      Register prefix for the indicated uri
      Parameters:
      prefix -
      uri - is the namespace uri
    • getCurrentMessage

      public Message getCurrentMessage()
      Return the current message
    • getMessageContext

      public MessageContext getMessageContext()
      Get the MessageContext we're operating with
    • getEncodingStyle

      public String getEncodingStyle()
      Returns this context's encoding style. If we've got a message context then we'll get the style from that; otherwise we'll return a default.
      Returns:
      a String value
    • isEncoded

      public boolean isEncoded()
      Returns whether this context should be encoded or not.
      Returns:
      a boolean value
    • qName2String

      public String qName2String(QName qName, boolean writeNS)
      Convert QName to a string of the form :
      Parameters:
      qName -
      Returns:
      prefixed qname representation for serialization.
    • qName2String

      public String qName2String(QName qName)
    • attributeQName2String

      public String attributeQName2String(QName qName)
      Convert attribute QName to a string of the form : There are slightly different rules for attributes: - There is no default namespace - any attribute in a namespace must have a prefix
      Parameters:
      qName - QName
      Returns:
      prefixed qname representation for serialization.
    • getQNameForClass

      public QName getQNameForClass(Class cls)
      Get the QName associated with the specified class.
      Parameters:
      cls - Class of an object requiring serialization.
      Returns:
      appropriate QName associated with the class.
    • isPrimitive

      public boolean isPrimitive(Object value)
      Indicates whether the object should be interpretted as a primitive for the purposes of multi-ref processing. A primitive value is serialized directly instead of using id/href pairs. Thus primitive serialization/deserialization is slightly faster.
      Parameters:
      value - to be serialized
      Returns:
      true/false
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value) throws IOException
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive, the javaType is the actual unwrapped object type. xsi:type is set by using the javaType to find an appopriate xmlType from the TypeMappingRegistry. Null values and the xsi:type flag will be sent or not depending on previous configuration of this SerializationContext.
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      Throws:
      IOException
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType) throws IOException
      Deprecated.
      use serialize(QName, Attributes, Object, QName, Class) instead
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive, the javaType is the actual unwrapped object type. The xmlType is the QName of the type that is used to set xsi:type. If not specified, xsi:type is set by using the javaType to find an appopriate xmlType from the TypeMappingRegistry. Null values and the xsi:type flag will be sent or not depending on previous configuration of this SerializationContext.
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      xmlType - is the qname of the type or null.
      Throws:
      IOException
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, Class javaType) throws IOException
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive, the javaType is the actual unwrapped object type. The xmlType is the QName of the type that is used to set xsi:type. If not specified, xsi:type is set by using the javaType to find an appopriate xmlType from the TypeMappingRegistry. Null values and the xsi:type flag will be sent or not depending on previous configuration of this SerializationContext.
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      xmlType - is the qname of the type or null.
      javaType - is the java type of the value
      Throws:
      IOException
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, boolean sendNull, Boolean sendType) throws IOException
      Deprecated.
      use serialize(QName, Attributes, Object, QName, Boolean, Boolean) instead.
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive. The xmlType (if specified) is the QName of the type that is used to set xsi:type. The sendNull flag indicates whether null values should be sent over the wire (default is to send such values with xsi:nil="true"). The sendType flag indicates whether the xsi:type flag should be sent (default is true).
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      xmlType - is the qname of the type or null.
      sendNull - determines whether to send null values.
      sendType - determines whether to set xsi:type attribute.
      Throws:
      IOException
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, Boolean sendNull, Boolean sendType) throws IOException
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive. The xmlType (if specified) is the QName of the type that is used to set xsi:type. The sendNull flag indicates whether to end an element with an xsi:nil="true" attribute for null variables (if Boolean.TRUE), or nothing (if Boolean.FALSE). The sendType flag indicates whether the xsi:type flag should be sent (default is true).
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      xmlType - is the qname of the type or null.
      sendNull - determines whether to send null values.
      sendType - determines whether to set xsi:type attribute.
      Throws:
      IOException
    • serialize

      public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, Class javaClass, Boolean sendNull, Boolean sendType) throws IOException
      Serialize the indicated value as an element with the name indicated by elemQName. The attributes are additional attribute to be serialized on the element. The value is the object being serialized. (It may be serialized directly or serialized as an mult-ref'd item) The value is an Object, which may be a wrapped primitive. The xmlType (if specified) is the QName of the type that is used to set xsi:type. The sendNull flag indicates whether to end an element with an xsi:nil="true" attribute for null variables (if Boolean.TRUE), or nothing (if Boolean.FALSE). The sendType flag indicates whether the xsi:type flag should be sent (default is true).
      Parameters:
      elemQName - is the QName of the element
      attributes - are additional attributes
      value - is the object to serialize
      xmlType - is the qname of the type or null.
      sendNull - determines whether to send null values.
      sendType - determines whether to set xsi:type attribute.
      javaType - is the java type of the value
      Throws:
      IOException
    • outputMultiRefs

      public void outputMultiRefs() throws IOException
      The serialize method uses hrefs to reference all non-primitive values. These values are stored and serialized by calling outputMultiRefs after the serialize method completes.
      Throws:
      IOException
    • writeXMLDeclaration

      public void writeXMLDeclaration() throws IOException
      Throws:
      IOException
    • startElement

      public void startElement(QName qName, Attributes attributes) throws IOException
      Writes (using the Writer) the start tag for element QName along with the indicated attributes and namespace mappings.
      Parameters:
      qName - is the name of the element
      attributes - are the attributes to write
      Throws:
      IOException
    • endElement

      public void endElement() throws IOException
      Writes the end element tag for the open element.
      Throws:
      IOException
    • writeChars

      public void writeChars(char[] p1, int p2, int p3) throws IOException
      Convenience operation to write out (to Writer) the characters in p1 starting at index p2 for length p3.
      Parameters:
      p1 - character array to write
      p2 - starting index in array
      p3 - length to write
      Throws:
      IOException
    • writeString

      public void writeString(String string) throws IOException
      Convenience operation to write out (to Writer) the String
      Parameters:
      string - is the String to write.
      Throws:
      IOException
    • writeSafeString

      public void writeSafeString(String string) throws IOException
      Convenience operation to write out (to Writer) the String properly encoded with xml entities (like invalid input: '&amp')
      Parameters:
      string - is the String to write.
      Throws:
      IOException
    • writeDOMElement

      public void writeDOMElement(Element el) throws IOException
      Output a DOM representation to a SerializationContext
      Parameters:
      el - is a DOM Element
      Throws:
      IOException
    • getSerializerForJavaType

      public final Serializer getSerializerForJavaType(Class javaType)
      Convenience method to get the Serializer for a specific java type
      Parameters:
      javaType - is Class for a type to serialize
      Returns:
      Serializer
    • setTypeAttribute

      public Attributes setTypeAttribute(Attributes attributes, QName type)
      Obtains the type attribute that should be serialized and returns the new list of Attributes
      Parameters:
      attributes - of the qname
      type - is the qname of the type
      Returns:
      new list of Attributes
    • getCurrentXMLType

      public QName getCurrentXMLType()
      Get the currently prefered xmlType
      Returns:
      QName of xmlType or null
    • getValueAsString

      public String getValueAsString(Object value, QName xmlType, Class javaClass) throws IOException
      Throws:
      IOException
    • setWriteXMLType

      public void setWriteXMLType(QName type)
    • getEncoder

      public XMLEncoder getEncoder()
    • getEncoding

      public String getEncoding()
      get the encoding for the serialization
      Returns:
    • setEncoding

      public void setEncoding(String encoding)
      set the encoding for the serialization
    • getItemQName

      public QName getItemQName()
    • setItemQName

      public void setItemQName(QName itemQName)
    • getItemType

      public QName getItemType()
    • setItemType

      public void setItemType(QName itemType)