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 6A558897E for ; Mon, 8 Aug 2011 08:42:06 +0000 (UTC) Received: (qmail 34633 invoked by uid 500); 8 Aug 2011 08:42:04 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 34499 invoked by uid 500); 8 Aug 2011 08:42:01 -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 34361 invoked by uid 99); 8 Aug 2011 08:42:00 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 08 Aug 2011 08:42:00 +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; Mon, 08 Aug 2011 08:41:58 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 1E0FB23889D5 for ; Mon, 8 Aug 2011 08:41:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1154870 - in /cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs: JAXRSInvoker.java impl/WebApplicationExceptionMapper.java interceptor/JAXRSInInterceptor.java utils/JAXRSUtils.java Date: Mon, 08 Aug 2011 08:41:38 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110808084139.1E0FB23889D5@eris.apache.org> Author: sergeyb Date: Mon Aug 8 08:41:38 2011 New Revision: 1154870 URL: http://svn.apache.org/viewvc?rev=1154870&view=rev Log: [CXF-3654] Optional reporting of uri mismatch related error messages Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/WebApplicationExceptionMapper.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java?rev=1154870&r1=1154869&r2=1154870&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/JAXRSInvoker.java Mon Aug 8 08:41:38 2011 @@ -244,7 +244,7 @@ public class JAXRSInvoker extends Abstra Response excResponse; if (JAXRSUtils.noResourceMethodForOptions(ex.getResponse(), (String)exchange.getInMessage().get(Message.HTTP_REQUEST_METHOD))) { - excResponse = JAXRSUtils.createResponse(subCri, 200, true); + excResponse = JAXRSUtils.createResponse(subCri, null, null, 200, true); } else { excResponse = JAXRSUtils.convertFaultToResponse(ex, exchange.getInMessage()); } 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=1154870&r1=1154869&r2=1154870&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 Mon Aug 8 08:41:38 2011 @@ -40,32 +40,23 @@ public class WebApplicationExceptionMapp private boolean printStackTrace; public Response toResponse(WebApplicationException ex) { - if (LOG.isLoggable(Level.WARNING)) { - 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"; - } + + 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); + } + 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(); if (r == null) { - String message = null; - if (ex.getCause() == null) { - message = new org.apache.cxf.common.i18n.Message("DEFAULT_EXCEPTION_MESSAGE", - BUNDLE).toString(); - } else { - message = ex.getCause().getMessage(); - if (message == null) { - message = ex.getCause().getClass().getName(); - } - } - r = Response.status(500).type(MediaType.TEXT_PLAIN).entity(message).build(); + r = Response.status(500).type(MediaType.TEXT_PLAIN).entity(errorMsg.toString()).build(); } if (printStackTrace) { Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java?rev=1154870&r1=1154869&r2=1154870&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSInInterceptor.java Mon Aug 8 08:41:38 2011 @@ -146,8 +146,9 @@ public class JAXRSInInterceptor extends message.get(Message.REQUEST_URI), rawPath); LOG.warning(errorMsg.toString()); - - throw new WebApplicationException(Response.Status.NOT_FOUND); + Response resp = JAXRSUtils.createResponse(resource, message, errorMsg.toString(), + Response.Status.NOT_FOUND.getStatusCode(), false); + throw new WebApplicationException(resp); } message.getExchange().put(JAXRSUtils.ROOT_RESOURCE_CLASS, resource); @@ -207,7 +208,7 @@ public class JAXRSInInterceptor extends setExchangeProperties(message, ori, values, resources.size()); } catch (WebApplicationException ex) { if (JAXRSUtils.noResourceMethodForOptions(ex.getResponse(), httpMethod)) { - Response response = JAXRSUtils.createResponse(resource, 200, true); + Response response = JAXRSUtils.createResponse(resource, null, null, 200, true); message.getExchange().put(Response.class, response); return; } else { Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java?rev=1154870&r1=1154869&r2=1154870&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java Mon Aug 8 08:41:38 2011 @@ -114,6 +114,7 @@ public final class JAXRSUtils { private static final Logger LOG = LogUtils.getL7dLogger(JAXRSUtils.class); private static final ResourceBundle BUNDLE = BundleUtils.getBundle(JAXRSUtils.class); private static final String PROPAGATE_EXCEPTION = "org.apache.cxf.propagate.exception"; + private static final String REPORT_FAULT_MESSAGE_PROPERTY = "org.apache.cxf.jaxrs.report-fault-message"; private JAXRSUtils() { } @@ -407,7 +408,8 @@ public final class JAXRSUtils { if (!"OPTIONS".equalsIgnoreCase(httpMethod) && logNow) { LOG.warning(errorMsg.toString()); } - Response response = createResponse(resource, status, methodMatched == 0); + Response response = + createResponse(resource, message, errorMsg.toString(), status, methodMatched == 0); throw new WebApplicationException(response); } @@ -437,7 +439,8 @@ public final class JAXRSUtils { LOG.fine(errorMsg.toString()); } - public static Response createResponse(ClassResourceInfo cri, int status, boolean addAllow) { + public static Response createResponse(ClassResourceInfo cri, Message msg, + String responseMessage, int status, boolean addAllow) { ResponseBuilder rb = Response.status(status); if (addAllow) { Set allowedMethods = cri.getAllowedMethods(); @@ -452,6 +455,9 @@ public final class JAXRSUtils { rb.header("Allow", "HEAD"); } } + if (msg != null && MessageUtils.isTrue(msg.getContextualProperty(REPORT_FAULT_MESSAGE_PROPERTY))) { + rb.type(MediaType.TEXT_PLAIN_TYPE).entity(responseMessage); + } return rb.build(); }