[
https://issues.apache.org/activemq/browse/CAMEL-1530?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=56587#action_56587
]
Christian Mueller commented on CAMEL-1530:
------------------------------------------
My "solution" is the following:
{code}
public class HttpParamsBuilder {
private Map<String, Object> clientHttpParams;
public HttpParamsBuilder(Map<String, Object> clientHttpParams) {
this.clientHttpParams = clientHttpParams;
}
/**
* Build the HttpParams with the provided http parameter
*
* @param client the client
*/
public HttpParams toHttpParams() {
HttpParams httpParams = new BasicHttpParams();
Object value = null;
if (clientHttpParams == null || clientHttpParams.isEmpty()) {
return httpParams;
}
if (null != (value =
clientHttpParams.remove(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE))) {
httpParams.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new
ConnPerRouteBean(Integer.parseInt((String) value)));
}
if (null != (value =
clientHttpParams.remove(ConnManagerPNames.MAX_TOTAL_CONNECTIONS))) {
httpParams.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(ConnManagerPNames.TIMEOUT))) {
httpParams.setParameter(ConnManagerPNames.TIMEOUT,
Long.parseLong((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.SO_TIMEOUT))) {
httpParams.setIntParameter(CoreConnectionPNames.SO_TIMEOUT,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.TCP_NODELAY))) {
httpParams.setBooleanParameter(CoreConnectionPNames.TCP_NODELAY,
Boolean.parseBoolean((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.SOCKET_BUFFER_SIZE))) {
httpParams.setIntParameter(CoreConnectionPNames.SOCKET_BUFFER_SIZE,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.SO_LINGER))) {
httpParams.setIntParameter(CoreConnectionPNames.SO_LINGER,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.CONNECTION_TIMEOUT))) {
httpParams.setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.STALE_CONNECTION_CHECK))) {
httpParams.setBooleanParameter(CoreConnectionPNames.STALE_CONNECTION_CHECK,
Boolean.parseBoolean((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.MAX_LINE_LENGTH))) {
httpParams.setIntParameter(CoreConnectionPNames.MAX_LINE_LENGTH,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreConnectionPNames.MAX_HEADER_COUNT))) {
httpParams.setIntParameter(CoreConnectionPNames.MAX_HEADER_COUNT,
Integer.parseInt((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.PROTOCOL_VERSION))) {
if ("0.9".equals(value)) {
httpParams.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_0_9);
} else if ("1.0".equals(value)) {
httpParams.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_0);
} else if ("1.0".equals(value)) {
httpParams.setParameter(CoreProtocolPNames.PROTOCOL_VERSION,
HttpVersion.HTTP_1_1);
} else {
throw new IllegalArgumentException("'" + value + "' is not a
valid value for property '" + CoreProtocolPNames.PROTOCOL_VERSION + "'");
}
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.HTTP_ELEMENT_CHARSET))) {
httpParams.setParameter(CoreProtocolPNames.HTTP_ELEMENT_CHARSET,
(String) value);
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.HTTP_CONTENT_CHARSET))) {
httpParams.setParameter(CoreProtocolPNames.HTTP_CONTENT_CHARSET,
(String) value);
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.USER_AGENT))) {
httpParams.setParameter(CoreProtocolPNames.USER_AGENT, (String)
value);
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.ORIGIN_SERVER))) {
httpParams.setParameter(CoreProtocolPNames.ORIGIN_SERVER, (String)
value);
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.STRICT_TRANSFER_ENCODING))) {
httpParams.setBooleanParameter(CoreProtocolPNames.STRICT_TRANSFER_ENCODING,
Boolean.parseBoolean((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.USE_EXPECT_CONTINUE))) {
httpParams.setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE,
Boolean.parseBoolean((String) value));
}
if (null != (value =
clientHttpParams.remove(CoreProtocolPNames.WAIT_FOR_CONTINUE))) {
httpParams.setIntParameter(CoreProtocolPNames.WAIT_FOR_CONTINUE,
Integer.parseInt((String) value));
}
// TODO: configure ClientPNames, AuthPNames, CookieSpecPNames,
ConnConnectionPNames, ConnRoutePNames
if (!clientHttpParams.isEmpty()) {
throw new IllegalArgumentException("Unknown parameters=[" +
clientHttpParams + "]");
}
return httpParams;
}
}
{code}
I'm not really happy with that, but I didn't have a better idea... :-(
Christian
> Upgrade camel-http to use httpclient 4.0
> ----------------------------------------
>
> Key: CAMEL-1530
> URL: https://issues.apache.org/activemq/browse/CAMEL-1530
> Project: Apache Camel
> Issue Type: Improvement
> Components: camel-http
> Affects Versions: 2.0-M1
> Reporter: Claus Ibsen
> Assignee: Christian Mueller
> Fix For: 2.2.0
>
>
> Upgrading httpclient from 3.1 to 4.0 requires changes in the camel-http code
> as the API has change quite a lot.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.