You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by ve...@apache.org on 2017/01/16 17:20:49 UTC

svn commit: r1779070 - in /axis/axis2/java/core/branches/hermetic-tests: ./ modules/kernel/test/org/apache/axis2/description/java2wsdl/ modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/ modules/transport/http/sr...

Author: veithen
Date: Mon Jan 16 17:20:48 2017
New Revision: 1779070

URL: http://svn.apache.org/viewvc?rev=1779070&view=rev
Log:
Merge latest changes from trunk.

Modified:
    axis/axis2/java/core/branches/hermetic-tests/   (props changed)
    axis/axis2/java/core/branches/hermetic-tests/modules/kernel/test/org/apache/axis2/description/java2wsdl/XMLSchemaTest.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/Request.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
    axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java

Propchange: axis/axis2/java/core/branches/hermetic-tests/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jan 16 17:20:48 2017
@@ -1,3 +1,4 @@
 /axis/axis2/java/core/branches/1_6:1295540
 /axis/axis2/java/core/branches/AXIOM-420:1334386-1336397
 /axis/axis2/java/core/branches/AXIS2-4318:1230452,1295542,1324772,1327468,1329571,1332141,1335355,1335357,1340985
+/axis/axis2/java/core/trunk:1779063-1779069

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/kernel/test/org/apache/axis2/description/java2wsdl/XMLSchemaTest.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/kernel/test/org/apache/axis2/description/java2wsdl/XMLSchemaTest.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/kernel/test/org/apache/axis2/description/java2wsdl/XMLSchemaTest.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/kernel/test/org/apache/axis2/description/java2wsdl/XMLSchemaTest.java Mon Jan 16 17:20:48 2017
@@ -122,8 +122,9 @@ public abstract class XMLSchemaTest exte
     
    
     public String readWSDLFromFile(String path) throws Exception {
-        File file=new File(path);
-        XMLPrettyPrinter.prettify(file);    //this is used to correct unnecessary formatting in the file
+        // Don't do this; it will overwrite a file in the source tree (see AXIS2-5781).
+//        File file=new File(path);
+//        XMLPrettyPrinter.prettify(file);    //this is used to correct unnecessary formatting in the file
         return readFile(path);
     }
     

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java Mon Jan 16 17:20:48 2017
@@ -24,21 +24,14 @@ import java.io.InputStream;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.zip.GZIPInputStream;
 
-import javax.xml.namespace.QName;
-
-import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.NamedValue;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.http.AxisRequestEntity;
@@ -70,7 +63,6 @@ import org.apache.commons.httpclient.met
 import org.apache.commons.httpclient.protocol.Protocol;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.http.protocol.HTTP;
 
 public class HTTPSenderImpl extends HTTPSender {
 
@@ -614,127 +606,4 @@ public class HTTPSenderImpl extends HTTP
         }
     }
 
