diff --git a/httpclient/src/main/java-deprecated/org/apache/http/impl/client/DefaultHttpClient.java b/httpclient/src/main/java-deprecated/org/apache/http/impl/client/DefaultHttpClient.java index d5baf26..0ba86c8 100644 --- a/httpclient/src/main/java-deprecated/org/apache/http/impl/client/DefaultHttpClient.java +++ b/httpclient/src/main/java-deprecated/org/apache/http/impl/client/DefaultHttpClient.java @@ -117,6 +117,12 @@ import org.apache.http.util.VersionInfo; public class DefaultHttpClient extends AbstractHttpClient { /** + * UserAgentInfo cached + */ + private static String userAgentInfo = null; + private final static Object monitor = new Object():; + + /** * Creates a new HTTP client from parameters and a connection manager. * * @param params the parameters @@ -183,12 +189,18 @@ public class DefaultHttpClient extends AbstractHttpClient { HttpConnectionParams.setSocketBufferSize(params, 8192); // determine the release version from packaged version info - final VersionInfo vi = VersionInfo.loadVersionInfo - ("org.apache.http.client", DefaultHttpClient.class.getClassLoader()); - final String release = (vi != null) ? - vi.getRelease() : VersionInfo.UNAVAILABLE; - HttpProtocolParams.setUserAgent(params, - "Apache-HttpClient/" + release + " (java 1.5)"); + if (userAgentInfo == null) { + synchronized (monitor) { + if (userAgentInfo == null) { + VersionInfo vi = VersionInfo.loadVersionInfo + ("org.apache.http.client", DefaultHttpClient.class.getClassLoader()); + String release = (vi != null) ? + vi.getRelease() : VersionInfo.UNAVAILABLE; + userAgentInfo = "Apache-HttpClient/" + release + " (java 1.5)"; + } + } + } + HttpProtocolParams.setUserAgent(params, userAgentInfo); } /** diff --git a/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java b/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java index 81183e1..e235fe2 100644 --- a/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java +++ b/httpclient/src/main/java/org/apache/http/impl/client/HttpClientBuilder.java @@ -198,6 +198,12 @@ public class HttpClientBuilder { private List closeables; + /** + * UserAgentInfo cached + */ + private static String userAgentInfo = null; + private final static Object monitor = new Object(); + public static HttpClientBuilder create() { return new HttpClientBuilder(); } @@ -788,10 +794,18 @@ public class HttpClientBuilder { userAgent = System.getProperty("http.agent"); } if (userAgent == null) { - final VersionInfo vi = VersionInfo.loadVersionInfo("org.apache.http.client", - HttpClientBuilder.class.getClassLoader()); - final String release = vi != null ? vi.getRelease() : VersionInfo.UNAVAILABLE; - userAgent = "Apache-HttpClient/" + release + " (java 1.5)"; + if (userAgentInfo == null) { + synchronized (monitor) { + if (userAgentInfo == null) { + VersionInfo vi = VersionInfo.loadVersionInfo + ("org.apache.http.client", HttpClientBuilder.class.getClassLoader()); + String release = (vi != null) ? + vi.getRelease() : VersionInfo.UNAVAILABLE; + userAgentInfo = "Apache-HttpClient/" + release + " (java 1.5)"; + } + } + } + userAgent = userAgentInfo; } }