You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by na...@apache.org on 2010/10/26 19:20:40 UTC
svn commit: r1027658 - in
/tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src:
main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
Author: nash
Date: Tue Oct 26 17:20:40 2010
New Revision: 1027658
URL: http://svn.apache.org/viewvc?rev=1027658&view=rev
Log:
Merge r1025776 TUSCANY-3742: Fix time comparison for If-Modified-Since and If-Unmodified-Since; also merge r1025533 Fix typos
Modified:
tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
Modified: tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java?rev=1027658&r1=1027657&r2=1027658&view=diff
==============================================================================
--- tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java (original)
+++ tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/main/java/org/apache/tuscany/sca/binding/atom/provider/AtomBindingListenerServlet.java Tue Oct 26 17:20:40 2010
@@ -278,7 +278,7 @@ class AtomBindingListenerServlet extends
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;
@@ -291,7 +291,7 @@ class AtomBindingListenerServlet extends
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;
@@ -910,5 +910,13 @@ class AtomBindingListenerServlet extends
}
}
-
+ /**
+ * 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);
+ }
+
}
Modified: tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java
URL: http://svn.apache.org/viewvc/tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java?rev=1027658&r1=1027657&r2=1027658&view=diff
==============================================================================
--- tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java (original)
+++ tuscany/sca-java-1.x/trunk/modules/binding-atom-abdera/src/test/java/org/apache/tuscany/sca/binding/atom/ProviderFeedEntityTagsTestCase.java Tue Oct 26 17:20:40 2010
@@ -176,8 +176,9 @@ public class ProviderFeedEntityTagsTestC
ClientResponse res = client.get(providerURI, opts);
Assert.assertNotNull(res);
try {
- // Should return 304 - Feed not provided since feed is modified since.
- Assert.assertEquals(304, res.getStatus());
+ // Should return 200 - Feed provided since feed is unmodified since.
+ Assert.assertEquals(200, res.getStatus());
+ Assert.assertEquals(ResponseType.SUCCESS, res.getType());
} finally {
res.release();
}
@@ -265,7 +266,7 @@ public class ProviderFeedEntityTagsTestC
Date thisLastModified = res.getLastModified();
Assert.assertNotNull( thisLastModified );
- // Should return 200 - value since feed is changed
+ // Should return 200 - value since feed matches eTag
Assert.assertEquals(200, res.getStatus());
Assert.assertEquals(ResponseType.SUCCESS, res.getType());
@@ -279,12 +280,12 @@ public class ProviderFeedEntityTagsTestC
@Test
public void testModifiedGetIfUnModified() throws Exception {
- System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfUnModified");
+ System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfUnModified");
// Feed request with predicates
RequestOptions opts = new RequestOptions();
final String contentType = "application/atom+xml";
opts.setContentType(contentType);
- opts.setHeader( "If-Unmodified-Since", dateFormat.format( new Date() ));
+ opts.setHeader( "If-Unmodified-Since", dateFormat.format( previousSecond(lastModified) ));
ClientResponse res = client.get(providerURI, opts);
Assert.assertNotNull(res);
@@ -298,12 +299,12 @@ public class ProviderFeedEntityTagsTestC
@Test
public void testModifiedGetIfModified() throws Exception {
- System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedUnmodifiedGetIfModified");
+ System.out.println(">>>ProviderFeedEntityTagsTestCase.testFeedModifiedGetIfModified");
// Feed request with predicates
RequestOptions opts = new RequestOptions();
final String contentType = "application/atom+xml";
opts.setContentType(contentType);
- opts.setHeader( "If-Modified-Since", dateFormat.format( lastModified ));
+ opts.setHeader( "If-Modified-Since", dateFormat.format( previousSecond(lastModified) ));
ClientResponse res = client.get(providerURI, opts);
Assert.assertNotNull(res);
@@ -372,4 +373,13 @@ public class ProviderFeedEntityTagsTestC
}
}
}
+
+ /**
+ * Subtract one second from a date
+ * @param date with millisecond precision
+ * @return date with one second subtracted
+ */
+ private Date previousSecond(Date date) {
+ return new Date(date.getTime() - 1000);
+ }
}