-    public void addCustomHeaders(HttpMethod method, MessageContext msgContext) {
-
-        boolean isCustomUserAgentSet = false;
-        // set the custom headers, if available
-        Object httpHeadersObj = msgContext.getProperty(HTTPConstants.HTTP_HEADERS);
-        if (httpHeadersObj != null) {
-            if (httpHeadersObj instanceof List) {
-                List httpHeaders = (List) httpHeadersObj;
-                for (int i = 0; i < httpHeaders.size(); i++) {
-                    NamedValue nv = (NamedValue) httpHeaders.get(i);
-                    if (nv != null) {
-                        Header header = new Header(nv.getName(), nv.getValue());
-                        if (HTTPConstants.HEADER_USER_AGENT.equals(header.getName())) {
-                            isCustomUserAgentSet = true;
-                        }
-                        method.addRequestHeader(header);
-                    }
-                }
-
-            }
-            if (httpHeadersObj instanceof Map) {
-                Map httpHeaders = (Map) httpHeadersObj;
-                for (Iterator iterator = httpHeaders.entrySet().iterator(); iterator.hasNext();) {
-                    Map.Entry entry = (Map.Entry) iterator.next();
-                    String key = (String) entry.getKey();
-                    String value = (String) entry.getValue();
-                    if (HTTPConstants.HEADER_USER_AGENT.equals(key)) {
-                        isCustomUserAgentSet = true;
-                    }
-                    method.addRequestHeader(key, value);
-                }
-            }
-        }
-
-        // we have to consider the TRANSPORT_HEADERS map as well
-        Map transportHeaders = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
-        if (transportHeaders != null) {
-            removeUnwantedHeaders(msgContext);
-
-            Set headerEntries = transportHeaders.entrySet();
-
-            for (Object headerEntry : headerEntries) {
-                if (headerEntry instanceof Map.Entry) {
-                    Header[] headers = method.getRequestHeaders();
-
-                    boolean headerAdded = false;
-                    for (Header header : headers) {
-                        if (header.getName() != null
-                                && header.getName().equals(((Map.Entry) headerEntry).getKey())) {
-                            headerAdded = true;
-                            break;
-                        }
-                    }
-
-                    if (!headerAdded) {
-                        method.addRequestHeader(((Map.Entry) headerEntry).getKey().toString(),
-                                ((Map.Entry) headerEntry).getValue().toString());
-                    }
-                }
-            }
-        }
-
-        if (!isCustomUserAgentSet) {
-            String userAgentString = getUserAgent(msgContext);
-            method.setRequestHeader(HTTPConstants.HEADER_USER_AGENT, userAgentString);
-        }
-
-    }
-
-    /**
-     * Remove unwanted headers from the transport headers map of outgoing
-     * request. These are headers which should be dictated by the transport and
-     * not the user. We remove these as these may get copied from the request
-     * messages
-     * 
-     * @param msgContext
-     *            the Axis2 Message context from which these headers should be
-     *            removed
-     */
-    private void removeUnwantedHeaders(MessageContext msgContext) {
-        Map headers = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
-
-        if (headers == null || headers.isEmpty()) {
-            return;
-        }
-
-        Iterator iter = headers.keySet().iterator();
-        while (iter.hasNext()) {
-            String headerName = (String) iter.next();
-            if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName)
-                    || HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName)
-                    || HTTP.DATE_HEADER.equalsIgnoreCase(headerName)
-                    || HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName)
-                    || HTTP.CONTENT_LEN.equalsIgnoreCase(headerName)) {
-                iter.remove();
-            }
-        }
-    }
-
-    private String getUserAgent(MessageContext messageContext) {
-        String userAgentString = "Axis2";
-        boolean locked = false;
-        if (messageContext.getParameter(HTTPConstants.USER_AGENT) != null) {
-            OMElement userAgentElement = messageContext.getParameter(HTTPConstants.USER_AGENT)
-                    .getParameterElement();
-            userAgentString = userAgentElement.getText().trim();
-            OMAttribute lockedAttribute = userAgentElement.getAttribute(new QName("locked"));
-            if (lockedAttribute != null) {
-                if (lockedAttribute.getAttributeValue().equalsIgnoreCase("true")) {
-                    locked = true;
-                }
-            }
-        }
-        // Runtime overing part
-        if (!locked) {
-            if (messageContext.getProperty(HTTPConstants.USER_AGENT) != null) {
-                userAgentString = (String) messageContext.getProperty(HTTPConstants.USER_AGENT);
-            }
-        }
-
-        return userAgentString;
-    }
-
 }

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http-hc3/src/main/java/org/apache/axis2/transport/http/impl/httpclient3/RequestImpl.java Mon Jan 16 17:20:48 2017
@@ -23,6 +23,7 @@ import java.net.URL;
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.NamedValue;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.http.AxisRequestEntity;
@@ -77,6 +78,21 @@ final class RequestImpl implements Reque
     }
 
     @Override
