[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wink-commits
Subject:    svn commit: r1177159 - in /incubator/wink/trunk/wink-common/src:
From:       rfeng () apache ! org
Date:       2011-09-29 4:29:11
Message-ID: 20110929042911.454BF23888FE () eris ! apache ! org
[Download RAW message or body]

Author: rfeng
Date: Thu Sep 29 04:29:10 2011
New Revision: 1177159

URL: http://svn.apache.org/viewvc?rev=1177159&view=rev
Log:
Enhance the Date conversion for headers/parameters

Modified:
    incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ValueConvertor.java
  incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/utils/HttpDateParser.java
  incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/providers/header/DateHeaderDelegateTest.java


Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ValueConvertor.java
                
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/a \
pache/wink/common/internal/registry/ValueConvertor.java?rev=1177159&r1=1177158&r2=1177159&view=diff
 ==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ValueConvertor.java \
                (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/registry/ValueConvertor.java \
Thu Sep 29 04:29:10 2011 @@ -25,6 +25,7 @@ import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
+import java.sql.Date;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,6 +40,7 @@ import javax.ws.rs.core.PathSegment;
 
 import org.apache.wink.common.internal.i18n.Messages;
 import org.apache.wink.common.internal.utils.GenericsUtils;
+import org.apache.wink.common.internal.utils.HttpDateParser;
 import org.apache.wink.common.internal.utils.UriHelper;
 
 /**
@@ -257,6 +259,10 @@ public abstract class ValueConvertor {
             if (value == null) {
                 return null;
             }
+            if (constructor.getDeclaringClass() == Date.class) {
+                // The constructor of Date doesn't handle the HTTP date formats
+                return HttpDateParser.parseHttpDate(value);
+            }
             try {
                 return constructor.newInstance(value);
             } catch (IllegalArgumentException e) {

Modified: incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/utils/HttpDateParser.java
                
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/main/java/org/a \
pache/wink/common/internal/utils/HttpDateParser.java?rev=1177159&r1=1177158&r2=1177159&view=diff
 ==============================================================================
--- incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/utils/HttpDateParser.java \
                (original)
+++ incubator/wink/trunk/wink-common/src/main/java/org/apache/wink/common/internal/utils/HttpDateParser.java \
Thu Sep 29 04:29:10 2011 @@ -48,6 +48,13 @@ public final class HttpDateParser {
      * @throws IllegalArgumentException if parsing fails
      */
     public static Date parseHttpDate(String date) {
+        
+        // http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html
+        // Some IE browsers send If-Modified-Since header with a length extension \
such as: Thu, 01 Sep 2011 00:48:38 GMT; length=347987 +        int index = \
date.indexOf(';'); +        if (index != -1) {
+            date = date.substring(0, index).trim();
+        }
 
         int indexOfComma = date.indexOf(',');
         try {

Modified: incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/providers/header/DateHeaderDelegateTest.java
                
URL: http://svn.apache.org/viewvc/incubator/wink/trunk/wink-common/src/test/java/org/a \
pache/wink/common/internal/providers/header/DateHeaderDelegateTest.java?rev=1177159&r1=1177158&r2=1177159&view=diff
 ==============================================================================
--- incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/providers/header/DateHeaderDelegateTest.java \
                (original)
+++ incubator/wink/trunk/wink-common/src/test/java/org/apache/wink/common/internal/providers/header/DateHeaderDelegateTest.java \
Thu Sep 29 04:29:10 2011 @@ -44,13 +44,13 @@ public class DateHeaderDelegateTest {
      * The date example for format pattern for RFC 1036 - <EEEE, dd-MMM-yy
      * HH:mm:ss zzz>
      */
-    private static final String RFC1036_DATE                = "Sunday, 06-Nov-94 \
08:49:37 GMT"; +    private static final String RFC1036_DATE                = \
"Sunday, 06-Nov-94 08:49:37 GMT; length=347987";  
     /**
      * The date example for format pattern for ANSI C asctime() - <EEE MMM d
      * HH:mm:ss yyyy>
      */
-    private static final String ANSI_C_ASCTIME_DATE         = "Sun Nov 6 08:49:37 \
1994"; +    private static final String ANSI_C_ASCTIME_DATE         = "Sun Nov 6 \
08:49:37 1994; length=347987";  
     @Test
     public void testParseHeaderDelegate() throws ParseException {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic