SLING-7797 make sure IllegalArgumentException is thrown when trying to parse an invalid date value
diff --git a/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java b/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java index d644a74..24f0b63 100644 --- a/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java +++ b/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java
@@ -22,6 +22,7 @@ import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; @@ -158,7 +159,12 @@ } private static synchronized Calendar parseDate(String dateString) { - return GregorianCalendar.from(ZonedDateTime.parse(dateString, RFC_1123_DATE_TIME)); + try { + return GregorianCalendar.from(ZonedDateTime.parse(dateString, RFC_1123_DATE_TIME)); + } + catch (DateTimeParseException ex) { + throw new IllegalArgumentException("Invalid date value: " + dateString, ex); + } } }
diff --git a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java index 36ba6a8..3f74230 100644 --- a/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java +++ b/src/test/java/org/apache/sling/servlethelpers/MockSlingHttpServletRequestTest.java
@@ -269,6 +269,13 @@ assertFalse(header2Values.hasMoreElements()); } + @Test(expected = IllegalArgumentException.class) + public void testInvalidDateHeader() { + request.addHeader("header1", "thisIsNotADate"); + // make sure IllegalArgumentException is thrown as defined by the HttpServletRequest API + request.getDateHeader("header1"); + } + @Test public void testCookies() { assertNull(request.getCookies());