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 ? ¬ifyCallback : 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;
}