+    public void addHeader(String name, String value) {
+        method.addRequestHeader(name, value);
+    }
+
+    @Override
+    public NamedValue[] getRequestHeaders() {
+        Header[] headers = method.getRequestHeaders();
+        NamedValue[] result = new NamedValue[headers.length];
+        for (int i=0; i<headers.length; i++) {
+            result[i] = new NamedValue(headers[i].getName(), headers[i].getValue());
+        }
+        return result;
+    }
+
+    @Override
     public void execute() throws AxisFault {
         try {
             executeMethod();
@@ -92,9 +108,6 @@ final class RequestImpl implements Reque
     private void executeMethod() throws IOException {
         HostConfiguration config = sender.getHostConfiguration(httpClient, msgContext, url);
 
-        // set the custom headers, if available
-        sender.addCustomHeaders(method, msgContext);
-
         // add compression headers if needed
         if (msgContext.isPropertyTrue(HTTPConstants.MC_ACCEPT_GZIP)) {
             method.addRequestHeader(HTTPConstants.HEADER_ACCEPT_ENCODING,

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java Mon Jan 16 17:20:48 2017
@@ -20,16 +20,26 @@
 package org.apache.axis2.transport.http;
 
 
+import org.apache.axiom.om.OMAttribute;
+import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.NamedValue;
 import org.apache.axis2.transport.MessageFormatter;
 import org.apache.axis2.util.MessageProcessorSelector;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.http.protocol.HTTP;
 
 import java.io.IOException;
 import java.net.URL;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.xml.namespace.QName;
 
 //TODO - It better if we can define these method in a interface move these into AbstractHTTPSender and get rid of this class.
 public abstract class HTTPSender extends AbstractHTTPSender {
@@ -130,6 +140,9 @@ public abstract class HTTPSender extends
             request.setHeader(HTTPConstants.HEADER_SOAP_ACTION, soapAction);
         }
 
+        // set the custom headers, if available
+        addCustomHeaders(msgContext, request);
+        
         request.execute();
     }   
 
@@ -138,4 +151,126 @@ public abstract class HTTPSender extends
         return new AxisRequestEntity(messageFormatter, msgContext, format,
                 soapActionString, chunked, isAllowedRetry);
     }
+
+    private void addCustomHeaders(MessageContext msgContext, Request request) {
+    
+        boolean isCustomUserAgentSet = false;
+        // set the custom headers, if available
+        Object httpHeadersObj = msgContext.getProperty(HTTPConstants.HTTP_HEADERS);
+        if (httpHeadersObj != null) {
+            if (httpHeadersObj instanceof List) {
+                List httpHeaders = (List) httpHeadersObj;
+                for (int i = 0; i < httpHeaders.size(); i++) {
+                    NamedValue nv = (NamedValue) httpHeaders.get(i);
+                    if (nv != null) {
+                        if (HTTPConstants.HEADER_USER_AGENT.equals(nv.getName())) {
+                            isCustomUserAgentSet = true;
+                        }
+                        request.addHeader(nv.getName(), nv.getValue());
+                    }
+                }
+    
+            }
+            if (httpHeadersObj instanceof Map) {
+                Map httpHeaders = (Map) httpHeadersObj;
+                for (Iterator iterator = httpHeaders.entrySet().iterator(); iterator.hasNext();) {
+                    Map.Entry entry = (Map.Entry) iterator.next();
+                    String key = (String) entry.getKey();
+                    String value = (String) entry.getValue();
+                    if (HTTPConstants.HEADER_USER_AGENT.equals(key)) {
+                        isCustomUserAgentSet = true;
+                    }
+                    request.addHeader(key, value);
+                }
+            }
+        }
+    
+        // we have to consider the TRANSPORT_HEADERS map as well
+        Map transportHeaders = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+        if (transportHeaders != null) {
+            removeUnwantedHeaders(msgContext);
+    
+            Set headerEntries = transportHeaders.entrySet();
+    
+            for (Object headerEntry : headerEntries) {
+                if (headerEntry instanceof Map.Entry) {
+                    NamedValue[] headers = request.getRequestHeaders();
+    
+                    boolean headerAdded = false;
+                    for (NamedValue header : headers) {
+                        if (header.getName() != null
+                                && header.getName().equals(((Map.Entry) headerEntry).getKey())) {
+                            headerAdded = true;
+                            break;
+                        }
+                    }
+    
+                    if (!headerAdded) {
+                        request.addHeader(((Map.Entry) headerEntry).getKey().toString(),
+                                ((Map.Entry) headerEntry).getValue().toString());
+                    }
+                }
+            }
+        }
+    
+        if (!isCustomUserAgentSet) {
+            String userAgentString = getUserAgent(msgContext);
+            request.setHeader(HTTPConstants.HEADER_USER_AGENT, userAgentString);
+        }
+    
+    }
+
+    /**
+     * Remove unwanted headers from the transport headers map of outgoing
+     * request. These are headers which should be dictated by the transport and
+     * not the user. We remove these as these may get copied from the request
+     * messages
+     * 
+     * @param msgContext
+     *            the Axis2 Message context from which these headers should be
+     *            removed
+     */
+    private void removeUnwantedHeaders(MessageContext msgContext) {
+        Map headers = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
+    
+        if (headers == null || headers.isEmpty()) {
+            return;
+        }
+    
+        Iterator iter = headers.keySet().iterator();
+        while (iter.hasNext()) {
+            String headerName = (String) iter.next();
+            if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName)
+                    || HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName)
+                    || HTTP.DATE_HEADER.equalsIgnoreCase(headerName)
+                    || HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName)
+                    || HTTP.CONTENT_LEN.equalsIgnoreCase(headerName)) {
+                iter.remove();
+            }
+        }
+    }
+
+    private String getUserAgent(MessageContext messageContext) {
+        String userAgentString = "Axis2";
+        boolean locked = false;
+        if (messageContext.getParameter(HTTPConstants.USER_AGENT) != null) {
+            OMElement userAgentElement = messageContext.getParameter(HTTPConstants.USER_AGENT)
+                    .getParameterElement();
+            userAgentString = userAgentElement.getText().trim();
+            OMAttribute lockedAttribute = userAgentElement.getAttribute(new QName("locked"));
+            if (lockedAttribute != null) {
+                if (lockedAttribute.getAttributeValue().equalsIgnoreCase("true")) {
+                    locked = true;
+                }
+            }
+        }
+        // Runtime overing part
+        if (!locked) {
+            if (messageContext.getProperty(HTTPConstants.USER_AGENT) != null) {
+                userAgentString = (String) messageContext.getProperty(HTTPConstants.USER_AGENT);
+            }
+        }
+    
+        return userAgentString;
+    }
 }

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/Request.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/Request.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/Request.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/Request.java Mon Jan 16 17:20:48 2017
@@ -19,6 +19,7 @@
 package org.apache.axis2.transport.http;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.NamedValue;
 
 /**
  * Interface to prepare and execute an HTTP request.
@@ -26,5 +27,7 @@ import org.apache.axis2.AxisFault;
 public interface Request {
     void enableHTTP10();
     void setHeader(String name, String value);
+    void addHeader(String name, String value);
+    NamedValue[] getRequestHeaders();
     void execute() throws AxisFault;
 }

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/HTTPSenderImpl.java Mon Jan 16 17:20:48 2017
@@ -19,13 +19,10 @@
 
 package org.apache.axis2.transport.http.impl.httpclient4;
 
-import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.NamedValue;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.http.AxisRequestEntity;
@@ -69,19 +66,15 @@ import org.apache.http.params.BasicHttpP
 import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.CoreProtocolPNames;
 import org.apache.http.params.HttpParams;
-import org.apache.http.protocol.HTTP;
 
-import javax.xml.namespace.QName;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.zip.GZIPInputStream;
 
 public class HTTPSenderImpl extends HTTPSender {
@@ -592,126 +585,4 @@ public class HTTPSenderImpl extends HTTP
         }
     }
 
-    public void addCustomHeaders(HttpRequestBase method, MessageContext msgContext) {
-
-        boolean isCustomUserAgentSet = false;
-        // set the custom headers, if available
-        Object httpHeadersObj = msgContext.getProperty(HTTPConstants.HTTP_HEADERS);
-        if (httpHeadersObj != null) {
-            if (httpHeadersObj instanceof List) {
-                List httpHeaders = (List) httpHeadersObj;
-                for (int i = 0; i < httpHeaders.size(); i++) {
-                    NamedValue nv = (NamedValue) httpHeaders.get(i);
-                    if (nv != null) {
-                        Header header = new BasicHeader(nv.getName(), nv.getValue());
-                        if (HTTPConstants.HEADER_USER_AGENT.equals(header.getName())) {
-                            isCustomUserAgentSet = true;
-                        }
-                        method.addHeader(header);
-                    }
-                }
-
-            }
-            if (httpHeadersObj instanceof Map) {
-                Map httpHeaders = (Map) httpHeadersObj;
-                for (Iterator iterator = httpHeaders.entrySet().iterator(); iterator.hasNext(); ) {
-                    Map.Entry entry = (Map.Entry) iterator.next();
-                    String key = (String) entry.getKey();
-                    String value = (String) entry.getValue();
-                    if (HTTPConstants.HEADER_USER_AGENT.equals(key)) {
-                        isCustomUserAgentSet = true;
-                    }
-                    method.addHeader(key, value);
-                }
-            }
-        }
-
-        // we have to consider the TRANSPORT_HEADERS map as well
-        Map transportHeaders = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
-        if (transportHeaders != null) {
-            removeUnwantedHeaders(msgContext);
-
-            Set headerEntries = transportHeaders.entrySet();
-
-            for (Object headerEntry : headerEntries) {
-                if (headerEntry instanceof Map.Entry) {
-                    Header[] headers = method.getAllHeaders();
-
-                    boolean headerAdded = false;
-                    for (Header header : headers) {
-                        if (header.getName() != null
-                            && header.getName().equals(((Map.Entry) headerEntry).getKey())) {
-                            headerAdded = true;
-                            break;
-                        }
-                    }
-
-                    if (!headerAdded) {
-                        method.addHeader(((Map.Entry) headerEntry).getKey().toString(),
-                                         ((Map.Entry) headerEntry).getValue().toString());
-                    }
-                }
-            }
-        }
-
-        if (!isCustomUserAgentSet) {
-            String userAgentString = getUserAgent(msgContext);
-            method.setHeader(HTTPConstants.HEADER_USER_AGENT, userAgentString);
-        }
-
-    }
-
-    /**
-     * Remove unwanted headers from the transport headers map of outgoing
-     * request. These are headers which should be dictated by the transport and
-     * not the user. We remove these as these may get copied from the request
-     * messages
-     *
-     * @param msgContext the Axis2 Message context from which these headers should be
-     *                   removed
-     */
-    private void removeUnwantedHeaders(MessageContext msgContext) {
-        Map headers = (Map) msgContext.getProperty(MessageContext.TRANSPORT_HEADERS);
-
-        if (headers == null || headers.isEmpty()) {
-            return;
-        }
-
-        Iterator iter = headers.keySet().iterator();
-        while (iter.hasNext()) {
-            String headerName = (String) iter.next();
-            if (HTTP.CONN_DIRECTIVE.equalsIgnoreCase(headerName)
-                || HTTP.TRANSFER_ENCODING.equalsIgnoreCase(headerName)
-                || HTTP.DATE_HEADER.equalsIgnoreCase(headerName)
-                || HTTP.CONTENT_TYPE.equalsIgnoreCase(headerName)
-                || HTTP.CONTENT_LEN.equalsIgnoreCase(headerName)) {
-                iter.remove();
-            }
-        }
-    }
-
-    private String getUserAgent(MessageContext messageContext) {
-        String userAgentString = "Axis2";
-        boolean locked = false;
-        if (messageContext.getParameter(HTTPConstants.USER_AGENT) != null) {
-            OMElement userAgentElement = messageContext.getParameter(HTTPConstants.USER_AGENT)
-                    .getParameterElement();
-            userAgentString = userAgentElement.getText().trim();
-            OMAttribute lockedAttribute = userAgentElement.getAttribute(new QName("locked"));
-            if (lockedAttribute != null) {
-                if (lockedAttribute.getAttributeValue().equalsIgnoreCase("true")) {
-                    locked = true;
-                }
-            }
-        }
-        // Runtime overing part
-        if (!locked) {
-            if (messageContext.getProperty(HTTPConstants.USER_AGENT) != null) {
-                userAgentString = (String) messageContext.getProperty(HTTPConstants.USER_AGENT);
-            }
-        }
-
-        return userAgentString;
-    }
-
 }

