Class XMLPartBase
java.lang.Object
org.apache.axis2.jaxws.message.impl.XMLPartBase
- All Implemented Interfaces:
XMLPart
- Direct Known Subclasses:
XMLPartImpl
XMLPartBase class for an XMLPart An XMLPart is an abstraction of the xml portion of the message.
The actual representation can be in one of three different forms: * An OM tree * A SAAJ
SOAPEnvelope * An XMLSpine (an optimized representation of the message) The representation is
stored in the private variable (content)
The representation changes as the Message flows through the JAX-WS framework. For example, here
is a typical flow on the inbound case: a) Message is built from OM
(representation: OM) b) Message flows into SOAP Handler chain (representation:
OM->SOAPEnvelope) c) Message flows out of the SOAP Handler chain d) Message flows into the
logical dispatch processing (representation: SOAPEnvelope->XMLSpine)
The key to performance is the implementation of the transformations between OM, SAAJ SOAPEnvelope
and XMLSpine. This base class defines all of the methods that are required on an XMLPart, the
actual transformations are provided by the derived class. This division of work allows the
derived class to concentrate on the optimization of the transformations. For example, the
derived class may implement XMLSpine -> OM using OMObjectWrapperElement constructs...thus avoid
expensive parsing.
Here are the methods that the derived XMLPart should implement. OMElement
_convertSE2OM(SOAPEnvelope se) OMElement _convertSpine2OM(XMLSpine spine) SOAPEnvelope
_convertOM2SE(OMElement om) SOAPEnvelope _convertSpine2SE(XMLSpine spine) XMLSpine
_convertOM2Spine(OMElement om) XMLSpine _convertSE2Spine(SOAPEnvelope se) XMLSpine
_createSpine(Protocol protocol)
NOTE: For XML/HTTP (REST), a SOAP 1.1. Envelope is built and the rest payload is placed in the
body. This purposely mimics the Axis2 implementation.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionprotected abstract jakarta.xml.soap.SOAPEnvelope_convertOM2SE(org.apache.axiom.om.OMElement om) Convert OM tree into a SOAPEnvelopeprotected abstract org.apache.axis2.jaxws.message.impl.XMLSpine_convertOM2Spine(org.apache.axiom.om.OMElement om) Convert OM into XMLSpineprotected abstract org.apache.axiom.om.OMElement_convertSE2OM(jakarta.xml.soap.SOAPEnvelope se) Convert SOAPEnvelope into an OM treeprotected abstract org.apache.axis2.jaxws.message.impl.XMLSpine_convertSE2Spine(jakarta.xml.soap.SOAPEnvelope se) Convert SOAPEnvelope into XMLSPineprotected abstract org.apache.axiom.om.OMElement_convertSpine2OM(org.apache.axis2.jaxws.message.impl.XMLSpine spine) Convert XMLSpine into an OM treeprotected abstract jakarta.xml.soap.SOAPEnvelope_convertSpine2SE(org.apache.axis2.jaxws.message.impl.XMLSpine spine) Convert XMLSpine into a SOAPEnvelopeprotected static org.apache.axis2.jaxws.message.impl.XMLSpine_createSpine(Protocol protocol, jakarta.jws.soap.SOAPBinding.Style style, int indirection, org.apache.axiom.om.OMElement payload) Create an empty, default spine for the specificed protocolvoidappendHeaderBlock(String namespace, String localPart, Block block) appendHeaderBlock Append the block to the list of header blocks.voidclose()Used primarily to ensure the parser is forwarded to the end so it can be closed.org.apache.axiom.om.OMElementgetAsOMElement Get the xml part as a read/write OM...note this returns an OM SOAPEnvelope for all protocols...even RESTjakarta.xml.soap.SOAPEnvelopegetAsEnvelope Get the xml part as a read/write SOAPEnvelopegetBodyBlock(int index, Object context, BlockFactory blockFactory) getBodyBlock Get the body block at the specificed index.getBodyBlock(Object context, BlockFactory blockFactory) getBodyBlock Get the single Body Block.getBodyBlockQNames Calling this method will cache the OM.getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) getHeaderBlock Get the firstheader block with the specified name.getHeaderBlocks(String namespace, String localPart, Object context, BlockFactory blockFactory, org.apache.axiom.soap.RolePlayer rolePlayer) getHeaderBlock Get the header blocks with the specified name The BlockFactory and object context are passed in to help create the proper kind of block.intGet indirection.intgetNumBodyBlocks Calling this method will cache the OM.intgetNumHeaderBlocksgetParent Get the Message object that this XMLPart is attached to, if it is attached to one at all.Get the protocol for this Message (soap11, soap12, etc.)jakarta.jws.soap.SOAPBinding.StylegetStyle()If the XMLPart represents a fault, an XMLFault is returned which describes the fault in a protocol agnostic mannerThe representation of the XMLPart may be in a number of different forms.getXMLStreamReader(boolean consume) Get the XMLStreamReader represented by this Message for the xml partbooleanisConsumed Return true if the part is consumed.booleanisFault()Determines whether the XMLPart represents a FaultvoidoutputTo(XMLStreamWriter writer, boolean consume) Write out the MessagevoidremoveBodyBlock(int index) removeBodyBlock Removes the indicated BodyBlockvoidremoveHeaderBlock(String namespace, String localPart) removeHeaderBlock Removes all header blocks with this namespace/localpartvoidsetBodyBlock(int index, Block block) setBodyBlock Set the block at the specified index Once set, the Message owns the block.voidsetBodyBlock(Block block) setBodyBlock Set this as block as the single block for the message.voidsetHeaderBlock(String namespace, String localPart, Block block) setHeaderBlock replaces the first existing header block with this new block.voidsetIndirection(int indirection) Set indirection.voidsetOperationElement(QName operationQName) Set the operation element qname.voidsetParent Set the Message object that will hold this XMLPartvoidsetStyle(jakarta.jws.soap.SOAPBinding.Style style) Set the Style.voidsetXMLFault(XMLFault xmlFault) Change the XMLPart so that it represents the fault described by XMLFaulttraceString(String indent) Get a traceString...the trace string dumps the contents of the Block without forcing an underlying ill-performant transformation of the message.
-
Method Details
-
getAsOMElement
public org.apache.axiom.om.OMElement getAsOMElement() throws jakarta.xml.ws.WebServiceExceptionDescription copied from interface:XMLPartgetAsOMElement Get the xml part as a read/write OM...note this returns an OM SOAPEnvelope for all protocols...even REST- Specified by:
getAsOMElementin interfaceXMLPart- Returns:
- OMElement
- Throws:
jakarta.xml.ws.WebServiceException
-
getAsSOAPEnvelope
public jakarta.xml.soap.SOAPEnvelope getAsSOAPEnvelope() throws jakarta.xml.ws.WebServiceExceptionDescription copied from interface:XMLPartgetAsEnvelope Get the xml part as a read/write SOAPEnvelope- Specified by:
getAsSOAPEnvelopein interfaceXMLPart- Returns:
- SOAPEnvelope
- Throws:
jakarta.xml.ws.WebServiceException
-
getProtocol
Description copied from interface:XMLPartGet the protocol for this Message (soap11, soap12, etc.)- Specified by:
getProtocolin interfaceXMLPart- Returns:
- Protocl
-
getStyle
public jakarta.jws.soap.SOAPBinding.Style getStyle() -
getIndirection
public int getIndirection()Description copied from interface:XMLPartGet indirection. Used to force the code to look for blocks at a particular location. For DOCUMENT the default is 0 For RPC the default is 1 This method is used to override these settings for special cases.- Specified by:
getIndirectionin interfaceXMLPart- Returns:
- indirection (0 or 1)
-
setStyle
public void setStyle(jakarta.jws.soap.SOAPBinding.Style style) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartSet the Style. If the style is DOCUMENT, the body blocks are located underneath the body element. If the style is set to RPC, then the body blocks are located underneath the rpc operation. -
setIndirection
public void setIndirection(int indirection) Description copied from interface:XMLPartSet indirection. Used to force the code to look for blocks at a particular location. For DOCUMENT the default is 0 For RPC the default is 1 This method is used to override these settings for special cases.- Specified by:
setIndirectionin interfaceXMLPart- Parameters:
indirection- (0 or 1)
-
getOperationElement
- Specified by:
getOperationElementin interfaceXMLPart- Returns:
- the QName of the operation element if Style.rpc. Otherwise null
- Throws:
jakarta.xml.ws.WebServiceException
-
setOperationElement
Description copied from interface:XMLPartSet the operation element qname. The operation qname is only used if Style.rpc- Specified by:
setOperationElementin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
getXMLPartContentType
Description copied from interface:XMLPartThe representation of the XMLPart may be in a number of different forms. Currently the forms are UNKNOWN, OM, SOAPENVELOPE, and SPINE. This method returns a String containing one of these types. This method should only be used for trace and testing purposes. The consumer of a Message should not make any decisions based on the representation of the XMLPart- Specified by:
getXMLPartContentTypein interfaceXMLPart- Returns:
- String
-
getXMLStreamReader
public XMLStreamReader getXMLStreamReader(boolean consume) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartGet the XMLStreamReader represented by this Message for the xml part- Specified by:
getXMLStreamReaderin interfaceXMLPart- Parameters:
consume- true if this is the last request on the Message- Returns:
- XMLStreamReader
- Throws:
jakarta.xml.ws.WebServiceException
-
getXMLFault
Description copied from interface:XMLPartIf the XMLPart represents a fault, an XMLFault is returned which describes the fault in a protocol agnostic manner- Specified by:
getXMLFaultin interfaceXMLPart- Returns:
- the XMLFault object or null
- Throws:
jakarta.xml.ws.WebServiceException- See Also:
-
setXMLFault
Description copied from interface:XMLPartChange the XMLPart so that it represents the fault described by XMLFault- Specified by:
setXMLFaultin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException- See Also:
-
isFault
public boolean isFault() throws jakarta.xml.ws.WebServiceExceptionDescription copied from interface:XMLPartDetermines whether the XMLPart represents a Fault -
isConsumed
public boolean isConsumed()Description copied from interface:XMLPartisConsumed Return true if the part is consumed. Once consumed, the information in the part is no longer available.- Specified by:
isConsumedin interfaceXMLPart- Returns:
- true if the block is consumed (a method was called with consume=true)
-
outputTo
public void outputTo(XMLStreamWriter writer, boolean consume) throws XMLStreamException, jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartWrite out the Message- Specified by:
outputToin interfaceXMLPart- Parameters:
writer- XMLStreamWriterconsume- true if this is the last request on the block.- Throws:
jakarta.xml.ws.WebServiceExceptionXMLStreamException
-
traceString
Description copied from interface:XMLPartGet a traceString...the trace string dumps the contents of the Block without forcing an underlying ill-performant transformation of the message.- Specified by:
traceStringin interfaceXMLPart- Returns:
- String containing trace information
-
getBodyBlock
public Block getBodyBlock(int index, Object context, BlockFactory blockFactory) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartgetBodyBlock Get the body block at the specificed index. The BlockFactory and object context are passed in to help create the proper kind of block. Calling this method will cache the OM. Avoid it in performant situations.- Specified by:
getBodyBlockin interfaceXMLPart- Returns:
- Block or null
- Throws:
jakarta.xml.ws.WebServiceException- See Also:
-
getBodyBlock
public Block getBodyBlock(Object context, BlockFactory blockFactory) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartgetBodyBlock Get the single Body Block. The BlockFactory and object context are passed in to help create the proper kind of block. This method should only be invoked when it is known that there is zero or one block.- Specified by:
getBodyBlockin interfaceXMLPart- Returns:
- Block or null
- Throws:
jakarta.xml.ws.WebServiceException
-
getHeaderBlock
public Block getHeaderBlock(String namespace, String localPart, Object context, BlockFactory blockFactory) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartgetHeaderBlock Get the firstheader block with the specified name. The BlockFactory and object context are passed in to help create the proper kind of block.- Specified by:
getHeaderBlockin interfaceXMLPart- Returns:
- Block
- Throws:
jakarta.xml.ws.WebServiceException
-
getHeaderQNames
- Specified by:
getHeaderQNamesin interfaceXMLPart- Returns:
- QNames of headers
-
getHeaderBlocks
public List<Block> getHeaderBlocks(String namespace, String localPart, Object context, BlockFactory blockFactory, org.apache.axiom.soap.RolePlayer rolePlayer) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartgetHeaderBlock Get the header blocks with the specified name The BlockFactory and object context are passed in to help create the proper kind of block.- Specified by:
getHeaderBlocksin interfaceXMLPart- Parameters:
namespace- uri of headerlocalPart- local name of headercontext- context for blockFactoryblockFactory- kind of factory (i.e. JAXB)- Returns:
- List
- Throws:
jakarta.xml.ws.WebServiceException
-
getNumBodyBlocks
public int getNumBodyBlocks() throws jakarta.xml.ws.WebServiceExceptionDescription copied from interface:XMLPartgetNumBodyBlocks Calling this method will cache the OM. Avoid it in performant situations.- Specified by:
getNumBodyBlocksin interfaceXMLPart- Returns:
- number of body blocks
- Throws:
jakarta.xml.ws.WebServiceException
-
getBodyBlockQNames
getBodyBlockQNames Calling this method will cache the OM. Avoid it in performant situations.- Specified by:
getBodyBlockQNamesin interfaceXMLPart- Returns:
- List of QNames
- Throws:
jakarta.xml.ws.WebServiceException
-
getNumHeaderBlocks
public int getNumHeaderBlocks() throws jakarta.xml.ws.WebServiceExceptionDescription copied from interface:XMLPartgetNumHeaderBlocks- Specified by:
getNumHeaderBlocksin interfaceXMLPart- Returns:
- number of header blocks
- Throws:
jakarta.xml.ws.WebServiceException
-
removeBodyBlock
public void removeBodyBlock(int index) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartremoveBodyBlock Removes the indicated BodyBlock- Specified by:
removeBodyBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
removeHeaderBlock
public void removeHeaderBlock(String namespace, String localPart) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartremoveHeaderBlock Removes all header blocks with this namespace/localpart- Specified by:
removeHeaderBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
setBodyBlock
Description copied from interface:XMLPartsetBodyBlock Set the block at the specified index Once set, the Message owns the block. You must use the getBodyBlock method to access it.- Specified by:
setBodyBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
setBodyBlock
Description copied from interface:XMLPartsetBodyBlock Set this as block as the single block for the message.- Specified by:
setBodyBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
setHeaderBlock
public void setHeaderBlock(String namespace, String localPart, Block block) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartsetHeaderBlock replaces the first existing header block with this new block. If there is no existing header block, one is added to the end of the headers- Specified by:
setHeaderBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
appendHeaderBlock
public void appendHeaderBlock(String namespace, String localPart, Block block) throws jakarta.xml.ws.WebServiceException Description copied from interface:XMLPartappendHeaderBlock Append the block to the list of header blocks. The Message owns the block. You must use the getHeaderBlock method to access it.- Specified by:
appendHeaderBlockin interfaceXMLPart- Throws:
jakarta.xml.ws.WebServiceException
-
getParent
Description copied from interface:XMLPartgetParent Get the Message object that this XMLPart is attached to, if it is attached to one at all. -
setParent
Description copied from interface:XMLPartsetParent Set the Message object that will hold this XMLPart -
_convertSE2OM
protected abstract org.apache.axiom.om.OMElement _convertSE2OM(jakarta.xml.soap.SOAPEnvelope se) throws jakarta.xml.ws.WebServiceException Convert SOAPEnvelope into an OM tree- Parameters:
se- SOAPEnvelope- Returns:
- OM
- Throws:
jakarta.xml.ws.WebServiceException
-
_convertSpine2OM
protected abstract org.apache.axiom.om.OMElement _convertSpine2OM(org.apache.axis2.jaxws.message.impl.XMLSpine spine) throws jakarta.xml.ws.WebServiceException Convert XMLSpine into an OM tree- Parameters:
spine- XMLSpine- Returns:
- OM
- Throws:
jakarta.xml.ws.WebServiceException
-
_convertOM2SE
protected abstract jakarta.xml.soap.SOAPEnvelope _convertOM2SE(org.apache.axiom.om.OMElement om) throws jakarta.xml.ws.WebServiceException Convert OM tree into a SOAPEnvelope- Parameters:
om-- Returns:
- SOAPEnvelope
- Throws:
jakarta.xml.ws.WebServiceException
-
_convertSpine2SE
protected abstract jakarta.xml.soap.SOAPEnvelope _convertSpine2SE(org.apache.axis2.jaxws.message.impl.XMLSpine spine) throws jakarta.xml.ws.WebServiceException Convert XMLSpine into a SOAPEnvelope- Parameters:
spine-- Returns:
- SOAPEnvelope
- Throws:
jakarta.xml.ws.WebServiceException
-
_convertOM2Spine
protected abstract org.apache.axis2.jaxws.message.impl.XMLSpine _convertOM2Spine(org.apache.axiom.om.OMElement om) throws jakarta.xml.ws.WebServiceException Convert OM into XMLSpine- Parameters:
om-- Returns:
- Throws:
jakarta.xml.ws.WebServiceException
-
_convertSE2Spine
protected abstract org.apache.axis2.jaxws.message.impl.XMLSpine _convertSE2Spine(jakarta.xml.soap.SOAPEnvelope se) throws jakarta.xml.ws.WebServiceException Convert SOAPEnvelope into XMLSPine- Parameters:
SOAPEnvelope-- Returns:
- XMLSpine
- Throws:
jakarta.xml.ws.WebServiceException
-
_createSpine
protected static org.apache.axis2.jaxws.message.impl.XMLSpine _createSpine(Protocol protocol, jakarta.jws.soap.SOAPBinding.Style style, int indirection, org.apache.axiom.om.OMElement payload) throws jakarta.xml.ws.WebServiceException Create an empty, default spine for the specificed protocol- Parameters:
protocol-- Returns:
- Throws:
jakarta.xml.ws.WebServiceException
-
close
public void close()Description copied from interface:XMLPartUsed primarily to ensure the parser is forwarded to the end so it can be closed.
-