View Javadoc

1   /*
2    * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/params/DefaultHttpParamsFactory.java,v 1.10 2004/05/17 03:46:44 mbecke Exp $
3    * $Revision: 1.10 $
4    * $Date: 2004/05/17 03:46:44 $
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.HttpVersion;
36  import org.apache.commons.httpclient.SimpleHttpConnectionManager;
37  import org.apache.commons.httpclient.cookie.CookiePolicy;
38  import org.apache.commons.httpclient.util.DateParser;
39  
40  /***
41   * TODO: comment type
42   * 
43   * @since 3.0
44   */
45  public class DefaultHttpParamsFactory implements HttpParamsFactory {
46  
47      private HttpParams httpParams;
48  
49      /***
50       * 
51       */
52      public DefaultHttpParamsFactory() {
53          super();
54      }
55  
56      /* (non-Javadoc)
57       * @see org.apache.commons.httpclient.params.HttpParamsFactory#getDefaultParams()
58       */
59      public HttpParams getDefaultParams() {
60          if (httpParams == null) {
61              httpParams = createParams();
62          }
63  
64          return httpParams;
65      }
66  
67      protected HttpParams createParams() {
68          HttpClientParams params = new HttpClientParams(null);
69          
70          params.setParameter(HttpMethodParams.USER_AGENT, "Jakarta Commons-HttpClient/3.0-alpha1");
71          params.setVersion(HttpVersion.HTTP_1_1);
72          params.setConnectionManagerClass(SimpleHttpConnectionManager.class);
73          params.setCookiePolicy(CookiePolicy.RFC_2109);
74          params.setHttpElementCharset("US-ASCII");
75          params.setContentCharset("ISO-8859-1");
76  
77          ArrayList datePatterns = new ArrayList();
78          datePatterns.addAll(
79              Arrays.asList(
80                  new String[] {
81                      DateParser.PATTERN_RFC1123,
82                      DateParser.PATTERN_RFC1036,
83                      DateParser.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(DateParser.KEY_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, "on");
120             } else if (preemptiveDefault.equals("false")) {
121                 params.setParameter(HttpClientParams.PREEMPTIVE_AUTHENTICATION, "off");
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 }