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/22 03:38:51 UTC

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

Author: vmpn
Date: Fri Jun 22 01:38:50 2012
New Revision: 1352737

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

JavaHL: Merge two SVN RA session implementations into one

[ in subversion/bindings/javahl/native ]

* org_apache_subversion_javahl_SVNReposAccess.cpp
  (Java_org_apache_subversion_javahl_SVNReposAccess_ctNative,
   Java_org_apache_subversion_javahl_SVNReposAccess_dispose
   Java_org_apache_subversion_javahl_SVNReposAccess_finalize
   Java_org_apache_subversion_javahl_SVNReposAccess_getDatedRevision
   Java_org_apache_subversion_javahl_SVNReposAccess_getLocks
   Java_org_apache_subversion_javahl_SVNReposAccess_checkPath):
    Functionality merged into org_apache_subversion_javahl_ra_SVNRa

* org_apache_subversion_javahl_ra_SVNRa.cpp
 (Java_org_apache_subversion_javahl_ra_SVNRa_getDatedRevision,
  Java_org_apache_subversion_javahl_ra_SVNRa_getLocks,
  Java_org_apache_subversion_javahl_ra_SVNRa_checkPath): Functionality merged
   from org_apache_subversion_javahl_SVNReposAccess.cpp

* SVNReposAccess.h,
  SVNReposAccess.cpp,
  SVNRa.h,
  SVNRa.cpp
  (getDatedRev, getLocks, checkPath): Functionality merged from
    SVNReposAccess into SVNRa class

[ in subversion/bindings/javahl/src/org/tigris/subversion/javahl ]

* ISVNReposAccess.java,
  SVNReposAccess.java
  (getDatedRevision, getLocks, checkPath) Functionality
    merged from SVNReposAccess into SVNRa

[ in subversion/bindings/javahl/src/org/tigris/subversion/javahl/ra ]
   
* SVNRa.java,
  ISVNRa.java
  (getDatedRevision, getLocks, checkPath) Functionality
    merged into SVNRa from SVNReposAccess

[ in subversion/bindings/javahl/tests/org/tigris/subversion/javahl ]

* SVNRATests.java
  (testDatedRev, testGetLocks, testCheckPath): Migrate test to use ISVNRa
    interface

Removed:
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNReposAccess.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNReposAccess.h
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNReposAccess.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNReposAccess.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNReposAccess.java
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
    subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRATests.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=1352737&r1=1352736&r2=1352737&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.cpp Fri Jun 22 01:38:50 2012
@@ -3,6 +3,8 @@
 
 #include "svn_ra.h"
 
+#include "CreateJ.h"
+#include "EnumMapper.h"
 #include "SVNRa.h"
 
 #include "svn_private_config.h"
@@ -93,3 +95,43 @@ SVNRa::dispose(jobject jthis)
   static jfieldID fid = 0;
   SVNBase::dispose(jthis, &fid, JAVA_CLASS_SVN_RA);
 }
+
+svn_revnum_t
+SVNRa::getDatedRev(apr_time_t tm)
+{
+  SVN::Pool requestPool;
+  svn_revnum_t rev;
+
+  SVN_JNI_ERR(svn_ra_get_dated_revision(m_session, &rev, tm,
+                                        requestPool.getPool()),
+              SVN_INVALID_REVNUM);
+
+  return rev;
+}
+
+jobject
+SVNRa::getLocks(const char *path, svn_depth_t depth)
+{
+  SVN::Pool requestPool;
+  apr_hash_t *locks;
+
+  SVN_JNI_ERR(svn_ra_get_locks2(m_session, &locks, path, depth,
+                                requestPool.getPool()),
+              NULL);
+
+  return CreateJ::LockMap(locks, requestPool.getPool());
+}
+
+jobject
+SVNRa::checkPath(const char *path, Revision &revision)
+{
+  SVN::Pool requestPool;
+  svn_node_kind_t kind;
+
+  SVN_JNI_ERR(svn_ra_check_path(m_session, path,
+                                revision.revision()->value.number,
+                                &kind, requestPool.getPool()),
+              NULL);
+
+  return EnumMapper::mapNodeKind(kind);
+}

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=1352737&r1=1352736&r2=1352737&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/SVNRa.h Fri Jun 22 01:38:50 2012
@@ -7,6 +7,7 @@
 
 #include "SVNBase.h"
 #include "RaContext.h"
