messageimpl.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 627 行 · 第 1/2 页
JAVA
627 行
// So use the get body block logic.
Block block = xmlPart.getBodyBlock(context, blockFactory);
if (block != null) {
value = block.getBusinessObject(true);
}
} else {
// Must be SOAP
if (blockFactory instanceof SOAPEnvelopeBlockFactory) {
value = getAsSOAPMessage();
} else {
// TODO: This doesn't seem right to me.
// We should not have an intermediate StringBlock.
// This is not performant. Scheu
OMElement messageOM = getAsOMElement();
String stringValue = messageOM.toString();
String soapNS =
(protocol == Protocol.soap11) ? SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE
: SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE;
QName soapEnvQname = new QName(soapNS, "Envelope");
XMLStringBlockFactory stringFactory =
(XMLStringBlockFactory)
FactoryRegistry.getFactory(XMLStringBlockFactory.class);
Block stringBlock = stringFactory.createFrom(stringValue, null, soapEnvQname);
Block block = blockFactory.createFrom(stringBlock, context);
value = block.getBusinessObject(true);
}
}
return value;
} catch (Throwable e) {
throw ExceptionFactory.makeWebServiceException(e);
}
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.Message#getAttachmentIDs()
*/
public List<String> getAttachmentIDs() {
return attachments.getContentIDList();
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.Message#getDataHandler(java.lang.String)
*/
public DataHandler getDataHandler(String cid) {
String bcid = getBlobCID(cid);
return attachments.getDataHandler(bcid);
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.Message#removeDataHandler(java.lang.String)
*/
public DataHandler removeDataHandler(String cid) {
String bcid = getBlobCID(cid);
DataHandler dh = attachments.getDataHandler(bcid);
attachments.removeDataHandler(bcid);
return dh;
}
private String getBlobCID(String cid) {
String blobCID = cid;
if (cid.startsWith("cid:")) {
blobCID = cid.substring(4); // Skip over cid:
}
return blobCID;
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.XMLPart#getProtocol()
*/
public Protocol getProtocol() {
return protocol;
}
public OMElement getAsOMElement() throws WebServiceException {
return xmlPart.getAsOMElement();
}
public javax.xml.soap.SOAPEnvelope getAsSOAPEnvelope() throws WebServiceException {
return xmlPart.getAsSOAPEnvelope();
}
public Block getBodyBlock(int index, Object context, BlockFactory blockFactory)
throws WebServiceException {
return xmlPart.getBodyBlock(index, context, blockFactory);
}
public Block getHeaderBlock(String namespace, String localPart, Object context,
BlockFactory blockFactory)
throws WebServiceException {
return xmlPart.getHeaderBlock(namespace, localPart, context, blockFactory);
}
public int getNumBodyBlocks() throws WebServiceException {
return xmlPart.getNumBodyBlocks();
}
public int getNumHeaderBlocks() throws WebServiceException {
return xmlPart.getNumHeaderBlocks();
}
public XMLStreamReader getXMLStreamReader(boolean consume)
throws WebServiceException {
return xmlPart.getXMLStreamReader(consume);
}
public boolean isConsumed() {
return xmlPart.isConsumed();
}
public void outputTo(XMLStreamWriter writer, boolean consume)
throws XMLStreamException, WebServiceException {
xmlPart.outputTo(writer, consume);
}
public void removeBodyBlock(int index) throws WebServiceException {
xmlPart.removeBodyBlock(index);
}
public void removeHeaderBlock(String namespace, String localPart)
throws WebServiceException {
xmlPart.removeHeaderBlock(namespace, localPart);
}
public void setBodyBlock(int index, Block block)
throws WebServiceException {
xmlPart.setBodyBlock(index, block);
}
public void setHeaderBlock(String namespace, String localPart, Block block)
throws WebServiceException {
xmlPart.setHeaderBlock(namespace, localPart, block);
}
public String traceString(String indent) {
return xmlPart.traceString(indent);
}
/**
* Load the SAAJConverter
* @return SAAJConverter
*/
SAAJConverter converter = null;
private SAAJConverter getSAAJConverter() {
if (converter == null) {
SAAJConverterFactory factory = (
SAAJConverterFactory)FactoryRegistry.getFactory(SAAJConverterFactory.class);
converter = factory.getSAAJConverter();
}
return converter;
}
public void addDataHandler(DataHandler dh, String id) {
if (id.startsWith("<") && id.endsWith(">")) {
id = id.substring(1, id.length()-1);
}
attachments.addDataHandler(id, dh);
}
public Message getParent() {
return null;
}
public void setParent(Message msg) {
// A Message does not have a parent
throw new UnsupportedOperationException();
}
/**
* @return true if the binding for this message indicates mtom
*/
public boolean isMTOMEnabled() {
return mtomEnabled;
}
/**
* @param true if the binding for this message indicates mtom
*/
public void setMTOMEnabled(boolean b) {
mtomEnabled = b;
}
public XMLFault getXMLFault() throws WebServiceException {
return xmlPart.getXMLFault();
}
public void setXMLFault(XMLFault xmlFault) throws WebServiceException {
xmlPart.setXMLFault(xmlFault);
}
public boolean isFault() throws WebServiceException {
return xmlPart.isFault();
}
public String getXMLPartContentType() {
return xmlPart.getXMLPartContentType();
}
public Style getStyle() {
return xmlPart.getStyle();
}
public void setStyle(Style style) throws WebServiceException {
xmlPart.setStyle(style);
}
public QName getOperationElement() throws WebServiceException {
return xmlPart.getOperationElement();
}
public void setOperationElement(QName operationQName) throws WebServiceException {
xmlPart.setOperationElement(operationQName);
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.Attachment#getMimeHeaders()
*/
public Map getMimeHeaders() {
// Lazily create transport headers.
if (transportHeaders == null) {
transportHeaders = new HashMap();
}
return transportHeaders;
}
/* (non-Javadoc)
* @see org.apache.axis2.jaxws.message.Attachment#setMimeHeaders(java.util.Map)
*/
public void setMimeHeaders(Map map) {
transportHeaders = map;
if (transportHeaders == null) {
transportHeaders = new HashMap();
}
}
public Block getBodyBlock(Object context, BlockFactory blockFactory)
throws WebServiceException {
return xmlPart.getBodyBlock(context, blockFactory);
}
public void setBodyBlock(Block block) throws WebServiceException {
xmlPart.setBodyBlock(block);
}
public void setPostPivot() {
this.postPivot = true;
}
public boolean isPostPivot() {
return postPivot;
}
public int getIndirection() {
return xmlPart.getIndirection();
}
public void setIndirection(int indirection) {
xmlPart.setIndirection(indirection);
}
public MessageContext getMessageContext() {
return messageContext;
}
public void setMessageContext(MessageContext messageContext) {
if (this.messageContext != messageContext) {
// Copy attachments to the new map
Attachments newMap = messageContext.getAxisMessageContext().getAttachmentMap();
Attachments oldMap = attachments;
for (String cid:oldMap.getAllContentIDs()) {
DataHandler dh = oldMap.getDataHandler(cid);
if (dh != null) {
newMap.addDataHandler(cid, dh);
}
}
// If not MTOM and there are attachments, set SWA style
if (!isMTOMEnabled()) {
String[] cids = newMap.getAllContentIDs();
if (cids.length > 0) {
messageContext.setProperty(Configuration.ENABLE_SWA, "true");
}
}
if (log.isDebugEnabled()) {
for (String cid:newMap.getAllContentIDs()) {
log.debug("Message has an attachment with content id= " + cid);
}
}
attachments = newMap;
}
// Check for cached attachment file(s) if attachments exist.
if(attachments != null && !messageContext.getAxisMessageContext().isServerSide()){
AttachmentUtils.findCachedAttachment(attachments);
}
this.messageContext = messageContext;
}
public void setDoingSWA(boolean value) {
doingSWA = value;
}
public boolean isDoingSWA() {
return doingSWA;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?