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'));
+       }
 }


Reply via email to