+#include "Revision.h"
 
 #include <set>
 
@@ -24,6 +25,10 @@ class SVNRa: public SVNBase
 
     jlong getLatestRevision();
 
+    svn_revnum_t getDatedRev(apr_time_t time);
+    jobject getLocks(const char *path, svn_depth_t depth);
+    jobject checkPath(const char *path, Revision &revision);
+
     virtual void dispose(jobject jthis);
 
   private:

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=1352737&r1=1352736&r2=1352737&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 Fri Jun 22 01:38:50 2012
@@ -4,6 +4,8 @@
 #include "JNIUtil.h"
 #include "Prompter.h"
 #include "SVNRa.h"
+#include "Revision.h"
+#include "EnumMapper.h"
 
 #include "svn_private_config.h"
 
@@ -35,3 +37,52 @@ Java_org_apache_subversion_javahl_ra_SVN
 
   return ras->getLatestRevision();
 }
+
+JNIEXPORT jlong JNICALL
+Java_org_apache_subversion_javahl_ra_SVNRa_getDatedRevision
+(JNIEnv *env, jobject jthis, jobject jdate)
+{
+  JNIEntry(SVNRa, getDatedRevision);
+  SVNRa *ras = SVNRa::getCppObject(jthis);
+  CPPADDR_NULL_PTR(ras, SVN_INVALID_REVNUM);
+
+  apr_time_t date = JNIUtil::getDate(jdate);
+  if (JNIUtil::isExceptionThrown())
+    return SVN_INVALID_REVNUM;
+
+  return ras->getDatedRev(date);
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_ra_SVNRa_getLocks
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth)
+{
+  JNIEntry(SVNRa, getLocks);
+  SVNRa *ras = SVNRa::getCppObject(jthis);
+  CPPADDR_NULL_PTR(ras, NULL);
+
+  JNIStringHolder path(jpath);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+
+  return ras->getLocks(path, EnumMapper::toDepth(jdepth));
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_ra_SVNRa_checkPath
+(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision)
+{
+  JNIEntry(SVNReposAccess, checkPath);
+  SVNRa *ras = SVNRa::getCppObject(jthis);
+  CPPADDR_NULL_PTR(ras, NULL);
+
+  JNIStringHolder path(jpath);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+
+  Revision revision(jrevision);
+  if (JNIUtil::isExceptionThrown())
+    return NULL;
+
+  return ras->checkPath(path, revision);
+}

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=1352737&r1=1352736&r2=1352737&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 Fri Jun 22 01:38:50 2012
@@ -23,6 +23,15 @@
 
 package org.apache.subversion.javahl.ra;
 
+import java.util.Date;
+import java.util.Map;
+
+import org.apache.subversion.javahl.SubversionException;
+import org.apache.subversion.javahl.types.Depth;
+import org.apache.subversion.javahl.types.Lock;
+import org.apache.subversion.javahl.types.NodeKind;
+import org.apache.subversion.javahl.types.Revision;
+
 /**
  * Represent an instance of RA session
  */
@@ -38,4 +47,17 @@ public interface ISVNRa
      * @return latest revision
      */
     public long getLatestRevision();
+    
+    /**
+     * @param date      The date
+     * @return          The latest revision at date
+     */
+    public long getDatedRevision(Date date)
+        throws SubversionException;
+
+    public Map<String, Lock> getLocks(String path, Depth depth)
+        throws SubversionException;
+
+    public NodeKind checkPath(String path, Revision revision)
+        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=1352737&r1=1352736&r2=1352737&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 Fri Jun 22 01:38:50 2012
@@ -23,13 +23,30 @@
 
 package org.apache.subversion.javahl.ra;
 
+import java.util.Date;
+import java.util.Map;
+
 import org.apache.subversion.javahl.JNIObject;
+import org.apache.subversion.javahl.SubversionException;
+import org.apache.subversion.javahl.types.Depth;
+import org.apache.subversion.javahl.types.Lock;
+import org.apache.subversion.javahl.types.NodeKind;
+import org.apache.subversion.javahl.types.Revision;
 
 public class SVNRa extends JNIObject implements ISVNRa
 {
     @Override
     public native long getLatestRevision();
-
+    
+    public native long getDatedRevision(Date date)
+            throws SubversionException;
+
+    public native Map<String, Lock> getLocks(String path, Depth depth)
+            throws SubversionException;
+
+    public native NodeKind checkPath(String path, Revision revision)
+            throws SubversionException;
+        
     @Override
     public native void finalize() throws Throwable;
 

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRATests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRATests.java?rev=1352737&r1=1352736&r2=1352737&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRATests.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRATests.java Fri Jun 22 01:38:50 2012
@@ -22,10 +22,6 @@
  */
 package org.apache.subversion.javahl;
 
-import org.apache.subversion.javahl.SVNTests.DefaultPromptUserPassword;
-import org.apache.subversion.javahl.callback.*;
-
-import java.net.URI;
 import java.util.Date;
 import java.util.Set;
 import java.util.Map;
@@ -47,8 +43,6 @@ import org.apache.subversion.javahl.type
  */
 public class SVNRATests extends SVNTests
 {
-    protected ISVNReposAccess ra;
-
     protected OneTest thisTest;
 
     public SVNRATests()
@@ -65,7 +59,6 @@ public class SVNRATests extends SVNTests
         super.setUp();
 
         thisTest = new OneTest();
-        ra = new SVNReposAccess(thisTest.getUrl());
     }
 
     /**
@@ -81,20 +74,24 @@ public class SVNRATests extends SVNTests
     public void testDatedRev()
         throws SubversionException, IOException
     {
-        long revision = ra.getDatedRevision(new Date());
+        ISVNRa session = getSession();
+
+        long revision = session.getDatedRevision(new Date());
         assertEquals(revision, 1);
     }
 
     public void testGetLocks()
         throws SubversionException, IOException
     {
+        ISVNRa session = getSession();
+
         Set<String> iotaPathSet = new HashSet<String>(1);
         String iotaPath = thisTest.getWCPath() + "/iota";
         iotaPathSet.add(iotaPath);
 
         client.lock(iotaPathSet, "foo", false);
 
-        Map<String, Lock> locks = ra.getLocks("iota", Depth.infinity);
+        Map<String, Lock> locks = session.getLocks("iota", Depth.infinity);
 
         assertEquals(locks.size(), 1);
         Lock lock = locks.get("/iota");
@@ -105,13 +102,15 @@ public class SVNRATests extends SVNTests
     public void testCheckPath()
         throws SubversionException, IOException
     {
-        NodeKind kind = ra.checkPath("iota", Revision.getInstance(1));
+        ISVNRa session = getSession();
+
+        NodeKind kind = session.checkPath("iota", Revision.getInstance(1));
         assertEquals(NodeKind.file, kind);
 
-        kind = ra.checkPath("iota", Revision.getInstance(0));
+        kind = session.checkPath("iota", Revision.getInstance(0));
         assertEquals(NodeKind.none, kind);
 
-        kind = ra.checkPath("A", Revision.getInstance(1));
+        kind = session.checkPath("A", Revision.getInstance(1));
         assertEquals(NodeKind.dir, kind);
     }