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 di...@apache.org on 2007/06/08 15:49:00 UTC
svn commit: r545504 - in /webservices/axis2/trunk/java/modules/jaxws:
src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java
test-resources/log4j.properties
Author: dims
Date: Fri Jun 8 06:49:00 2007
New Revision: 545504
URL: http://svn.apache.org/viewvc?view=rev&rev=545504
Log:
Fix for AXIS2-2784 - When exception arises from createMessageFromValue, create Protocol specific exception instead of the generic WebserviceException / Also switched the logs from INFO to ERROR to make it less verbose
Modified:
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java
webservices/axis2/trunk/java/modules/jaxws/test-resources/log4j.properties
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java?view=diff&rev=545504&r1=545503&r2=545504
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/dispatch/BaseDispatch.java Fri Jun 8 06:49:00 2007
@@ -18,10 +18,29 @@
*/
package org.apache.axis2.jaxws.client.dispatch;
+import java.net.HttpURLConnection;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Future;
+
+import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConstants;
+import javax.xml.soap.SOAPFactory;
+import javax.xml.soap.SOAPFault;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Binding;
+import javax.xml.ws.ProtocolException;
+import javax.xml.ws.Response;
+import javax.xml.ws.WebServiceException;
+import javax.xml.ws.Service.Mode;
+import javax.xml.ws.http.HTTPBinding;
+import javax.xml.ws.http.HTTPException;
+import javax.xml.ws.soap.SOAPBinding;
+import javax.xml.ws.soap.SOAPFaultException;
+
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.jaxws.BindingProvider;
import org.apache.axis2.jaxws.ExceptionFactory;
-import org.apache.axis2.jaxws.i18n.Messages;
import org.apache.axis2.jaxws.client.async.AsyncResponse;
import org.apache.axis2.jaxws.core.InvocationContext;
import org.apache.axis2.jaxws.core.InvocationContextFactory;
@@ -29,26 +48,18 @@
import org.apache.axis2.jaxws.core.controller.AxisInvocationController;
import org.apache.axis2.jaxws.core.controller.InvocationController;
import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.i18n.Messages;
import org.apache.axis2.jaxws.marshaller.impl.alt.MethodMarshallerUtils;
import org.apache.axis2.jaxws.message.Message;
+import org.apache.axis2.jaxws.message.Protocol;
+import org.apache.axis2.jaxws.message.util.XMLFaultUtils;
import org.apache.axis2.jaxws.spi.Constants;
import org.apache.axis2.jaxws.spi.ServiceDelegate;
import org.apache.axis2.jaxws.spi.migrator.ApplicationContextMigratorUtil;
+import org.apache.axis2.jaxws.utility.SAAJFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.xml.transform.dom.DOMSource;
-import javax.xml.ws.AsyncHandler;
-import javax.xml.ws.Binding;
-import javax.xml.ws.ProtocolException;
-import javax.xml.ws.Response;
-import javax.xml.ws.Service.Mode;
-import javax.xml.ws.WebServiceException;
-import javax.xml.ws.http.HTTPBinding;
-import javax.xml.ws.soap.SOAPBinding;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Future;
-
public abstract class BaseDispatch<T> extends BindingProvider
implements javax.xml.ws.Dispatch {
@@ -110,10 +121,14 @@
invocationContext.setRequestMessageContext(requestMsgCtx);
Message requestMsg = null;
- if (isValidInvocationParam(obj)) {
- requestMsg = createMessageFromValue(obj);
- } else {
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvalidParam"));
+ try {
+ if (isValidInvocationParam(obj)) {
+ requestMsg = createMessageFromValue(obj);
+ } else {
+ throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvalidParam"));
+ }
+ } catch (Exception e) {
+ throw getProtocolException(e);
}
setupMessageProperties(requestMsg);
@@ -181,10 +196,14 @@
invocationContext.setRequestMessageContext(requestMsgCtx);
Message requestMsg = null;
- if (isValidInvocationParam(obj)) {
- requestMsg = createMessageFromValue(obj);
- } else {
- throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvalidParam"));
+ try {
+ if (isValidInvocationParam(obj)) {
+ requestMsg = createMessageFromValue(obj);
+ } else {
+ throw ExceptionFactory.makeWebServiceException(Messages.getMessage("dispatchInvalidParam"));
+ }
+ } catch (Exception e){
+ throw getProtocolException(e);
}
setupMessageProperties(requestMsg);
@@ -378,6 +397,37 @@
}
return null;
+ }
+
+ private ProtocolException getProtocolException(Exception e) {
+ if (getBinding() instanceof SOAPBinding) {
+ // Throw a SOAPFaultException
+ if (log.isDebugEnabled()) {
+ log.debug("Constructing SOAPFaultException for " + e);
+ }
+ try {
+ SOAPFault soapFault = SOAPFactory.newInstance().createFault();
+ soapFault.setFaultString(e.getMessage());
+ return new SOAPFaultException(soapFault);
+ } catch (Exception ex) {
+ if (log.isDebugEnabled()) {
+ log.debug("Exception occurred during fault processing:", ex);
+ }
+ return ExceptionFactory.makeProtocolException(e.getMessage(), null);
+ }
+ } else if (getBinding() instanceof HTTPBinding) {
+ if (log.isDebugEnabled()) {
+ log.debug("Constructing ProtocolException for " + e);
+ }
+ HTTPException ex = new HTTPException(HttpURLConnection.HTTP_INTERNAL_ERROR);
+ ex.initCause(new Throwable(e.getMessage()));
+ return ex;
+ } else {
+ if (log.isDebugEnabled()) {
+ log.debug("Constructing ProtocolException for " + e);
+ }
+ return ExceptionFactory.makeProtocolException(e.getMessage(), null);
+ }
}
/**
Modified: webservices/axis2/trunk/java/modules/jaxws/test-resources/log4j.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/log4j.properties?view=diff&rev=545504&r1=545503&r2=545504
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/log4j.properties (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/log4j.properties Fri Jun 8 06:49:00 2007
@@ -17,7 +17,7 @@
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=DEBUG, CONSOLE
#log4j.rootCategory=INFO, CONSOLE, LOGFILE
-log4j.rootCategory=INFO, CONSOLE
+log4j.rootCategory=ERROR, CONSOLE
# Set the enterprise logger priority to FATAL
log4j.logger.org.apache.axis2.enterprise=FATAL
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org