You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/06/17 20:42:54 UTC

svn commit: r955700 - in /subversion/trunk/subversion/bindings/javahl: native/ src/org/apache/subversion/javahl/ tests/org/apache/subversion/javahl/

Author: hwright
Date: Thu Jun 17 18:42:54 2010
New Revision: 955700

URL: http://svn.apache.org/viewvc?rev=955700&view=rev
Log:
JavaHL: Add the repository pack API to the Java interface.

[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/SVNAdminTests.java
  (testPack): New.

* native/SVNAdmin.cpp,
  native/SVNAdmin.h
  (pack): New.

* native/org_apache_subversion_javahl_SVNAdmin.cpp
  (Java_org_apache_subversion_javahl_SVNAdmin_pack): New.

* src/org/apache/subversion/javahl/ISVNAdmin.java,
  src/org/apache/subversion/javahl/SVNAdmin.java
  (pack): New.

Modified:
    subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
    subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
    subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
    subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java

Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp Thu Jun 17 18:42:54 2010
@@ -570,6 +570,30 @@ SVNAdmin::verify(File &path, Revision &r
                                    requestPool.pool()), );
 }
 
+void SVNAdmin::pack(File &path, ReposNotifyCallback *notifyCallback)
+{
+  SVN::Pool requestPool;
+  svn_repos_t *repos;
+
+  if (path.isNull())
+    {
+      JNIUtil::throwNullPointerException("path");
+      return;
+    }
+
+  SVN_JNI_ERR(svn_repos_open(&repos, path.getInternalStyle(requestPool),
+                             requestPool.pool()), );
+
+  SVN_JNI_ERR(svn_repos_fs_pack2(repos,
+                                 notifyCallback != NULL
+                                    ? ReposNotifyCallback::notify
+                                    : NULL,
+                                 notifyCallback,
+                                 NULL, NULL,
+                                 requestPool.pool()),
+              );
+}
+
 void SVNAdmin::upgrade(File &path, ReposNotifyCallback *notifyCallback)
 {
   SVN::Pool requestPool;

Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h Thu Jun 17 18:42:54 2010
@@ -66,6 +66,7 @@ class SVNAdmin : public SVNBase
   void create(File &path, bool ignoreUUID, bool forceUUID, File &configPath,
               const char *fstype);
   void upgrade(File &path, ReposNotifyCallback *callback);
+  void pack(File &path, ReposNotifyCallback *callback);
   SVNAdmin();
   virtual ~SVNAdmin();
   void dispose(jobject jthis);

Modified: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp Thu Jun 17 18:42:54 2010
@@ -467,3 +467,24 @@ Java_org_apache_subversion_javahl_SVNAdm
 
   cl->upgrade(path, jnotifyCallback != NULL ? &callback : NULL);
 }
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNAdmin_pack
+(JNIEnv *env, jobject jthis, jobject jpath, jobject jnotifyCallback)
+{
+  JNIEntry(SVNAdmin, pack);
+  SVNAdmin *cl = SVNAdmin::getCppObject(jthis);
+  if (cl == NULL)
+    {
+      JNIUtil::throwError(_("bad C++ this"));
+      return;
+    }
+
+  File path(jpath);
+  if (JNIUtil::isExceptionThrown())
+    return;
+
+  ReposNotifyCallback callback(jnotifyCallback);
+
+  cl->pack(path, jnotifyCallback != NULL ? &callback : NULL);
+}

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNAdmin.java Thu Jun 17 18:42:54 2010
@@ -229,4 +229,13 @@ public interface ISVNAdmin {
      */
     public abstract void upgrade(File path, ReposNotifyCallback callback)
 			throws ClientException;
+
+    /**
+     * pack the repository
+     * @param path              the path to the repository
+     * @param callback          for notification
+	 * @throws ClientException  throw in case of problem
+     */
+    public abstract void pack(File path, ReposNotifyCallback callback)
+			throws ClientException;
 }

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java Thu Jun 17 18:42:54 2010
@@ -233,4 +233,6 @@ public class SVNAdmin implements ISVNAdm
             throws ClientException;
 
     public native void upgrade(File path, ReposNotifyCallback callback);
+
+    public native void pack(File path, ReposNotifyCallback callback);
 }

Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java?rev=955700&r1=955699&r2=955700&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java Thu Jun 17 18:42:54 2010
@@ -90,6 +90,14 @@ public class SVNAdminTests extends SVNTe
         admin.upgrade(thisTest.getRepository(), null);
     }
 
+    /* This test only tests the call down to the C++ layer. */
+    public void testPack()
+        throws SubversionException, IOException
+    {
+        OneTest thisTest = new OneTest(false);
+        admin.pack(thisTest.getRepository(), null);
+    }
+
     public void testLoadRepo()
         throws SubversionException, IOException
     {