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/16 23:31:54 UTC

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

Author: hwright
Date: Wed Jun 16 21:31:53 2010
New Revision: 955403

URL: http://svn.apache.org/viewvc?rev=955403&view=rev
Log:
JavaHL: Update the load API to use the notification callbacks.

[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/SVNAdminTests.java
  (testLoadRepo): Use the updated API.

* tests/org/apache/subversion/javahl/SVNTests.java
  (IgnoreOutputer): Remove, no longer needed.
  (createInitialRepository): Update caller.

* native/SVNAdmin.cpp,
  native/SVNAdmin.h
  (load): Take a callback param, and use the latest svn_repos API.

* native/org_apache_subversion_javahl_SVNAdmin.cpp
  (Java_org_apache_subversion_javahl_SVNAdmin_load): Update params to match
    the Java API, as well as the call to the admin load API.

* src/org/apache/subversion/javahl/ISVNAdmin.java,
  src/org/apache/subversion/javahl/SVNAdmin.java
  (load): Get rid of the output stream, and use a callback instead.

* src/org/apache/subversion/javahl/ReposNotifyInformation.java
  (NodeAction): Remove redundancy in the enum value names.

* src/org/tigris/subversion/javahl/SVNAdmin.java
  (load): Update backward compat wrapper.
  (ReposNotifyHandler): Handle the additional notification types.

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/ReposNotifyInformation.java
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNAdmin.java
    subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
    subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
    subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.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=955403&r1=955402&r2=955403&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp Wed Jun 16 21:31:53 2010
@@ -295,12 +295,12 @@ void SVNAdmin::listUnusedDBLogs(File &pa
 
 void SVNAdmin::load(File &path,
                     InputStream &dataIn,
-                    OutputStream &messageOut,
                     bool ignoreUUID,
                     bool forceUUID,
                     bool usePreCommitHook,
                     bool usePostCommitHook,
-                    const char *relativePath)
+                    const char *relativePath,
+                    ReposNotifyCallback *notifyCallback)
 {
   SVN::Pool requestPool;
   svn_repos_t *repos;
@@ -319,10 +319,13 @@ void SVNAdmin::load(File &path,
   SVN_JNI_ERR(svn_repos_open(&repos, path.getInternalStyle(requestPool),
                              requestPool.pool()), );
 
-  SVN_JNI_ERR(svn_repos_load_fs2(repos, dataIn.getStream(requestPool),
-                                 messageOut.getStream(requestPool),
+  SVN_JNI_ERR(svn_repos_load_fs3(repos, dataIn.getStream(requestPool),
                                  uuid_action, relativePath,
                                  usePreCommitHook, usePostCommitHook,
+                                 notifyCallback != NULL
+                                    ? ReposNotifyCallback::notify
+                                    : NULL,
+                                 notifyCallback,
                                  NULL, NULL, requestPool.pool()), );
 }
 

Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h?rev=955403&r1=955402&r2=955403&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h Wed Jun 16 21:31:53 2010
@@ -52,9 +52,9 @@ class SVNAdmin : public SVNBase
   void rmtxns(File &path, StringArray &transactions);
   jlong recover(File &path);
   void lstxns(File &path, MessageReceiver &messageReceiver);
-  void load(File &path, InputStream &dataIn, OutputStream &messageOut,
-            bool ignoreUUID, bool forceUUID, bool usePreCommitHook,
-            bool usePostCommitHook, const char *relativePath);
+  void load(File &path, InputStream &dataIn, bool ignoreUUID, bool forceUUID,
+            bool usePreCommitHook, bool usePostCommitHook,
+            const char *relativePath, ReposNotifyCallback *notifyCallback);
   void listUnusedDBLogs(File &path,
                         MessageReceiver &messageReceiver);
   void listDBLogs(File &path, MessageReceiver &messageReceiver);

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=955403&r1=955402&r2=955403&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 Wed Jun 16 21:31:53 2010
@@ -239,8 +239,8 @@ Java_org_apache_subversion_javahl_SVNAdm
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNAdmin_load
 (JNIEnv *env, jobject jthis, jobject jpath, jobject jinputData,
- jobject joutputMsg, jboolean jignoreUUID, jboolean jforceUUID,
- jboolean jusePreCommitHook, jboolean jusePostCommitHook, jstring jrelativePath)
+ jboolean jignoreUUID, jboolean jforceUUID, jboolean jusePreCommitHook,
+ jboolean jusePostCommitHook, jstring jrelativePath, jobject jnotifyCallback)
 {
   JNIEntry(SVNAdmin, load);
   SVNAdmin *cl = SVNAdmin::getCppObject(jthis);
@@ -258,18 +258,16 @@ Java_org_apache_subversion_javahl_SVNAdm
   if (JNIUtil::isExceptionThrown())
     return;
 
-
-  OutputStream outputMsg(joutputMsg);
-  if (JNIUtil::isExceptionThrown())
-    return;
-
   JNIStringHolder relativePath(jrelativePath);
   if (JNIUtil::isExceptionThrown())
     return;
 
-  cl->load(path, inputData, outputMsg, jignoreUUID ? true : false,
+  ReposNotifyCallback notifyCallback(jnotifyCallback);
+
+  cl->load(path, inputData, jignoreUUID ? true : false,
            jforceUUID ? true : false, jusePreCommitHook ? true : false,
-           jusePostCommitHook ? true : false, relativePath);
+           jusePostCommitHook ? true : false, relativePath,
+           jnotifyCallback != NULL ? &notifyCallback : NULL);
 }
 
 JNIEXPORT void JNICALL

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=955403&r1=955402&r2=955403&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 Wed Jun 16 21:31:53 2010
@@ -138,9 +138,10 @@ public interface ISVNAdmin {
 	 * @since 1.5
 	 */
 	public abstract void load(File path, InputStream dataInput,
-			OutputStream messageOutput, boolean ignoreUUID, boolean forceUUID,
-			boolean usePreCommitHook, boolean usePostCommitHook,
-			String relativePath) throws ClientException;
+			boolean ignoreUUID, boolean forceUUID, boolean usePreCommitHook,
+            boolean usePostCommitHook, String relativePath,
+            ReposNotifyCallback callback)
+        throws ClientException;
 
 	/**
 	 * list all open transactions in a repository

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java?rev=955403&r1=955402&r2=955403&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ReposNotifyInformation.java Wed Jun 16 21:31:53 2010
@@ -194,9 +194,9 @@ public class ReposNotifyInformation exte
     
     public enum NodeAction
     {
-         svn_node_action_change,
-         svn_node_action_add,
-         svn_node_action_delete,
-         svn_node_action_replace;
+         change,
+         add,
+         deleted,
+         replace;
     }
 }

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=955403&r1=955402&r2=955403&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 Wed Jun 16 21:31:53 2010
@@ -161,25 +161,10 @@ public class SVNAdmin implements ISVNAdm
         public void receiveMessageLine(String message);
     }
 
-    /**
-     * load the data of a dump into a repository,
-     * @param path              the path to the repository
-     * @param dataInput         the data input source
-     * @param messageOutput     the target for processing messages
-     * @param ignoreUUID        ignore any UUID found in the input stream
-     * @param forceUUID         set the repository UUID to any found in the
-     *                          stream
-     * @param usePreCommitHook  use the pre-commit hook when processing commits
-     * @param usePostCommitHook use the post-commit hook when processing commits
-     * @param relativePath      the directory in the repository, where the data
-     *                          in put optional.
-     * @throws ClientException  throw in case of problem
-     * @since 1.5
-     */
     public native void load(File path, InputStream dataInput,
-                            OutputStream messageOutput, boolean ignoreUUID,
-                            boolean forceUUID, boolean usePreCommitHook,
-                            boolean usePostCommitHook, String relativePath)
+                            boolean ignoreUUID, boolean forceUUID,
+                            boolean usePreCommitHook, boolean usePostCommitHook,
+                            String relativePath, ReposNotifyCallback callback)
             throws ClientException;
 
     /**

Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java?rev=955403&r1=955402&r2=955403&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNAdmin.java Wed Jun 16 21:31:53 2010
@@ -293,9 +293,9 @@ public class SVNAdmin
         try
         {
             aSVNAdmin.load(new File(path), new InputWrapper(dataInput),
-                           new OutputWrapper(messageOutput),
                            ignoreUUID, forceUUID, usePreCommitHook,
-                           usePostCommitHook, relativePath);
+                           usePostCommitHook, relativePath,
+                           new ReposNotifyHandler(messageOutput));
         }
         catch (org.apache.subversion.javahl.ClientException ex)
         {
@@ -581,6 +581,63 @@ public class SVNAdmin
                     val = "* Verified revision " + info.getRevision() + ".\n";
                     break;
 
+                case load_txn_committed:
+                    if (info.getOldRevision() == Revision.SVN_INVALID_REVNUM)
+                        val = "\n------- Committed revision " +
+                              info.getNewRevision() + " >>>\n\n";
+                    else
+                        val = "\n------- Committed new rev " +
+                               info.getNewRevision() +
+                              " (loaded from original rev " +
+                              info.getOldRevision() +
+                              ") >>>\n\n";
+                    break;
+
+                case load_node_start:
+                    switch (info.getNodeAction())
+                    {
+                        case change:
+                            val = "     * editing path : " + info.getPath() +
+                                  " ...";
+                            break;
+
+                        case deleted:
+                            val = "     * deleting path : " + info.getPath() +
+                                  " ...";
+                            break;
+
+                        case add:
+                            val = "     * adding path : " + info.getPath() +
+                                  " ...";
+                            break;
+
+                        case replace:
+                            val = "     * replacing path : " + info.getPath() +
+                                  " ...";
+                            break;
+
+                        default:
+                            val = null;
+                    }
+                    break;
+
+                case load_node_done:
+                    val = " done.\n";
+                    break;
+
+                case load_copied_node:
+                    val = "COPIED...";
+                    break;
+
+                case load_txn_start:
+                    val = "<<< Started new transaction, based on " +
+                          "original revision " + info.getOldRevision() + "\n";
+                    break;
+
+                case load_normalized_mergeinfo:
+                    val = " removing '\\r' from svn:mergeinfo ...";
+                    break;
+
                 default:
                     val = null;
             }

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=955403&r1=955402&r2=955403&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 Wed Jun 16 21:31:53 2010
@@ -111,9 +111,8 @@ public class SVNAdminTests extends SVNTe
                 "subversion/bindings/javahl");
         File dump = new File(testSrcdir, "tests/data/issue2979.dump");
         InputStream input = new FileInputStream(dump);
-        OutputStream loadLog = new IgnoreOutputer();
         admin.load(thisTest.getRepository(),
-                   input, loadLog, true, true, false, false, null);
+                   input, true, true, false, false, null, null);
         // should have two revs after the load
         infoHolder[0] = null;
         client.info2(repoUrl, Revision.HEAD, Revision.HEAD,

Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java?rev=955403&r1=955402&r2=955403&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNTests.java Wed Jun 16 21:31:53 2010
@@ -427,18 +427,6 @@ class SVNTests extends TestCase
     }
 
     /**
-     * internal class extends OutputStream, but ignores the data
-     */
-    public class IgnoreOutputer extends OutputStream
-    {
-        public void write(int b) throws IOException
-        {
-            /* Just do nothing. */
-            return;
-        }
-    }
-
-    /**
      * Represents the repository and (possibly) the working copy for
      * one test.
      */
@@ -651,9 +639,8 @@ class SVNTests extends TestCase
             admin.create(repos, true, false, conf, fsType);
             if (loadGreek)
             {
-                admin.load(repos, new FileInputStream(greekDump),
-                           new IgnoreOutputer(), false, false, false, false,
-                           null);
+                admin.load(repos, new FileInputStream(greekDump), false, false,
+                           false, false, null, null);
             }
             return repos;
         }