Modified: axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java?rev=1779070&r1=1779069&r2=1779070&view=diff
==============================================================================
--- axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java (original)
+++ axis/axis2/java/core/branches/hermetic-tests/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient4/RequestImpl.java Mon Jan 16 17:20:48 2017
@@ -23,6 +23,7 @@ import java.net.URL;
 
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.NamedValue;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.i18n.Messages;
 import org.apache.axis2.transport.http.AxisRequestEntity;
@@ -85,6 +86,21 @@ final class RequestImpl implements Reque
     }
 
     @Override
+    public void addHeader(String name, String value) {
+        method.addHeader(name, value);
+    }
+
+    @Override
+    public NamedValue[] getRequestHeaders() {
+        Header[] headers = method.getAllHeaders();
+        NamedValue[] result = new NamedValue[headers.length];
+        for (int i=0; i<headers.length; i++) {
+            result[i] = new NamedValue(headers[i].getName(), headers[i].getValue());
+        }
+        return result;
+    }
+
+    @Override
     public void execute() throws AxisFault {
         HttpResponse response = null;
         try {
@@ -101,9 +117,6 @@ final class RequestImpl implements Reque
     private HttpResponse executeMethod() throws IOException {
         HttpHost httpHost = sender.getHostConfiguration(httpClient, msgContext, url);
 
-        // set the custom headers, if available
-        sender.addCustomHeaders(method, msgContext);
-
         // add compression headers if needed
         if (msgContext.isPropertyTrue(HTTPConstants.MC_ACCEPT_GZIP)) {
             method.addHeader(HTTPConstants.HEADER_ACCEPT_ENCODING,