org.apache.axis.encoding
Class SerializationContextImpl

java.lang.Object
  |
  +--org.apache.axis.encoding.SerializationContextImpl
All Implemented Interfaces:
SerializationContext, SerializationContext
Direct Known Subclasses:
AttributeSerializationContextImpl

public class SerializationContextImpl
extends java.lang.Object
implements SerializationContext

Manage a serialization, including keeping track of namespace mappings and element stacks.

Author:
Glen Daniels (gdaniels@macromedia.com), Rich Scheuerle

Field Summary
protected static org.apache.commons.logging.Log log
           
 
Constructor Summary
SerializationContextImpl(java.io.Writer writer)
          Construct SerializationContextImpl with associated writer
SerializationContextImpl(java.io.Writer writer, MessageContext msgContext)
          Construct SerializationContextImpl with associated writer and MessageContext
 
Method Summary
 java.lang.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
 void endElement()
          Writes the end element tag for the open element.
 Message getCurrentMessage()
          Return the current message
 QName getCurrentXMLType()
          Get the currently prefered xmlType
 boolean getDoMultiRefs()
          Are we doing multirefs?
 MessageContext getMessageContext()
          Get the MessageContext we're operating with
 java.lang.String getPrefixForURI(java.lang.String uri)
          Get a prefix for a namespace URI.
 java.lang.String getPrefixForURI(java.lang.String uri, java.lang.String defaultPrefix)
          Get a prefix for the given namespace URI.
 java.lang.String getPrefixForURI(java.lang.String uri, java.lang.String defaultPrefix, boolean attribute)
          Get a prefix for the given namespace URI.
 boolean getPretty()
          Get whether the serialization should be pretty printed.
 QName getQNameForClass(java.lang.Class cls)
          Get the QName associated with the specified class.
 Serializer getSerializerForJavaType(java.lang.Class javaType)
          Convenience method to get the Serializer for a specific java type
 TypeMapping getTypeMapping()
          Get the TypeMapping we're using.
 TypeMappingRegistry getTypeMappingRegistry()
          Get the TypeMappingRegistry we're using.
 java.lang.String getValueAsString(java.lang.Object value, QName xmlType)
           
 boolean isPrimitive(java.lang.Object value)
          Indicates whether the object should be interpretted as a primitive for the purposes of multi-ref processing.
 void outputMultiRefs()
          The serialize method uses hrefs to reference all non-primitive values.
 java.lang.String qName2String(QName qName)
          Convert QName to a string of the form :
 java.lang.String qName2String(QName qName, boolean writeNS)
          Convert QName to a string of the form :
 void registerPrefixForURI(java.lang.String prefix, java.lang.String uri)
          Register prefix for the indicated uri
 void serialize(QName elemQName, org.xml.sax.Attributes attributes, java.lang.Object value)
          Serialize the indicated value as an element with the name indicated by elemQName.
 void serialize(QName elemQName, org.xml.sax.Attributes attributes, java.lang.Object value, QName xmlType, boolean sendNull, java.lang.Boolean sendType)
          Serialize the indicated value as an element with the name indicated by elemQName.
 void setDoMultiRefs(boolean shouldDo)
          Set whether we are doing multirefs
 void setPretty(boolean pretty)
          Indicate whether the serialization should be pretty printed.
 void setSendDecl(boolean sendDecl)
          Set whether or not we should write XML declarations.
 org.xml.sax.Attributes setTypeAttribute(org.xml.sax.Attributes attributes, QName type)
          Obtains the type attribute that should be serialized and returns the new list of Attributes
 boolean shouldSendXSIType()
          Get whether or not to write xsi:type attributes.
 void startElement(QName qName, org.xml.sax.Attributes attributes)
          Writes (using the Writer) the start tag for element QName along with the indicated attributes and namespace mappings.
 void writeChars(char[] p1, int p2, int p3)
          Convenience operation to write out (to Writer) the characters in p1 starting at index p2 for length p3.
 void writeDOMElement(org.w3c.dom.Element el)
          Output a DOM representation to a SerializationContext
 void writeSafeString(java.lang.String string)
          Convenience operation to write out (to Writer) the String properly encoded with xml entities (like &)
 void writeString(java.lang.String string)
          Convenience operation to write out (to Writer) the String
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

