01: // Copyright © 2004-2005 ASERT. Released under the Canoo Webtest license.
02: package com.canoo.webtest.boundary;
03:
04: import org.apache.commons.httpclient.Cookie;
05: import org.apache.commons.httpclient.HttpState;
06: import org.apache.commons.httpclient.cookie.CookiePolicy;
07: import org.apache.log4j.Logger;
08:
09: import java.net.URL;
10:
11: /**
12: * Helper class for interacting with HttpClient.
13: *
14: * @author Paul King
15: */
16: public final class HttpClientBoundary {
17: private HttpClientBoundary() {
18: }
19:
20: private static final Logger LOG = Logger
21: .getLogger(HttpClientBoundary.class);
22: private static final Cookie[] EMPTY_COOKIE_JAR = new Cookie[0];
23:
24: /**
25: * Retrieve cookie array from HttpClient state.
26: *
27: * Wraps a HttpClient BUG.
28: *
29: * @param stateForUrl
30: * @param url
31: * @return the retrieved cookies (or an empty cookie array if no state found)
32: */
33: public static Cookie[] getCookiesFromState(
34: final HttpState stateForUrl, final URL url) {
35: if (null == stateForUrl) {
36: LOG.error("BUG in httpclient: Null state for "
37: + url.toExternalForm());
38: return EMPTY_COOKIE_JAR;
39: }
40:
41: final boolean secure = "https".equals(url.getProtocol());
42: final int port;
43: if (url.getPort() != -1) {
44: port = url.getPort();
45: } else {
46: port = url.getDefaultPort();
47: }
48:
49: return CookiePolicy.getDefaultSpec().match(url.getHost(), port,
50: url.getPath(), secure, stateForUrl.getCookies());
51:
52: }
53:
54: }
|