You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2011/08/05 16:26:55 UTC

svn commit: r1154238 - in /cxf/branches/2.4.x-fixes: ./ rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java

Author: sergeyb
Date: Fri Aug  5 14:26:54 2011
New Revision: 1154238

URL: http://svn.apache.org/viewvc?rev=1154238&view=rev
Log:
Merged revisions 1154229 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1154229 | sergeyb | 2011-08-05 15:11:58 +0100 (Fri, 05 Aug 2011) | 1 line
  
  [CXF-3714] Adding property to customize the way http headers can be added
........

Modified:
    cxf/branches/2.4.x-fixes/   (props changed)
    cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Aug  5 14:26:54 2011
@@ -1 +1 @@
-/cxf/trunk:1154143,1154149,1154158,1154232
+/cxf/trunk:1154143,1154149,1154158,1154229,1154232

Propchange: cxf/branches/2.4.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java?rev=1154238&r1=1154237&r2=1154238&view=diff
==============================================================================
--- cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java (original)
+++ cxf/branches/2.4.x-fixes/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java Fri Aug  5 14:26:54 2011
@@ -41,6 +41,7 @@ import org.apache.cxf.common.logging.Log
 import org.apache.cxf.helpers.CastUtils;
 import org.apache.cxf.helpers.HttpHeaderHelper;
 import org.apache.cxf.message.Message;
+import org.apache.cxf.message.MessageUtils;
 import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
 import org.apache.cxf.transports.http.configuration.HTTPServerPolicy;
 import org.apache.cxf.version.Version;
@@ -53,7 +54,8 @@ public class Headers {
     public static final String KEY_HTTP_CONNECTION = "http.connection";
     public static final String PROTOCOL_HEADERS_CONTENT_TYPE = Message.CONTENT_TYPE.toLowerCase();
     private static final String HTTP_HEADERS_SETCOOKIE = "Set-Cookie";
-
+    private static final String ADD_HEADERS_PROPERTY = "org.apache.cxf.http.add-headers";             
+    
     private static final Logger LOG = LogUtils.getL7dLogger(Headers.class);
     private final Message message;
     private final Map<String, List<String>> headers;
@@ -287,12 +289,14 @@ public class Headers {
      * from the PROTOCOL_HEADERS in the message.
      */
     private void transferProtocolHeadersToURLConnection(URLConnection connection) {
+        boolean addHeaders = MessageUtils.isTrue(
+                message.getContextualProperty(ADD_HEADERS_PROPERTY));
         for (String header : headers.keySet()) {
             List<String> headerList = headers.get(header);
             if (HttpHeaderHelper.CONTENT_TYPE.equalsIgnoreCase(header)) {
                 continue;
             }
-            if (HttpHeaderHelper.COOKIE.equalsIgnoreCase(header)) {
+            if (addHeaders || HttpHeaderHelper.COOKIE.equalsIgnoreCase(header)) {
                 for (String s : headerList) {
                     connection.addRequestProperty(HttpHeaderHelper.COOKIE, s);
                 }
@@ -389,25 +393,28 @@ public class Headers {
             response.setContentType(contentType);
         }
 
+        boolean addHeaders = MessageUtils.isTrue(
+                message.getContextualProperty(ADD_HEADERS_PROPERTY));
         for (Iterator<?> iter = headers.keySet().iterator(); iter.hasNext();) {
             String header = (String)iter.next();
             List<?> headerList = (List<?>)headers.get(header);
-            StringBuilder sb = new StringBuilder();
-
-            if (HTTP_HEADERS_SETCOOKIE.equals(header)) {
+            
+            if (addHeaders || HTTP_HEADERS_SETCOOKIE.equals(header)) {
                 for (int i = 0; i < headerList.size(); i++) {
                     response.addHeader(header, headerList.get(i).toString());
                 }
             } else {
+                StringBuilder sb = new StringBuilder();
                 for (int i = 0; i < headerList.size(); i++) {
                     sb.append(headerList.get(i));
                     if (i + 1 < headerList.size()) {
                         sb.append(',');
                     }
                 }
+                response.addHeader(header, sb.toString());
             }
 
-            response.addHeader(header, sb.toString());
+            
         }
     }