SLING-7797 - removed SimpleDateFormatter
Updated POM to Java8 to leverage java.time package.
diff --git a/pom.xml b/pom.xml
index a17f332..3e3dedb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -97,4 +97,7 @@
</dependencies>
+ <properties>
+ <sling.java.version>8</sling.java.version>
+ </properties>
</project>
diff --git a/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java b/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java
index 1c12e89..d644a74 100644
--- a/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java
+++ b/src/main/java/org/apache/sling/servlethelpers/HeaderSupport.java
@@ -18,18 +18,19 @@
*/
package org.apache.sling.servlethelpers;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import java.time.Instant;
+import java.time.ZoneOffset;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
+import java.util.Date;
import java.util.Enumeration;
+import java.util.GregorianCalendar;
import java.util.HashSet;
import java.util.List;
-import java.util.Locale;
import java.util.Set;
-import java.util.TimeZone;
import java.util.Vector;
import org.apache.commons.lang3.StringUtils;
@@ -40,12 +41,7 @@
*/
class HeaderSupport {
- private static final String RFC_1123_DATE_PATTERN = "EEE, dd MMM yyyy HH:mm:ss z";
- private static final DateFormat RFC1123_DATE_FORMAT = new SimpleDateFormat(RFC_1123_DATE_PATTERN, Locale.US);
- private static final TimeZone TIMEZONE_GMT = TimeZone.getTimeZone("GMT");
- static {
- RFC1123_DATE_FORMAT.setTimeZone(TIMEZONE_GMT);
- }
+ private static final DateTimeFormatter RFC_1123_DATE_TIME = DateTimeFormatter.RFC_1123_DATE_TIME;
private List<HeaderValue> headers = new ArrayList<HeaderValue>();
@@ -78,9 +74,11 @@
}
public void addDateHeader(String name, long date) {
- Calendar calendar = Calendar.getInstance(TIMEZONE_GMT, Locale.US);
- calendar.setTimeInMillis(date);
- headers.add(new HeaderValue(name, formatDate(calendar)));
+ addDateHeader(name, new Date(date).toInstant());
+ }
+
+ public void addDateHeader(String name, Instant date) {
+ headers.add(new HeaderValue(name, date.atOffset(ZoneOffset.UTC).format(RFC_1123_DATE_TIME)));
}
public void setHeader(String name, String value) {
@@ -129,11 +127,7 @@
if (StringUtils.isEmpty(value)) {
return 0L;
} else {
- try {
- return parseDate(value).getTimeInMillis();
- } catch (ParseException ex) {
- return 0L;
- }
+ return parseDate(value).getTimeInMillis();
}
}
@@ -163,13 +157,8 @@
return new Vector<String>(collection).elements();
}
- private static synchronized String formatDate(Calendar date) {
- return RFC1123_DATE_FORMAT.format(date.getTime());
- }
-
- private static synchronized Calendar parseDate(String dateString) throws ParseException {
- RFC1123_DATE_FORMAT.parse(dateString);
- return RFC1123_DATE_FORMAT.getCalendar();
+ private static synchronized Calendar parseDate(String dateString) {
+ return GregorianCalendar.from(ZonedDateTime.parse(dateString, RFC_1123_DATE_TIME));
}
}