You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by da...@apache.org on 2006/10/30 11:24:17 UTC

svn commit: r469106 - in /webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: engine/AxisEngine.java util/Utils.java

Author: davidillsley
Date: Mon Oct 30 02:24:16 2006
New Revision: 469106

URL: http://svn.apache.org/viewvc?view=rev&rev=469106
Log:
Refactoring response MessageContext creation to take account of lots of common code
I'm doing this in stages.
Part 2 - Modify existing methods to delegate to MessageContextBuilder class

Modified:
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java?view=diff&rev=469106&r1=469105&r2=469106
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java Mon Oct 30 02:24:16 2006
@@ -38,6 +38,7 @@
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.TransportSender;
 import org.apache.axis2.util.JavaUtils;
+import org.apache.axis2.util.MessageContextBuilder;
 import org.apache.axis2.util.UUIDGenerator;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -134,340 +135,12 @@
      * This method is called to handle any error that occurs at inflow or outflow. But if the
      * method is called twice, it implies that sending the error handling has failed, in which case
      * the method logs the error and exists.
-     *
-     * @param processingContext
-     * @param e
-     * @throws AxisFault
      */
     public MessageContext createFaultMessageContext(MessageContext processingContext, Throwable e)
             throws AxisFault {
-        if (processingContext.isProcessingFault()) {
-
-            // We get the error file processing the fault. nothing we can do
-            throw new AxisFault(Messages.getMessage("errorwhileProcessingFault"));
-        }
-
-        MessageContext faultContext = new MessageContext();
-        faultContext.setConfigurationContext(processingContext.getConfigurationContext());
-        faultContext.setSessionContext(processingContext.getSessionContext());
-        faultContext.setTransportIn(processingContext.getTransportIn());
-        faultContext.setTransportOut(processingContext.getTransportOut());
-
-        faultContext.setMessageID(UUIDGenerator.getUUID());
-        faultContext.addRelatesTo(new RelatesTo(processingContext.getOptions().getMessageId()));
-        faultContext.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
-                processingContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
-        faultContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
-                processingContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));
-        faultContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
-                processingContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
-        
-        // register the fault message context
-        if (processingContext.getAxisOperation() != null && processingContext.getOperationContext() != null) {
-            processingContext.getAxisOperation().addFaultMessageContext(faultContext, processingContext.getOperationContext());
-        }
-
-        ServiceContext serviceContext = processingContext.getServiceContext();
-        if (serviceContext != null) {
-            faultContext.setServiceContext(serviceContext);
-        }
-
-        faultContext.setOperationContext(processingContext.getOperationContext());
-        faultContext.setProcessingFault(true);
-        faultContext.setServerSide(true);
-        faultContext.setDoingREST(processingContext.isDoingREST());
-
-        faultContext.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
-
-        // Add correct Action
-        AxisOperation op = processingContext.getAxisOperation();
-        if(op != null && op.getFaultAction()!=null){
-            faultContext.setWSAAction(processingContext.getAxisOperation().getFaultAction());
-        }
-        else{ //If, for some reason there is no value set, should use a sensible action.
-            faultContext.setWSAAction(Final.WSA_SOAP_FAULT_ACTION);
-        }
-                
-        // there are some information  that the fault thrower wants to pass to the fault path.
-        // Means that the fault is a ws-addressing one hence use the ws-addressing fault action.
-        Object faultInfoForHeaders = processingContext.getProperty(Constants.FAULT_INFORMATION_FOR_HEADERS);
-        if (faultInfoForHeaders != null) {
-            faultContext.setProperty(Constants.FAULT_INFORMATION_FOR_HEADERS, faultInfoForHeaders);
-            faultContext.setWSAAction(Final.WSA_FAULT_ACTION);
-        }
-
-        // if the exception is due to a problem in the faultTo header itself, we can not use those
-        // fault informatio to send the error. Try to send using replyTo, leave it to transport
-        boolean doNotSendFaultUsingFaultTo = false;
-        if (faultInfoForHeaders != null) {
-            String problemHeaderName = (String) ((Map) faultInfoForHeaders).get(AddressingConstants.Final.FAULT_HEADER_PROB_HEADER_QNAME);
-            doNotSendFaultUsingFaultTo = (problemHeaderName != null && (AddressingConstants.WSA_DEFAULT_PREFIX + ":" + AddressingConstants.WSA_FAULT_TO).equals(problemHeaderName));
-        }
-
-        EndpointReference faultTo = processingContext.getFaultTo();
-        if (faultTo != null && !doNotSendFaultUsingFaultTo) {
-            faultContext.setTo(faultTo);
-        }
-        else {
-            faultContext.setTo(processingContext.getReplyTo());
-        }
-        
-        // do Target Resolution
-        faultContext.getConfigurationContext().getAxisConfiguration().getTargetResolverChain().resolveTarget(faultContext);
-
-        //Determine that we have the correct transport available.
-        TransportOutDescription transportOut = faultContext.getTransportOut();
-
-        try {
-            EndpointReference responseEPR = faultContext.getTo();
-            if (faultContext.isServerSide() && responseEPR != null) {
-                if (!responseEPR.hasAnonymousAddress() && !responseEPR.hasNoneAddress()) {
-                    URI uri = new URI(responseEPR.getAddress());
-                    String scheme = uri.getScheme();
-                    if (!transportOut.getName().getLocalPart().equals(scheme)) {
-                        ConfigurationContext configurationContext = faultContext.getConfigurationContext();
-                        transportOut = configurationContext.getAxisConfiguration()
-                                .getTransportOut(new QName(scheme));
-                        if (transportOut == null) {
-                            throw new AxisFault("Can not find the transport sender : " + scheme);
-                        }
-                        faultContext.setTransportOut(transportOut);
-                    }
-                }
-            }
-        } catch (URISyntaxException urise) {
-            throw new AxisFault(urise);
-        }
-
-        SOAPEnvelope envelope;
-
-        if (processingContext.isSOAP11()) {
-            envelope = OMAbstractFactory.getSOAP11Factory().getDefaultFaultEnvelope();
-        } else {
-
-            // Following will make SOAP 1.2 as the default, too.
-            envelope = OMAbstractFactory.getSOAP12Factory().getDefaultFaultEnvelope();
-        }
-
-        extractFaultInformationFromMessageContext(processingContext, envelope.getBody().getFault(),
-                e);
-        faultContext.setEnvelope(envelope);
-        faultContext.setProperty(MessageContext.TRANSPORT_OUT,
-                processingContext.getProperty(MessageContext.TRANSPORT_OUT));
-        faultContext.setProperty(Constants.OUT_TRANSPORT_INFO,
-                processingContext.getProperty(Constants.OUT_TRANSPORT_INFO));
-
-        return faultContext;
+        return MessageContextBuilder.createFaultMessageContext(processingContext, e);
     }
