1. /*
  2. * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/DefaultHttpParamsFactory.java,v 1.13 2004/09/19 19:37:07 mbecke Exp $
  3. * $Revision: 1.13 $
  4. * $Date: 2004/09/19 19:37:07 $
  5. *
  6. * ====================================================================
  7. *
  8. * Copyright 1999-2004 The Apache Software Foundation
  9. *
  10. * Licensed under the Apache License, Version 2.0 (the "License");
  11. * you may not use this file except in compliance with the License.
  12. * You may obtain a copy of the License at
  13. *
  14. * http://www.apache.org/licenses/LICENSE-2.0
  15. *
  16. * Unless required by applicable law or agreed to in writing, software
  17. * distributed under the License is distributed on an "AS IS" BASIS,
  18. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  19. * See the License for the specific language governing permissions and
  20. * limitations under the License.
  21. * ====================================================================
  22. *
  23. * This software consists of voluntary contributions made by many
  24. * individuals on behalf of the Apache Software Foundation. For more
  25. * information on the Apache Software Foundation, please see
  26. * <http://www.apache.org/>.
  27. *
  28. */
  29. package org.apache.commons.httpclient.params;
  30. import java.util.ArrayList;
  31. import java.util.Arrays;
  32. import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
  33. import org.apache.commons.httpclient.HttpVersion;
  34. import org.apache.commons.httpclient.SimpleHttpConnectionManager;
  35. import org.apache.commons.httpclient.cookie.CookiePolicy;
  36. import org.apache.commons.httpclient.util.DateParser;
  37. /**
  38. * TODO: comment type
  39. *
  40. * @since 3.0
  41. */
  42. public class DefaultHttpParamsFactory implements HttpParamsFactory {
  43. private HttpParams httpParams;
  44. /**
  45. *
  46. */
  47. public DefaultHttpParamsFactory() {
  48. super();
  49. }
  50. /* (non-Javadoc)
  51. * @see org.apache.commons.httpclient.params.HttpParamsFactory#getDefaultParams()
  52. */
  53. public HttpParams getDefaultParams() {
  54. if (httpParams == null) {
  55. httpParams = createParams();
  56. }
  57. return httpParams;
  58. }
  59. protected HttpParams createParams() {
  60. HttpClientParams params = new HttpClientParams(null);
  61. params.setParameter(HttpMethodParams.USER_AGENT, "Jakarta Commons-HttpClient/3.0-alpha2");
  62. params.setVersion(HttpVersion.HTTP_1_1);
  63. params.setConnectionManagerClass(SimpleHttpConnectionManager.class);
  64. params.setCookiePolicy(CookiePolicy.RFC_2109);
  65. params.setHttpElementCharset("US-ASCII");
  66. params.setContentCharset("ISO-8859-1");
  67. params.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
  68. ArrayList datePatterns = new ArrayList();
  69. datePatterns.addAll(
  70. Arrays.asList(
  71. new String[] {
  72. DateParser.PATTERN_RFC1123,
  73. DateParser.PATTERN_RFC1036,
  74. DateParser.PATTERN_ASCTIME,
  75. "EEE, dd-MMM-yyyy HH:mm:ss z",
  76. "EEE, dd-MMM-yyyy HH-mm-ss z",
  77. "EEE, dd MMM yy HH:mm:ss z",
  78. "EEE dd-MMM-yyyy HH:mm:ss z",
  79. "EEE dd MMM yyyy HH:mm:ss z",
  80. "EEE dd-MMM-yyyy HH-mm-ss z",
  81. "EEE dd-MMM-yy HH:mm:ss z",
  82. "EEE dd MMM yy HH:mm:ss z",
  83. "EEE,dd-MMM-yy HH:mm:ss z",
  84. "EEE,dd-MMM-yyyy HH:mm:ss z",
  85. "EEE, dd-MM-yyyy HH:mm:ss z",
  86. }
  87. )
  88. );
  89. params.setParameter(HttpMethodParams.DATE_PATTERNS, datePatterns);
  90. // TODO: To be removed. Provided for backward compatibility
  91. String agent = null;
  92. try {
  93. agent = System.getProperty("httpclient.useragent");
  94. } catch (SecurityException ignore) {
  95. }
  96. if (agent != null) {
  97. params.setParameter(HttpMethodParams.USER_AGENT, agent);
  98. }
  99. // TODO: To be removed. Provided for backward compatibility
  100. String preemptiveDefault = null;
  101. try {
  102. preemptiveDefault = System.getProperty("httpclient.authentication.preemptive");
  103. } catch (SecurityException ignore) {
  104. }
  105. if (preemptiveDefault != null) {
  106. preemptiveDefault = preemptiveDefault.trim().toLowerCase();
  107. if (preemptiveDefault.equals("true")) {
  108. params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, "on");
  109. } else if (preemptiveDefault.equals("false")) {
  110. params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, "off");
  111. }
  112. }
  113. // TODO: To be removed. Provided for backward compatibility
  114. String defaultCookiePolicy = null;
  115. try {
  116. defaultCookiePolicy = System.getProperty("apache.commons.httpclient.cookiespec");
  117. } catch (SecurityException ignore) {
  118. }
  119. if (defaultCookiePolicy != null) {
  120. if ("COMPATIBILITY".equalsIgnoreCase(defaultCookiePolicy)) {
  121. params.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
  122. } else if ("NETSCAPE_DRAFT".equalsIgnoreCase(defaultCookiePolicy)) {
  123. params.setCookiePolicy(CookiePolicy.NETSCAPE);
  124. } else if ("RFC2109".equalsIgnoreCase(defaultCookiePolicy)) {
  125. params.setCookiePolicy(CookiePolicy.RFC_2109);
  126. }
  127. }
  128. return params;
  129. }
  130. }