Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 5886ADD20 for ; Sun, 30 Sep 2012 18:30:31 +0000 (UTC) Received: (qmail 71507 invoked by uid 500); 30 Sep 2012 18:30:31 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 71464 invoked by uid 500); 30 Sep 2012 18:30:31 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 71456 invoked by uid 99); 30 Sep 2012 18:30:31 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Sep 2012 18:30:31 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Sep 2012 18:30:28 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 4714D23888EA; Sun, 30 Sep 2012 18:29:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1392092 - /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java Date: Sun, 30 Sep 2012 18:29:44 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20120930182944.4714D23888EA@eris.apache.org> Author: sergeyb Date: Sun Sep 30 18:29:43 2012 New Revision: 1392092 URL: http://svn.apache.org/viewvc?rev=1392092&view=rev Log: [CXF-4528] Making simpler to customize the error message and optionally including it with Responses Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java?rev=1392092&r1=1392091&r2=1392092&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java Sun Sep 30 18:29:43 2012 @@ -24,6 +24,7 @@ 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; @@ -45,6 +46,7 @@ public class WebApplicationExceptionMapp private static final Logger LOG = LogUtils.getL7dLogger(WebApplicationExceptionMapper.class); private static final String ERROR_MESSAGE_START = "WebApplicationException has been caught, status: "; private boolean printStackTrace = true; + private boolean addMessageToResponse; public Response toResponse(WebApplicationException ex) { @@ -52,6 +54,8 @@ public class WebApplicationExceptionMapp if (r == null) { r = Response.serverError().build(); } + boolean doAddMessage = r.getEntity() != null ? false : addMessageToResponse; + Message msg = PhaseInterceptorChain.getCurrentMessage(); FaultListener flogger = null; @@ -59,16 +63,21 @@ public class WebApplicationExceptionMapp flogger = (FaultListener)PhaseInterceptorChain.getCurrentMessage() .getContextualProperty(FaultListener.class.getName()); } + String errorMessage = doAddMessage || flogger != null + ? buildErrorMessage(r, ex) : null; if (flogger == null - || !flogger.faultOccurred(ex, buildErrorMessage(r, ex), msg)) { + || !flogger.faultOccurred(ex, errorMessage, msg)) { Level level = printStackTrace ? Level.WARNING : Level.FINE; LOG.log(level, getStackTrace(ex)); } + if (doAddMessage) { + r = Response.fromResponse(r).entity(errorMessage).type(MediaType.TEXT_PLAIN).build(); + } return r; } - private String buildErrorMessage(Response r, WebApplicationException ex) { + protected String buildErrorMessage(Response r, WebApplicationException ex) { StringBuilder sb = new StringBuilder(); sb.append(ERROR_MESSAGE_START).append(r.getStatus()); @@ -100,5 +109,15 @@ public class WebApplicationExceptionMapp this.printStackTrace = printStackTrace; } + /** + * Controls whether to add an error message to Response or not, + * @param addMessageToResponse add a message to Response, ignored + * if the captuted WebApplicationException has + * a Response with a non-null entity + */ + public void setAddMessageToResponse(boolean addMessageToResponse) { + this.addMessageToResponse = addMessageToResponse; + } + }