You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2013/06/19 13:01:19 UTC

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

Author: brane
Date: Wed Jun 19 11:01:19 2013
New Revision: 1494546

URL: http://svn.apache.org/r1494546
Log:
On the javahl-ra branch: Add capability-checking API.

[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* ISVNRemote.java (ISVNRemote. hasCapability): New method,
  remote/RemoteSession.java (ISVNRemote. hasCapability): New method.
  (RemoteSesison.nativeHasCapability): Native implementation.

[in subversion/bindings/javahl/native]
* RemoteSession.h, RemoteSession.cpp
  (RemoteSession::hasCapability): New method.
* org_apache_subversion_javahl_remote_RemoteSession.cpp
  (Java_org_apache_subversion_javahl_remote_RemoteSession_nativeHasCapability):
   New JNI wrapper.

[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* SVNRemoteTests.java (SVNRemoteTests.testHasCapability): New test case.

Modified:
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.h
    subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
    subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.cpp Wed Jun 19 11:01:19 2013
@@ -420,3 +420,20 @@ RemoteSession::checkPath(jstring jpath, 
 
   return EnumMapper::mapNodeKind(kind);
 }
+
+jboolean
+RemoteSession::hasCapability(jstring jcapability)
+{
+  SVN::Pool subPool(pool);
+  svn_boolean_t has;
+
+  JNIStringHolder capability(jcapability);
+  if (JNIUtil::isExceptionThrown())
+    return false;
+
+  SVN_JNI_ERR(svn_ra_has_capability(m_session, &has, capability,
+                                    subPool.getPool()),
+              false);
+
+  return jboolean(has);
+}

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.h
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.h?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.h (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/RemoteSession.h Wed Jun 19 11:01:19 2013
@@ -69,6 +69,7 @@ class RemoteSession : public SVNBase
     jlong getRevisionByTimestamp(jlong timestamp);
     jobject getLocks(jstring jpath, jobject jdepth);
     jobject checkPath(jstring jpath, jlong jrevision);
+    jboolean hasCapability(jstring capability);
 
   private:
     RemoteSession(jobject*, int retryAttempts,

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/native/org_apache_subversion_javahl_remote_RemoteSession.cpp Wed Jun 19 11:01:19 2013
@@ -183,3 +183,14 @@ Java_org_apache_subversion_javahl_remote
 
   return ras->getLocks(jpath, jdepth);
 }
+
+JNIEXPORT jboolean JNICALL
+Java_org_apache_subversion_javahl_remote_RemoteSession_nativeHasCapability(
+    JNIEnv *env, jobject jthis, jstring jcapability)
+{
+  JNIEntry(RemoteSession, nativeHasCapability);
+  RemoteSession *ras = RemoteSession::getCppObject(jthis);
+  CPPADDR_NULL_PTR(ras, false);
+
+  return ras->hasCapability(jcapability);
+}

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNRemote.java Wed Jun 19 11:01:19 2013
@@ -132,7 +132,7 @@ public interface ISVNRemote
 
     /**
      * Create a commit editor instance, rooted at the current session URL.
-     * @throws SubversionException
+     * @throws ClientException
      */
     ISVNEditor getCommitEditor() throws ClientException;
 
@@ -212,4 +212,11 @@ public interface ISVNRemote
 
         private String token;
     }
+
+    /**
+     * Check if the server associated with this session has
+     * the given <code>capability</code>.
+     * @throws ClientException
+     */
+    boolean hasCapability(Capability capability) throws ClientException;
 }

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/src/org/apache/subversion/javahl/remote/RemoteSession.java Wed Jun 19 11:01:19 2013
@@ -101,6 +101,12 @@ public class RemoteSession extends JNIOb
         return ed;
     }
 
+    public boolean hasCapability(Capability capability)
+            throws ClientException
+    {
+        return nativeHasCapability(capability.toString());
+    }
+
     @Override
     public native void finalize() throws Throwable;
 
@@ -114,6 +120,8 @@ public class RemoteSession extends JNIOb
 
     private native void nativeDispose();
 
+    private native boolean nativeHasCapability(String capability);
+
     /*
      * NOTE: This field is accessed from native code for callbacks.
      */

Modified: subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java
URL: http://svn.apache.org/viewvc/subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java?rev=1494546&r1=1494545&r2=1494546&view=diff
==============================================================================
--- subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java (original)
+++ subversion/branches/javahl-ra/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNRemoteTests.java Wed Jun 19 11:01:19 2013
@@ -242,4 +242,10 @@ public class SVNRemoteTests extends SVNT
         session.getCommitEditor();
         session.dispose();
     }
+
+    public void testHasCapability() throws Exception
+    {
+        ISVNRemote session = getSession();
+        assert(session.hasCapability(ISVNRemote.Capability.depth));
+    }
 }