org.apache.axis.encoding

Class SerializationContext

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

Field Summary
protected static Loglog
protected booleanstartOfDocument
The flag whether the XML decl should be written
Constructor Summary
SerializationContext(Writer writer)
Construct SerializationContext with associated writer
SerializationContext(Writer writer, MessageContext msgContext)
Construct SerializationContext with associated writer and MessageContext
Method Summary
StringattributeQName2String(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
voidendElement()
Writes the end element tag for the open element.
MessagegetCurrentMessage()
Return the current message
QNamegetCurrentXMLType()
Get the currently prefered xmlType
booleangetDoMultiRefs()
Are we doing multirefs?
XMLEncodergetEncoder()
StringgetEncoding()
get the encoding for the serialization
StringgetEncodingStyle()
Returns this context's encoding style.
QNamegetItemQName()
QNamegetItemType()
MessageContextgetMessageContext()
Get the MessageContext we're operating with
StringgetPrefixForURI(String uri)
Get a prefix for a namespace URI.
StringgetPrefixForURI(String uri, String defaultPrefix)
Get a prefix for the given namespace URI.
StringgetPrefixForURI(String uri, String defaultPrefix, boolean attribute)
Get a prefix for the given namespace URI.
booleangetPretty()
Get whether the serialization should be pretty printed.
QNamegetQNameForClass(Class cls)
Get the QName associated with the specified class.
SerializergetSerializerForJavaType(Class javaType)
Convenience method to get the Serializer for a specific java type
TypeMappinggetTypeMapping()
Get the TypeMapping we're using.
TypeMappingRegistrygetTypeMappingRegistry()
Get the TypeMappingRegistry we're using.
StringgetValueAsString(Object value, QName xmlType)
booleanisEncoded()
Returns whether this context should be encoded or not.
booleanisPrimitive(Object value)
Indicates whether the object should be interpretted as a primitive for the purposes of multi-ref processing.
voidoutputMultiRefs()
The serialize method uses hrefs to reference all non-primitive values.
StringqName2String(QName qName, boolean writeNS)
Convert QName to a string of the form :
StringqName2String(QName qName)
voidregisterPrefixForURI(String prefix, String uri)
Register prefix for the indicated uri
voidserialize(QName elemQName, Attributes attributes, Object value)
Serialize the indicated value as an element with the name indicated by elemQName.
voidserialize(QName elemQName, Attributes attributes, Object value, QName xmlType)
Serialize the indicated value as an element with the name indicated by elemQName.
voidserialize(QName elemQName, Attributes attributes, Object value, QName xmlType, boolean sendNull, Boolean sendType)
Serialize the indicated value as an element with the name indicated by elemQName.
voidserialize(QName elemQName, Attributes attributes, Object value, QName xmlType, Boolean sendNull, Boolean sendType)
Serialize the indicated value as an element with the name indicated by elemQName.
voidsetDoMultiRefs(boolean shouldDo)
Set whether we are doing multirefs
voidsetEncoding(String encoding)
set the encoding for the serialization
voidsetItemQName(QName itemQName)
voidsetItemType(QName itemType)
voidsetPretty(boolean pretty)
Indicate whether the serialization should be pretty printed.
voidsetSendDecl(boolean sendDecl)
Set whether or not we should write XML declarations.
AttributessetTypeAttribute(Attributes attributes, QName type)
Obtains the type attribute that should be serialized and returns the new list of Attributes
voidsetWriteXMLType(QName type)
booleanshouldSendXSIType()
Get whether or not to write xsi:type attributes.
voidstartElement(QName qName, Attributes attributes)
Writes (using the Writer) the start tag for element QName along with the indicated attributes and namespace mappings.
voidwriteChars(char[] p1, int p2, int p3)
Convenience operation to write out (to Writer) the characters in p1 starting at index p2 for length p3.
voidwriteDOMElement(Element el)
Output a DOM representation to a SerializationContext
voidwriteSafeString(String string)
Convenience operation to write out (to Writer) the String properly encoded with xml entities (like &)
voidwriteString(String string)
Convenience operation to write out (to Writer) the String
voidwriteXMLDeclaration()

Field Detail

log

protected static Log log

startOfDocument

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

Constructor Detail

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 Detail

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.

endElement

public void endElement()
Writes the end element tag for the open element.

getCurrentMessage

public Message getCurrentMessage()
Return the current message

getCurrentXMLType

public QName getCurrentXMLType()
Get the currently prefered xmlType

Returns: QName of xmlType or null

getDoMultiRefs

public boolean getDoMultiRefs()
Are we doing multirefs?

Returns: true or false

getEncoder

public XMLEncoder getEncoder()

getEncoding

public String getEncoding()
get the encoding for the serialization

Returns:

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

getItemQName

public QName getItemQName()

getItemType

public QName getItemType()

getMessageContext

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

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"

getPretty

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

Returns: true/false

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.

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

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

getValueAsString

public String getValueAsString(Object value, QName xmlType)

isEncoded

public boolean isEncoded()
Returns whether this context should be encoded or not.

Returns: a boolean value

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

outputMultiRefs

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

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)

registerPrefixForURI

public void registerPrefixForURI(String prefix, String uri)
Register prefix for the indicated uri

Parameters: prefix uri is the namespace uri

serialize

public void serialize(QName elemQName, Attributes attributes, Object value)
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

serialize

public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType)
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

serialize

public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, boolean sendNull, Boolean sendType)

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.

serialize

public void serialize(QName elemQName, Attributes attributes, Object value, QName xmlType, Boolean sendNull, Boolean sendType)
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.

setDoMultiRefs

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

setEncoding

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

setItemQName

public void setItemQName(QName itemQName)

setItemType

public void setItemType(QName itemType)

setPretty

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

Parameters: pretty true/false

setSendDecl

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

Parameters: sendDecl true/false

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

setWriteXMLType

public void setWriteXMLType(QName type)

shouldSendXSIType

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

Returns: true/false

startElement

public void startElement(QName qName, Attributes attributes)
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

writeChars

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

Parameters: p1 character array to write p2 starting index in array p3 length to write

writeDOMElement

public void writeDOMElement(Element el)
Output a DOM representation to a SerializationContext

Parameters: el is a DOM Element

writeSafeString

public void writeSafeString(String string)
Convenience operation to write out (to Writer) the String properly encoded with xml entities (like &)

Parameters: string is the String to write.

writeString

public void writeString(String string)
Convenience operation to write out (to Writer) the String

Parameters: string is the String to write.

writeXMLDeclaration

public void writeXMLDeclaration()
Copyright B) 2005 Apache Web Services Project. All Rights Reserved.