View Javadoc

1   /*
2    * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/params/DefaultHttpParamsFactory.java,v 1.16 2004/11/20 21:48:47 mbecke Exp $
3    * $Revision: 404762 $
4    * $Date: 2006-05-07 10:07:41 -0400 (Sun, 07 May 2006) $
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   
30  package org.apache.commons.httpclient.params;
31  
32  import java.util.ArrayList;
33  import java.util.Arrays;
34  
35  import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
36  import org.apache.commons.httpclient.HttpVersion;
37  import org.apache.commons.httpclient.SimpleHttpConnectionManager;
38  import org.apache.commons.httpclient.cookie.CookiePolicy;
39  import org.apache.commons.httpclient.util.DateUtil;
40  
41  /***
42   * @since 3.0
43   */
44  public class DefaultHttpParamsFactory implements HttpParamsFactory {
45  
46      private HttpParams httpParams;
47  
48      /***
49       * 
50       */
51      public DefaultHttpParamsFactory() {
52          super();
53      }
54  
55      /* (non-Javadoc)
56       * @see org.apache.commons.httpclient.params.HttpParamsFactory#getDefaultParams()
57       */
58      public synchronized HttpParams getDefaultParams() {
59          if (httpParams == null) {
60              httpParams = createParams();
61          }
62  
63          return httpParams;
64      }
65  
66      protected HttpParams createParams() {
67          HttpClientParams params = new HttpClientParams(null);
68          
69          params.setParameter(HttpMethodParams.USER_AGENT, "Jakarta Commons-HttpClient/3.0.1");
70          params.setVersion(HttpVersion.HTTP_1_1);
71          params.setConnectionManagerClass(SimpleHttpConnectionManager.class);
72          params.setCookiePolicy(CookiePolicy.RFC_2109);
73          params.setHttpElementCharset("US-ASCII");
74          params.setContentCharset("ISO-8859-1");
75          params.setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());
76          
77          ArrayList datePatterns = new ArrayList();
78          datePatterns.addAll(
79              Arrays.asList(
80                  new String[] {
81                      DateUtil.PATTERN_RFC1123,
82                      DateUtil.PATTERN_RFC1036,
83                      DateUtil.PATTERN_ASCTIME,
84                      "EEE, dd-MMM-yyyy HH:mm:ss z",
85                      "EEE, dd-MMM-yyyy HH-mm-ss z",
86                      "EEE, dd MMM yy HH:mm:ss z",
87                      "EEE dd-MMM-yyyy HH:mm:ss z",
88                      "EEE dd MMM yyyy HH:mm:ss z",
89                      "EEE dd-MMM-yyyy HH-mm-ss z",
90                      "EEE dd-MMM-yy HH:mm:ss z",
91                      "EEE dd MMM yy HH:mm:ss z",
92                      "EEE,dd-MMM-yy HH:mm:ss z",
93                      "EEE,dd-MMM-yyyy HH:mm:ss z",
94                      "EEE, dd-MM-yyyy HH:mm:ss z",                
95                  }
96              )
97          );
98          params.setParameter(HttpMethodParams.DATE_PATTERNS, datePatterns);
99              
100         // TODO: To be removed. Provided for backward compatibility
101         String agent = null;
102         try {
103             agent = System.getProperty("httpclient.useragent");
104         } catch (SecurityException ignore) {
105         }
106         if (agent != null) {        
107             params.setParameter(HttpMethodParams.USER_AGENT, agent);
108         }
109         
110         // TODO: To be removed. Provided for backward compatibility
111         String preemptiveDefault = null;
112         try {
113             preemptiveDefault = System.getProperty("httpclient.authentication.preemptive");
114         } catch (SecurityException ignore) {
115         }
116         if (preemptiveDefault != null) {
117             preemptiveDefault = preemptiveDefault.trim().toLowerCase();
118             if (preemptiveDefault.equals("true")) {
119                 params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, Boolean.TRUE);
120             } else if (preemptiveDefault.equals("false")) {
121                 params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, Boolean.FALSE);
122             }
123         }
124         
125         // TODO: To be removed. Provided for backward compatibility
126         String defaultCookiePolicy = null;
127         try {
128             defaultCookiePolicy = System.getProperty("apache.commons.httpclient.cookiespec");
129         } catch (SecurityException ignore) {
130         }
131         if (defaultCookiePolicy != null) {
132             if ("COMPATIBILITY".equalsIgnoreCase(defaultCookiePolicy)) {
133                 params.setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
134             } else if ("NETSCAPE_DRAFT".equalsIgnoreCase(defaultCookiePolicy)) {
135                 params.setCookiePolicy(CookiePolicy.NETSCAPE);
136             } else if ("RFC2109".equalsIgnoreCase(defaultCookiePolicy)) {
137                 params.setCookiePolicy(CookiePolicy.RFC_2109);
138             }
139         }
140 
141         return params;
142     } 
143 
144 }