Author: pete
Date: Fri Jul 1 21:23:17 2011
New Revision: 1142096
URL: http://svn.apache.org/viewvc?rev=1142096&view=rev
Log:
moved functionality for rfc 1123 timestamp strings into Time class (one single
method in one utility class is not that pretty)
Removed:
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/date/RFC1123DateFormatter.java
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/HttpHeaderCollection.java
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/time/Time.java
Modified:
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/HttpHeaderCollection.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/HttpHeaderCollection.java?rev=1142096&r1=1142095&r2=1142096&view=diff
==============================================================================
---
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/HttpHeaderCollection.java
(original)
+++
wicket/trunk/wicket-request/src/main/java/org/apache/wicket/request/HttpHeaderCollection.java
Fri Jul 1 21:23:17 2011
@@ -26,7 +26,6 @@ import java.util.Locale;
import java.util.Map;
import java.util.Set;
-import org.apache.wicket.util.date.RFC1123DateFormatter;
import org.apache.wicket.util.lang.Args;
import org.apache.wicket.util.time.Time;
@@ -161,7 +160,7 @@ public class HttpHeaderCollection
{
if (value instanceof Time)
{
- return RFC1123DateFormatter.formatDate((Time)value);
+ return ((Time)value).toRfc1123DateString();
}
else
{
Modified:
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/time/Time.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/time/Time.java?rev=1142096&r1=1142095&r2=1142096&view=diff
==============================================================================
---
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/time/Time.java
(original)
+++
wicket/trunk/wicket-util/src/main/java/org/apache/wicket/util/time/Time.java
Fri Jul 1 21:23:17 2011
@@ -20,7 +20,9 @@ import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.Locale;
+import java.util.TimeZone;
/**
* An immutable <code>Time</code> class that represents a specific point in
time. The underlying
@@ -47,6 +49,17 @@ public final class Time extends Abstract
private static final SimpleDateFormat dateTimeFormat = new
SimpleDateFormat("yyyy.MM.dd-h.mma",
Locale.ENGLISH);
+ /** required for rfc1123 date format */
+ private static final String[] DAYS =
+ {"Sat", "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
+
+ /** required for rfc1123 date format */
+ private static final String[] MONTHS =
+ {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec", "Jan"};
+
+ /** time zone for greenwich mean time */
+ public static final TimeZone GMT = TimeZone.getTimeZone("GMT");
+
/**
* Retrieves a <code>Time</code> instance based on the current time.
*
@@ -552,4 +565,63 @@ public final class Time extends Abstract
{
return toString(null, format);
}
+
+ /**
+ * return timestamp string in RFC1123 format
+ * <p/>
+ * Contrary to {@link java.text.SimpleDateFormat} this is thread-safe.
+ * <p/>
+ * taken from the source code of jetty 7.3.0, credits + thanks to Greg
Wilkins!
+ */
+ public String toRfc1123DateString()
+ {
+ final Calendar cal = GregorianCalendar.getInstance(GMT);
+ final StringBuilder buf = new StringBuilder(32);
+
+ cal.setTimeInMillis(getMilliseconds());
+
+ int day_of_week = cal.get(Calendar.DAY_OF_WEEK);
+ int day_of_month = cal.get(Calendar.DAY_OF_MONTH);
+ int month = cal.get(Calendar.MONTH);
+ int year = cal.get(Calendar.YEAR);
+ int century = year / 100;
+ year = year % 100;
+
+ int hours = cal.get(Calendar.HOUR_OF_DAY);
+ int minutes = cal.get(Calendar.MINUTE);
+ int seconds = cal.get(Calendar.SECOND);
+
+ buf.append(DAYS[day_of_week]);
+ buf.append(',');
+ buf.append(' ');
+ appendTwoDigits(buf, day_of_month);
+
+ buf.append(' ');
+ buf.append(MONTHS[month]);
+ buf.append(' ');
+ appendTwoDigits(buf, century);
+ appendTwoDigits(buf, year);
+
+ buf.append(' ');
+ appendTwoDigits(buf, hours);
+ buf.append(':');
+ appendTwoDigits(buf, minutes);
+ buf.append(':');
+ appendTwoDigits(buf, seconds);
+ buf.append(" GMT");
+
+ return buf.toString();
+ }
+
+ /**
+ * helper method for {@link #toRfc1123DateString()}
+ *
+ * @param str
+ * @param number
+ */
+ private static void appendTwoDigits(StringBuilder str, int number)
+ {
+ str.append((char)(number / 10 + '0'));
+ str.append((char)(number % 10 + '0'));
+ }
}