Author: sergeyb Date: Tue Mar 26 15:19:39 2013 New Revision: 1461184 URL: http://svn.apache.org/r1461184 Log: Merged revisions 1461179 via svnmerge from https://svn.apache.org/repos/asf/cxf/branches/2.7.x-fixes
................ r1461179 | sergeyb | 2013-03-26 18:14:22 +0300 (Tue, 26 Mar 2013) | 9 lines Merged revisions 1461175 via svnmerge from https://svn.apache.org/repos/asf/cxf/trunk ........ r1461175 | sergeyb | 2013-03-26 18:11:35 +0300 (Tue, 26 Mar 2013) | 1 line [CXF-4915] Completely avoiding copying the headers ........ ................ Modified: cxf/branches/2.6.x-fixes/ (props changed) cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Propchange: cxf/branches/2.6.x-fixes/ ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Mar 26 15:19:39 2013 @@ -0,0 +1,2 @@ +/cxf/branches/2.7.x-fixes:1461179 +/cxf/trunk:1461175 Propchange: cxf/branches/2.6.x-fixes/ ------------------------------------------------------------------------------ Binary property 'svnmerge-integrated' - no diff available. Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java?rev=1461184&r1=1461183&r2=1461184&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java (original) +++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/impl/HttpHeadersImpl.java Tue Mar 26 15:19:39 2013 @@ -137,12 +137,18 @@ public class HttpHeadersImpl implements } public MultivaluedMap<String, String> getRequestHeaders() { - Map<String, List<String>> newHeaders = - new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER); - for (Map.Entry<String, List<String>> entry : headers.entrySet()) { - newHeaders.put(entry.getKey(), getRequestHeader(entry.getKey())); + boolean splitIndividualValue + = MessageUtils.isTrue(message.getContextualProperty(HEADER_SPLIT_PROPERTY)); + if (splitIndividualValue) { + Map<String, List<String>> newHeaders = + new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER); + for (Map.Entry<String, List<String>> entry : headers.entrySet()) { + newHeaders.put(entry.getKey(), getRequestHeader(entry.getKey())); + } + return new MetadataMap<String, String>(Collections.unmodifiableMap(newHeaders), false); + } else { + return new MetadataMap<String, String>(Collections.unmodifiableMap(headers), false); } - return new MetadataMap<String, String>(Collections.unmodifiableMap(newHeaders), false); } public List<Locale> getAcceptableLanguages() { Modified: cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java URL: http://svn.apache.org/viewvc/cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java?rev=1461184&r1=1461183&r2=1461184&view=diff ============================================================================== --- cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java (original) +++ cxf/branches/2.6.x-fixes/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/HttpHeadersImplTest.java Tue Mar 26 15:19:39 2013 @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.TreeMap; import javax.ws.rs.core.Cookie; import javax.ws.rs.core.HttpHeaders; @@ -146,7 +147,7 @@ public class HttpHeadersImplTest extends m.get(Message.PROTOCOL_HEADERS); EasyMock.expectLastCall().andReturn(createHeaders()); m.getContextualProperty("org.apache.cxf.http.header.split"); - EasyMock.expectLastCall().andReturn("true"); + EasyMock.expectLastCall().andReturn("true").anyTimes(); control.replay(); HttpHeaders h = new HttpHeadersImpl(m); MultivaluedMap<String, String> hs = h.getRequestHeaders(); @@ -173,9 +174,11 @@ public class HttpHeadersImplTest extends public void testGetContentTypeLowCase() throws Exception { Message m = new MessageImpl(); - m.put(Message.PROTOCOL_HEADERS, - Collections.singletonMap("content-type", - Collections.singletonList("text/plain"))); + // this is what happens at runtime and is tested in the system tests + Map<String, List<String>> headers = + new TreeMap<String, List<String>>(String.CASE_INSENSITIVE_ORDER); + headers.put("content-type", Collections.singletonList("text/plain")); + m.put(Message.PROTOCOL_HEADERS, headers); HttpHeaders h = new HttpHeadersImpl(m); assertEquals("text/plain", h.getRequestHeaders().getFirst("Content-Type")); } @@ -347,7 +350,7 @@ public class HttpHeadersImplTest extends Message m = control.createMock(Message.class); m.getContextualProperty("org.apache.cxf.http.header.split"); - EasyMock.expectLastCall().andReturn("true"); + EasyMock.expectLastCall().andReturn("true").anyTimes(); m.get(Message.PROTOCOL_HEADERS); MetadataMap<String, String> headers = createHeader(HttpHeaders.ACCEPT_LANGUAGE,
