[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