Repository: cxf
Updated Branches:
  refs/heads/3.1.x-fixes 8f6248067 -> 78f0f125c


[CXF-6805] Updating Headers not to expect the client GET code to set an empty 
request property if they don't need Content-Type


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/78f0f125
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/78f0f125
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/78f0f125

Branch: refs/heads/3.1.x-fixes
Commit: 78f0f125c5b9bc3ca0c490fb8f5f8e6106c44afd
Parents: 8f62480
Author: Sergey Beryozkin <[email protected]>
Authored: Mon Feb 29 11:20:09 2016 +0000
Committer: Sergey Beryozkin <[email protected]>
Committed: Mon Feb 29 11:26:32 2016 +0000

----------------------------------------------------------------------
 .../org/apache/cxf/transport/http/Headers.java  | 40 +++++++++++---------
 1 file changed, 23 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/78f0f125/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
----------------------------------------------------------------------
diff --git 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
index 03a3736..ad0d8c1 100644
--- 
a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
+++ 
b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/Headers.java
@@ -300,26 +300,32 @@ public class Headers {
         // If no Content-Type is set for empty requests then HttpUrlConnection:
         // - sets a form Content-Type for empty POST 
         // - replaces custom Accept value with */* if HTTP proxy is used
+        boolean contentTypeSet = headers.containsKey(Message.CONTENT_TYPE);
+        if (!contentTypeSet) {
+            // if CT is not set then assume it has to be set by default
+            boolean dropContentType = false;
+            boolean getRequest = 
"GET".equals(message.get(Message.HTTP_REQUEST_METHOD));
+            boolean emptyRequest = getRequest || 
PropertyUtils.isTrue(message.get(EMPTY_REQUEST_PROPERTY));
+            // If it is an empty request (without a request body) then check 
further if CT still needs be set
+            if (emptyRequest) { 
+                Object setCtForEmptyRequestProp = 
message.getContextualProperty(SET_EMPTY_REQUEST_CT_PROPERTY);
+                if (setCtForEmptyRequestProp != null) {
+                    // If SET_EMPTY_REQUEST_CT_PROPERTY is set then do as a 
user prefers.
+                    // CT will be dropped if setting CT for empty requests was 
explicitly disabled
+                    dropContentType = 
PropertyUtils.isFalse(setCtForEmptyRequestProp);
+                } else if (getRequest) {
+                    // otherwise if it is GET then just drop it
+                    dropContentType = true;
+                }
                 
-        boolean dropContentType = false;
-        boolean emptyRequest = 
PropertyUtils.isTrue(message.get(EMPTY_REQUEST_PROPERTY));
-        if (emptyRequest) { 
-            Object setCtForEmptyRequestProp = 
message.getContextualProperty(SET_EMPTY_REQUEST_CT_PROPERTY);
-            if (setCtForEmptyRequestProp != null) {
-                // If SET_EMPTY_REQUEST_CT_PROPERTY is set then do as a user 
prefers.
-                // CT will be dropped if setting CT for empty requests was 
explicitly disabled
-                dropContentType = 
PropertyUtils.isFalse(setCtForEmptyRequestProp);
-            } else if 
("GET".equals((String)message.get(Message.HTTP_REQUEST_METHOD))) {
-                // otherwise if it is GET then just drop it
-                dropContentType = true;
             }
-            
-        }
-        if (!dropContentType) {
-            String ct = emptyRequest && 
!headers.containsKey(Message.CONTENT_TYPE) ? "*/*" : determineContentType();
-            connection.setRequestProperty(HttpHeaderHelper.CONTENT_TYPE, ct);
+            if (!dropContentType) {
+                String ct = emptyRequest && !contentTypeSet ? "*/*" : 
determineContentType();
+                connection.setRequestProperty(HttpHeaderHelper.CONTENT_TYPE, 
ct);
+            }
+        } else {        
+            connection.setRequestProperty(HttpHeaderHelper.CONTENT_TYPE, 
determineContentType());
         }
-        
          
         transferProtocolHeadersToURLConnection(connection);
         logProtocolHeaders(Level.FINE);

Reply via email to