Changed Cookie#isExpired() to take current system time as an argument instead of obtaining it through System#currentTimeMillis()
Suggested by Roland Weber git-svn-id: https://svn.apache.org/repos/asf/jakarta/httpcomponents/httpclient/trunk@531455 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
4fc15c9a55
commit
62b67ba1ac
|
@ -31,6 +31,7 @@
|
||||||
package org.apache.http.client;
|
package org.apache.http.client;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
@ -109,7 +110,7 @@ public class HttpState {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!cookie.isExpired()) {
|
if (!cookie.isExpired(new Date())) {
|
||||||
cookies.add(cookie);
|
cookies.add(cookie);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,9 +156,10 @@ public class HttpState {
|
||||||
*/
|
*/
|
||||||
public synchronized boolean purgeExpiredCookies() {
|
public synchronized boolean purgeExpiredCookies() {
|
||||||
boolean removed = false;
|
boolean removed = false;
|
||||||
|
Date now = new Date();
|
||||||
Iterator it = cookies.iterator();
|
Iterator it = cookies.iterator();
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
if (((Cookie) (it.next())).isExpired()) {
|
if (((Cookie) (it.next())).isExpired(now)) {
|
||||||
it.remove();
|
it.remove();
|
||||||
removed = true;
|
removed = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,12 +256,16 @@ public class Cookie {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns true if this cookie has expired.
|
* Returns true if this cookie has expired.
|
||||||
|
* @param date Current time
|
||||||
*
|
*
|
||||||
* @return <tt>true</tt> if the cookie has expired.
|
* @return <tt>true</tt> if the cookie has expired.
|
||||||
*/
|
*/
|
||||||
public boolean isExpired() {
|
public boolean isExpired(final Date date) {
|
||||||
|
if (date == null) {
|
||||||
|
throw new IllegalArgumentException("Date may not be null");
|
||||||
|
}
|
||||||
return (cookieExpiryDate != null
|
return (cookieExpiryDate != null
|
||||||
&& cookieExpiryDate.getTime() <= System.currentTimeMillis());
|
&& cookieExpiryDate.getTime() <= date.getTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -31,7 +31,6 @@
|
||||||
package org.apache.http.impl.cookie;
|
package org.apache.http.impl.cookie;
|
||||||
|
|
||||||
import org.apache.http.cookie.Cookie;
|
import org.apache.http.cookie.Cookie;
|
||||||
import org.apache.http.cookie.CookieOrigin;
|
|
||||||
import org.apache.http.cookie.MalformedCookieException;
|
import org.apache.http.cookie.MalformedCookieException;
|
||||||
import org.apache.http.util.DateParseException;
|
import org.apache.http.util.DateParseException;
|
||||||
import org.apache.http.util.DateUtils;
|
import org.apache.http.util.DateUtils;
|
||||||
|
@ -64,11 +63,4 @@ public class BasicExpiresHandler extends AbstractCookieAttributeHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean match(final Cookie cookie, final CookieOrigin origin) {
|
|
||||||
if (cookie == null) {
|
|
||||||
throw new IllegalArgumentException("Cookie may not be null");
|
|
||||||
}
|
|
||||||
return !cookie.isExpired();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -447,20 +447,6 @@ public class TestBasicCookieAttribHandlers extends TestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testBasicExpiresMatch() throws Exception {
|
|
||||||
Cookie cookie = new Cookie("name", "value");
|
|
||||||
CookieAttributeHandler h = new BasicExpiresHandler(new String[] {DateUtils.PATTERN_RFC1123});
|
|
||||||
CookieOrigin origin = new CookieOrigin("somehost", 80, "/stuff", false);
|
|
||||||
|
|
||||||
Date past = new Date(System.currentTimeMillis() - 20000000);
|
|
||||||
Date future = new Date(System.currentTimeMillis() + 20000000);
|
|
||||||
|
|
||||||
cookie.setExpiryDate(past);
|
|
||||||
assertFalse(h.match(cookie, origin));
|
|
||||||
cookie.setExpiryDate(future);
|
|
||||||
assertTrue(h.match(cookie, origin));
|
|
||||||
}
|
|
||||||
|
|
||||||
public void testBasicExpiresInvalidInput() throws Exception {
|
public void testBasicExpiresInvalidInput() throws Exception {
|
||||||
try {
|
try {
|
||||||
new BasicExpiresHandler(null);
|
new BasicExpiresHandler(null);
|
||||||
|
@ -475,12 +461,6 @@ public class TestBasicCookieAttribHandlers extends TestCase {
|
||||||
} catch (IllegalArgumentException ex) {
|
} catch (IllegalArgumentException ex) {
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
h.match(null, null);
|
|
||||||
fail("IllegalArgumentException must have been thrown");
|
|
||||||
} catch (IllegalArgumentException ex) {
|
|
||||||
// expected
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue