You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2012/02/21 18:11:04 UTC
svn commit: r1291924 - in /cxf/branches/2.3.x-fixes: ./
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties
rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java
Author: sergeyb
Date: Tue Feb 21 17:11:03 2012
New Revision: 1291924
URL: http://svn.apache.org/viewvc?rev=1291924&view=rev
Log:
Merged revisions 1291903 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.4.x-fixes
................
r1291903 | sergeyb | 2012-02-21 16:37:54 +0000 (Tue, 21 Feb 2012) | 16 lines
Merged revisions 1291898 via svnmerge from
https://svn.apache.org/repos/asf/cxf/branches/2.5.x-fixes
................
r1291898 | sergeyb | 2012-02-21 16:29:48 +0000 (Tue, 21 Feb 2012) | 9 lines
Merged revisions 1291892 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1291892 | sergeyb | 2012-02-21 16:24:25 +0000 (Tue, 21 Feb 2012) | 1 line
[CXF-4121] Simplifying the default WebApplicationException mapper
........
................
................
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties
cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Feb 21 17:11:03 2012
@@ -1,3 +1,3 @@
-/cxf/branches/2.4.x-fixes:1291151
-/cxf/branches/2.5.x-fixes:1291149
-/cxf/trunk:1291146
+/cxf/branches/2.4.x-fixes:1291151,1291903
+/cxf/branches/2.5.x-fixes:1291149,1291898
+/cxf/trunk:1291146,1291892
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties?rev=1291924&r1=1291923&r2=1291924&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/Messages.properties Tue Feb 21 17:11:03 2012
@@ -18,6 +18,5 @@
# under the License.
#
#
-WEB_APP_EXCEPTION=WebApplicationException has been caught : {0}
DEFAULT_EXCEPTION_MESSAGE=Internal server exception occurred. Please consult logs for more information.
Modified: cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java?rev=1291924&r1=1291923&r2=1291924&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java (original)
+++ cxf/branches/2.3.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java Tue Feb 21 17:11:03 2012
@@ -19,16 +19,15 @@
package org.apache.cxf.jaxrs.impl;
-import java.util.ResourceBundle;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.WebApplicationException;
-import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
-import org.apache.cxf.common.i18n.BundleUtils;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.logging.FaultListener;
import org.apache.cxf.message.Message;
@@ -38,52 +37,59 @@ public class WebApplicationExceptionMapp
implements ExceptionMapper<WebApplicationException> {
private static final Logger LOG = LogUtils.getL7dLogger(WebApplicationExceptionMapper.class);
- private static final ResourceBundle BUNDLE = BundleUtils.getBundle(WebApplicationExceptionMapper.class);
-
+ private static final String ERROR_MESSAGE_START = "WebApplicationException has been caught, status: ";
private boolean printStackTrace;
public Response toResponse(WebApplicationException ex) {
- String message = ex.getCause() == null ? ex.getMessage() : ex.getCause().getMessage();
- if (message == null) {
- if (ex.getCause() != null) {
- message = "cause is " + ex.getCause().getClass().getName();
- } else {
- message = "no cause is available";
- }
- }
- org.apache.cxf.common.i18n.Message errorMsg =
- new org.apache.cxf.common.i18n.Message("WEB_APP_EXCEPTION", BUNDLE, message);
- if (LOG.isLoggable(Level.WARNING)) {
- LOG.warning(errorMsg.toString());
- }
- Response r = ex.getResponse();
+ Response r = ex.getResponse();
if (r == null) {
- r = Response.status(500).type(MediaType.TEXT_PLAIN).entity(errorMsg.toString()).build();
+ r = Response.serverError().build();
}
-
Message msg = PhaseInterceptorChain.getCurrentMessage();
FaultListener flogger = null;
if (msg != null) {
flogger = (FaultListener)PhaseInterceptorChain.getCurrentMessage()
.getContextualProperty(FaultListener.class.getName());
}
- boolean doDefault = true;
- if (flogger != null) {
- doDefault = flogger.faultOccurred(ex, message, msg);
- }
- if (LOG.isLoggable(Level.FINE) && doDefault) {
- LOG.log(Level.FINE, message, ex);
+ if (flogger != null || LOG.isLoggable(Level.FINE)) {
+ String errorMessage = buildErrorMessage(r, ex);
+
+ boolean doDefault =
+ flogger != null ? flogger.faultOccurred(ex, errorMessage, msg) : true;
+ if (doDefault && LOG.isLoggable(Level.FINE)) {
+ LOG.log(Level.FINE, errorMessage, ex);
+ }
}
-
if (printStackTrace) {
- ex.printStackTrace();
+ LOG.warning(getStackTrace(ex));
}
return r;
}
+ private String buildErrorMessage(Response r, WebApplicationException ex) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(ERROR_MESSAGE_START).append(r.getStatus());
+
+ Throwable cause = ex.getCause();
+ String message = cause == null ? ex.getMessage() : cause.getMessage();
+ if (message == null && cause != null) {
+ message = "exception cause class: " + cause.getClass().getName();
+ }
+ if (message != null) {
+ sb.append(", message: ").append(message);
+ }
+ return sb.toString();
+ }
+
+ private static String getStackTrace(Exception ex) {
+ StringWriter sw = new StringWriter();
+ ex.printStackTrace(new PrintWriter(sw));
+ return sw.toString();
+ }
+
public void setPrintStackTrace(boolean printStackTrace) {
this.printStackTrace = printStackTrace;
}