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 E4CF3799B for ; Tue, 26 Jul 2011 20:38:58 +0000 (UTC) Received: (qmail 94985 invoked by uid 500); 26 Jul 2011 20:38:58 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 94878 invoked by uid 500); 26 Jul 2011 20:38:58 -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 94868 invoked by uid 99); 26 Jul 2011 20:38:58 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 26 Jul 2011 20:38:58 +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; Tue, 26 Jul 2011 20:38:56 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id AFEF723888CF for ; Tue, 26 Jul 2011 20:38:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1151235 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/ rt/transports/http/src/main/java/org/apache/cxf/transport/http/ systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ Date: Tue, 26 Jul 2011 20:38:36 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110726203836.AFEF723888CF@eris.apache.org> Author: sergeyb Date: Tue Jul 26 20:38:35 2011 New Revision: 1151235 URL: http://svn.apache.org/viewvc?rev=1151235&view=rev Log: [CXF-3667] Drop Content-Type if Content-Length is available and set to 0 Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java?rev=1151235&r1=1151234&r2=1151235&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/interceptor/JAXRSOutInterceptor.java Tue Jul 26 20:38:35 2011 @@ -187,6 +187,7 @@ public class JAXRSOutInterceptor extends setResponseDate(responseHeaders, firstTry); if (isResponseNull(responseObj)) { + responseHeaders.putSingle("Content-Length", "0"); return; } Modified: cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java?rev=1151235&r1=1151234&r2=1151235&view=diff ============================================================================== --- cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java (original) +++ cxf/trunk/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java Tue Jul 26 20:38:35 2011 @@ -358,6 +358,23 @@ public class Headers { } } + // Assumes that response body is not available only + // if Content-Length is available and set to 0 + private boolean isResponseBodyAvailable() { + List ctLen = headers.get("Content-Length"); + if (ctLen == null || ctLen.size() != 1) { + return true; + } + try { + if (Integer.valueOf(ctLen.get(0)) == 0) { + return false; + } + } catch (NumberFormatException ex) { + // ignore + } + return true; + } + /** * Copy the response headers into the response. * @@ -367,7 +384,8 @@ public class Headers { protected void copyToResponse(HttpServletResponse response) { String contentType = getContentTypeFromMessage(); - if (!headers.containsKey(Message.CONTENT_TYPE) && contentType != null) { + if (!headers.containsKey(Message.CONTENT_TYPE) && contentType != null + && isResponseBodyAvailable()) { response.setContentType(contentType); } Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java?rev=1151235&r1=1151234&r2=1151235&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerBookTest.java Tue Jul 26 20:38:35 2011 @@ -591,8 +591,10 @@ public class JAXRSClientServerBookTest e WebClient wc = WebClient.create("http://localhost:" + PORT + "/bookstore/emptypost"); + WebClient.getConfig(wc).getHttpConduit().getClient().setReceiveTimeout(10000000L); Response response = wc.post(null); assertEquals(204, response.getStatus()); + assertNull(response.getMetadata().getFirst("Content-Type")); } @Test