Package org.apache.axis.message
Class MessageElement
- java.lang.Object
-
- org.apache.axis.message.NodeImpl
-
- org.apache.axis.message.MessageElement
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Cloneable
,Node
,SOAPElement
,org.w3c.dom.Element
,org.w3c.dom.Node
,org.w3c.dom.NodeList
- Direct Known Subclasses:
DetailEntry
,RPCParam
,SOAPBody
,SOAPBodyElement
,SOAPEnvelope
,SOAPFaultElement
,SOAPHeader
,SOAPHeaderElement
public class MessageElement extends NodeImpl implements SOAPElement, java.io.Serializable, org.w3c.dom.NodeList, java.lang.Cloneable
MessageElement is the base type of nodes of the SOAP message parse tree. Note: it was made Serializable to help users of Apache SOAP who had exploited the serializability of the DOM tree to migrate to Axis.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
MessageElement.QNameAttr
class that represents a qname in a the qNameAttrs vector.
-
Field Summary
Fields Modifier and Type Field Description protected boolean
_isRoot
protected DeserializationContext
context
protected java.lang.String
encodingStyle
Our encoding style, if anyprotected int
endEventIndex
protected Deserializer
fixupDeserializer
!!! TODO : Make sure this handles multiple targetsprotected java.lang.String
href
protected java.lang.String
id
protected static org.apache.commons.logging.Log
log
protected SOAPEnvelope
message
java.util.ArrayList
namespaces
protected java.util.Vector
qNameAttrs
protected SAX2EventRecorder
recorder
protected int
startContentsIndex
protected int
startEventIndex
protected QName
typeQName
-
Fields inherited from class org.apache.axis.message.NodeImpl
_isDirty, attributes, children, document, name, namespaceURI, parent, prefix, textRep
-
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
-
-
Constructor Summary
Constructors Constructor Description MessageElement()
No-arg constructor for building messages?MessageElement(java.lang.String namespace, java.lang.String localPart)
constructorMessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.Object value)
constructor binding the internal object value field to the value parameterMessageElement(java.lang.String localPart, java.lang.String prefix, java.lang.String namespace)
constructor.MessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.String prefix, org.xml.sax.Attributes attributes, DeserializationContext context)
Advanced constructor used for deserialization.MessageElement(QName name)
constructor declaring the qualified name of the nodeMessageElement(QName name, java.lang.Object value)
constructor declaring the qualified name of the node and its valueMessageElement(Name eltName)
construct using aName
implementation,MessageElement(org.w3c.dom.CharacterData text)
construct a text element.MessageElement(org.w3c.dom.Element elem)
create a node through a deep copy of the passed in element.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
addAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)
add a normal CDATA/text attribute.void
addAttribute(java.lang.String attrPrefix, java.lang.String namespace, java.lang.String localName, java.lang.String value)
add an attribute.void
addAttribute(java.lang.String namespace, java.lang.String localName, QName value)
add an attribute to the qname vector.SOAPElement
addAttribute(Name attrName, java.lang.String value)
add a new attributevoid
addChild(MessageElement el)
Note that this method will log a error and no-op if there is a value (set using setObjectValue) in the MessageElement.SOAPElement
addChildElement(java.lang.String localName)
add a child element in the message element's own namespaceSOAPElement
addChildElement(java.lang.String localName, java.lang.String prefixName)
add a child elementSOAPElement
addChildElement(java.lang.String localName, java.lang.String childPrefix, java.lang.String uri)
add a child elementSOAPElement
addChildElement(Name childName)
add the child elementSOAPElement
addChildElement(SOAPElement element)
The added child must be an instance of MessageElement rather than an abitrary SOAPElement otherwise a (wrapped) ClassCastException will be thrown.void
addMapping(Mapping map)
add a new namespace/prefix mappingSOAPElement
addNamespaceDeclaration(java.lang.String prefix, java.lang.String uri)
create aMapping
mapping and add to our namespace list.SOAPElement
addTextNode(java.lang.String s)
add a text node to the document.protected void
childDeepCloned(NodeImpl oldNode, NodeImpl newNode)
org.w3c.dom.Node
cloneNode(boolean deep)
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.protected java.lang.Object
cloning()
protected clone method (not public) copied status ------------------- protected String name ; Y protected String prefix ; Y protected String namespaceURI ; Y protected transient Attributes attributes Y protected String id; Y? protected String href; Y? protected boolean _isRoot = true; Y? protected SOAPEnvelope message = null; N? protected transient DeserializationContext context; Y? protected transient QName typeQName = null; Y? protected Vector qNameAttrs = null; Y? protected transient SAX2EventRecorder recorder = null; N? protected int startEventIndex = 0; N? protected int startContentsIndex = 0; N? protected int endEventIndex = -1; N? protected CharacterData textRep = null; Y? protected MessageElement parent = null; N public ArrayList namespaces = null; Y protected String encodingStyle = null; N? private Object objectValue = null; N?void
detachAllChildren()
remove all children.boolean
equals(java.lang.Object obj)
equality test.protected MessageElement
findElement(java.util.Vector vec, java.lang.String namespace, java.lang.String localPart)
java.util.Iterator
getAllAttributes()
Get an interator to all the attributes of the node.org.w3c.dom.Document
getAsDocument()
get the message element as a document.org.w3c.dom.Element
getAsDOM()
create a DOM from the message element, by serializing and deserializing the elementjava.lang.String
getAsString()
get the message element as a string.java.lang.String
getAttribute(java.lang.String attrName)
get an attribute by nameorg.w3c.dom.Attr
getAttributeNode(java.lang.String attrName)
Deprecated.this is not implementedorg.w3c.dom.Attr
getAttributeNodeNS(java.lang.String namespace, java.lang.String localName)
Deprecated.not implemented!java.lang.String
getAttributeNS(java.lang.String namespaceURI, java.lang.String localName)
get the attribute with namespace/local name match.org.xml.sax.Attributes
getAttributesEx()
get the attributesjava.lang.String
getAttributeValue(java.lang.String localName)
get the value of an attributejava.lang.String
getAttributeValue(Name attrName)
Get the value of an attribute whose namespace and local name are described.MessageElement
getChildElement(QName qname)
Convenience method to get the first matching child for a given QName.java.util.Iterator
getChildElements()
get an iterator over the children This iterator may get confused if changes are made to the children while the iteration is in progress.java.util.Iterator
getChildElements(QName qname)
get an iterator over child elementsjava.util.Iterator
getChildElements(Name childName)
get an iterator over child elementsjava.util.List
getChildren()
get a list of childrenorg.xml.sax.Attributes
getCompleteAttributes()
Obtain an Attributes collection consisting of all attributes for this MessageElement, including namespace declarations.DeserializationContext
getDeserializationContext()
Retrieve the DeserializationContext associated with this MessageElementName
getElementName()
get the full name of the elementorg.w3c.dom.NodeList
getElementsByTagName(java.lang.String tagName)
org.w3c.dom.NodeList
getElementsByTagNameNS(java.lang.String namespace, java.lang.String localName)
protected org.w3c.dom.NodeList
getElementsNS(org.w3c.dom.Element parentElement, java.lang.String namespace, java.lang.String localName)
helper method for recusively getting the element that has namespace URI and localnamejava.lang.String
getEncodingStyle()
Get the encoding style.SOAPEnvelope
getEnvelope()
get our current envelopeDeserializer
getFixupDeserializer()
java.lang.String
getHref()
get a saved hrefjava.lang.String
getID()
get a saved IDint
getLength()
The number of nodes in the list.java.lang.String
getName()
get the local name of this elementjava.util.Iterator
getNamespacePrefixes()
get an iterator of the prefixes.java.lang.String
getNamespaceURI(java.lang.String searchPrefix)
map from a prefix to a namespace.java.lang.Object
getObjectValue()
Returns value of the node as an object of registered type.java.lang.Object
getObjectValue(java.lang.Class cls)
Returns value of the node as an object of registered type.org.w3c.dom.Document
getOwnerDocument()
TheDocument
object associated with this node.java.lang.String
getPrefix(java.lang.String searchNamespaceURI)
get the prefix for a given namespace URIQName
getQName()
get the fully qualified name of this elementMessageElement
getRealElement()
get the 'real' element -will follow hrefs.SAX2EventRecorder
getRecorder()
get the event recorderjava.lang.String
getTagName()
QName
getType()
get the element's type.java.lang.String
getValue()
Get the value of the doc as a string.java.lang.Object
getValueAsType(QName type)
java.lang.Object
getValueAsType(QName type, java.lang.Class cls)
This is deserialization logic mixed in to our element class.protected java.lang.String
getValueDOM()
java.util.Iterator
getVisibleNamespacePrefixes()
get an iterator over visible prefixes.boolean
hasAttribute(java.lang.String attrName)
test for an attribute existingboolean
hasAttributeNS(java.lang.String namespace, java.lang.String localName)
Test for an attributeboolean
isRoot()
get the is-root flagorg.w3c.dom.Node
item(int index)
get a child nodevoid
output(SerializationContext outputContext)
This is the public output() method, which will always simply use the recorded SAX stream for this element if it is available.protected void
outputImpl(SerializationContext outputContext)
override point -output to a serialization context.void
publishContents(org.xml.sax.ContentHandler handler)
replay the sax events to a SAX content handlesvoid
publishToHandler(org.xml.sax.ContentHandler handler)
replay the sax events to a handlervoid
removeAttribute(java.lang.String attrName)
remove a named attribute.boolean
removeAttribute(Name attrName)
remove an elementorg.w3c.dom.Attr
removeAttributeNode(org.w3c.dom.Attr oldAttr)
remove a an attribuevoid
removeAttributeNS(java.lang.String namespace, java.lang.String localName)
Remove an attribute.void
removeContents()
remove all chidlren.boolean
removeNamespaceDeclaration(java.lang.String namespacePrefix)
remove a namespace declaration.void
setAllAttributes(org.xml.sax.Attributes attrs)
set all the attributes of this instancevoid
setAttribute(java.lang.String name, java.lang.String value)
set or update an attribute.void
setAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)
Set an attribute, adding the attribute if it isn't already present in this element, and changing the value if it is.org.w3c.dom.Attr
setAttributeNode(org.w3c.dom.Attr newAttr)
Deprecated.this is not implementedorg.w3c.dom.Attr
setAttributeNodeNS(org.w3c.dom.Attr newAttr)
set an attribute as a nodevoid
setAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName, java.lang.String value)
set an attribute or alter an existing onevoid
setContentsIndex(int index)
set the index point of our content's starting in the event recordingvoid
setEncodingStyle(java.lang.String encodingStyle)
Sets the encoding style for thisSOAPElement
object to one specified.void
setEndIndex(int endIndex)
record the end index of the SAX recording.void
setEnvelope(SOAPEnvelope env)
bind a a new soap envelope.void
setFixupDeserializer(Deserializer dser)
void
setName(java.lang.String name)
set the local part of this element's namevoid
setNamespaceURI(java.lang.String nsURI)
set the namespace URI of the elementvoid
setNSMappings(java.util.ArrayList namespaces)
set a new namespace mapping listvoid
setObjectValue(java.lang.Object newValue)
Sets value of this node to an Object.void
setQName(QName qName)
set the name and namespace of this elementvoid
setRecorder(SAX2EventRecorder rec)
set the event recordervoid
setType(QName qname)
set the element's typevoid
setValue(java.lang.String value)
If this is a Text node then this method will set its value, otherwise it sets the value of the immediate (Text) child of this node.java.lang.String
toString()
Generate a string representation by serializing our contents This is not a lightweight operation, and is repeated whenever you call this method.-
Methods inherited from class org.apache.axis.message.NodeImpl
appendChild, compareDocumentPosition, convertAttrSAXtoDOM, detachNode, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getParent, getParentElement, getParentNode, getPrefix, getPreviousSibling, getSchemaTypeInfo, getTextContent, getUserData, hasAttributes, hasChildNodes, initializeChildren, insertBefore, isDefaultNamespace, isDirty, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, makeAttributesEditable, normalize, recycleNode, removeChild, replaceChild, reset, setDirty, setDirty, setIdAttribute, setIdAttributeNode, setIdAttributeNS, setNodeValue, setOwnerDocument, setParent, setParentElement, setPrefix, setTextContent, setUserData
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.w3c.dom.Element
getSchemaTypeInfo, setIdAttribute, setIdAttributeNode, setIdAttributeNS
-
Methods inherited from interface javax.xml.soap.Node
detachNode, getParentElement, recycleNode, setParentElement
-
Methods inherited from interface org.w3c.dom.Node
appendChild, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData
-
-
-
-
Field Detail
-
log
protected static org.apache.commons.logging.Log log
-
id
protected java.lang.String id
-
href
protected java.lang.String href
-
_isRoot
protected boolean _isRoot
-
message
protected SOAPEnvelope message
-
context
protected transient DeserializationContext context
-
typeQName
protected transient QName typeQName
-
qNameAttrs
protected java.util.Vector qNameAttrs
-
recorder
protected transient SAX2EventRecorder recorder
-
startEventIndex
protected int startEventIndex
-
startContentsIndex
protected int startContentsIndex
-
endEventIndex
protected int endEventIndex
-
namespaces
public java.util.ArrayList namespaces
-
encodingStyle
protected java.lang.String encodingStyle
Our encoding style, if any
-
fixupDeserializer
protected Deserializer fixupDeserializer
!!! TODO : Make sure this handles multiple targets
-
-
Constructor Detail
-
MessageElement
public MessageElement()
No-arg constructor for building messages?
-
MessageElement
public MessageElement(java.lang.String namespace, java.lang.String localPart)
constructor- Parameters:
namespace
- namespace of elementlocalPart
- local name
-
MessageElement
public MessageElement(java.lang.String localPart, java.lang.String prefix, java.lang.String namespace)
constructor. Automatically adds a namespace-prefix mapping to the mapping table- Parameters:
localPart
- local nameprefix
- prefixnamespace
- namespace
-
MessageElement
public MessageElement(Name eltName)
construct using aName
implementation,- Parameters:
eltName
-- See Also:
MessageElement(String, String, String)
-
MessageElement
public MessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.Object value)
constructor binding the internal object value field to the value parameter- Parameters:
namespace
- namespace of the elementlocalPart
- local namevalue
- value of the node
-
MessageElement
public MessageElement(QName name)
constructor declaring the qualified name of the node- Parameters:
name
- naming information
-
MessageElement
public MessageElement(QName name, java.lang.Object value)
constructor declaring the qualified name of the node and its value- Parameters:
name
- naming informationvalue
- value of the node
-
MessageElement
public MessageElement(org.w3c.dom.Element elem)
create a node through a deep copy of the passed in element.- Parameters:
elem
- name to copy from
-
MessageElement
public MessageElement(org.w3c.dom.CharacterData text)
construct a text element.- Parameters:
text
- text data. This is not copied; it is referred to in the MessageElement.
-
MessageElement
public MessageElement(java.lang.String namespace, java.lang.String localPart, java.lang.String prefix, org.xml.sax.Attributes attributes, DeserializationContext context) throws AxisFault
Advanced constructor used for deserialization.- The context provides the mappings and Sax event recorder
- The soap messaging style is determined from the current message context, defaulting to SOAP1.1 if there is no current context.
- if there is an id attribute (any namespace), then the ID is registered
with
DeserializationContext.registerElementByID(String, MessageElement)
;a new recorder is created if needed. - If there is an attribute "root" in the default SOAP namespace, then it is examined to see if it marks the element as root (value=="1" or not)
- If there is an arrayType attribute then we assume we are an array and set our
typeQName
field appropriately. - The
href
field is set if there is a relevant href value
- Parameters:
namespace
- namespace namespace of elementlocalPart
- local name local name of elementprefix
- prefix prefix of elementattributes
- attributes to save as our attributescontext
- deserialization context for this message element- Throws:
AxisFault
- if the encoding style is not recognized/supported
-
-
Method Detail
-
getDeserializationContext
public DeserializationContext getDeserializationContext()
Retrieve the DeserializationContext associated with this MessageElement- Returns:
- The DeserializationContext associated with this MessageElement
-
setFixupDeserializer
public void setFixupDeserializer(Deserializer dser)
-
getFixupDeserializer
public Deserializer getFixupDeserializer()
-
setEndIndex
public void setEndIndex(int endIndex)
record the end index of the SAX recording.- Parameters:
endIndex
- end value
-
isRoot
public boolean isRoot()
get the is-root flag- Returns:
- true if the element is considered a document root.
-
getID
public java.lang.String getID()
get a saved ID- Returns:
- ID or null for no ID
-
getHref
public java.lang.String getHref()
get a saved href- Returns:
- href or null
-
getAttributesEx
public org.xml.sax.Attributes getAttributesEx()
get the attributes- Returns:
- attributes. If this equals
NullAttributes.singleton
it is null
-
cloneNode
public org.w3c.dom.Node cloneNode(boolean deep)
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent; (parentNode
isnull
.).
Cloning anElement
copies all attributes and their values, including those generated by the XML processor to represent defaulted attributes, but this method does not copy any text it contains unless it is a deep clone, since the text is contained in a childText
node. Cloning anAttribute
directly, as opposed to be cloned as part of anElement
cloning operation, returns a specified attribute (specified
istrue
). Cloning any other type of node simply returns a copy of this node.
Note that cloning an immutable subtree results in a mutable copy, but the children of anEntityReference
clone are readonly . In addition, clones of unspecifiedAttr
nodes are specified. And, cloningDocument
,DocumentType
,Entity
, andNotation
nodes is implementation dependent.
-
cloning
protected java.lang.Object cloning() throws java.lang.CloneNotSupportedException
protected clone method (not public) copied status ------------------- protected String name ; Y protected String prefix ; Y protected String namespaceURI ; Y protected transient Attributes attributes Y protected String id; Y? protected String href; Y? protected boolean _isRoot = true; Y? protected SOAPEnvelope message = null; N? protected transient DeserializationContext context; Y? protected transient QName typeQName = null; Y? protected Vector qNameAttrs = null; Y? protected transient SAX2EventRecorder recorder = null; N? protected int startEventIndex = 0; N? protected int startContentsIndex = 0; N? protected int endEventIndex = -1; N? protected CharacterData textRep = null; Y? protected MessageElement parent = null; N public ArrayList namespaces = null; Y protected String encodingStyle = null; N? private Object objectValue = null; N?- Returns:
- Throws:
java.lang.CloneNotSupportedException
-
setAllAttributes
public void setAllAttributes(org.xml.sax.Attributes attrs)
set all the attributes of this instance- Parameters:
attrs
- a new attributes list
-
detachAllChildren
public void detachAllChildren()
remove all children.
-
getCompleteAttributes
public org.xml.sax.Attributes getCompleteAttributes()
Obtain an Attributes collection consisting of all attributes for this MessageElement, including namespace declarations.- Returns:
- Attributes collection
-
getName
public java.lang.String getName()
get the local name of this element- Returns:
- name
-
setName
public void setName(java.lang.String name)
set the local part of this element's name- Parameters:
name
-
-
getQName
public QName getQName()
get the fully qualified name of this element- Returns:
- a QName describing the name of thsi element
-
setQName
public void setQName(QName qName)
set the name and namespace of this element- Parameters:
qName
- qualified name
-
setNamespaceURI
public void setNamespaceURI(java.lang.String nsURI)
set the namespace URI of the element- Parameters:
nsURI
- new namespace URI
-
getType
public QName getType()
get the element's type. If we are a reference, we look up our target in the context and return (and cache) its type.- Returns:
-
setType
public void setType(QName qname)
set the element's type- Parameters:
qname
-
-
getRecorder
public SAX2EventRecorder getRecorder()
get the event recorder- Returns:
- recorder or null
-
setRecorder
public void setRecorder(SAX2EventRecorder rec)
set the event recorder- Parameters:
rec
-
-
getEncodingStyle
public java.lang.String getEncodingStyle()
Get the encoding style. If ours is null, walk up the hierarchy and use our parent's. Default if we're the root is "".- Specified by:
getEncodingStyle
in interfaceSOAPElement
- Returns:
- the currently in-scope encoding style
- See Also:
setEncodingStyle(java.lang.String)
-
removeContents
public void removeContents()
remove all chidlren. All SOAPExceptions which can get thrown in this process are ignored.- Specified by:
removeContents
in interfaceSOAPElement
-
getVisibleNamespacePrefixes
public java.util.Iterator getVisibleNamespacePrefixes()
get an iterator over visible prefixes. This includes all declared in parent elements- Specified by:
getVisibleNamespacePrefixes
in interfaceSOAPElement
- Returns:
- an iterator.
-
setEncodingStyle
public void setEncodingStyle(java.lang.String encodingStyle) throws SOAPException
Sets the encoding style for thisSOAPElement
object to one specified. The semantics of a null value, as above in getEncodingStyle() are to just use the parent's value, but null here means set to "".- Specified by:
setEncodingStyle
in interfaceSOAPElement
- Parameters:
encodingStyle
- aString
giving the encoding style- Throws:
java.lang.IllegalArgumentException
- if there was a problem in the encoding style being set.SOAPException
- See Also:
getEncodingStyle()
-
addChild
public void addChild(MessageElement el) throws SOAPException
Note that this method will log a error and no-op if there is a value (set using setObjectValue) in the MessageElement.- Throws:
SOAPException
-
getChildren
public java.util.List getChildren()
get a list of children- Returns:
- a list, or null if there are no children
-
setContentsIndex
public void setContentsIndex(int index)
set the index point of our content's starting in the event recording- Parameters:
index
- index value of the first event of our recorder.
-
setNSMappings
public void setNSMappings(java.util.ArrayList namespaces)
set a new namespace mapping list- Parameters:
namespaces
-
-
getPrefix
public java.lang.String getPrefix(java.lang.String searchNamespaceURI)
get the prefix for a given namespace URI- Parameters:
searchNamespaceURI
- namespace- Returns:
- null for null or emtpy uri, null for no match, and the prefix iff there is a match
-
getNamespaceURI
public java.lang.String getNamespaceURI(java.lang.String searchPrefix)
map from a prefix to a namespace. Will recurse upward the element tree until we get a match- Specified by:
getNamespaceURI
in interfaceSOAPElement
- Parameters:
searchPrefix
-- Returns:
- the prefix, or null for no match
-
getObjectValue
public java.lang.Object getObjectValue()
Returns value of the node as an object of registered type.- Returns:
- Object of proper type, or null if no mapping could be found.
-
getObjectValue
public java.lang.Object getObjectValue(java.lang.Class cls) throws java.lang.Exception
Returns value of the node as an object of registered type.- Parameters:
cls
- Class that contains top level deserializer metadata- Returns:
- Object of proper type, or null if no mapping could be found.
- Throws:
java.lang.Exception
-
setObjectValue
public void setObjectValue(java.lang.Object newValue) throws SOAPException
Sets value of this node to an Object. A serializer needs to be registered for this object class for proper operation.Note that this method will log an error and no-op if there are any children in the MessageElement or if the MessageElement was constructed from XML.
- Parameters:
newValue
- node's value or null.- Throws:
SOAPException
-
getValueAsType
public java.lang.Object getValueAsType(QName type) throws java.lang.Exception
- Throws:
java.lang.Exception
-
getValueAsType
public java.lang.Object getValueAsType(QName type, java.lang.Class cls) throws java.lang.Exception
This is deserialization logic mixed in to our element class. It is only valid we have a deserializer, which means that we were created usingMessageElement(String, String, String, org.xml.sax.Attributes, org.apache.axis.encoding.DeserializationContext)
- Parameters:
type
- type to look up a deserializer for.cls
- class to use for looking up the deserializer. This takes precedence over the type field.- Returns:
- the value of the deserializer
- Throws:
java.lang.Exception
-
addAttribute
public void addAttribute(java.lang.String namespace, java.lang.String localName, QName value)
add an attribute to the qname vector. This is a separate vector from the main attribute list.- Parameters:
namespace
-localName
-value
-
-
addAttribute
public void addAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)
add a normal CDATA/text attribute. There is no check whether or not the attribute already exists.- Parameters:
namespace
- namespace URIlocalName
- local anmevalue
- value
-
addAttribute
public void addAttribute(java.lang.String attrPrefix, java.lang.String namespace, java.lang.String localName, java.lang.String value)
add an attribute. Note that the prefix is not added to our mapping list. Also, there is no check whether or not the attribute already exists.- Parameters:
attrPrefix
- prefix.namespace
- namespace URIlocalName
-value
-
-
setAttribute
public void setAttribute(java.lang.String namespace, java.lang.String localName, java.lang.String value)
Set an attribute, adding the attribute if it isn't already present in this element, and changing the value if it is. Passing null as the value will cause any pre-existing attribute by this name to go away.
-
getAttributeValue
public java.lang.String getAttributeValue(java.lang.String localName)
get the value of an attribute- Parameters:
localName
-- Returns:
- the value or null
-
setEnvelope
public void setEnvelope(SOAPEnvelope env)
bind a a new soap envelope. sets the dirty bit.- Parameters:
env
-
-
getEnvelope
public SOAPEnvelope getEnvelope()
get our current envelope- Returns:
- envelope or null.
-
getRealElement
public MessageElement getRealElement()
get the 'real' element -will follow hrefs.- Returns:
- the message element or null if there is a href to something that is not a MessageElemeent.
-
getAsDocument
public org.w3c.dom.Document getAsDocument() throws java.lang.Exception
get the message element as a document. This serializes the element to a string and then parses it.- Returns:
- Throws:
java.lang.Exception
- See Also:
getAsString()
-
getAsString
public java.lang.String getAsString() throws java.lang.Exception
get the message element as a string. This is not a cheap operation, as we have to serialise the entire message element to the current context, then convert it to a string. Nor is it cached; repeated calls repeat the operation.- Returns:
- an XML fragment in a string.
- Throws:
java.lang.Exception
- if anything went wrong
-
getAsDOM
public org.w3c.dom.Element getAsDOM() throws java.lang.Exception
create a DOM from the message element, by serializing and deserializing the element- Returns:
- the root document element of the element
- Throws:
java.lang.Exception
- See Also:
getAsString()
,getAsDocument()
-
publishToHandler
public void publishToHandler(org.xml.sax.ContentHandler handler) throws org.xml.sax.SAXException
replay the sax events to a handler- Parameters:
handler
-- Throws:
org.xml.sax.SAXException
-
publishContents
public void publishContents(org.xml.sax.ContentHandler handler) throws org.xml.sax.SAXException
replay the sax events to a SAX content handles- Parameters:
handler
-- Throws:
org.xml.sax.SAXException
-
output
public final void output(SerializationContext outputContext) throws java.lang.Exception
This is the public output() method, which will always simply use the recorded SAX stream for this element if it is available. If not, this method calls outputImpl() to allow subclasses and programmatically created messages to serialize themselves.
-
outputImpl
protected void outputImpl(SerializationContext outputContext) throws java.lang.Exception
override point -output to a serialization context.- Parameters:
outputContext
- destination.- Throws:
java.lang.Exception
- if something went wrong.
-
toString
public java.lang.String toString()
Generate a string representation by serializing our contents This is not a lightweight operation, and is repeated whenever you call this method. If the serialization fails, an error is logged and the classicObject.toString()
operation invoked instead.- Overrides:
toString
in classjava.lang.Object
- Returns:
- a string representing the class
-
addMapping
public void addMapping(Mapping map)
add a new namespace/prefix mapping- Parameters:
map
- new mapping to add
-
addChildElement
public SOAPElement addChildElement(Name childName) throws SOAPException
add the child element- Specified by:
addChildElement
in interfaceSOAPElement
- Parameters:
childName
- uri, prefix and local name of the element to add- Returns:
- the child element
- Throws:
SOAPException
- See Also:
SOAPElement.addChildElement(javax.xml.soap.Name)
-
addChildElement
public SOAPElement addChildElement(java.lang.String localName) throws SOAPException
add a child element in the message element's own namespace- Specified by:
addChildElement
in interfaceSOAPElement
- Parameters:
localName
-- Returns:
- the child element
- Throws:
SOAPException
- See Also:
SOAPElement.addChildElement(String)
-
addChildElement
public SOAPElement addChildElement(java.lang.String localName, java.lang.String prefixName) throws SOAPException
add a child element- Specified by:
addChildElement
in interfaceSOAPElement
- Parameters:
localName
-prefixName
-- Returns:
- the child element
- Throws:
SOAPException
- See Also:
SOAPElement.addChildElement(String, String)
-
addChildElement
public SOAPElement addChildElement(java.lang.String localName, java.lang.String childPrefix, java.lang.String uri) throws SOAPException
add a child element- Specified by:
addChildElement
in interfaceSOAPElement
- Parameters:
localName
-childPrefix
-uri
-- Returns:
- the child element
- Throws:
SOAPException
- See Also:
SOAPElement.addChildElement(String, String, String)
-
addChildElement
public SOAPElement addChildElement(SOAPElement element) throws SOAPException
The added child must be an instance of MessageElement rather than an abitrary SOAPElement otherwise a (wrapped) ClassCastException will be thrown.- Specified by:
addChildElement
in interfaceSOAPElement
- Parameters:
element
- theSOAPElement
to be added as a new child- Returns:
- an instance representing the new SOAP element that was actually added to the tree.
- Throws:
SOAPException
- if there was an error in adding this element as a child- See Also:
SOAPElement.addChildElement(javax.xml.soap.SOAPElement)
-
addTextNode
public SOAPElement addTextNode(java.lang.String s) throws SOAPException
add a text node to the document.- Specified by:
addTextNode
in interfaceSOAPElement
- Parameters:
s
- aString
object with the textual content to be added- Returns:
- ourselves
- Throws:
SOAPException
- if there is an error in creating the newText
object- See Also:
SOAPElement.addTextNode(String)
-
addAttribute
public SOAPElement addAttribute(Name attrName, java.lang.String value) throws SOAPException
add a new attribute- Specified by:
addAttribute
in interfaceSOAPElement
- Parameters:
attrName
- name of the attributevalue
- a string value- Returns:
- ourselves
- Throws:
SOAPException
- See Also:
SOAPElement.addAttribute(javax.xml.soap.Name, String)
-
addNamespaceDeclaration
public SOAPElement addNamespaceDeclaration(java.lang.String prefix, java.lang.String uri) throws SOAPException
create aMapping
mapping and add to our namespace list.- Specified by:
addNamespaceDeclaration
in interfaceSOAPElement
- Parameters:
prefix
-uri
-- Returns:
- Throws:
SOAPException
- for anyRuntimeException
caught- See Also:
SOAPElement.addNamespaceDeclaration(String, String)
-
getAttributeValue
public java.lang.String getAttributeValue(Name attrName)
Get the value of an attribute whose namespace and local name are described.- Specified by:
getAttributeValue
in interfaceSOAPElement
- Parameters:
attrName
- qualified name of the attribute- Returns:
- the attribute or null if there was no match
- See Also:
SOAPElement.getAttributeValue(javax.xml.soap.Name)
-
getAllAttributes
public java.util.Iterator getAllAttributes()
Get an interator to all the attributes of the node. The iterator is over a static snapshot of the node names; if attributes are added or deleted during the iteration, this iterator will be not be updated to follow the changes.- Specified by:
getAllAttributes
in interfaceSOAPElement
- Returns:
- an iterator of the attributes.
- See Also:
SOAPElement.getAllAttributes()
-
getNamespacePrefixes
public java.util.Iterator getNamespacePrefixes()
get an iterator of the prefixes. The iterator does not get updated in response to changes in the namespace list.- Specified by:
getNamespacePrefixes
in interfaceSOAPElement
- Returns:
- an iterator over a vector of prefixes
- See Also:
SOAPElement.getNamespacePrefixes()
-
getElementName
public Name getElementName()
get the full name of the element- Specified by:
getElementName
in interfaceSOAPElement
- Returns:
- See Also:
SOAPElement.getElementName()
-
removeAttribute
public boolean removeAttribute(Name attrName)
remove an element- Specified by:
removeAttribute
in interfaceSOAPElement
- Parameters:
attrName
- name of the element- Returns:
- true if the attribute was found and removed.
- See Also:
SOAPElement.removeAttribute(javax.xml.soap.Name)
-
removeNamespaceDeclaration
public boolean removeNamespaceDeclaration(java.lang.String namespacePrefix)
remove a namespace declaration.- Specified by:
removeNamespaceDeclaration
in interfaceSOAPElement
- Parameters:
namespacePrefix
-- Returns:
- true if the prefix was found and removed.
- See Also:
SOAPElement.removeNamespaceDeclaration(String)
-
getChildElements
public java.util.Iterator getChildElements()
get an iterator over the children This iterator may get confused if changes are made to the children while the iteration is in progress.- Specified by:
getChildElements
in interfaceSOAPElement
- Returns:
- an iterator over child elements.
- See Also:
SOAPElement.getChildElements()
-
getChildElement
public MessageElement getChildElement(QName qname)
Convenience method to get the first matching child for a given QName.- Parameters:
qname
-- Returns:
- child element or null
- See Also:
SOAPElement.getChildElements()
-
getChildElements
public java.util.Iterator getChildElements(QName qname)
get an iterator over child elements- Parameters:
qname
- namespace/element name of parts to find. This iterator is not (currently) susceptible to change in the element list during its lifetime, though changes in the contents of the elements are picked up.- Returns:
- an iterator.
-
getChildElements
public java.util.Iterator getChildElements(Name childName)
get an iterator over child elements- Specified by:
getChildElements
in interfaceSOAPElement
- Parameters:
childName
- namespace/element name of parts to find. This iterator is not (currently) susceptible to change in the element list during its lifetime, though changes in the contents of the elements are picked up.- Returns:
- an iterator.
- See Also:
SOAPElement.getChildElements(javax.xml.soap.Name)
-
getTagName
public java.lang.String getTagName()
- Specified by:
getTagName
in interfaceorg.w3c.dom.Element
- Returns:
- the name of the element
- See Also:
Element.getTagName()
-
removeAttribute
public void removeAttribute(java.lang.String attrName) throws org.w3c.dom.DOMException
remove a named attribute.- Specified by:
removeAttribute
in interfaceorg.w3c.dom.Element
- Parameters:
attrName
- name of the attributes- Throws:
org.w3c.dom.DOMException
- See Also:
Element.removeAttribute(String)
-
hasAttribute
public boolean hasAttribute(java.lang.String attrName)
test for an attribute existing- Specified by:
hasAttribute
in interfaceorg.w3c.dom.Element
- Parameters:
attrName
- name of attribute (or null)- Returns:
- true if it exists Note that the behaviour for a null parameter (returns false) is not guaranteed in future
- See Also:
Element.hasAttribute(String)
-
getAttribute
public java.lang.String getAttribute(java.lang.String attrName)
get an attribute by name- Specified by:
getAttribute
in interfaceorg.w3c.dom.Element
- Parameters:
attrName
- of attribute- Returns:
- the attribute value or null
- See Also:
Element.getAttribute(String)
-
removeAttributeNS
public void removeAttributeNS(java.lang.String namespace, java.lang.String localName) throws org.w3c.dom.DOMException
Remove an attribute. If the removed attribute has a default value it is immediately replaced. The replacing attribute has the same namespace URI and local name, as well as the original prefix. If there is no matching attribute, the operation is a no-op.- Specified by:
removeAttributeNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespace
- namespace of attrlocalName
- local name- Throws:
org.w3c.dom.DOMException
- See Also:
Element.removeAttributeNS(String, String)
-
setAttribute
public void setAttribute(java.lang.String name, java.lang.String value) throws org.w3c.dom.DOMException
set or update an attribute.- Specified by:
setAttribute
in interfaceorg.w3c.dom.Element
- Parameters:
name
- attribute namevalue
- attribute value- Throws:
org.w3c.dom.DOMException
- See Also:
Element.setAttribute(String, String)
-
hasAttributeNS
public boolean hasAttributeNS(java.lang.String namespace, java.lang.String localName)
Test for an attribute- Specified by:
hasAttributeNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespace
-localName
-- Returns:
- See Also:
Element.hasAttributeNS(String, String)
-
getAttributeNode
public org.w3c.dom.Attr getAttributeNode(java.lang.String attrName)
Deprecated.this is not implementedThis unimplemented operation is meand to return an attribute as a node- Specified by:
getAttributeNode
in interfaceorg.w3c.dom.Element
- Parameters:
attrName
-- Returns:
- null, always.
- See Also:
Element.getAttributeNode(String)
-
removeAttributeNode
public org.w3c.dom.Attr removeAttributeNode(org.w3c.dom.Attr oldAttr) throws org.w3c.dom.DOMException
remove a an attribue- Specified by:
removeAttributeNode
in interfaceorg.w3c.dom.Element
- Parameters:
oldAttr
-- Returns:
- oldAttr
- Throws:
org.w3c.dom.DOMException
-
setAttributeNode
public org.w3c.dom.Attr setAttributeNode(org.w3c.dom.Attr newAttr) throws org.w3c.dom.DOMException
Deprecated.this is not implementedset the attribute node.- Specified by:
setAttributeNode
in interfaceorg.w3c.dom.Element
- Parameters:
newAttr
-- Returns:
- newAttr
- Throws:
org.w3c.dom.DOMException
- See Also:
Element.setAttributeNode(org.w3c.dom.Attr)
-
setAttributeNodeNS
public org.w3c.dom.Attr setAttributeNodeNS(org.w3c.dom.Attr newAttr) throws org.w3c.dom.DOMException
set an attribute as a node- Specified by:
setAttributeNodeNS
in interfaceorg.w3c.dom.Element
- Parameters:
newAttr
-- Returns:
- null
- Throws:
org.w3c.dom.DOMException
- See Also:
Element.setAttributeNodeNS(org.w3c.dom.Attr)
-
getElementsByTagName
public org.w3c.dom.NodeList getElementsByTagName(java.lang.String tagName)
- Specified by:
getElementsByTagName
in interfaceorg.w3c.dom.Element
- Parameters:
tagName
- tag to look for.- Returns:
- a list of elements
- See Also:
Element.getElementsByTagName(String)
-
getAttributeNS
public java.lang.String getAttributeNS(java.lang.String namespaceURI, java.lang.String localName)
get the attribute with namespace/local name match.- Specified by:
getAttributeNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespaceURI
- namespacelocalName
- name- Returns:
- string value or null if not found
- See Also:
Element.getAttributeNS(String, String)
-
setAttributeNS
public void setAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName, java.lang.String value) throws org.w3c.dom.DOMException
set an attribute or alter an existing one- Specified by:
setAttributeNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespaceURI
- namepsacequalifiedName
- qualified name of the attribuevalue
- value- Throws:
org.w3c.dom.DOMException
- See Also:
Element.setAttributeNS(String, String, String)
-
getAttributeNodeNS
public org.w3c.dom.Attr getAttributeNodeNS(java.lang.String namespace, java.lang.String localName)
Deprecated.not implemented!- Specified by:
getAttributeNodeNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespace
- namespacelocalName
- local name- Returns:
- null
- See Also:
Element.getAttributeNS(String, String)
-
getElementsByTagNameNS
public org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String namespace, java.lang.String localName)
- Specified by:
getElementsByTagNameNS
in interfaceorg.w3c.dom.Element
- Parameters:
namespace
- namespacelocalName
- local name of element- Returns:
- (potentially empty) list of elements that match the (namespace,localname) tuple
- See Also:
Element.getElementsByTagNameNS(String, String)
-
getElementsNS
protected org.w3c.dom.NodeList getElementsNS(org.w3c.dom.Element parentElement, java.lang.String namespace, java.lang.String localName)
helper method for recusively getting the element that has namespace URI and localname- Parameters:
parentElement
- parent elementnamespace
- namespacelocalName
- local name of element- Returns:
- (potentially empty) list of elements that match the (namespace,localname) tuple
-
item
public org.w3c.dom.Node item(int index)
get a child node- Specified by:
item
in interfaceorg.w3c.dom.NodeList
- Parameters:
index
- index value- Returns:
- child or null for out of range value
- See Also:
NodeList.item(int)
-
getLength
public int getLength()
The number of nodes in the list. The range of valid child node indices is 0 tolength-1
inclusive.- Specified by:
getLength
in interfaceorg.w3c.dom.NodeList
- Returns:
- number of children
- Since:
- SAAJ 1.2 : Nodelist Interface
- See Also:
NodeList.getLength()
-
findElement
protected MessageElement findElement(java.util.Vector vec, java.lang.String namespace, java.lang.String localPart)
-
equals
public boolean equals(java.lang.Object obj)
equality test. Does a string match of the two message elements, so is fairly brute force.- Overrides:
equals
in classjava.lang.Object
- Parameters:
obj
-- Returns:
- See Also:
toString()
-
getValue
public java.lang.String getValue()
Get the value of the doc as a string. This usesgetAsDOM()
so is a heavyweight operation.
-
getValueDOM
protected java.lang.String getValueDOM()
-
setValue
public void setValue(java.lang.String value)
Description copied from class:NodeImpl
If this is a Text node then this method will set its value, otherwise it sets the value of the immediate (Text) child of this node. The value of the immediate child of this node can be set only if, there is one child node and that node is a Text node, or if there are no children in which case a child Text node will be created.
-
getOwnerDocument
public org.w3c.dom.Document getOwnerDocument()
Description copied from class:NodeImpl
TheDocument
object associated with this node. This is also theDocument
object used to create new nodes. When this node is aDocument
or aDocumentType
which is not used with anyDocument
yet, this isnull
.- Specified by:
getOwnerDocument
in interfaceorg.w3c.dom.Node
- Overrides:
getOwnerDocument
in classNodeImpl
-
-