log

protected static org.apache.commons.logging.Log log
Constructor Detail

SerializationContextImpl

public SerializationContextImpl(java.io.Writer writer)
Construct SerializationContextImpl with associated writer

Parameters:
writer - java.io.Writer

SerializationContextImpl

public SerializationContextImpl(java.io.Writer writer,
                                MessageContext msgContext)
Construct SerializationContextImpl with associated writer and MessageContext

Parameters:
writer - java.io.Writer
msgContext - is the MessageContext
Method Detail

getPretty

public boolean getPretty()
Get whether the serialization should be pretty printed.

Specified by:
getPretty in interface SerializationContext
Returns:
true/false

setPretty

public void setPretty(boolean pretty)
Indicate whether the serialization should be pretty printed.

Specified by:
setPretty in interface SerializationContext
Parameters:
pretty - true/false

getDoMultiRefs

public boolean getDoMultiRefs()
Are we doing multirefs?

Specified by:
getDoMultiRefs in interface SerializationContext
Returns:
true or false

setDoMultiRefs

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

Specified by:
setDoMultiRefs in interface SerializationContext
Parameters:
shouldDo - true/false

setSendDecl

public void setSendDecl(boolean sendDecl)
Set whether or not we should write XML declarations.

Specified by:
setSendDecl in interface SerializationContext
Parameters:
sendDecl - true/false

shouldSendXSIType

public boolean shouldSendXSIType()
Get whether or not to write xsi:type attributes.

Specified by:
shouldSendXSIType in interface SerializationContext
Returns:
true/false

getTypeMapping

public TypeMapping getTypeMapping()
Get the TypeMapping we're using.

Specified by:
getTypeMapping in interface SerializationContext
Returns:
TypeMapping or null

getTypeMappingRegistry

public TypeMappingRegistry getTypeMappingRegistry()
Get the TypeMappingRegistry we're using.

Specified by:
getTypeMappingRegistry in interface SerializationContext
Returns:
TypeMapping or null

getPrefixForURI

