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 23960F29E for ; Wed, 27 Mar 2013 09:05:25 +0000 (UTC) Received: (qmail 19936 invoked by uid 500); 27 Mar 2013 09:05:24 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 19803 invoked by uid 500); 27 Mar 2013 09:05:24 -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 19792 invoked by uid 99); 27 Mar 2013 09:05:24 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Mar 2013 09:05:24 +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; Wed, 27 Mar 2013 09:05:20 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 0056D2388906; Wed, 27 Mar 2013 09:04:58 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1461457 - in /cxf/trunk: rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/ rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/ systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/ Date: Wed, 27 Mar 2013 09:04:57 -0000 To: commits@cxf.apache.org From: sergeyb@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130327090459.0056D2388906@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: sergeyb Date: Wed Mar 27 09:04:57 2013 New Revision: 1461457 URL: http://svn.apache.org/r1461457 Log: [CXF-4927] HttpHeaders.getRequestHeader needs to return null for missing headers Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotationsImpl.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/CustomOutInterceptor.java cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java Wed Mar 27 09:04:57 2013 @@ -187,16 +187,16 @@ public class HttpHeadersImpl implements } public List getRequestHeader(String name) { - List values = headers.get(name); - if (values == null || values.isEmpty() || values.get(0) == null) { - return Collections.emptyList(); - } boolean splitIndividualValue = MessageUtils.isTrue(message.getContextualProperty(HEADER_SPLIT_PROPERTY)); + + List values = headers.get(name); if (!splitIndividualValue + || values == null || HttpUtils.isDateRelatedHeader(name)) { return values; } + List ls = new LinkedList(); for (String value : values) { if (value == null) { Modified: cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/RequestPreprocessor.java Wed Mar 27 09:04:57 2013 @@ -137,10 +137,7 @@ public class RequestPreprocessor { HttpHeaders headers) { String method = queries.getFirst(METHOD_QUERY); if (method == null) { - List values = headers.getRequestHeader(METHOD_HEADER); - if (values.size() == 1) { - method = values.get(0); - } + method = headers.getHeaderString(METHOD_HEADER); } if (method != null) { m.put(Message.HTTP_REQUEST_METHOD, method); Modified: cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java (original) +++ cxf/trunk/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Wed Mar 27 09:04:57 2013 @@ -55,6 +55,22 @@ public class HttpHeadersImplTest extends } @Test + public void testNoRequestHeader() throws Exception { + + Message m = control.createMock(Message.class); + m.get(Message.PROTOCOL_HEADERS); + MetadataMap headers = + createHeader("COMPLEX_HEADER", "b=c; param=c, a=b;param=b"); + EasyMock.expectLastCall().andReturn(headers); + m.getContextualProperty("org.apache.cxf.http.header.split"); + EasyMock.expectLastCall().andReturn("true"); + control.replay(); + HttpHeaders h = new HttpHeadersImpl(m); + List values = h.getRequestHeader("HEADER"); + assertNull(values); + } + + @Test public void testGetHeaderNameValue() throws Exception { Message m = control.createMock(Message.class); @@ -204,6 +220,20 @@ public class HttpHeadersImplTest extends } @Test + public void testGetEmptyHeader() throws Exception { + + Message m = new MessageImpl(); + // this is what happens at runtime and is tested in the system tests + Map> headers = + new TreeMap>(String.CASE_INSENSITIVE_ORDER); + headers.put("A", Collections.emptyList()); + m.put(Message.PROTOCOL_HEADERS, headers); + HttpHeaders h = new HttpHeadersImpl(m); + List values = h.getRequestHeader("A"); + assertTrue(values.isEmpty()); + } + + @Test public void testGetDate() throws Exception { Message m = new MessageImpl(); Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotationsImpl.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotationsImpl.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotationsImpl.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/BookStoreNoAnnotationsImpl.java Wed Mar 27 09:04:57 2013 @@ -29,6 +29,8 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriInfo; +import org.apache.cxf.message.MessageUtils; + public class BookStoreNoAnnotationsImpl implements BookStoreNoAnnotationsInterface, HttpHeadersContext { @@ -53,7 +55,7 @@ public class BookStoreNoAnnotationsImpl if (hs == null) { throw new WebApplicationException(Response.serverError().build()); } - boolean springProxy = hs.getRequestHeader("SpringProxy").contains("true"); + boolean springProxy = MessageUtils.isTrue(hs.getHeaderString("SpringProxy")); if (!springProxy && ui == null) { throw new WebApplicationException(Response.serverError().build()); } Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/CustomOutInterceptor.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/CustomOutInterceptor.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/CustomOutInterceptor.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/CustomOutInterceptor.java Wed Mar 27 09:04:57 2013 @@ -43,7 +43,7 @@ public class CustomOutInterceptor extend public void handleMessage(Message message) throws Fault { HttpHeaders requestHeaders = new HttpHeadersImpl(message.getExchange().getInMessage()); - if (!requestHeaders.getRequestHeader("PLAIN-MAP").isEmpty()) { + if (requestHeaders.getHeaderString("PLAIN-MAP") != null) { Map> headers = (Map>) message.get(Message.PROTOCOL_HEADERS); if (headers == null) { Modified: cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java?rev=1461457&r1=1461456&r2=1461457&view=diff ============================================================================== --- cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java (original) +++ cxf/trunk/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/JAXRSClientServerStreamingTest.java Wed Mar 27 09:04:57 2013 @@ -162,7 +162,7 @@ public class JAXRSClientServerStreamingT public void writeTo(Object obj, Class cls, Type genericType, Annotation[] anns, MediaType m, MultivaluedMap headers, OutputStream os) throws IOException { List failHeaders = getContext().getHttpHeaders().getRequestHeader("fail-write"); - if (failHeaders.size() > 0) { + if (failHeaders != null && failHeaders.size() > 0) { os.write("fail".getBytes()); throw new IOException(); } else {