You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by vm...@apache.org on 2012/06/25 03:18:46 UTC

svn commit: r1353376 - in /subversion/branches/javahl-ra/subversion/bindings/javahl: native/ src/org/apache/subversion/javahl/ra/

Author: vmpn
Date: Mon Jun 25 01:18:45 2012
New Revision: 1353376

URL: http://svn.apache.org/viewvc?rev=1353376&view=rev
Log:
On the javahl-ra branch:

Pass timestamp (nano seconds) rather than date (milli seconds) to avoid
precison loss (issue #2359)

[ in subversion/bindings/javahl/native ]

* org_apache_subversion_javahl_ra_SVNRa.cpp
  (Java_org_apache_subversion_javahl_ra_SVNRa_getDatedRevision): Switch from
    Date to long as means of passing the timestamp

* SVNRa.h,
  SVNRa.cpp
  (getDatedRev): Switch from Date to long as means of passing the timestamp

[ in subversion/bindings/javahl/src/org/apache/subversion/javahl/ra ]

* ISVNRa.java,
  SVNRa.java
  (getDatedRevision): Switch from Date to long as means of passing the
   timestamp and provide backwards compatible function accepting Date
   as the parameter

Modified:
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_ra_SVNRa.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/ISVNRa.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/SVNRa.java

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp?rev=1353376&r1=1353375&r2=1353376&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp Mon Jun 25 01:18:45 2012
@@ -97,14 +97,12 @@ SVNRa::dispose(jobject jthis)
 }
 
 svn_revnum_t
-SVNRa::getDatedRev(jobject jdate)
+SVNRa::getDatedRev(jlong timestamp)
 {
   SVN::Pool requestPool;
   svn_revnum_t rev;
 
-  apr_time_t tm = JNIUtil::getDate(jdate);
-  if (JNIUtil::isExceptionThrown())
-    return SVN_INVALID_REVNUM;
+  apr_time_t tm = timestamp;
 
   SVN_JNI_ERR(svn_ra_get_dated_revision(m_session, &rev, tm,
                                         requestPool.getPool()),

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h?rev=1353376&r1=1353375&r2=1353376&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h Mon Jun 25 01:18:45 2012
@@ -25,7 +25,7 @@ class SVNRa: public SVNBase
 
     jlong getLatestRevision();
 
-    svn_revnum_t getDatedRev(jobject date);
+    svn_revnum_t getDatedRev(jlong timestamp);
     jobject getLocks(jstring jpath, jobject jdepth);
     jobject checkPath(jstring jpath, jobject jrevision);
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_ra_SVNRa.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_ra_SVNRa.cpp?rev=1353376&r1=1353375&r2=1353376&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_ra_SVNRa.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_ra_SVNRa.cpp Mon Jun 25 01:18:45 2012
@@ -40,13 +40,13 @@ Java_org_apache_subversion_javahl_ra_SVN
 
 JNIEXPORT jlong JNICALL
 Java_org_apache_subversion_javahl_ra_SVNRa_getDatedRevision
-(JNIEnv *env, jobject jthis, jobject jdate)
+(JNIEnv *env, jobject jthis, jlong timestamp)
 {
   JNIEntry(SVNRa, getDatedRevision);
   SVNRa *ras = SVNRa::getCppObject(jthis);
   CPPADDR_NULL_PTR(ras, SVN_INVALID_REVNUM);
 
-  return ras->getDatedRev(jdate);
+  return ras->getDatedRev(timestamp);
 }
 
 JNIEXPORT jobject JNICALL

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/ISVNRa.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/ISVNRa.java?rev=1353376&r1=1353375&r2=1353376&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/ISVNRa.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/ISVNRa.java Mon Jun 25 01:18:45 2012
@@ -54,6 +54,12 @@ public interface ISVNRa
      * @return The latest revision at date
      */
     public long getDatedRevision(Date date) throws SubversionException;
+    
+    /**
+     * @param timestamp (in nano seconds) used as a cutoff time 
+     * @return the latest revision at that moment
+     */
+    public long getDatedRevision(long timestamp) throws SubversionException;
 
     public Map<String, Lock> getLocks(String path, Depth depth)
             throws SubversionException;

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/SVNRa.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/SVNRa.java?rev=1353376&r1=1353375&r2=1353376&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/SVNRa.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ra/SVNRa.java Mon Jun 25 01:18:45 2012
@@ -23,6 +23,9 @@
 
 package org.apache.subversion.javahl.ra;
 
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.NANOSECONDS;
+
 import java.util.Date;
 import java.util.Map;
 
@@ -38,7 +41,13 @@ public class SVNRa extends JNIObject imp
     @Override
     public native long getLatestRevision();
 
-    public native long getDatedRevision(Date date) throws SubversionException;
+    public native long getDatedRevision(long timestamp) throws SubversionException;
+
+    public long getDatedRevision(Date date) throws SubversionException
+    {
+        long timestamp = NANOSECONDS.convert(date.getTime(), MILLISECONDS);
+        return getDatedRevision(timestamp);
+    }
 
     public native Map<String, Lock> getLocks(String path, Depth depth)
             throws SubversionException;