public java.lang.String getPrefixForURI(java.lang.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".

Specified by:
getPrefixForURI in interface SerializationContext
Parameters:
uri - is the namespace uri
Returns:
prefix

getPrefixForURI

public java.lang.String getPrefixForURI(java.lang.String uri,
                                        java.lang.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"

Specified by:
getPrefixForURI in interface SerializationContext
Parameters:
uri - is the namespace uri
defaultPrefix - optional parameter which is the default prefix
Returns:
prefix

getPrefixForURI

public java.lang.String getPrefixForURI(java.lang.String uri,
                                        java.lang.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(java.lang.String prefix,
                                 java.lang.String uri)
Register prefix for the indicated uri

Specified by:
registerPrefixForURI in interface SerializationContext
Parameters:
prefix -
uri - is the namespace uri

getCurrentMessage

public Message getCurrentMessage()
Return the current message

Specified by:
getCurrentMessage in interface SerializationContext
Returns:
Message

getMessageContext

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

Specified by:
getMessageContext in interface SerializationContext

qName2String

public java.lang.String qName2String(QName qName,
                                     boolean writeNS)
Convert QName to a string of the form :

Parameters:
qName -
Returns:
prefixed qname representation for serialization.

qName2String

public java.lang.String qName2String(QName qName)
Description copied from interface: SerializationContext
Convert QName to a string of the form :

Specified by:
qName2String in interface SerializationContext
Parameters:
qName -
Returns:
prefixed qname representation for serialization.

attributeQName2String

public java.lang.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

Specified by:
attributeQName2String in interface SerializationContext
Parameters:
qName - QName
Returns:
prefixed qname representation for serialization.

getQNameForClass

public QName getQNameForClass(java.lang.Class cls)
Get the QName associated with the specified class.

Specified by:
getQNameForClass in interface SerializationContext
Parameters:
cls - Class of an object requiring serialization.
Returns:
appropriate QName associated with the class.

isPrimitive

public boolean isPrimitive(java.lang.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.

Specified by:
isPrimitive in interface SerializationContext
Parameters:
value - to be serialized
Returns:
true/false

serialize

public void serialize(QName elemQName,
                      org.xml.sax.Attributes attributes,
                      java.lang.Object value)
               throws java.io.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 (if specified) 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. 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).

Specified by:
serialize in interface SerializationContext
Parameters:
elemQName - is the QName of the element
attributes - are additional attributes
value - is the object to serialize
java.io.IOException

serialize

public void serialize(QName elemQName,
                      org.xml.sax.Attributes attributes,
                      java.lang.Object value,
                      QName xmlType,
                      boolean sendNull,
                      java.lang.Boolean sendType)
               throws java.io.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 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).

Specified by:
serialize in interface 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.
sendNull - determines whether to send null values.
sendType - determines whether to set xsi:type attribute.
java.io.IOException

outputMultiRefs

public void outputMultiRefs()
                     throws java.io.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.

Specified by:
outputMultiRefs in interface SerializationContext
java.io.IOException

startElement

public void startElement(QName qName,
                         org.xml.sax.Attributes attributes)
                  throws java.io.IOException
Writes (using the Writer) the start tag for element QName along with the indicated attributes and namespace mappings.

Specified by:
startElement in interface SerializationContext
Parameters:
qName - is the name of the element
attributes - are the attributes to write
java.io.IOException

endElement

public void endElement()
                throws java.io.IOException
Writes the end element tag for the open element.

Specified by:
endElement in interface SerializationContext
java.io.IOException

writeChars

public void writeChars(char[] p1,
                       int p2,
                       int p3)
                throws java.io.IOException
Convenience operation to write out (to Writer) the characters in p1 starting at index p2 for length p3.

Specified by:
writeChars in interface SerializationContext
Parameters:
p1 - character array to write
p2 - starting index in array
p3 - length to write
java.io.IOException

writeString

public void writeString(java.lang.String string)
                 throws java.io.IOException
Convenience operation to write out (to Writer) the String

Specified by:
writeString in interface SerializationContext
Parameters:
string - is the String to write.
java.io.IOException

writeSafeString

public void writeSafeString(java.lang.String string)
                     throws java.io.IOException
Convenience operation to write out (to Writer) the String properly encoded with xml entities (like &)

Specified by:
writeSafeString in interface SerializationContext
Parameters:
string - is the String to write.
java.io.IOException

writeDOMElement

public void writeDOMElement(org.w3c.dom.Element el)
                     throws java.io.IOException
Output a DOM representation to a SerializationContext

Specified by:
writeDOMElement in interface SerializationContext
Parameters:
el - is a DOM Element
java.io.IOException

getSerializerForJavaType

public final Serializer getSerializerForJavaType(java.lang.Class javaType)
Convenience method to get the Serializer for a specific java type

Specified by:
getSerializerForJavaType in interface SerializationContext
Parameters:
javaType - is Class for a type to serialize
Returns:
Serializer

setTypeAttribute

public org.xml.sax.Attributes setTypeAttribute(org.xml.sax.Attributes attributes,
                                               QName type)
Obtains the type attribute that should be serialized and returns the new list of Attributes

Specified by:
setTypeAttribute in interface SerializationContext
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

Specified by:
getCurrentXMLType in interface SerializationContext
Returns:
QName of xmlType or null

getValueAsString

public java.lang.String getValueAsString(java.lang.Object value,
                                         QName xmlType)
                                  throws java.io.IOException
Specified by:
getValueAsString in interface SerializationContext
java.io.IOException


Copyright © 2003 Apache Web Services Project. All Rights Reserved.