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 sa...@apache.org on 2012/01/12 10:33:54 UTC
svn commit: r1230452 [1/2] - in
/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http:
./ impl/ impl/httpclient3/ util/
Author: sagara
Date: Thu Jan 12 09:33:53 2012
New Revision: 1230452
URL: http://svn.apache.org/viewvc?rev=1230452&view=rev
Log:
AXIS2-4318 - Refactoring existing codes.
Added:
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPProxcyConfigurator.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPSenderImpl.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPTransportHeaders.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HttpTransportPropertiesImpl.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntity2Impl.java (with props)
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/RESTRequestEntityImpl.java (with props)
Modified:
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java
axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/util/HTTPProxyConfigurationUtil.java
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AbstractHTTPSender.java Thu Jan 12 09:33:53 2012
@@ -19,65 +19,27 @@
package org.apache.axis2.transport.http;
-import org.apache.axiom.om.OMAttribute;
-import org.apache.axiom.om.OMElement;
+
+import java.io.IOException;
+import java.net.URL;
+
import org.apache.axiom.om.OMOutputFormat;
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.context.OperationContext;
-import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.description.TransportOutDescription;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.transport.TransportUtils;
-import org.apache.axis2.transport.http.util.HTTPProxyConfigurationUtil;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.commons.httpclient.Credentials;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HeaderElement;
-import org.apache.commons.httpclient.HostConfiguration;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpConnectionManager;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.HttpMethodBase;
-import org.apache.commons.httpclient.HttpState;
-import org.apache.commons.httpclient.HttpVersion;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.httpclient.NTCredentials;
-import org.apache.commons.httpclient.NameValuePair;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
-import org.apache.commons.httpclient.auth.AuthPolicy;
-import org.apache.commons.httpclient.auth.AuthScope;
-import org.apache.commons.httpclient.params.HttpMethodParams;
-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;
-import javax.xml.namespace.QName;
-import java.io.IOException;
-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;
+
+
public abstract class AbstractHTTPSender {
- protected static final String ANONYMOUS = "anonymous";
- protected static final String PROXY_HOST_NAME = "proxy_host";
- protected static final String PROXY_PORT = "proxy_port";
+
protected boolean chunked = false;
protected String httpVersion = HTTPConstants.HEADER_PROTOCOL_11;
- private static final Log log = LogFactory.getLog(AbstractHTTPSender.class);
-
- protected static final String PROTOCOL_HTTP = "http";
- protected static final String PROTOCOL_HTTPS = "https";
+
+ private static final Log log = LogFactory.getLog(AbstractHTTPSender.class);
/**
* proxydiscription
@@ -109,638 +71,13 @@ public abstract class AbstractHTTPSender
+ " Can have values only HTTP/1.0 or HTTP/1.1");
}
}
- }
-
- /**
- * Collect the HTTP header information and set them in the message context
- *
- * @param method HttpMethodBase from which to get information
- * @param msgContext the MessageContext in which to place the information... OR NOT!
- * @throws AxisFault if problems occur
- */
- protected void obtainHTTPHeaderInformation(HttpMethodBase method,
- MessageContext msgContext) throws AxisFault {
- // Set RESPONSE properties onto the REQUEST message context. They will need to be copied off the request context onto
- // the response context elsewhere, for example in the OutInOperationClient.
- Map transportHeaders = new CommonsTransportHeaders(method.getResponseHeaders());
- msgContext.setProperty(MessageContext.TRANSPORT_HEADERS, transportHeaders);
- msgContext.setProperty(HTTPConstants.MC_HTTP_STATUS_CODE, new Integer(method.getStatusCode()));
- Header header = method.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);
-
- if (header != null) {
- HeaderElement[] headers = header.getElements();
- MessageContext inMessageContext = msgContext.getOperationContext().getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN_VALUE);
-
- Object contentType = header.getValue();
- Object charSetEnc = null;
-
- for (int i = 0; i < headers.length; i++) {
- NameValuePair charsetEnc = headers[i].getParameterByName(
- HTTPConstants.CHAR_SET_ENCODING);
- if (charsetEnc != null) {
- charSetEnc = charsetEnc.getValue();
- }
- }
-
- if (inMessageContext != null) {
- inMessageContext
- .setProperty(Constants.Configuration.CONTENT_TYPE, contentType);
- inMessageContext
- .setProperty(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
- } else {
-
- // Transport details will be stored in a HashMap so that anybody interested can
- // retrieve them
- HashMap transportInfoMap = new HashMap();
- transportInfoMap.put(Constants.Configuration.CONTENT_TYPE, contentType);
- transportInfoMap.put(Constants.Configuration.CHARACTER_SET_ENCODING, charSetEnc);
-
- //the HashMap is stored in the outgoing message.
- msgContext.setProperty(Constants.Configuration.TRANSPORT_INFO_MAP,
- transportInfoMap);
- }
- }
-
- String sessionCookie = null;
- // Process old style headers first
- Header[] cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE);
- String customCoookiId = (String) msgContext.getProperty(Constants.CUSTOM_COOKIE_ID);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName()) ||
- Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if (customCoookiId != null && customCoookiId.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- }
- }
- // Overwrite old style cookies with new style ones if present
- cookieHeaders = method.getResponseHeaders(HTTPConstants.HEADER_SET_COOKIE2);
- for (int i = 0; i < cookieHeaders.length; i++) {
- HeaderElement[] elements = cookieHeaders[i].getElements();
- for (int e = 0; e < elements.length; e++) {
- HeaderElement element = elements[e];
- if (Constants.SESSION_COOKIE.equalsIgnoreCase(element.getName()) ||
- Constants.SESSION_COOKIE_JSESSIONID.equalsIgnoreCase(element.getName())) {
- sessionCookie = processCookieHeader(element);
- }
- if(customCoookiId!=null&&customCoookiId.equalsIgnoreCase(element.getName())){
- sessionCookie = processCookieHeader(element);
- }
- }
- }
-
- if (sessionCookie != null) {
- msgContext.getServiceContext().setProperty(HTTPConstants.COOKIE_STRING, sessionCookie);
- }
- }
-
- private String processCookieHeader(HeaderElement element) {
- String cookie = element.getName() + "=" + element.getValue();
- NameValuePair[] parameters = element.getParameters();
- for (int j = 0; parameters != null && j < parameters.length; j++) {
- NameValuePair parameter = parameters[j];
- cookie = cookie + "; " + parameter.getName() + "=" + parameter.getValue();
- }
- return cookie;
- }
-
- protected void processResponse(HttpMethodBase httpMethod,
- MessageContext msgContext)
- throws IOException {
- obtainHTTPHeaderInformation(httpMethod, msgContext);
-
- InputStream in = httpMethod.getResponseBodyAsStream();
- if (in == null) {
- throw new AxisFault(Messages.getMessage("canNotBeNull", "InputStream"));
- }
- Header contentEncoding =
- httpMethod.getResponseHeader(HTTPConstants.HEADER_CONTENT_ENCODING);
- if (contentEncoding != null) {
- if (contentEncoding.getValue().
- equalsIgnoreCase(HTTPConstants.COMPRESSION_GZIP)) {
- in = new GZIPInputStream(in);
- // If the content-encoding is identity we can basically ignore it.
- } else if (!"identity".equalsIgnoreCase(contentEncoding.getValue())) {
- throw new AxisFault("HTTP :" + "unsupported content-encoding of '"
- + contentEncoding.getValue() + "' found");
- }
- }
-
- OperationContext opContext = msgContext.getOperationContext();
- if (opContext != null) {
- opContext.setProperty(MessageContext.TRANSPORT_IN, in);
- }
- }
+ }
public abstract void send(MessageContext msgContext, URL url, String soapActionString)
- throws IOException;
-
- /**
- * getting host configuration to support standard http/s, proxy and NTLM support
- *
- * @param client active HttpClient
- * @param msgCtx active MessageContext
- * @param targetURL the target URL
- * @return a HostConfiguration set up with proxy information
- * @throws AxisFault if problems occur
- */
- protected HostConfiguration getHostConfiguration(HttpClient client,
- MessageContext msgCtx,
- URL targetURL)throws AxisFault {
-
- boolean isAuthenticationEnabled = isAuthenticationEnabled(msgCtx);
- int port = targetURL.getPort();
-
- String protocol = targetURL.getProtocol();
- if (port == -1) {
- if (PROTOCOL_HTTP.equals(protocol)) {
- port = 80;
- } else if (PROTOCOL_HTTPS.equals(protocol)) {
- port = 443;
- }
-
- }
-
- // to see the host is a proxy and in the proxy list - available in axis2.xml
- HostConfiguration config = new HostConfiguration();
-
- // one might need to set his own socket factory. Let's allow that case as well.
- Protocol protocolHandler =
- (Protocol)msgCtx.getOptions().getProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER);
-
- // setting the real host configuration
- // I assume the 90% case, or even 99% case will be no protocol handler case.
- if (protocolHandler == null) {
- config.setHost(targetURL.getHost(), port, targetURL.getProtocol());
- } else {
- config.setHost(targetURL.getHost(), port, protocolHandler);
- }
-
- if (isAuthenticationEnabled) {
- // Basic, Digest, NTLM and custom authentications.
- this.setAuthenticationInfo(client, msgCtx, config);
- }
- // proxy configuration
-
- if (HTTPProxyConfigurationUtil.isProxyEnabled(msgCtx, targetURL)) {
- if(log.isDebugEnabled()){
- log.debug("Configuring HTTP proxy.");
- }
- HTTPProxyConfigurationUtil.configure(msgCtx, client, config);
- }
-
- return config;
- }
-
- protected boolean isAuthenticationEnabled(MessageContext msgCtx) {
- return (msgCtx.getProperty(HTTPConstants.AUTHENTICATE) != null);
- }
-
- /*
- This will handle server Authentication, It could be either NTLM, Digest or Basic Authentication.
- Apart from that user can change the priory or add a custom authentication scheme.
- */
- protected void setAuthenticationInfo(HttpClient agent,
- MessageContext msgCtx,
- HostConfiguration config) throws AxisFault {
- HttpTransportProperties.Authenticator authenticator;
- Object obj = msgCtx.getProperty(HTTPConstants.AUTHENTICATE);
- if (obj != null) {
- if (obj instanceof HttpTransportProperties.Authenticator) {
- authenticator = (HttpTransportProperties.Authenticator) obj;
-
- String username = authenticator.getUsername();
- String password = authenticator.getPassword();
- String host = authenticator.getHost();
- String domain = authenticator.getDomain();
-
- int port = authenticator.getPort();
- String realm = authenticator.getRealm();
-
- /* If retrying is available set it first */
- isAllowedRetry = authenticator.isAllowedRetry();
-
- Credentials creds;
-
- HttpState tmpHttpState = null;
- HttpState httpState = (HttpState)msgCtx.getProperty(HTTPConstants.CACHED_HTTP_STATE);
- if (httpState != null) {
- tmpHttpState = httpState;
- } else {
- tmpHttpState = agent.getState();
- }
-
- agent.getParams()
- .setAuthenticationPreemptive(authenticator.getPreemptiveAuthentication());
-
- if (host != null) {
- if (domain != null) {
- /*Credentials for NTLM Authentication*/
- creds = new NTCredentials(username, password, host, domain);
- } else {
- /*Credentials for Digest and Basic Authentication*/
- creds = new UsernamePasswordCredentials(username, password);
- }
- tmpHttpState.setCredentials(new AuthScope(host, port, realm), creds);
- } else {
- if (domain != null) {
- /*Credentials for NTLM Authentication when host is ANY_HOST*/
- creds = new NTCredentials(username, password, AuthScope.ANY_HOST, domain);
- tmpHttpState.setCredentials(
- new AuthScope(AuthScope.ANY_HOST, port, realm), creds);
- } else {
- /*Credentials only for Digest and Basic Authentication*/
- creds = new UsernamePasswordCredentials(username, password);
- tmpHttpState.setCredentials(new AuthScope(AuthScope.ANY), creds);
- }
- }
- /* Customizing the priority Order */
- List schemes = authenticator.getAuthSchemes();
- if (schemes != null && schemes.size() > 0) {
- List authPrefs = new ArrayList(3);
- for (int i = 0; i < schemes.size(); i++) {
- if (schemes.get(i) instanceof AuthPolicy) {
- authPrefs.add(schemes.get(i));
- continue;
- }
- String scheme = (String) schemes.get(i);
- if (HttpTransportProperties.Authenticator.BASIC.equals(scheme)) {
- authPrefs.add(AuthPolicy.BASIC);
- } else if (HttpTransportProperties.Authenticator.NTLM.equals(scheme)) {
- authPrefs.add(AuthPolicy.NTLM);
- } else if (HttpTransportProperties.Authenticator.DIGEST.equals(scheme)) {
- authPrefs.add(AuthPolicy.DIGEST);
- }
- }
- agent.getParams().setParameter(AuthPolicy.AUTH_SCHEME_PRIORITY,
- authPrefs);
- }
-
- } else {
- throw new AxisFault("HttpTransportProperties.Authenticator class cast exception");
- }
- }
-
- }
-
- /**
- * Method used to copy all the common properties
- *
- * @param msgContext - The messageContext of the request message
- * @param url - The target URL
- * @param httpMethod - The http method used to send the request
- * @param httpClient - The httpclient used to send the request
- * @param soapActionString - The soap action atring of the request message
- * @return MessageFormatter - The messageFormatter for the relavent request message
- * @throws AxisFault - Thrown in case an exception occurs
- */
- protected MessageFormatter populateCommonProperties(MessageContext msgContext, URL url,
- HttpMethodBase httpMethod,
- HttpClient httpClient,
- String soapActionString)
- throws AxisFault {
-
- if (isAuthenticationEnabled(msgContext)) {
- httpMethod.setDoAuthentication(true);
- }
-
- MessageFormatter messageFormatter = TransportUtils.getMessageFormatter(
- msgContext);
-
- url = messageFormatter.getTargetAddress(msgContext, format, url);
-
- httpMethod.setPath(url.getPath());
-
- httpMethod.setQueryString(url.getQuery());
-
- httpMethod.setRequestHeader(HTTPConstants.HEADER_CONTENT_TYPE,
- messageFormatter.getContentType(msgContext, format,
- soapActionString));
-
- httpMethod.setRequestHeader(HTTPConstants.HEADER_HOST, url.getHost());
-
- if (msgContext.getOptions() != null && msgContext.getOptions().isManageSession()) {
- // setting the cookie in the out path
- Object cookieString = msgContext.getProperty(HTTPConstants.COOKIE_STRING);
-
- if (cookieString != null) {
- StringBuffer buffer = new StringBuffer();
- buffer.append(cookieString);
- httpMethod.setRequestHeader(HTTPConstants.HEADER_COOKIE, buffer.toString());
- }
- }
-
- if (httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10)) {
- httpClient.getParams().setVersion(HttpVersion.HTTP_1_0);
- }
- return messageFormatter;
- }
-
- /**
- * This is used to get the dynamically set time out values from the
- * message context. If the values are not available or invalid then
- * the default values or the values set by the configuration will be used
- *
- * @param msgContext the active MessageContext
- * @param httpClient
- */
- protected void initializeTimeouts(MessageContext msgContext, HttpClient httpClient) {
- // If the SO_TIMEOUT of CONNECTION_TIMEOUT is set by dynamically the
- // override the static config
- Integer tempSoTimeoutProperty =
- (Integer) msgContext.getProperty(HTTPConstants.SO_TIMEOUT);
- Integer tempConnTimeoutProperty =
- (Integer) msgContext
- .getProperty(HTTPConstants.CONNECTION_TIMEOUT);
- long timeout = msgContext.getOptions().getTimeOutInMilliSeconds();
-
- if (tempConnTimeoutProperty != null) {
- int connectionTimeout = tempConnTimeoutProperty.intValue();
- // timeout for initial connection
- httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(connectionTimeout);
- } else {
- // set timeout in client
- if (timeout > 0) {
- httpClient.getHttpConnectionManager().getParams().setConnectionTimeout((int) timeout);
- }
- }
-
- if (tempSoTimeoutProperty != null) {
- int soTimeout = tempSoTimeoutProperty.intValue();
- // SO_TIMEOUT -- timeout for blocking reads
- httpClient.getHttpConnectionManager().getParams().setSoTimeout(soTimeout);
- httpClient.getParams().setSoTimeout(soTimeout);
- } else {
- // set timeout in client
- if (timeout > 0) {
- httpClient.getHttpConnectionManager().getParams().setSoTimeout((int) timeout);
- httpClient.getParams().setSoTimeout((int) timeout);
- }
- }
- }
-
- /**
- * This is used to get the dynamically set time out values from the
- * message context. If the values are not available or invalid then
- * the default values or the values set by the configuration will be used
- *
- * @param msgContext the active MessageContext
- * @param httpMethod method
- */
- protected void setTimeouts(MessageContext msgContext, HttpMethod httpMethod) {
- // If the SO_TIMEOUT of CONNECTION_TIMEOUT is set by dynamically the
- // override the static config
- Integer tempSoTimeoutProperty =
- (Integer) msgContext.getProperty(HTTPConstants.SO_TIMEOUT);
- Integer tempConnTimeoutProperty =
- (Integer) msgContext
- .getProperty(HTTPConstants.CONNECTION_TIMEOUT);
- long timeout = msgContext.getOptions().getTimeOutInMilliSeconds();
-
- if (tempConnTimeoutProperty != null) {
- // timeout for initial connection
- httpMethod.getParams().setParameter("http.connection.timeout",
- tempConnTimeoutProperty);
- }
-
- if (tempSoTimeoutProperty != null) {
- // SO_TIMEOUT -- timeout for blocking reads
- httpMethod.getParams().setSoTimeout(tempSoTimeoutProperty);
- } else {
- // set timeout in client
- if (timeout > 0) {
- httpMethod.getParams().setSoTimeout((int) timeout);
- }
- }
- }
+ throws IOException;
public void setFormat(OMOutputFormat format) {
this.format = format;
- }
-
- protected HttpClient getHttpClient(MessageContext msgContext) {
- ConfigurationContext configContext = msgContext.getConfigurationContext();
-
- HttpClient httpClient = (HttpClient) msgContext.getProperty(
- HTTPConstants.CACHED_HTTP_CLIENT);
-
- if (httpClient == null) {
- httpClient = (HttpClient) configContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
- }
-
- if (httpClient != null) {
- return httpClient;
- }
-
- synchronized (this) {
- httpClient = (HttpClient) msgContext.getProperty(HTTPConstants.CACHED_HTTP_CLIENT);
-
- if (httpClient == null) {
- httpClient = (HttpClient) configContext.getProperty(
- HTTPConstants.CACHED_HTTP_CLIENT);
- }
-
- if (httpClient != null) {
- return httpClient;
- }
-
- HttpConnectionManager connManager =
- (HttpConnectionManager) msgContext.getProperty(
- HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
- if (connManager == null) {
- connManager =
- (HttpConnectionManager) msgContext.getProperty(
- HTTPConstants.MUTTITHREAD_HTTP_CONNECTION_MANAGER);
- }
- if (connManager == null) {
- // reuse HttpConnectionManager
- synchronized (configContext) {
- connManager = (HttpConnectionManager) configContext.getProperty(
- HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER);
- if (connManager == null) {
- log.trace("Making new ConnectionManager");
- connManager = new MultiThreadedHttpConnectionManager();
- configContext.setProperty(
- HTTPConstants.MULTITHREAD_HTTP_CONNECTION_MANAGER, connManager);
- }
- }
- }
- /*
- * Create a new instance of HttpClient since the way
- * it is used here it's not fully thread-safe.
- */
- httpClient = new HttpClient(connManager);
-
- // Set the default timeout in case we have a connection pool starvation to 30sec
- httpClient.getParams().setConnectionManagerTimeout(30000);
-
- // Get the timeout values set in the runtime
- initializeTimeouts(msgContext, httpClient);
-
- return httpClient;
- }
- }
-
- protected void executeMethod(HttpClient httpClient, MessageContext msgContext, URL url,
- HttpMethod method) throws IOException {
- HostConfiguration config = this.getHostConfiguration(httpClient, msgContext, url);
-
- // set the custom headers, if available
- addCustomHeaders(method, msgContext);
-
- // add compression headers if needed
- if (msgContext.isPropertyTrue(HTTPConstants.MC_ACCEPT_GZIP)) {
- method.addRequestHeader(HTTPConstants.HEADER_ACCEPT_ENCODING,
- HTTPConstants.COMPRESSION_GZIP);
- }
-
- if (msgContext.isPropertyTrue(HTTPConstants.MC_GZIP_REQUEST)) {
- method.addRequestHeader(HTTPConstants.HEADER_CONTENT_ENCODING,
- HTTPConstants.COMPRESSION_GZIP);
- }
-
- if (msgContext.getProperty(HTTPConstants.HTTP_METHOD_PARAMS) != null) {
- HttpMethodParams params = (HttpMethodParams)msgContext
- .getProperty(HTTPConstants.HTTP_METHOD_PARAMS);
- method.setParams(params);
- }
-
- String cookiePolicy = (String) msgContext.getProperty(HTTPConstants.COOKIE_POLICY);
- if (cookiePolicy != null) {
- method.getParams().setCookiePolicy(cookiePolicy);
- }
- HttpState httpState = (HttpState)msgContext.getProperty(HTTPConstants.CACHED_HTTP_STATE);
-
- setTimeouts(msgContext, method);
-
- httpClient.executeMethod(config, method, httpState);
- }
-
- 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/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisRequestEntity.java Thu Jan 12 09:33:53 2012
@@ -24,7 +24,6 @@ import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.transport.MessageFormatter;
import org.apache.axis2.util.JavaUtils;
-import org.apache.commons.httpclient.methods.RequestEntity;
import javax.xml.stream.FactoryConfigurationError;
import java.io.IOException;
@@ -35,7 +34,7 @@ import java.util.zip.GZIPOutputStream;
* This Request Entity is used by the HTTPCommonsTransportSender. This wraps the
* Axis2 message formatter object.
*/
-public class AxisRequestEntity implements RequestEntity {
+public abstract class AxisRequestEntity {
private MessageFormatter messageFormatter;
@@ -114,7 +113,17 @@ public class AxisRequestEntity implement
return bytes.length;
}
- public String getContentType() {
+ public String getContentTypeAsString() {
return messageFormatter.getContentType(messageContext, format, soapAction);
}
+
+ public boolean isChunked() {
+ return chunked;
+ }
+
+ public void setChunked(boolean chunked) {
+ this.chunked = chunked;
+ }
+
+
}
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/AxisServlet.java Thu Jan 12 09:33:53 2012
@@ -555,7 +555,23 @@ public class AxisServlet extends HttpSer
// AXIS2-4898: MultiThreadedHttpConnectionManager starts a thread that is not stopped by the
// shutdown of the connection manager. If we want to avoid a resource leak, we need to call
// shutdownAll here.
- MultiThreadedHttpConnectionManager.shutdownAll();
+ // TODO - This action need be changed according to current HTTPClient.
+ String clientVersion = getHTTPClientVersion();
+ if (clientVersion != null
+ && HTTPTransportConstants.HTTP_CLIENT_4_X_VERSION.equals(clientVersion)) {
+ // TODO - Handle for HTTPClient 4
+ } else {
+ MultiThreadedHttpConnectionManager.shutdownAll();
+ }
+
+ }
+
+ private String getHTTPClientVersion() {
+ Object version = configContext.getProperty(HTTPTransportConstants.HTTP_CLIENT_VERSION);
+ if (version != null) {
+ return String.valueOf(version);
+ }
+ return null;
}
/**
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsHTTPTransportSender.java Thu Jan 12 09:33:53 2012
@@ -31,11 +31,10 @@ import org.apache.axis2.description.Tran
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.axis2.transport.MessageFormatter;
import org.apache.axis2.transport.OutTransportInfo;
-import org.apache.axis2.transport.TransportSender;
import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.transport.http.impl.httpclient3.HTTPSenderImpl;
import org.apache.axis2.transport.http.server.AxisHttpResponse;
import org.apache.axis2.util.JavaUtils;
-import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,8 +50,7 @@ import java.util.List;
import java.util.Map;
import java.util.zip.GZIPOutputStream;
-public class CommonsHTTPTransportSender extends AbstractHandler implements
- TransportSender {
+public class CommonsHTTPTransportSender extends AbstractHandler implements HTTPTransportSender {
/**
* The {@link TransportOutDescription} object received by the call to
* {@link #init(ConfigurationContext, TransportOutDescription)}.
@@ -80,20 +78,22 @@ public class CommonsHTTPTransportSender
private int connectionTimeout = HTTPConstants.DEFAULT_CONNECTION_TIMEOUT;
public void cleanup(MessageContext msgContext) throws AxisFault {
- HttpMethod httpMethod = (HttpMethod) msgContext.getProperty(HTTPConstants.HTTP_METHOD);
-
- if (httpMethod != null) {
- // TODO : Don't do this if we're not on the right thread! Can we confirm?
- log.trace("cleanup() releasing connection for " + httpMethod);
-
- httpMethod.releaseConnection();
- msgContext.removeProperty(HTTPConstants.HTTP_METHOD); // guard against multiple calls
- }
+
+ HttpMethod httpMethod = (HttpMethod) msgContext.getProperty(HTTPConstants.HTTP_METHOD);
+ if (httpMethod != null) {
+ // TODO : Don't do this if we're not on the right thread! Can we confirm?
+ log.trace("cleanup() releasing connection for " + httpMethod);
+
+ httpMethod.releaseConnection();
+ msgContext.removeProperty(HTTPConstants.HTTP_METHOD); // guard against multiple calls
+ }
}
public void init(ConfigurationContext confContext,
TransportOutDescription transportOut) throws AxisFault {
this.transportOut = transportOut;
+ //Set HTTP client version
+ setHTTPClientVersion(confContext);
// <parameter name="PROTOCOL">HTTP/1.0</parameter> or
// <parameter name="PROTOCOL">HTTP/1.1</parameter> is
@@ -376,7 +376,7 @@ public class CommonsHTTPTransportSender
// select the Message Sender depending on the REST status
AbstractHTTPSender sender;
- sender = new HTTPSender();
+ sender = new HTTPSenderImpl();
boolean chunked;
if (messageContext.getProperty(HTTPConstants.CHUNKED) != null) {
@@ -403,10 +403,7 @@ public class CommonsHTTPTransportSender
} catch (MalformedURLException e) {
log.debug(e);
throw AxisFault.makeFault(e);
- } catch (HttpException e) {
- log.debug(e);
- throw AxisFault.makeFault(e);
- } catch (IOException e) {
+ } catch (IOException e) {
log.debug(e);
throw AxisFault.makeFault(e);
}
@@ -505,4 +502,10 @@ public class CommonsHTTPTransportSender
return soapActionString;
}
+
+ public void setHTTPClientVersion(ConfigurationContext configurationContext) {
+ configurationContext.setProperty(HTTPTransportConstants.HTTP_CLIENT_VERSION,
+ HTTPTransportConstants.HTTP_CLIENT_3_X_VERSION);
+ }
+
}
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/CommonsTransportHeaders.java Thu Jan 12 09:33:53 2012
@@ -19,30 +19,18 @@
package org.apache.axis2.transport.http;
-import org.apache.commons.httpclient.Header;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-public class CommonsTransportHeaders implements Map {
- private Header[] headers;
+public abstract class CommonsTransportHeaders implements Map {
HashMap headerMap = null;
-
- public CommonsTransportHeaders(Header[] headers) {
- this.headers = headers;
- }
-
- private void init() {
- headerMap = new HashMap();
-
- for (int i = 0; i < headers.length; i++) {
- headerMap.put(headers[i].getName(), headers[i].getValue());
- }
- }
-
+
+ protected abstract void init();
+
public int size() {
if (headerMap == null) {
init();
@@ -125,4 +113,14 @@ public class CommonsTransportHeaders imp
}
return headerMap.put(key, value);
}
+
+ public HashMap getHeaderMap() {
+ return headerMap;
+ }
+
+ public void setHeaderMap(HashMap headerMap) {
+ this.headerMap = headerMap;
+ }
+
+
}
Added: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java?rev=1230452&view=auto
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java (added)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java Thu Jan 12 09:33:53 2012
@@ -0,0 +1,107 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+import java.util.List;
+
+public abstract class HTTPAuthenticator {
+
+ /* host that needed to be authenticated with */
+ private String host;
+ /* Domain needed by NTCredentials for NT Domain */
+ private String domain;
+ /* User for authenticate */
+ private String username;
+ /* Password of the user for authenticate */
+ private String password;
+ /* Switch to use preemptive authentication or not */
+ private boolean preemptive = false;
+ /* if Authentication scheme needs retry just turn on the following flag */
+ private boolean allowedRetry = false;
+ /* Changing the priorty or adding a custom AuthPolicy */
+ private List authSchemes;
+
+ public abstract int getPort();
+
+ public abstract void setPort(int port);
+
+ public abstract String getRealm();
+
+ public abstract void setRealm(String realm);
+
+ public abstract Object getAuthPolicyPref(String schema);
+
+ public String getHost() {
+ return host;
+ }
+
+ public void setHost(String host) {
+ this.host = host;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setPreemptiveAuthentication(boolean preemptive) {
+ this.preemptive = preemptive;
+ }
+
+ public boolean getPreemptiveAuthentication() {
+ return this.preemptive;
+ }
+
+ public String getDomain() {
+ return domain;
+ }
+
+ public void setDomain(String domain) {
+ this.domain = domain;
+ }
+
+ public void setAuthSchemes(List authSchemes) {
+ this.authSchemes = authSchemes;
+ }
+
+ public List getAuthSchemes() {
+ return this.authSchemes;
+ }
+
+ public void setAllowedRetry(boolean allowedRetry) {
+ this.allowedRetry = allowedRetry;
+ }
+
+ public boolean isAllowedRetry() {
+ return this.allowedRetry;
+ }
+
+}
Propchange: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPAuthenticator.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPSender.java Thu Jan 12 09:33:53 2012
@@ -23,58 +23,17 @@ package org.apache.axis2.transport.http;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.OperationContext;
-import org.apache.axis2.i18n.Messages;
-import org.apache.axis2.transport.MessageFormatter;
-import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.commons.httpclient.Header;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.HttpMethodBase;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.methods.DeleteMethod;
-import org.apache.commons.httpclient.methods.GetMethod;
-import org.apache.commons.httpclient.methods.PostMethod;
-import org.apache.commons.httpclient.methods.PutMethod;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import java.net.URL;
-public class HTTPSender extends AbstractHTTPSender {
+//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 {
private static final Log log = LogFactory.getLog(HTTPSender.class);
-
- public void send(MessageContext msgContext, URL url, String soapActionString)
- throws IOException {
-
- // execute the HtttpMethodBase - a connection manager can be given for
- // handle multiple
-
- String httpMethod =
- (String) msgContext.getProperty(Constants.Configuration.HTTP_METHOD);
-
- if ((httpMethod != null)) {
-
- if (Constants.Configuration.HTTP_METHOD_GET.equalsIgnoreCase(httpMethod)) {
- this.sendViaGet(msgContext, url, soapActionString);
-
- return;
- } else if (Constants.Configuration.HTTP_METHOD_DELETE.equalsIgnoreCase(httpMethod)) {
- this.sendViaDelete(msgContext, url, soapActionString);
-
- return;
- } else if (Constants.Configuration.HTTP_METHOD_PUT.equalsIgnoreCase(httpMethod)) {
- this.sendViaPut(msgContext, url, soapActionString);
-
- return;
- }
- }
-
- this.sendViaPost(msgContext, url, soapActionString);
- }
-
+
/**
* Used to send a request via HTTP Get method
*
@@ -83,39 +42,9 @@ public class HTTPSender extends Abstract
* @param soapActiionString - The soapAction string of the request
* @throws AxisFault - Thrown in case an exception occurs
*/
- private void sendViaGet(MessageContext msgContext, URL url, String soapActiionString)
- throws AxisFault {
-
- GetMethod getMethod = new GetMethod();
- HttpClient httpClient = getHttpClient(msgContext);
- MessageFormatter messageFormatter =
- populateCommonProperties(msgContext, url, getMethod, httpClient, soapActiionString);
-
- // Need to have this here because we can have soap action when using the soap response MEP
- String soapAction =
- messageFormatter.formatSOAPAction(msgContext, format, soapActiionString);
-
- if (soapAction != null) {
- getMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, soapAction);
- }
- try {
- executeMethod(httpClient, msgContext, url, getMethod);
- handleResponse(msgContext, getMethod);
- } catch (IOException e) {
- log.info("Unable to sendViaGet to url[" + url + "]", e);
- throw AxisFault.makeFault(e);
- } finally {
- cleanup(msgContext, getMethod);
- }
- }
-
- private void cleanup(MessageContext msgContext, HttpMethod method) {
- if (msgContext.isPropertyTrue(HTTPConstants.AUTO_RELEASE_CONNECTION)) {
- log.trace("AutoReleasing " + method);
- method.releaseConnection();
- }
- }
-
+ protected abstract void sendViaGet(MessageContext msgContext, URL url, String soapActiionString)
+ throws AxisFault;
+
/**
* Used to send a request via HTTP Delete Method
*
@@ -124,24 +53,8 @@ public class HTTPSender extends Abstract
* @param soapActiionString - The soapAction string of the request
* @throws AxisFault - Thrown in case an exception occurs
*/
- private void sendViaDelete(MessageContext msgContext, URL url, String soapActiionString)
- throws AxisFault {
-
- DeleteMethod deleteMethod = new DeleteMethod();
- HttpClient httpClient = getHttpClient(msgContext);
- populateCommonProperties(msgContext, url, deleteMethod, httpClient, soapActiionString);
-
- try {
- executeMethod(httpClient, msgContext, url, deleteMethod);
- handleResponse(msgContext, deleteMethod);
- } catch (IOException e) {
- log.info("Unable to sendViaDelete to url[" + url + "]", e);
- throw AxisFault.makeFault(e);
- } finally {
- cleanup(msgContext, deleteMethod);
- }
- }
-
+ protected abstract void sendViaDelete(MessageContext msgContext, URL url, String soapActiionString)
+ throws AxisFault;
/**
* Used to send a request via HTTP Post Method
*
@@ -150,55 +63,9 @@ public class HTTPSender extends Abstract
* @param soapActionString - The soapAction string of the request
* @throws AxisFault - Thrown in case an exception occurs
*/
- private void sendViaPost(MessageContext msgContext, URL url,
- String soapActionString) throws AxisFault {
-
-
- HttpClient httpClient = getHttpClient(msgContext);
-
-/* What's up with this, it never gets used anywhere?? --Glen
- String charEncoding =
- (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
-
- if (charEncoding == null) {
- charEncoding = MessageContext.DEFAULT_CHAR_SET_ENCODING;
- }
-*/
-
- PostMethod postMethod = new PostMethod();
- if (log.isTraceEnabled()) {
- log.trace(Thread.currentThread() + " PostMethod " + postMethod + " / " + httpClient);
- }
- MessageFormatter messageFormatter =
- populateCommonProperties(msgContext, url, postMethod, httpClient, soapActionString);
+ protected abstract void sendViaPost(MessageContext msgContext, URL url,
+ String soapActionString) throws AxisFault;
- postMethod.setRequestEntity(new AxisRequestEntity(messageFormatter,
- msgContext, format, soapActionString,
- chunked, isAllowedRetry));
-
- if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chunked) {
- postMethod.setContentChunked(true);
- }
-
- String soapAction = messageFormatter.formatSOAPAction(msgContext, format, soapActionString);
-
- if (soapAction != null) {
- postMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, soapAction);
- }
-
- /*
- * main excecution takes place..
- */
- try {
- executeMethod(httpClient, msgContext, url, postMethod);
- handleResponse(msgContext, postMethod);
- } catch (IOException e) {
- log.info("Unable to sendViaPost to url[" + url + "]", e);
- throw AxisFault.makeFault(e);
- } finally {
- cleanup(msgContext, postMethod);
- }
- }
/**
* Used to send a request via HTTP Put Method
@@ -208,51 +75,10 @@ public class HTTPSender extends Abstract
* @param soapActionString - The soapAction string of the request
* @throws AxisFault - Thrown in case an exception occurs
*/
- private void sendViaPut(MessageContext msgContext, URL url,
- String soapActionString) throws AxisFault {
-
-
- HttpClient httpClient = getHttpClient(msgContext);
-
-/* Same deal - this value never gets used, why is it here? --Glen
- String charEncoding =
- (String) msgContext.getProperty(Constants.Configuration.CHARACTER_SET_ENCODING);
-
- if (charEncoding == null) {
- charEncoding = MessageContext.DEFAULT_CHAR_SET_ENCODING;
- }
-*/
+ protected abstract void sendViaPut(MessageContext msgContext, URL url,
+ String soapActionString) throws AxisFault;
- PutMethod putMethod = new PutMethod();
- MessageFormatter messageFormatter =
- populateCommonProperties(msgContext, url, putMethod, httpClient, soapActionString);
-
- putMethod.setRequestEntity(new AxisRequestEntity(messageFormatter,
- msgContext, format, soapActionString,
- chunked, isAllowedRetry));
-
- if (!httpVersion.equals(HTTPConstants.HEADER_PROTOCOL_10) && chunked) {
- putMethod.setContentChunked(true);
- }
-
- String soapAction = messageFormatter.formatSOAPAction(msgContext, format, soapActionString);
- if (soapAction != null) {
- putMethod.setRequestHeader(HTTPConstants.HEADER_SOAP_ACTION, soapAction);
- }
-
- /*
- * main excecution takes place..
- */
- try {
- executeMethod(httpClient, msgContext, url, putMethod);
- handleResponse(msgContext, putMethod);
- } catch (IOException e) {
- log.info("Unable to sendViaPut to url[" + url + "]", e);
- throw AxisFault.makeFault(e);
- } finally {
- cleanup(msgContext, putMethod);
- }
- }
+
/**
* Used to handle the HTTP Response
@@ -261,55 +87,40 @@ public class HTTPSender extends Abstract
* @param method - The HTTP method used
* @throws IOException - Thrown in case an exception occurs
*/
- private void handleResponse(MessageContext msgContext,
- HttpMethodBase method) throws IOException {
- int statusCode = method.getStatusCode();
- log.trace("Handling response - " + statusCode);
- if (statusCode == HttpStatus.SC_OK) {
- // Save the HttpMethod so that we can release the connection when cleaning up
- msgContext.setProperty(HTTPConstants.HTTP_METHOD, method);
- processResponse(method, msgContext);
- } else if (statusCode == HttpStatus.SC_ACCEPTED) {
- /* When an HTTP 202 Accepted code has been received, this will be the case of an execution
- * of an in-only operation. In such a scenario, the HTTP response headers should be returned,
- * i.e. session cookies. */
- obtainHTTPHeaderInformation(method, msgContext);
- // Since we don't expect any content with a 202 response, we must release the connection
- method.releaseConnection();
- } else if (statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR ||
- statusCode == HttpStatus.SC_BAD_REQUEST) {
- // Save the HttpMethod so that we can release the connection when cleaning up
- msgContext.setProperty(HTTPConstants.HTTP_METHOD, method);
- Header contenttypeHeader =
- method.getResponseHeader(HTTPConstants.HEADER_CONTENT_TYPE);
- String value = null;
- if (contenttypeHeader != null) {
- value = contenttypeHeader.getValue();
- }
- OperationContext opContext = msgContext.getOperationContext();
- if(opContext!=null){
- MessageContext inMessageContext =
- opContext.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- if(inMessageContext!=null){
- inMessageContext.setProcessingFault(true);
- }
- }
- if (value != null) {
+ protected abstract void handleResponse(MessageContext msgContext,
+ Object httpMethodBase) throws IOException;
+
+ protected abstract void cleanup(MessageContext msgContext, Object httpMethod);
+
+
- processResponse(method, msgContext);
- }
-
- if (org.apache.axis2.util.Utils.isClientThreadNonBlockingPropertySet(msgContext)) {
- throw new AxisFault(Messages.getMessage("transportError",
- String.valueOf(statusCode),
- method.getStatusText()));
+ public void send(MessageContext msgContext, URL url, String soapActionString)
+ throws IOException {
+
+ // execute the HtttpMethodBase - a connection manager can be given for
+ // handle multiple
+
+ String httpMethod =
+ (String) msgContext.getProperty(Constants.Configuration.HTTP_METHOD);
+
+ if ((httpMethod != null)) {
+
+ if (Constants.Configuration.HTTP_METHOD_GET.equalsIgnoreCase(httpMethod)) {
+ this.sendViaGet(msgContext, url, soapActionString);
+
+ return;
+ } else if (Constants.Configuration.HTTP_METHOD_DELETE.equalsIgnoreCase(httpMethod)) {
+ this.sendViaDelete(msgContext, url, soapActionString);
+
+ return;
+ } else if (Constants.Configuration.HTTP_METHOD_PUT.equalsIgnoreCase(httpMethod)) {
+ this.sendViaPut(msgContext, url, soapActionString);
+
+ return;
}
- } else {
- // Since we don't process the response, we must release the connection immediately
- method.releaseConnection();
- throw new AxisFault(Messages.getMessage("transportError",
- String.valueOf(statusCode),
- method.getStatusText()));
}
- }
+
+ this.sendViaPost(msgContext, url, soapActionString);
+ }
+
}
Added: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java?rev=1230452&view=auto
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java (added)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java Thu Jan 12 09:33:53 2012
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+public class HTTPTransportConstants {
+
+ //Settings for HTTP proxy configuration.
+ public static final String HTTP_PROXY_HOST = "http.proxyHost";
+ public static final String HTTP_PROXY_PORT = "http.proxyPort";
+ public static final String HTTP_NON_PROXY_HOSTS = "http.nonProxyHosts";
+
+ public static final String ATTR_PROXY = "Proxy";
+ public static final String PROXY_HOST_ELEMENT = "ProxyHost";
+ public static final String PROXY_PORT_ELEMENT = "ProxyPort";
+ public static final String PROXY_USER_ELEMENT = "ProxyUser";
+ public static final String PROXY_PASSWORD_ELEMENT = "ProxyPassword";
+
+ public static final String PROXY_CONFIGURATION_NOT_FOUND = "HTTP Proxy is enabled, but proxy configuration element is missing in axis2.xml";
+ public static final String PROXY_HOST_ELEMENT_NOT_FOUND = "HTTP Proxy is enabled, but proxy host element is missing in axis2.xml";
+ public static final String PROXY_PORT_ELEMENT_NOT_FOUND = "HTTP Proxy is enabled, but proxy port element is missing in axis2.xml";
+ public static final String PROXY_HOST_ELEMENT_WITH_EMPTY_VALUE = "HTTP Proxy is enabled, but proxy host value is empty.";
+ public static final String PROXY_PORT_ELEMENT_WITH_EMPTY_VALUE = "HTTP Proxy is enabled, but proxy port value is empty.";
+
+ //Settings to define HTTPClient version
+ public static final String HTTP_CLIENT_VERSION = "http.client.version";
+ public static final String HTTP_CLIENT_3_X_VERSION = "http.client.version.3x";
+ public static final String HTTP_CLIENT_4_X_VERSION = "http.client.version.4x";
+
+ public static final String ANONYMOUS = "anonymous";
+ public static final String PROXY_HOST_NAME = "proxy_host";
+ public static final String PROXY_PORT = "proxy_port";
+ public static final String PROTOCOL_HTTP = "http";
+ public static final String PROTOCOL_HTTPS = "https";
+
+}
Propchange: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportConstants.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java?rev=1230452&view=auto
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java (added)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java Thu Jan 12 09:33:53 2012
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.transport.TransportSender;
+
+public interface HTTPTransportSender extends TransportSender {
+
+ void setHTTPClientVersion(ConfigurationContext configurationContext);
+
+}
Propchange: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HTTPTransportSender.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/HttpTransportProperties.java Thu Jan 12 09:33:53 2012
@@ -19,48 +19,36 @@
package org.apache.axis2.transport.http;
-import org.apache.commons.httpclient.HttpVersion;
-import org.apache.commons.httpclient.auth.AuthPolicy;
-import org.apache.commons.httpclient.auth.AuthScope;
-
-import java.util.List;
import java.util.Properties;
/**
* Utility bean for setting transport properties in runtime.
*/
-public class HttpTransportProperties {
- protected boolean chunked;
- protected HttpVersion httpVersion;
+public abstract class HttpTransportProperties {
+
+ protected boolean chunked;
protected String protocol;
-
- public HttpTransportProperties() {
- }
+
+ public abstract void setHttpVersion(Object httpVerion);
+
+ public abstract Object getHttpVersion();
public boolean getChunked() {
return chunked;
}
-
- public HttpVersion getHttpVersion() {
- return httpVersion;
- }
-
+
public String getProtocol() {
return protocol;
}
public void setChunked(boolean chunked) {
this.chunked = chunked;
- }
-
- public void setHttpVersion(HttpVersion httpVerion) {
- this.httpVersion = httpVerion;
- }
+ }
public void setProtocol(String protocol) {
this.protocol = protocol;
}
-
+
public static class ProxyProperties {
protected int proxyPort = -1;
protected String domain = null;
@@ -112,109 +100,7 @@ public class HttpTransportProperties {
}
}
- /*
- This class is responsible for holding all the necessary information needed for NTML, Digest
- and Basic Authentication. Authentication itself is handled by httpclient. User doesn't need to
- warry about what authentication mechanism it uses. Axis2 uses httpclinet's default authentication
- patterns.
- */
- public static class Authenticator {
- /*host that needed to be authenticated with*/
- private String host;
- /*port of the host that needed to be authenticated with*/
- private int port = AuthScope.ANY_PORT;
- /*Realm for authentication scope*/
- private String realm = AuthScope.ANY_REALM;
- /*Domain needed by NTCredentials for NT Domain*/
- private String domain;
- /*User for authenticate*/
- private String username;
- /*Password of the user for authenticate*/
- private String password;
- /* Switch to use preemptive authentication or not*/
- private boolean preemptive = false;
- /* if Authentication scheme needs retry just turn on the following flag */
- private boolean allowedRetry = false;
- /* Changing the priorty or adding a custom AuthPolicy*/
- private List authSchemes;
-
- /* Default Auth Schems*/
- public static final String NTLM = AuthPolicy.NTLM;
- public static final String DIGEST = AuthPolicy.DIGEST;
- public static final String BASIC = AuthPolicy.BASIC;
-
- public String getHost() {
- return host;
- }
-
- public void setHost(String host) {
- this.host = host;
- }
-
- public int getPort() {
- return port;
- }
-
- public void setPort(int port) {
- this.port = port;
- }
-
- public String getRealm() {
- return realm;
- }
-
- public void setRealm(String realm) {
- this.realm = realm;
- }
-
- public String getUsername() {
- return username;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public String getPassword() {
- return password;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public void setPreemptiveAuthentication(boolean preemptive) {
- this.preemptive = preemptive;
- }
-
- public boolean getPreemptiveAuthentication() {
- return this.preemptive;
- }
-
- public String getDomain() {
- return domain;
- }
-
- public void setDomain(String domain) {
- this.domain = domain;
- }
-
- public void setAuthSchemes(List authSchemes) {
- this.authSchemes = authSchemes;
- }
-
- public List getAuthSchemes() {
- return this.authSchemes;
- }
-
- public void setAllowedRetry(boolean allowedRetry) {
- this.allowedRetry = allowedRetry;
- }
-
- public boolean isAllowedRetry() {
- return this.allowedRetry;
- }
- }
+
/**
* @deprecated org.apache.axis2.transport.http.HttpTransportProperties.MailProperties has been
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity.java Thu Jan 12 09:33:53 2012
@@ -23,7 +23,6 @@ import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMOutputFormat;
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.MessageContext;
-import org.apache.commons.httpclient.methods.RequestEntity;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLStreamException;
@@ -31,7 +30,7 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-public class RESTRequestEntity implements RequestEntity {
+public abstract class RESTRequestEntity {
private byte[] bytes;
private String charSetEnc;
private boolean chunked;
@@ -115,7 +114,7 @@ public class RESTRequestEntity implement
}
}
- public String getContentType() {
+ public String getContentTypeAsString() {
String encoding = format.getCharSetEncoding();
String contentType = format.getContentType();
if (encoding != null) {
@@ -133,4 +132,61 @@ public class RESTRequestEntity implement
public boolean isRepeatable() {
return true;
}
+
+ public byte[] getBytes() {
+ return bytes;
+ }
+
+ public void setBytes(byte[] bytes) {
+ this.bytes = bytes;
+ }
+
+ public String getCharSetEnc() {
+ return charSetEnc;
+ }
+
+ public void setCharSetEnc(String charSetEnc) {
+ this.charSetEnc = charSetEnc;
+ }
+
+ public boolean isChunked() {
+ return chunked;
+ }
+
+ public void setChunked(boolean chunked) {
+ this.chunked = chunked;
+ }
+
+ public OMElement getElement() {
+ return element;
+ }
+
+ public void setElement(OMElement element) {
+ this.element = element;
+ }
+
+ public MessageContext getMsgCtxt() {
+ return msgCtxt;
+ }
+
+ public void setMsgCtxt(MessageContext msgCtxt) {
+ this.msgCtxt = msgCtxt;
+ }
+
+ public String getSoapActionString() {
+ return soapActionString;
+ }
+
+ public void setSoapActionString(String soapActionString) {
+ this.soapActionString = soapActionString;
+ }
+
+ public OMOutputFormat getFormat() {
+ return format;
+ }
+
+ public void setFormat(OMOutputFormat format) {
+ this.format = format;
+ }
+
}
Modified: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java?rev=1230452&r1=1230451&r2=1230452&view=diff
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java (original)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/RESTRequestEntity2.java Thu Jan 12 09:33:53 2012
@@ -19,12 +19,10 @@
package org.apache.axis2.transport.http;
-import org.apache.commons.httpclient.methods.RequestEntity;
-
import java.io.IOException;
import java.io.OutputStream;
-public class RESTRequestEntity2 implements RequestEntity {
+public abstract class RESTRequestEntity2 {
private String contentType;
private String postRequestBody;
@@ -41,11 +39,25 @@ public class RESTRequestEntity2 implemen
return this.postRequestBody.getBytes().length;
}
- public String getContentType() {
+ public String getContentTypeAsString() {
return this.contentType;
}
public boolean isRepeatable() {
return true;
}
+
+
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ public String getPostRequestBody() {
+ return postRequestBody;
+ }
+
+ public void setPostRequestBody(String postRequestBody) {
+ this.postRequestBody = postRequestBody;
+ }
+
}
Added: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java?rev=1230452&view=auto
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java (added)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java Thu Jan 12 09:33:53 2012
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http.impl.httpclient3;
+
+import org.apache.axiom.om.OMOutputFormat;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.MessageFormatter;
+import org.apache.axis2.transport.http.AxisRequestEntity;
+
+import org.apache.commons.httpclient.methods.RequestEntity;
+
+/**
+ * This Request Entity is used by the HTTPCommonsTransportSender. This wraps the
+ * Axis2 message formatter object.
+ */
+public class AxisRequestEntityImpl extends AxisRequestEntity implements RequestEntity {
+
+ /**
+ * Method calls to this request entity are delegated to the following Axis2
+ * message formatter object.
+ *
+ * @param messageFormatter
+ */
+ public AxisRequestEntityImpl(MessageFormatter messageFormatter, MessageContext msgContext,
+ OMOutputFormat format, String soapAction, boolean chunked, boolean isAllowedRetry) {
+ super(messageFormatter, msgContext, format, soapAction, chunked, isAllowedRetry);
+ }
+
+ public String getContentType() {
+ return getContentTypeAsString();
+ }
+
+}
Propchange: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/AxisRequestEntityImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java
URL: http://svn.apache.org/viewvc/axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java?rev=1230452&view=auto
==============================================================================
--- axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java (added)
+++ axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java Thu Jan 12 09:33:53 2012
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axis2.transport.http.impl.httpclient3;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.transport.http.CommonsHTTPTransportSender;
+import org.apache.axis2.transport.http.HTTPTransportConstants;
+import org.apache.axis2.transport.http.HTTPTransportSender;
+
+public class HTTPClient3TransportSender extends CommonsHTTPTransportSender implements
+ HTTPTransportSender {
+
+ public void setHTTPClientVersion(ConfigurationContext configurationContext) {
+ configurationContext.setProperty(HTTPTransportConstants.HTTP_CLIENT_VERSION,
+ HTTPTransportConstants.HTTP_CLIENT_3_X_VERSION);
+ }
+
+ @Override
+ public void cleanup(MessageContext msgContext) throws AxisFault {
+ super.cleanup(msgContext);
+ }
+
+}
Propchange: axis/axis2/java/core/branches/AXIS2-4318/modules/transport/http/src/org/apache/axis2/transport/http/impl/httpclient3/HTTPClient3TransportSender.java
------------------------------------------------------------------------------
svn:eol-style = native