diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index ea2edf3141..5ef7802529 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -354,12 +354,20 @@ public class HttpHeaders implements MultiValueMap, Serializable } /** - * Returns the date and time at which the message is no longer valid, as specified by the {@code Expires} header. - *

The date is returned as the number of milliseconds since January 1, 1970 GMT. Returns -1 when the date is unknown. + * Returns the date and time at which the message is no longer valid, as specified by + * the {@code Expires} header. + *

The date is returned as the number of milliseconds since January 1, 1970 GMT. + * Returns -1 when the date is unknown. + * * @return the expires value */ public long getExpires() { - return getFirstDate(EXPIRES); + try { + return getFirstDate(EXPIRES); + } + catch (IllegalArgumentException ex) { + return -1; + } } /** diff --git a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java index 2b6ef1035f..caa6c1804c 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java @@ -210,6 +210,14 @@ public class HttpHeadersTests { assertEquals("Invalid Expires header", "Thu, 18 Dec 2008 10:20:00 GMT", headers.getFirst("expires")); } + // SPR-10648 (example is from INT-3063) + + @Test + public void expiresInvalidDate() { + headers.set("Expires", "-1"); + assertEquals(-1, headers.getExpires()); + } + @Test public void ifModifiedSince() { Calendar calendar = new GregorianCalendar(2008, 11, 18, 11, 20);