-
-    /**
-     * Information to create the SOAPFault can be extracted from different places.
-     * 1. Those information may have been put in to the message context by some handler. When someone
-     * is putting like that, he must make sure the SOAPElements he is putting must be from the
-     * correct SOAP Version.
-     * 2. SOAPProcessingException is flexible enough to carry information about the fault. For example
-     * it has an attribute to store the fault code. The fault reason can be extracted from the
-     * message of the exception. I opted to put the stacktrace under the detail element.
-     * eg : <Detail>
-     * <Exception> stack trace goes here </Exception>
-     * <Detail>
-     * <p/>
-     * If those information can not be extracted from any of the above places, I default the soap
-     * fault values to following.
-     * <Fault>
-     * <Code>
-     * <Value>env:Receiver</Value>
-     * </Code>
-     * <Reason>
-     * <Text>unknown</Text>
-     * </Reason>
-     * <Role/>
-     * <Node/>
-     * <Detail/>
-     * </Fault>
-     * <p/>
-     * -- EC
-     *
-     * @param context
-     * @param fault
-     * @param e
-     */
-    private void extractFaultInformationFromMessageContext(MessageContext context, SOAPFault fault,
-                                                           Throwable e) {
-        SOAPProcessingException soapException = null;
-        AxisFault axisFault = null;
-
-        if (e != null) {
-            if (e instanceof AxisFault) {
-                axisFault = (AxisFault) e;
-            } else if (e.getCause() instanceof AxisFault) {
-                axisFault = (AxisFault) e.getCause();
-            }
-        }
-
-        if (e instanceof SOAPProcessingException) {
-            soapException = (SOAPProcessingException) e;
-        } else if (axisFault != null) {
-            if (axisFault.getCause() instanceof SOAPProcessingException) {
-                soapException = (SOAPProcessingException) axisFault.getCause();
-            }
-        } else {
-            // we have recd an instance of just the Exception class
-        }
-
-        // user can set the fault information to the message context or to the AxisFault itself.
-        // whatever user sets to the message context, supercedes eerything.
-
-        Object faultCode = context.getProperty(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME);
-        String soapFaultCode = "";
-
-
-        if (faultCode != null) {
-            fault.setCode((SOAPFaultCode) faultCode);
-        } else if (soapException != null) {
-            soapFaultCode = soapException.getFaultCode();
-        } else if (axisFault != null) {
-
-            Map faultElementsMap = axisFault.getFaultElements();
-            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME) != null) {
-                fault.setCode((SOAPFaultCode) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_CODE_LOCAL_NAME));
-            } else {
-                QName faultCodeQName = axisFault.getFaultCode();
-                if (faultCodeQName != null) {
-                    if (faultCodeQName.getLocalPart().indexOf(":") == -1) {
-                        String prefix = faultCodeQName.getPrefix();
-                        String uri = faultCodeQName.getNamespaceURI();
-                        prefix = prefix == null || "".equals(prefix) ? Constants.AXIS2_NAMESPACE_PREFIX : prefix;
-                        uri = uri == null || "".equals(uri) ? Constants.AXIS2_NAMESPACE_URI : uri;
-                        soapFaultCode = prefix + ":" + faultCodeQName.getLocalPart();
-                        fault.declareNamespace(uri, prefix);
-                    } else {
-                        soapFaultCode = faultCodeQName.getLocalPart();
-                    }
-                }
-            }
-        }
-
-        // defaulting to fault code Sender, if no message is available
-        if (faultCode == null && context.getEnvelope() != null) {
-            soapFaultCode = ("".equals(soapFaultCode) || (soapFaultCode == null))
-                    ? getSenderFaultCode(context.getEnvelope().getNamespace())
-                    : soapFaultCode;
-            fault.getCode().getValue().setText(soapFaultCode);
-        }
-
-        Object faultReason = context.getProperty(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME);
-        String message = "";
-
-        if (faultReason != null) {
-            fault.setReason((SOAPFaultReason) faultReason);
-            message = fault.getReason().getFirstSOAPText().getText();
-        } else if (soapException != null) {
-            message = soapException.getMessage();
-        } else if (axisFault != null) {
-            Map faultElementsMap = axisFault.getFaultElements();
-            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME) != null) {
-                fault.setReason((SOAPFaultReason) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_REASON_LOCAL_NAME));
-            } else {
-                message = axisFault.getReason();
-                if (message == null || "".equals(message)) {
-                    message = getFaultReasonFromException(e, context);
-                }
-//                message = message != null && "".equals(message) ? message : e.getMessage();
-            }
-
-
-        }
-
-        // defaulting to reason, unknown, if no reason is available
-        if (faultReason == null) {
-            message = ("".equals(message) || (message == null))
-                    ? "unknown"
-                    : message;
-            fault.getReason().getFirstSOAPText().setLang("en-US");
-            fault.getReason().getFirstSOAPText().setText(message);
-        }
-
-
-        Object faultRole = context.getProperty(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME);
-        if (faultRole != null) {
-            fault.getRole().setText((String) faultRole);
-        } else if (axisFault != null) {
-            Map faultElementsMap = axisFault.getFaultElements();
-            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME) != null) {
-                fault.setRole((SOAPFaultRole) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_ROLE_LOCAL_NAME));
-            }
-        }
-
-        Object faultNode = context.getProperty(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME);
-        if (faultNode != null) {
-            fault.getNode().setText((String) faultNode);
-        } else if (axisFault != null) {
-            Map faultElementsMap = axisFault.getFaultElements();
-            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME) != null) {
-                fault.setNode((SOAPFaultNode) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_NODE_LOCAL_NAME));
-            }
-        }
-
-        // Allow handlers to override the sendStacktraceDetailsWithFaults setting from the Configuration to allow
-        // WS-* protocol faults to not include the exception.
-        boolean sendStacktraceDetailsWithFaults = false;
-        OperationContext oc = context.getOperationContext();
-        Object flagFromContext = null;
-        if(oc!=null){
-            flagFromContext = context.getOperationContext().getProperty(Constants.Configuration.SEND_STACKTRACE_DETAILS_WITH_FAULTS);
-        }
-        if(flagFromContext!=null){
-            sendStacktraceDetailsWithFaults = JavaUtils.isTrue(flagFromContext);
-        }else{
-            Parameter param = context.getParameter(Constants.Configuration.SEND_STACKTRACE_DETAILS_WITH_FAULTS);
-            sendStacktraceDetailsWithFaults = JavaUtils.isTrue(param.getValue());    
-        }
-
-        Object faultDetail = context.getProperty(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME);
-        if (faultDetail != null) {
-            fault.setDetail((SOAPFaultDetail) faultDetail);
-        } else if (axisFault != null) {
-            Map faultElementsMap = axisFault.getFaultElements();
-            if (faultElementsMap != null && faultElementsMap.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME) != null) {
-                fault.setDetail((SOAPFaultDetail) faultElementsMap.get(SOAP12Constants.SOAP_FAULT_DETAIL_LOCAL_NAME));
-            } else {
-                OMElement detail = axisFault.getDetail();
-                if (detail != null) {
-                    fault.getDetail().addDetailEntry(detail);
-                } else if (sendStacktraceDetailsWithFaults) {
-                    fault.setException(axisFault);
-                }
-            }
-        } else if (fault.getException() == null && sendStacktraceDetailsWithFaults) {
-            if (e instanceof Exception) {
-                fault.setException((Exception) e);
-            } else {
-                fault.setException(new Exception(e));
-            }
-        }
-
-
-    }
-
-    /**
-     * By the time the exception comes here it can be wrapped by so many levels. This will crip down
-     * to the root cause and get the initial error depending on the property
-     *
-     * @param e
-     */
-    private String getFaultReasonFromException(Throwable e, MessageContext context) {
-        Throwable throwable = e;
-        Parameter param = context.getParameter(Constants.Configuration.DRILL_DOWN_TO_ROOT_CAUSE_FOR_FAULT_REASON);
-        boolean drillDownToRootCauseForFaultReason = param != null && ((String) param.getValue()).equalsIgnoreCase("true");
-        if (drillDownToRootCauseForFaultReason) {
-            while (throwable.getCause() != null) {
-                throwable = throwable.getCause();
-            }
-        }
-        return throwable.getMessage();
-    }
-
+   
     /**
      * This methods represents the inflow of the Axis, this could be either at the server side or the client side.
      * Here the <code>ExecutionChain</code> is created using the Phases. The Handlers at the each Phases is ordered in

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java?view=diff&rev=469106&r1=469105&r2=469106
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/Utils.java Mon Oct 30 02:24:16 2006
@@ -17,14 +17,29 @@
 
 package org.apache.axis2.util;
 
+import java.io.File;
+import java.util.HashMap;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
-import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.addressing.RelatesTo;
-import org.apache.axis2.client.Options;
-import org.apache.axis2.context.*;
-import org.apache.axis2.description.*;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.context.ServiceGroupContext;
+import org.apache.axis2.description.AxisModule;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.AxisServiceGroup;
+import org.apache.axis2.description.Flow;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.OutInAxisOperation;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.PhaseRule;
 import org.apache.axis2.engine.AxisConfiguration;
 import org.apache.axis2.engine.AxisError;
 import org.apache.axis2.engine.Handler;
@@ -33,13 +48,6 @@
 import org.apache.axis2.receivers.RawXMLINOutMessageReceiver;
 import org.apache.axis2.wsdl.WSDLConstants;
 
-import javax.xml.namespace.QName;
-import java.io.File;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.HashMap;
-import java.util.Iterator;
-
 public class Utils {
     public static void addHandler(Flow flow, Handler handler, String phaseName) {
         HandlerDescription handlerDesc = new HandlerDescription();
@@ -51,96 +59,13 @@
         flow.addHandler(handlerDesc);
     }
 
+    /**
+     * Replaced by MessageContextBuilder.createOutMessageContext()
+     */
     public static MessageContext createOutMessageContext(MessageContext inMessageContext) throws AxisFault {
-        MessageContext newmsgCtx = new MessageContext();
-
-        newmsgCtx.setConfigurationContext(inMessageContext.getConfigurationContext());
-        newmsgCtx.setSessionContext(inMessageContext.getSessionContext());
-        newmsgCtx.setTransportIn(inMessageContext.getTransportIn());
-        newmsgCtx.setTransportOut(inMessageContext.getTransportOut());
-        
-        Options oldOptions =
-                inMessageContext.getOptions();
-
-        newmsgCtx.setMessageID(UUIDGenerator.getUUID());
-        newmsgCtx.setTo(oldOptions.getReplyTo());
-        newmsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
-                inMessageContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));
-        newmsgCtx.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
-                inMessageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
-
-        // do Target Resolution
-        newmsgCtx.getConfigurationContext().getAxisConfiguration().getTargetResolverChain().resolveTarget(newmsgCtx);
-
-        newmsgCtx.addRelatesTo(new RelatesTo(oldOptions.getMessageId()));
-
-        AxisService axisService = inMessageContext.getAxisService();
-        if (axisService != null && Constants.SCOPE_SOAP_SESSION.equals(axisService.getScope())) {
-            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_ANONYMOUS_URL));
-            // add the service group id as a reference parameter
-            String serviceGroupContextId = inMessageContext.getServiceGroupContextId();
-            if (serviceGroupContextId != null && !"".equals(serviceGroupContextId)) {
-                EndpointReference replyToEPR = newmsgCtx.getReplyTo();
-                replyToEPR.addReferenceParameter(new QName(Constants.AXIS2_NAMESPACE_URI,
-                        Constants.SERVICE_GROUP_ID, Constants.AXIS2_NAMESPACE_PREFIX), serviceGroupContextId);
-            }
-        }
-        else {
-            newmsgCtx.setReplyTo(new EndpointReference(AddressingConstants.Final.WSA_NONE_URI));            
-        }
-        
-        AxisOperation ao = inMessageContext.getAxisOperation();
-        if (ao.getOutputAction() != null) {
-            newmsgCtx.setWSAAction(ao.getOutputAction());
-        } else {
-            newmsgCtx.setWSAAction(oldOptions.getAction());
-        }
-        
-        newmsgCtx.setAxisMessage(ao.getMessage(WSDLConstants.MESSAGE_LABEL_OUT_VALUE));
-        newmsgCtx.setOperationContext(inMessageContext.getOperationContext());
-        newmsgCtx.setServiceContext(inMessageContext.getServiceContext());
-        newmsgCtx.setProperty(MessageContext.TRANSPORT_OUT,
-                inMessageContext.getProperty(MessageContext.TRANSPORT_OUT));
-        newmsgCtx.setProperty(Constants.OUT_TRANSPORT_INFO,
-                inMessageContext.getProperty(Constants.OUT_TRANSPORT_INFO));
-
-        // Setting the charater set encoding
-        newmsgCtx.setProperty(Constants.Configuration.CHARACTER_SET_ENCODING,
-                inMessageContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING));
-        newmsgCtx.setDoingREST(inMessageContext.isDoingREST());
-        newmsgCtx.setDoingMTOM(inMessageContext.isDoingMTOM());
-        newmsgCtx.setServerSide(inMessageContext.isServerSide());
-        newmsgCtx.setServiceGroupContextId(inMessageContext.getServiceGroupContextId());
-
-        // write the Message to the Wire
-        TransportOutDescription transportOut = newmsgCtx.getTransportOut();
-
-        //there may be instance where you want to send the response to replyTo
-        //and this default behaviour should happen if somebody (e.g. a module) has not already provided
-        //a Sender.
-        try {
-            EndpointReference responseEPR = newmsgCtx.getTo();
-            if (newmsgCtx.isServerSide() && responseEPR != null) {
-                if (!responseEPR.hasAnonymousAddress() && !responseEPR.hasNoneAddress()) {
-                    URI uri = new URI(responseEPR.getAddress());
-                    String scheme = uri.getScheme();
-                    if (!transportOut.getName().getLocalPart().equals(scheme)) {
-                        ConfigurationContext configurationContext = newmsgCtx.getConfigurationContext();
-                        transportOut = configurationContext.getAxisConfiguration()
-                                .getTransportOut(new QName(scheme));
-                        if (transportOut == null) {
-                            throw new AxisFault("Can not find the transport sender : " + scheme);
-                        }
-                        newmsgCtx.setTransportOut(transportOut);
-                    }
-                }
-            }
-        } catch (URISyntaxException e) {
-            throw new AxisFault(e);
-        }
-        return newmsgCtx;
+        return MessageContextBuilder.createOutMessageContext(inMessageContext);
     }
-
+    
     public static AxisService createSimpleService(QName serviceName, String className, QName opName)
             throws AxisFault {
         return createSimpleService(serviceName, new RawXMLINOutMessageReceiver(), className,



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org