1 /*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18 package org.apache.any23.http;
19
20 import org.apache.any23.configuration.DefaultConfiguration;
21
22 /**
23 * Default implementation of {@link HTTPClientConfiguration}.
24 *
25 * @author Michele Mostarda (mostarda@fbk.eu)
26 */
27 public class DefaultHTTPClientConfiguration implements HTTPClientConfiguration {
28
29 private static DefaultHTTPClientConfiguration instance;
30
31 public static DefaultHTTPClientConfiguration singleton() {
32 if (instance == null) {
33 instance = new DefaultHTTPClientConfiguration();
34 }
35 return instance;
36 }
37
38 private String userAgent;
39 private int defaultTimeout;
40 private int maxConnections;
41 private String acceptHeader;
42
43 /**
44 * Constructor.
45 *
46 * @param userAgent
47 * the user agent descriptor string.
48 * @param defaultTimeout
49 * the default timeout, cannot be <code><= to 0</code>
50 * @param maxConnections
51 * the default max connections, cannot be <code><= to 0</code>
52 * @param acceptHeader
53 * the accept header string, can be <code>null</code>.
54 */
55 public DefaultHTTPClientConfiguration(String userAgent, int defaultTimeout, int maxConnections,
56 String acceptHeader) {
57 if (userAgent == null)
58 throw new IllegalArgumentException("userAgent cannot be null.");
59 if (defaultTimeout <= 0)
60 throw new IllegalArgumentException("defaultTimeout cannot be <= 0 .");
61 if (maxConnections <= 0)
62 throw new IllegalArgumentException("maxConnections cannot be <= 0 .");
63 this.userAgent = userAgent;
64 this.defaultTimeout = defaultTimeout;
65 this.maxConnections = maxConnections;
66 this.acceptHeader = acceptHeader;
67 }
68
69 /**
70 * Constructor. initialized with default {@link DefaultConfiguration} parameters
71 *
72 * @param acceptHeader
73 * the value to initialize <code>acceptHeader</code>.
74 */
75 public DefaultHTTPClientConfiguration(String acceptHeader) {
76 this(DefaultConfiguration.singleton().getPropertyOrFail("any23.http.user.agent.default"),
77 DefaultConfiguration.singleton().getPropertyIntOrFail("any23.http.client.timeout"),
78 DefaultConfiguration.singleton().getPropertyIntOrFail("any23.http.client.max.connections"),
79 acceptHeader);
80 }
81
82 /**
83 * Constructor. initialized with default {@link DefaultConfiguration} parameters and <code>acceptHeader=null</code>.
84 */
85 public DefaultHTTPClientConfiguration() {
86 this(null);
87 }
88
89 public String getUserAgent() {
90 return userAgent;
91 }
92
93 public int getDefaultTimeout() {
94 return defaultTimeout;
95 }
96
97 public int getMaxConnections() {
98 return maxConnections;
99 }
100
101 public String getAcceptHeader() {
102 return acceptHeader;
103 }
104
105 }