From 958f042702b2b8fa766b6117da4212e4bfb58edd Mon Sep 17 00:00:00 2001 From: nash Date: Tue, 26 Oct 2010 19:03:33 +0000 Subject: TUSCANY-3742: Fix time comparison for If-Modified-Since and If-Unmodified-Since (merged 1.x commit r1027658) git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1027684 13f79535-47bb-0310-9956-ffa450edef68 --- .../binding/atom/provider/AtomBindingListenerServlet.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org') diff --git a/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java b/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java index 20fb9309d5..f2ad84bfd5 100644 --- a/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java +++ b/sca-java-2.x/trunk/modules/binding-atom-runtime/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java @@ -279,7 +279,7 @@ class AtomBindingListenerServlet extends HttpServlet { if ( predicate != null ) { try { Date predicateDate = dateFormat.parse( predicate ); - if ( predicateDate.compareTo( feedUpdated ) < 0 ) { + if ( predicateDate.compareTo( exactSeconds(feedUpdated) ) < 0 ) { // Match, should short circuit response.sendError(HttpServletResponse.SC_NOT_MODIFIED); return; @@ -292,7 +292,7 @@ class AtomBindingListenerServlet extends HttpServlet { if ( predicate != null ) { try { Date predicateDate = dateFormat.parse( predicate ); - if ( predicateDate.compareTo( feedUpdated ) > 0 ) { + if ( predicateDate.compareTo( exactSeconds(feedUpdated) ) >= 0 ) { // Match, should short circuit response.sendError(HttpServletResponse.SC_NOT_MODIFIED); return; @@ -891,5 +891,13 @@ class AtomBindingListenerServlet extends HttpServlet { } } - + /** + * Round a date down to an exact number of seconds + * @param date with millisecond precision + * @return date rounded down to nearest second + */ + private Date exactSeconds(Date date) { + return new Date(date.getTime() / 1000 * 1000); + } + } -- cgit v1.2.3