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;