⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 axismessageadapter.java

📁 提供ESB 应用mule源代码 提供ESB 应用mule源代码
💻 JAVA
字号:
/* * $Id: AxisMessageAdapter.java 10489 2008-01-23 17:53:38Z dfeist $ * -------------------------------------------------------------------------------------- * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com * * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */package org.mule.transport.soap.axis;import org.mule.api.MessagingException;import org.mule.api.ThreadSafeAccess;import org.mule.api.transformer.Transformer;import org.mule.transformer.simple.SerializableToByteArray;import org.mule.transport.AbstractMessageAdapter;import org.mule.transport.soap.MuleSoapHeaders;import org.mule.transport.soap.i18n.SoapMessages;import org.mule.util.StringUtils;import java.util.Iterator;import javax.activation.DataHandler;import javax.xml.soap.SOAPException;import javax.xml.soap.SOAPMessage;import org.apache.axis.MessageContext;import org.apache.axis.attachments.AttachmentPart;/** * <code>AxisMessageAdapter</code> wraps a soap message. The payload of the adapter * is the raw message received from the transport, but you also have access to the * SOAPMessage object by using <code>adapter.getSOAPMessage()</code> */public class AxisMessageAdapter extends AbstractMessageAdapter{    /**     * Serial version     */    private static final long serialVersionUID = -923205879581370143L;    private final Object payload;    private final SOAPMessage soapMessage;    private Transformer trans = new SerializableToByteArray();    public AxisMessageAdapter(Object message) throws MessagingException    {        this.payload = message;        try        {            MessageContext ctx = MessageContext.getCurrentContext();            if (ctx != null)            {                MuleSoapHeaders header = new MuleSoapHeaders(ctx.getMessage().getSOAPPart().getEnvelope()                    .getHeader());                if (StringUtils.isNotBlank(header.getReplyTo()))                {                    setReplyTo(header.getReplyTo());                }                if (StringUtils.isNotBlank(header.getCorrelationGroup()))                {                    setCorrelationGroupSize(Integer.parseInt(header.getCorrelationGroup()));                }                if (StringUtils.isNotBlank(header.getCorrelationSequence()))                {                    setCorrelationSequence(Integer.parseInt(header.getCorrelationSequence()));                }                if (StringUtils.isNotBlank(header.getCorrelationId()))                {                    setCorrelationId(header.getCorrelationId());                }                this.soapMessage = ctx.getMessage();                int x = 1;                try                {                    for (Iterator i = this.soapMessage.getAttachments(); i.hasNext(); x++)                    {                        super.addAttachment(String.valueOf(x), ((AttachmentPart)i.next())                            .getActivationDataHandler());                    }                }                catch (Exception e)                {                    // this will not happen                    logger.fatal("Failed to read attachments", e);                }            }            else            {                this.soapMessage = null;            }        }        catch (SOAPException e)        {            throw new MessagingException(SoapMessages.failedToProcessSoapHeaders(), message, e);        }    }    public AxisMessageAdapter(AxisMessageAdapter template)    {        super(template);        soapMessage = template.soapMessage;        payload = template.payload;        trans = template.trans;    }    /** @return the current message */    public Object getPayload()    {        return payload;    }    public SOAPMessage getSoapMessage()    {        return soapMessage;    }    public void addAttachment(String name, DataHandler dataHandler) throws Exception    {        if (null != soapMessage)        {            soapMessage.addAttachmentPart(new AttachmentPart(dataHandler));        }        super.addAttachment(name, dataHandler);    }    public void removeAttachment(String name) throws Exception    {        if ("all".equalsIgnoreCase(name))        {            soapMessage.removeAllAttachments();            attachments.clear();        }        else        {            throw new SOAPException(SoapMessages.cannotRemoveSingleAttachment().toString());        }    }    public ThreadSafeAccess newThreadCopy()    {        return new AxisMessageAdapter(this);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -