You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2013/04/04 10:57:37 UTC
svn commit: r1464366 [2/2] - in /httpcomponents/httpclient/trunk:
httpclient-cache/src/main/java/org/apache/http/client/cache/
httpclient-cache/src/main/java/org/apache/http/impl/client/cache/
httpclient-cache/src/test/java/org/apache/http/client/cache...
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java Thu Apr 4 08:57:36 2013
@@ -26,8 +26,6 @@
*/
package org.apache.http.impl.client.cache;
-import static org.apache.http.impl.cookie.DateUtils.formatDate;
-
import java.util.Date;
import java.util.Random;
@@ -36,6 +34,7 @@ import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.HttpVersion;
import org.apache.http.ProtocolVersion;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.message.BasicHttpRequest;
import org.apache.http.message.BasicHttpResponse;
import org.apache.http.message.BasicStatusLine;
@@ -66,7 +65,7 @@ public class TestResponseCachingPolicy {
request = new BasicHttpRequest("GET","/",HTTP_1_1);
response = new BasicHttpResponse(
new BasicStatusLine(HTTP_1_1, HttpStatus.SC_OK, ""));
- response.setHeader("Date", formatDate(new Date()));
+ response.setHeader("Date", DateUtils.formatDate(new Date()));
response.setHeader("Content-Length", "0");
}
@@ -172,7 +171,7 @@ public class TestResponseCachingPolicy {
public void testNon206WithExplicitExpiresIsCacheable() {
final int status = getRandomStatus();
response.setStatusCode(status);
- response.setHeader("Expires", formatDate(new Date()));
+ response.setHeader("Expires", DateUtils.formatDate(new Date()));
Assert.assertTrue(policy.isResponseCacheable("GET", response));
}
@@ -284,7 +283,7 @@ public class TestResponseCachingPolicy {
response = new BasicHttpResponse(
new BasicStatusLine(HTTP_1_1, HttpStatus.SC_OK, ""));
- response.setHeader("Date", formatDate(new Date()));
+ response.setHeader("Date", DateUtils.formatDate(new Date()));
response.addHeader("Cache-Control", "no-transform");
response.setHeader("Content-Length", "0");
@@ -340,8 +339,8 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesWithMultipleDateHeadersAreNotCacheable() {
- response.addHeader("Date", formatDate(now));
- response.addHeader("Date", formatDate(sixSecondsAgo));
+ response.addHeader("Date", DateUtils.formatDate(now));
+ response.addHeader("Date", DateUtils.formatDate(sixSecondsAgo));
Assert.assertFalse(policy.isResponseCacheable("GET", response));
}
@@ -355,8 +354,8 @@ public class TestResponseCachingPolicy {
public void testResponsesWithMultipleExpiresHeadersAreNotCacheable() {
final Date now = new Date();
final Date sixSecondsAgo = new Date(now.getTime() - 6 * 1000L);
- response.addHeader("Expires", formatDate(now));
- response.addHeader("Expires", formatDate(sixSecondsAgo));
+ response.addHeader("Expires", DateUtils.formatDate(now));
+ response.addHeader("Expires", DateUtils.formatDate(sixSecondsAgo));
Assert.assertFalse(policy.isResponseCacheable("GET", response));
}
@@ -394,8 +393,8 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToGETWithQueryParamsAndExplicitCachingAreCacheable() {
request = new BasicHttpRequest("GET", "/foo?s=bar");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@@ -403,8 +402,8 @@ public class TestResponseCachingPolicy {
public void testResponsesToGETWithQueryParamsAndExplicitCachingAreCacheableEvenWhen1_0QueryCachingDisabled() {
policy = new ResponseCachingPolicy(0, true, true);
request = new BasicHttpRequest("GET", "/foo?s=bar");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@@ -427,8 +426,8 @@ public class TestResponseCachingPolicy {
public void getsWithQueryParametersDirectlyFrom1_0OriginsAreCacheableWithExpires() {
request = new BasicHttpRequest("GET", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@@ -437,8 +436,8 @@ public class TestResponseCachingPolicy {
policy = new ResponseCachingPolicy(0, true, true);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@@ -454,8 +453,8 @@ public class TestResponseCachingPolicy {
request = new BasicHttpRequest("GET", "/foo?s=bar");
final Date now = new Date();
final Date tenSecondsFromNow = new Date(now.getTime() + 10 * 1000L);
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
response.setHeader("Via", "1.0 someproxy");
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@@ -466,8 +465,8 @@ public class TestResponseCachingPolicy {
request = new BasicHttpRequest("GET", "/foo?s=bar");
final Date now = new Date();
final Date tenSecondsFromNow = new Date(now.getTime() + 10 * 1000L);
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
response.setHeader("Via", "1.0 someproxy");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@@ -475,8 +474,8 @@ public class TestResponseCachingPolicy {
@Test
public void getsWithQueryParametersFrom1_0OriginsViaExplicitProxiesAreCacheableWithExpires() {
request = new BasicHttpRequest("GET", "/foo?s=bar");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
response.setHeader("Via", "HTTP/1.0 someproxy");
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@@ -485,8 +484,8 @@ public class TestResponseCachingPolicy {
public void getsWithQueryParametersFrom1_0OriginsViaExplicitProxiesCanNotBeCacheableEvenWithExpires() {
policy = new ResponseCachingPolicy(0, true, true);
request = new BasicHttpRequest("GET", "/foo?s=bar");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
response.setHeader("Via", "HTTP/1.0 someproxy");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@@ -495,24 +494,24 @@ public class TestResponseCachingPolicy {
public void getsWithQueryParametersFrom1_1OriginsVia1_0ProxiesAreCacheableWithExpires() {
request = new BasicHttpRequest("GET", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(tenSecondsFromNow));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
response.setHeader("Via", "1.1 someproxy");
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
@Test
public void notCacheableIfExpiresEqualsDateAndNoCacheControl() {
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(now));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(now));
response.removeHeaders("Cache-Control");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@Test
public void notCacheableIfExpiresPrecedesDateAndNoCacheControl() {
- response.setHeader("Date", formatDate(now));
- response.setHeader("Expires", formatDate(sixSecondsAgo));
+ response.setHeader("Date", DateUtils.formatDate(now));
+ response.setHeader("Expires", DateUtils.formatDate(sixSecondsAgo));
response.removeHeaders("Cache-Control");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@@ -520,7 +519,7 @@ public class TestResponseCachingPolicy {
@Test
public void otherStatusCodesAreCacheableWithExplicitCachingHeaders() {
response.setStatusCode(HttpStatus.SC_NOT_FOUND);
- response.setHeader("Date", formatDate(now));
+ response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Cache-Control","max-age=300");
Assert.assertTrue(policy.isResponseCacheable(request, response));
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java Thu Apr 4 08:57:36 2013
@@ -41,9 +41,9 @@ import org.apache.http.client.ClientProt
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpHead;
import org.apache.http.client.methods.HttpRequestWrapper;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.entity.ByteArrayEntity;
import org.apache.http.entity.InputStreamEntity;
-import org.apache.http.impl.cookie.DateUtils;
import org.apache.http.message.BasicHttpEntityEnclosingRequest;
import org.apache.http.message.BasicHttpResponse;
import org.junit.Before;
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestWarningValue.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestWarningValue.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestWarningValue.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestWarningValue.java Thu Apr 4 08:57:36 2013
@@ -29,7 +29,7 @@ package org.apache.http.impl.client.cach
import java.util.Date;
import org.apache.http.Header;
-import org.apache.http.impl.cookie.DateUtils;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.message.BasicHeader;
import org.junit.Assert;
import org.junit.Test;
Copied: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/DateUtils.java (from r1464365, httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/DateUtils.java?p2=httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/DateUtils.java&p1=httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java&r1=1464365&r2=1464366&rev=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/client/utils/DateUtils.java Thu Apr 4 08:57:36 2013
@@ -25,7 +25,7 @@
*
*/
-package org.apache.http.impl.cookie;
+package org.apache.http.client.utils;
import java.lang.ref.SoftReference;
import java.text.DateFormat;
@@ -92,12 +92,9 @@ public final class DateUtils {
*
* @param dateValue the date value to parse
*
- * @return the parsed date
- *
- * @throws DateParseException if the value could not be parsed using any of the
- * supported date formats
+ * @return the parsed date or null if input could not be parsed
*/
- public static Date parseDate(final String dateValue) throws DateParseException {
+ public static Date parseDate(final String dateValue) {
return parseDate(dateValue, null, null);
}
@@ -109,10 +106,9 @@ public final class DateUtils {
*
* @return the parsed date
*
- * @throws DateParseException if none of the dataFormats could parse the dateValue
+ * @return the parsed date or null if input could not be parsed
*/
- public static Date parseDate(final String dateValue, final String[] dateFormats)
- throws DateParseException {
+ public static Date parseDate(final String dateValue, final String[] dateFormats) {
return parseDate(dateValue, dateFormats, null);
}
@@ -126,15 +122,13 @@ public final class DateUtils {
* be <code>null</code>. When <code>null</code> is given as a parameter, year
* <code>2000</code> will be used.
*
- * @return the parsed date
- *
- * @throws DateParseException if none of the dataFormats could parse the dateValue
+ * @return the parsed date or null if input could not be parsed
*/
public static Date parseDate(
String dateValue,
String[] dateFormats,
Date startDate
- ) throws DateParseException {
+ ) {
Args.notNull(dateValue, "Date value");
if (dateFormats == null) {
dateFormats = DEFAULT_PATTERNS;
@@ -160,9 +154,7 @@ public final class DateUtils {
return result;
}
}
-
- // we were unable to parse the date
- throw new DateParseException("Unable to parse the date " + dateValue);
+ return null;
}
/**
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BasicExpiresHandler.java Thu Apr 4 08:57:36 2013
@@ -26,12 +26,14 @@
*/
package org.apache.http.impl.cookie;
+import java.util.Date;
+
import org.apache.http.annotation.Immutable;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.MalformedCookieException;
import org.apache.http.cookie.SetCookie;
import org.apache.http.util.Args;
-
/**
*
* @since 4.0
@@ -53,12 +55,12 @@ public class BasicExpiresHandler extends
if (value == null) {
throw new MalformedCookieException("Missing value for expires attribute");
}
- try {
- cookie.setExpiryDate(DateUtils.parseDate(value, this.datepatterns));
- } catch (final DateParseException dpe) {
+ final Date expiry = DateUtils.parseDate(value, this.datepatterns);
+ if (expiry == null) {
throw new MalformedCookieException("Unable to parse expires attribute: "
- + value);
+ + value);
}
+ cookie.setExpiryDate(expiry);
}
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/BrowserCompatSpec.java Thu Apr 4 08:57:36 2013
@@ -34,6 +34,7 @@ import org.apache.http.FormattedHeader;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
@@ -46,6 +47,7 @@ import org.apache.http.message.ParserCur
import org.apache.http.util.Args;
import org.apache.http.util.CharArrayBuffer;
+
/**
* Cookie specification that strives to closely mimic (mis)behavior of
* common web browser applications such as Microsoft Internet Explorer
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/DateUtils.java Thu Apr 4 08:57:36 2013
@@ -27,19 +27,11 @@
package org.apache.http.impl.cookie;
-import java.lang.ref.SoftReference;
-import java.text.DateFormat;
-import java.text.ParsePosition;
import java.text.SimpleDateFormat;
-import java.util.Calendar;
import java.util.Date;
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
import java.util.TimeZone;
import org.apache.http.annotation.Immutable;
-import org.apache.http.util.Args;
/**
* A utility class for parsing and formatting HTTP dates as used in cookies and
@@ -48,44 +40,31 @@ import org.apache.http.util.Args;
*
*
* @since 4.0
+ *
+ * @deprecated (4.3) Use {@link org.apache.http.client.utils.DateUtils}.
*/
+@Deprecated
@Immutable
public final class DateUtils {
/**
* Date format pattern used to parse HTTP date headers in RFC 1123 format.
*/
- public static final String PATTERN_RFC1123 = "EEE, dd MMM yyyy HH:mm:ss zzz";
+ public static final String PATTERN_RFC1123 = org.apache.http.client.utils.DateUtils.PATTERN_RFC1123;
/**
* Date format pattern used to parse HTTP date headers in RFC 1036 format.
*/
- public static final String PATTERN_RFC1036 = "EEE, dd-MMM-yy HH:mm:ss zzz";
+ public static final String PATTERN_RFC1036 = org.apache.http.client.utils.DateUtils.PATTERN_RFC1036;
/**
* Date format pattern used to parse HTTP date headers in ANSI C
* <code>asctime()</code> format.
*/
- public static final String PATTERN_ASCTIME = "EEE MMM d HH:mm:ss yyyy";
-
- private static final String[] DEFAULT_PATTERNS = new String[] {
- PATTERN_RFC1123,
- PATTERN_RFC1036,
- PATTERN_ASCTIME
- };
-
- private static final Date DEFAULT_TWO_DIGIT_YEAR_START;
+ public static final String PATTERN_ASCTIME = org.apache.http.client.utils.DateUtils.PATTERN_ASCTIME;
public static final TimeZone GMT = TimeZone.getTimeZone("GMT");
- static {
- final Calendar calendar = Calendar.getInstance();
- calendar.setTimeZone(GMT);
- calendar.set(2000, Calendar.JANUARY, 1, 0, 0, 0);
- calendar.set(Calendar.MILLISECOND, 0);
- DEFAULT_TWO_DIGIT_YEAR_START = calendar.getTime();
- }
-
/**
* Parses a date value. The formats used for parsing the date value are retrieved from
* the default http params.
@@ -131,38 +110,15 @@ public final class DateUtils {
* @throws DateParseException if none of the dataFormats could parse the dateValue
*/
public static Date parseDate(
- String dateValue,
- String[] dateFormats,
- Date startDate
+ final String dateValue,
+ final String[] dateFormats,
+ final Date startDate
) throws DateParseException {
- Args.notNull(dateValue, "Date value");
- if (dateFormats == null) {
- dateFormats = DEFAULT_PATTERNS;
- }
- if (startDate == null) {
- startDate = DEFAULT_TWO_DIGIT_YEAR_START;
+ final Date d = org.apache.http.client.utils.DateUtils.parseDate(dateValue, dateFormats, startDate);
+ if (d == null) {
+ throw new DateParseException("Unable to parse the date " + dateValue);
}
- // trim single quotes around date if present
- // see issue #5279
- if (dateValue.length() > 1
- && dateValue.startsWith("'")
- && dateValue.endsWith("'")
- ) {
- dateValue = dateValue.substring (1, dateValue.length() - 1);
- }
-
- for (final String dateFormat : dateFormats) {
- final SimpleDateFormat dateParser = DateFormatHolder.formatFor(dateFormat);
- dateParser.set2DigitYearStart(startDate);
- final ParsePosition pos = new ParsePosition(0);
- final Date result = dateParser.parse(dateValue, pos);
- if (pos.getIndex() != 0) {
- return result;
- }
- }
-
- // we were unable to parse the date
- throw new DateParseException("Unable to parse the date " + dateValue);
+ return d;
}
/**
@@ -174,7 +130,7 @@ public final class DateUtils {
* @see #PATTERN_RFC1123
*/
public static String formatDate(final Date date) {
- return formatDate(date, PATTERN_RFC1123);
+ return org.apache.http.client.utils.DateUtils.formatDate(date);
}
/**
@@ -191,79 +147,11 @@ public final class DateUtils {
* @see SimpleDateFormat
*/
public static String formatDate(final Date date, final String pattern) {
- Args.notNull(date, "Date");
- Args.notNull(pattern, "Pattern");
- final SimpleDateFormat formatter = DateFormatHolder.formatFor(pattern);
- return formatter.format(date);
- }
-
- /**
- * Clears thread-local variable containing {@link DateFormat} cache.
- *
- * @since 4.3
- */
- public static void clearThreadLocal() {
- DateFormatHolder.clearThreadLocal();
+ return org.apache.http.client.utils.DateUtils.formatDate(date, pattern);
}
/** This class should not be instantiated. */
private DateUtils() {
}
- /**
- * A factory for {@link SimpleDateFormat}s. The instances are stored in a
- * threadlocal way because SimpleDateFormat is not threadsafe as noted in
- * {@link SimpleDateFormat its javadoc}.
- *
- */
- final static class DateFormatHolder {
-
- private static final ThreadLocal<SoftReference<Map<String, SimpleDateFormat>>>
- THREADLOCAL_FORMATS = new ThreadLocal<SoftReference<Map<String, SimpleDateFormat>>>() {
-
- @Override
- protected SoftReference<Map<String, SimpleDateFormat>> initialValue() {
- return new SoftReference<Map<String, SimpleDateFormat>>(
- new HashMap<String, SimpleDateFormat>());
- }
-
- };
-
- /**
- * creates a {@link SimpleDateFormat} for the requested format string.
- *
- * @param pattern
- * a non-<code>null</code> format String according to
- * {@link SimpleDateFormat}. The format is not checked against
- * <code>null</code> since all paths go through
- * {@link DateUtils}.
- * @return the requested format. This simple dateformat should not be used
- * to {@link SimpleDateFormat#applyPattern(String) apply} to a
- * different pattern.
- */
- public static SimpleDateFormat formatFor(final String pattern) {
- final SoftReference<Map<String, SimpleDateFormat>> ref = THREADLOCAL_FORMATS.get();
- Map<String, SimpleDateFormat> formats = ref.get();
- if (formats == null) {
- formats = new HashMap<String, SimpleDateFormat>();
- THREADLOCAL_FORMATS.set(
- new SoftReference<Map<String, SimpleDateFormat>>(formats));
- }
-
- SimpleDateFormat format = formats.get(pattern);
- if (format == null) {
- format = new SimpleDateFormat(pattern, Locale.US);
- format.setTimeZone(TimeZone.getTimeZone("GMT"));
- formats.put(pattern, format);
- }
-
- return format;
- }
-
- public static void clearThreadLocal() {
- THREADLOCAL_FORMATS.remove();
- }
-
- }
-
}
Modified: httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2109Spec.java Thu Apr 4 08:57:36 2013
@@ -34,6 +34,7 @@ import java.util.List;
import org.apache.http.Header;
import org.apache.http.HeaderElement;
import org.apache.http.annotation.NotThreadSafe;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
Copied: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java (from r1464365, httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestDateUtils.java)
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java?p2=httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java&p1=httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestDateUtils.java&r1=1464365&r2=1464366&rev=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestDateUtils.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java Thu Apr 4 08:57:36 2013
@@ -25,11 +25,12 @@
*
*/
-package org.apache.http.impl.cookie;
+package org.apache.http.client.utils;
import java.util.Calendar;
import java.util.Date;
+import org.apache.http.impl.cookie.DateParseException;
import org.junit.Assert;
import org.junit.Test;
@@ -58,6 +59,11 @@ public class TestDateUtils {
}
@Test
+ public void testMalformedDate() {
+ Assert.assertNull(DateUtils.parseDate("Fri, 14 Oct 2005 00:00:00 GMT", new String[] {}, null));
+ }
+
+ @Test
public void testInvalidInput() throws Exception {
try {
DateUtils.parseDate(null, null, null);
@@ -66,12 +72,6 @@ public class TestDateUtils {
// expected
}
try {
- DateUtils.parseDate("Fri, 14 Oct 2005 00:00:00 GMT", new String[] {}, null);
- Assert.fail("DateParseException should habe been thrown");
- } catch (final DateParseException ex) {
- // expected
- }
- try {
DateUtils.formatDate(null);
Assert.fail("IllegalArgumentException should habe been thrown");
} catch (final IllegalArgumentException ex) {
Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java
------------------------------------------------------------------------------
svn:keywords = Date Revision
Propchange: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/client/utils/TestDateUtils.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBasicCookieAttribHandlers.java Thu Apr 4 08:57:36 2013
@@ -33,6 +33,7 @@ import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.CookieAttributeHandler;
import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.MalformedCookieException;
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestBrowserCompatSpec.java Thu Apr 4 08:57:36 2013
@@ -32,6 +32,7 @@ import java.util.Date;
import java.util.List;
import org.apache.http.Header;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;
Modified: httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java?rev=1464366&r1=1464365&r2=1464366&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient/src/test/java/org/apache/http/impl/cookie/TestCookieRFC2109Spec.java Thu Apr 4 08:57:36 2013
@@ -31,6 +31,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.http.Header;
+import org.apache.http.client.utils.DateUtils;
import org.apache.http.cookie.ClientCookie;
import org.apache.http.cookie.Cookie;
import org.apache.http.cookie.CookieOrigin;