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/11/15 22:32:53 UTC
svn commit: r475437 - in
/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2: engine/
receivers/ transport/http/ transport/http/server/ transport/mail/
transport/mail/server/ transport/tcp/ util/
Author: davidillsley
Date: Wed Nov 15 13:32:52 2006
New Revision: 475437
URL: http://svn.apache.org/viewvc?view=rev&rev=475437
Log:
Merge and redo refactor of response MessageContext creation to take account of lots of common code.
All roads now lead to the MessageContextBuilder
Modified:
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/engine/AxisEngine.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.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=475437&r1=475436&r2=475437
==============================================================================
--- 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 Wed Nov 15 13:32:52 2006
@@ -17,38 +17,27 @@
package org.apache.axis2.engine;
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.soap.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPConstants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPHeaderBlock;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.Constants;
-import org.apache.axis2.addressing.AddressingConstants;
-import org.apache.axis2.addressing.AddressingConstants.Final;
-import org.apache.axis2.addressing.EndpointReference;
-import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
-import org.apache.axis2.context.ServiceContext;
import org.apache.axis2.description.AxisOperation;
-import org.apache.axis2.description.Parameter;
import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.engine.Handler.InvocationResponse;
import org.apache.axis2.i18n.Messages;
import org.apache.axis2.transport.TransportSender;
-import org.apache.axis2.util.JavaUtils;
-import org.apache.axis2.util.UUIDGenerator;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.xml.namespace.QName;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.Map;
-
/**
* There is one engine for the Server and the Client. the send() and receive()
* Methods are the basic operations the Sync, Async messageing are build on top.
@@ -129,336 +118,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
+ * @deprecated (post 1.1 branch)
+ * @see org.apache.axis2.util.MessageContextBuilder.createFaultMessageContext()
*/
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(engineContext);
- 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;
- }
-
- /**
- * 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;
- 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();
+ return MessageContextBuilder.createFaultMessageContext(processingContext, e);
}
/**
@@ -709,14 +374,6 @@
sender.invoke(msgContext);
}
- }
-
- private String getSenderFaultCode(OMNamespace soapNamespace) {
- return SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespace.getNamespaceURI())
- ? SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX + ":"
- + SOAP12Constants.FAULT_CODE_SENDER
- : SOAP12Constants.SOAP_DEFAULT_NAMESPACE_PREFIX + ":"
- + SOAP11Constants.FAULT_CODE_SENDER;
}
/**
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutAsyncMessageReceiver.java Wed Nov 15 13:32:52 2006
@@ -20,6 +20,7 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.axis2.util.Utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -46,7 +47,7 @@
AxisEngine engine =
new AxisEngine(messageCtx.getOperationContext().getServiceContext()
.getConfigurationContext());
- MessageContext faultContext = engine.createFaultMessageContext(messageCtx, fault);
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(messageCtx, fault);
engine.sendFault(faultContext);
}
@@ -54,7 +55,7 @@
Runnable theadedTask = new Runnable() {
public void run() {
try {
- MessageContext newmsgCtx = Utils.createOutMessageContext(messageCtx);
+ MessageContext newmsgCtx = MessageContextBuilder.createOutMessageContext(messageCtx);
newmsgCtx.getOperationContext().addMessageContext(newmsgCtx);
ThreadContextDescriptor tc = setThreadContext(messageCtx);
try {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/receivers/AbstractInOutSyncMessageReceiver.java Wed Nov 15 13:32:52 2006
@@ -20,7 +20,7 @@
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.util.Utils;
+import org.apache.axis2.util.MessageContextBuilder;
/**
* This is the Absract IN-OUT MEP MessageReceiver. The
@@ -31,7 +31,7 @@
throws AxisFault;
public final void receive(MessageContext msgContext) throws AxisFault {
- MessageContext outMsgContext = Utils.createOutMessageContext(msgContext);
+ MessageContext outMsgContext = MessageContextBuilder.createOutMessageContext(msgContext);
outMsgContext.getOperationContext().addMessageContext(outMsgContext);
ThreadContextDescriptor tc = setThreadContext(msgContext);
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/AxisServlet.java Wed Nov 15 13:32:52 2006
@@ -36,6 +36,7 @@
import org.apache.axis2.transport.http.server.HttpUtils;
import org.apache.axis2.transport.http.util.RESTUtil;
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;
@@ -300,7 +301,7 @@
msgContext.setProperty(MessageContext.TRANSPORT_OUT, out);
AxisEngine engine = new AxisEngine(configContext);
- MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
engine.sendFault(faultContext);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/http/server/DefaultHttpServiceProcessor.java Wed Nov 15 13:32:52 2006
@@ -44,6 +44,7 @@
import org.apache.axis2.description.TransportInDescription;
import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.axis2.util.UUIDGenerator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -191,7 +192,7 @@
msgContext.setProperty(MessageContext.TRANSPORT_OUT, outbuffer.getOutputStream());
msgContext.setProperty(Constants.OUT_TRANSPORT_INFO, outbuffer);
- MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
// If the fault is not going along the back channel we should be 202ing
if (AddressingHelper.isFaultRedirected(msgContext)) {
response.setStatusLine(new StatusLine(ver, 202, "Accepted"));
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/MailWorker.java Wed Nov 15 13:32:52 2006
@@ -21,6 +21,7 @@
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -59,7 +60,7 @@
try {
if (msgContext != null) {
MessageContext faultContext =
- engine.createFaultMessageContext(msgContext, e);
+ MessageContextBuilder.createFaultMessageContext(msgContext, e);
engine.sendFault(faultContext);
}
} catch (Exception e1) {
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/mail/server/MailSorter.java Wed Nov 15 13:32:52 2006
@@ -24,6 +24,7 @@
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axis2.AxisFault;
import org.apache.axis2.transport.mail.Constants;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
@@ -139,7 +140,7 @@
} catch (Exception e) {
try {
if (msgContext != null) {
- MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
engine.sendFault(faultContext);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/transport/tcp/TCPWorker.java Wed Nov 15 13:32:52 2006
@@ -30,6 +30,7 @@
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.util.MessageContextBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -103,7 +104,7 @@
if (msgContext != null) {
msgContext.setProperty(MessageContext.TRANSPORT_OUT, socket.getOutputStream());
- MessageContext faultContext = engine.createFaultMessageContext(msgContext, e);
+ MessageContext faultContext = MessageContextBuilder.createFaultMessageContext(msgContext, e);
engine.sendFault(faultContext);
}
Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java?view=diff&rev=475437&r1=475436&r2=475437
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/util/MessageContextBuilder.java Wed Nov 15 13:32:52 2006
@@ -232,6 +232,8 @@
}
context.setTransportOut(transportOut);
}
+ context.getOperationContext().setProperty(
+ Constants.DIFFERENT_EPR, Constants.VALUE_TRUE);
}
}
} catch (URISyntaxException urise) {
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=475437&r1=475436&r2=475437
==============================================================================
--- 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 Wed Nov 15 13:32:52 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,95 +59,12 @@
flow.addHandler(handlerDesc);
}
+ /**
+ * @deprecated (post 1.1 branch)
+ * @see org.apache.axis2.util.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);
- }
- inMessageContext.getOperationContext().setProperty(
- Constants.DIFFERENT_EPR, Constants.VALUE_TRUE);
- }
- }
- } catch (URISyntaxException e) {
- throw new AxisFault(e);
- }
- return newmsgCtx;
+ return MessageContextBuilder.createOutMessageContext(inMessageContext);
}
public static AxisService createSimpleService(QName serviceName, String className, QName opName)
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org