summaryrefslogtreecommitdiff
path: root/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp')
-rw-r--r--subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp248
1 files changed, 199 insertions, 49 deletions
diff --git a/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp b/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
index e4fdd76..5f70a5a 100644
--- a/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
+++ b/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
@@ -50,7 +50,8 @@
#include "ImportFilterCallback.h"
#include "ChangelistCallback.h"
#include "StringArray.h"
-#include "RevpropTable.h"
+#include "PropertyTable.h"
+#include "CreateJ.h"
#include "VersionExtended.h"
#include "DiffOptions.h"
#include "svn_version.h"
@@ -184,8 +185,9 @@ Java_org_apache_subversion_javahl_SVNClient_list
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_status
(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth,
- jboolean jonServer, jboolean jgetAll, jboolean jnoIgnore,
- jboolean jignoreExternals, jobject jchangelists,
+ jboolean jonServer, jboolean jonDisk, jboolean jgetAll,
+ jboolean jnoIgnore, jboolean jignoreExternals,
+ jboolean jdepthAsSticky, jobject jchangelists,
jobject jstatusCallback)
{
JNIEntry(SVNClient, status);
@@ -203,9 +205,9 @@ Java_org_apache_subversion_javahl_SVNClient_status
StatusCallback callback(jstatusCallback);
cl->status(path, EnumMapper::toDepth(jdepth),
- jonServer ? true:false,
- jgetAll ? true:false, jnoIgnore ? true:false,
- jignoreExternals ? true:false, changelists, &callback);
+ bool(jonServer), bool(jonDisk), bool(jgetAll),
+ bool(jnoIgnore), bool(jignoreExternals),
+ bool(jdepthAsSticky), changelists, &callback);
}
JNIEXPORT void JNICALL
@@ -257,7 +259,7 @@ Java_org_apache_subversion_javahl_SVNClient_password
}
JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_setPrompt
+Java_org_apache_subversion_javahl_SVNClient_setPrompt__Lorg_apache_subversion_javahl_callback_AuthnCallback_2
(JNIEnv *env, jobject jthis, jobject jprompter)
{
JNIEntry(SVNClient, setPrompt);
@@ -267,7 +269,7 @@ Java_org_apache_subversion_javahl_SVNClient_setPrompt
JNIUtil::throwError(_("bad C++ this"));
return;
}
- Prompter *prompter = Prompter::makeCPrompter(jprompter);
+ Prompter::UniquePtr prompter(Prompter::create(jprompter));
if (JNIUtil::isExceptionThrown())
return;
@@ -275,6 +277,39 @@ Java_org_apache_subversion_javahl_SVNClient_setPrompt
}
JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_setPrompt__Lorg_apache_subversion_javahl_callback_UserPasswordCallback_2
+(JNIEnv *env, jobject jthis, jobject jprompter)
+{
+ JNIEntry(SVNClient, setPrompt);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return;
+ }
+ Prompter::UniquePtr prompter(CompatPrompter::create(jprompter));
+ if (JNIUtil::isExceptionThrown())
+ return;
+
+ cl->getClientContext().setPrompt(prompter);
+}
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_setTunnelAgent
+(JNIEnv *env, jobject jthis, jobject jtunnelcb)
+{
+ JNIEntry(SVNClient, setPrompt);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return;
+ }
+
+ cl->getClientContext().setTunnelCallback(jtunnelcb);
+}
+
+JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_logMessages
(JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
jobject jranges, jboolean jstopOnCopy, jboolean jdisoverPaths,
@@ -282,6 +317,14 @@ Java_org_apache_subversion_javahl_SVNClient_logMessages
jobject jlogMessageCallback)
{
JNIEntry(SVNClient, logMessages);
+
+ if (jlong(int(jlimit)) != jlimit)
+ {
+ JNIUtil::raiseThrowable("java/lang/IllegalArgumentException",
+ "The value of 'limit' is too large");
+ return;
+ }
+
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
@@ -323,7 +366,7 @@ Java_org_apache_subversion_javahl_SVNClient_logMessages
cl->logMessages(path, pegRevision, revisionRanges,
jstopOnCopy ? true: false, jdisoverPaths ? true : false,
jincludeMergedRevisions ? true : false,
- revProps, static_cast<long>(jlimit), &callback);
+ revProps, int(jlimit), &callback);
}
JNIEXPORT jlong JNICALL
@@ -384,7 +427,7 @@ Java_org_apache_subversion_javahl_SVNClient_remove
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -395,8 +438,8 @@ Java_org_apache_subversion_javahl_SVNClient_remove
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_revert
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jdepth,
- jobject jchangelists)
+(JNIEnv *env, jobject jthis, jobject jpaths, jobject jdepth,
+ jobject jchangelists, jboolean jclear_changelists, jboolean jmetadata_only)
{
JNIEntry(SVNClient, revert);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -405,7 +448,9 @@ Java_org_apache_subversion_javahl_SVNClient_revert
JNIUtil::throwError(_("bad C++ this"));
return;
}
- JNIStringHolder path(jpath);
+
+ SVN_JNI_NULL_PTR_EX(jpaths, "paths", );
+ StringArray paths(jpaths);
if (JNIUtil::isExceptionThrown())
return;
@@ -413,7 +458,8 @@ Java_org_apache_subversion_javahl_SVNClient_revert
if (JNIUtil::isExceptionThrown())
return;
- cl->revert(path, EnumMapper::toDepth(jdepth), changelists);
+ cl->revert(paths, EnumMapper::toDepth(jdepth),
+ changelists, bool(jclear_changelists), bool(jmetadata_only));
}
JNIEXPORT void JNICALL
@@ -498,7 +544,7 @@ Java_org_apache_subversion_javahl_SVNClient_commit
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -513,6 +559,7 @@ JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_copy
(JNIEnv *env, jobject jthis, jobject jcopySources, jstring jdestPath,
jboolean jcopyAsChild, jboolean jmakeParents, jboolean jignoreExternals,
+ jboolean jmetadataOnly, jboolean jpinExternals, jobject jexternalsToPin,
jobject jrevpropTable, jobject jmessage, jobject jcallback)
{
JNIEntry(SVNClient, copy);
@@ -539,13 +586,15 @@ Java_org_apache_subversion_javahl_SVNClient_copy
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
CommitCallback callback(jcallback);
- cl->copy(copySources, destPath, &message, jcopyAsChild ? true : false,
- jmakeParents ? true : false, jignoreExternals ? true : false,
+ cl->copy(copySources, destPath, &message,
+ bool(jcopyAsChild), bool(jmakeParents),
+ bool(jignoreExternals), bool(jmetadataOnly),
+ bool(jpinExternals), jexternalsToPin,
revprops, jcallback ? &callback : NULL);
}
@@ -577,7 +626,7 @@ Java_org_apache_subversion_javahl_SVNClient_move
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -610,7 +659,7 @@ Java_org_apache_subversion_javahl_SVNClient_mkdir
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -621,7 +670,10 @@ Java_org_apache_subversion_javahl_SVNClient_mkdir
JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_cleanup
-(JNIEnv *env, jobject jthis, jstring jpath)
+(JNIEnv *env, jobject jthis, jstring jpath,
+ jboolean jbreakLocks, jboolean jfixRecordedTimestamps,
+ jboolean jclearDavCache, jboolean jremoveUnusedPristines,
+ jboolean jincludeExternals)
{
JNIEntry(SVNClient, cleanup);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -634,7 +686,9 @@ Java_org_apache_subversion_javahl_SVNClient_cleanup
if (JNIUtil::isExceptionThrown())
return;
- cl->cleanup(path);
+ cl->cleanup(path, jbreakLocks, jfixRecordedTimestamps,
+ jclearDavCache, jremoveUnusedPristines,
+ jincludeExternals);
}
JNIEXPORT void JNICALL
@@ -660,7 +714,8 @@ JNIEXPORT jlong JNICALL
Java_org_apache_subversion_javahl_SVNClient_doExport
(JNIEnv *env, jobject jthis, jstring jsrcPath, jstring jdestPath,
jobject jrevision, jobject jpegRevision, jboolean jforce,
- jboolean jignoreExternals, jobject jdepth, jstring jnativeEOL)
+ jboolean jignoreExternals, jboolean jignoreKeywords,
+ jobject jdepth, jstring jnativeEOL)
{
JNIEntry(SVNClient, doExport);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -690,7 +745,9 @@ Java_org_apache_subversion_javahl_SVNClient_doExport
return -1;
return cl->doExport(srcPath, destPath, revision, pegRevision,
- jforce ? true : false, jignoreExternals ? true : false,
+ jforce ? true : false,
+ jignoreExternals ? true : false,
+ jignoreKeywords ? true : false,
EnumMapper::toDepth(jdepth), nativeEOL);
}
@@ -758,7 +815,7 @@ Java_org_apache_subversion_javahl_SVNClient_doImport
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -796,11 +853,11 @@ Java_org_apache_subversion_javahl_SVNClient_suggestMergeSources
}
JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZZZ
(JNIEnv *env, jobject jthis, jstring jpath1, jobject jrevision1,
jstring jpath2, jobject jrevision2, jstring jlocalPath, jboolean jforceDelete,
jobject jdepth, jboolean jignoreMergeinfo, jboolean jdiffIgnoreAncestry,
- jboolean jdryRun, jboolean jrecordOnly)
+ jboolean jdryRun, jboolean jallowMixedRev, jboolean jrecordOnly)
{
JNIEntry(SVNClient, merge);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -835,15 +892,16 @@ Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apach
jignoreMergeinfo ? true:false,
jdiffIgnoreAncestry ? true:false,
jdryRun ? true:false,
+ jallowMixedRev ? true:false,
jrecordOnly ? true:false);
}
JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZZ
+Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_util_List_2Ljava_lang_String_2ZLorg_apache_subversion_javahl_types_Depth_2ZZZZZ
(JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
jobject jranges, jstring jlocalPath, jboolean jforceDelete, jobject jdepth,
jboolean jignoreMergeinfo, jboolean jdiffIgnoreAncestry,
- jboolean jdryRun, jboolean jrecordOnly)
+ jboolean jdryRun, jboolean jallowMixedRev, jboolean jrecordOnly)
{
JNIEntry(SVNClient, merge);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -894,6 +952,7 @@ Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apach
jignoreMergeinfo ? true:false,
jdiffIgnoreAncestry ? true:false,
jdryRun ? true:false,
+ jallowMixedRev ? true:false,
jrecordOnly ? true:false);
}
@@ -1009,7 +1068,7 @@ Java_org_apache_subversion_javahl_SVNClient_propertySetRemote
if (JNIUtil::isExceptionThrown())
return;
- RevpropTable revprops(jrevpropTable);
+ PropertyTable revprops(jrevpropTable, false, false);
if (JNIUtil::isExceptionThrown())
return;
@@ -1439,35 +1498,44 @@ Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lo
jignoreAncestry ? true : false, receiver);
}
-JNIEXPORT void JNICALL
+JNIEXPORT jobject JNICALL
Java_org_apache_subversion_javahl_SVNClient_streamFileContent
-(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision, jobject jstream)
+(JNIEnv *env, jobject jthis, jstring jpath,
+ jobject jrevision, jobject jpegRevision,
+ jboolean jexpand_keywords, jboolean jreturn_props,
+ jobject jstream)
{
JNIEntry(SVNClient, streamFileContent);
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
JNIUtil::throwError(_("bad C++ this"));
- return;
+ return NULL;
}
JNIStringHolder path(jpath);
if (JNIUtil::isExceptionThrown())
- return;
+ return NULL;
Revision revision(jrevision);
if (JNIUtil::isExceptionThrown())
- return;
+ return NULL;
Revision pegRevision(jpegRevision);
if (JNIUtil::isExceptionThrown())
- return;
+ return NULL;
OutputStream dataOut(jstream);
if (JNIUtil::isExceptionThrown())
- return;
+ return NULL;
- cl->streamFileContent(path, revision, pegRevision, dataOut);
+ apr_hash_t* props =
+ cl->streamFileContent(path, revision, pegRevision,
+ bool(jexpand_keywords), bool(jreturn_props),
+ dataOut);
+ if (!jreturn_props || JNIUtil::isExceptionThrown())
+ return NULL;
+
+ return CreateJ::PropertyMap(props, SVN::Pool().getPool());
}
JNIEXPORT jstring JNICALL
@@ -1581,7 +1649,8 @@ JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_blame
(JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
jobject jrevisionStart, jobject jrevisionEnd, jboolean jignoreMimeType,
- jboolean jincludeMergedRevisions, jobject jblameCallback)
+ jboolean jincludeMergedRevisions, jobject jblameCallback,
+ jobject jdiffOptions)
{
JNIEntry(SVNClient, blame);
SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -1606,10 +1675,15 @@ Java_org_apache_subversion_javahl_SVNClient_blame
if (JNIUtil::isExceptionThrown())
return;
+ DiffOptions options(jdiffOptions);
+ if (JNIUtil::isExceptionThrown())
+ return;
+
BlameCallback callback(jblameCallback);
cl->blame(path, pegRevision, revisionStart, revisionEnd,
jignoreMimeType ? true : false,
- jincludeMergedRevisions ? true : false, &callback);
+ jincludeMergedRevisions ? true : false, &callback,
+ options);
}
JNIEXPORT void JNICALL
@@ -1648,6 +1722,36 @@ Java_org_apache_subversion_javahl_SVNClient_getConfigDirectory
}
JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_setConfigEventHandler(
+ JNIEnv* env, jobject jthis, jobject jcallback)
+{
+ JNIEntry(SVNClient, setConfigEventHandler);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return;
+ }
+
+ cl->getClientContext().setConfigEventHandler(jcallback);
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_SVNClient_getConfigEventHandler(
+ JNIEnv* env, jobject jthis)
+{
+ JNIEntry(SVNClient, getConfigEventHandler);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError(_("bad C++ this"));
+ return NULL;
+ }
+
+ return cl->getClientContext().getConfigEventHandler();
+}
+
+JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_cancelOperation
(JNIEnv *env, jobject jthis)
{
@@ -1738,8 +1842,9 @@ Java_org_apache_subversion_javahl_SVNClient_getChangelists
return;
ChangelistCallback callback(jchangelistCallback);
- cl->getChangelists(root_path, changelists, EnumMapper::toDepth(jdepth),
- &callback);
+ cl->getChangelists(root_path,
+ (jchangelists ? &changelists : NULL),
+ EnumMapper::toDepth(jdepth), &callback);
}
JNIEXPORT void JNICALL
@@ -1790,12 +1895,14 @@ Java_org_apache_subversion_javahl_SVNClient_unlock
}
JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_info2
+Java_org_apache_subversion_javahl_SVNClient_info
(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision,
- jobject jpegRevision, jobject jdepth, jobject jchangelists,
- jobject jinfoCallback)
+ jobject jpegRevision, jobject jdepth,
+ jboolean jfetchExcluded, jboolean jfetchActualOnly,
+ jboolean jincludeExternals,
+ jobject jchangelists, jobject jinfoCallback)
{
- JNIEntry(SVNClient, info2);
+ JNIEntry(SVNClient, info);
SVNClient *cl = SVNClient::getCppObject(jthis);
if (cl == NULL)
{
@@ -1819,8 +1926,10 @@ Java_org_apache_subversion_javahl_SVNClient_info2
return;
InfoCallback callback(jinfoCallback);
- cl->info2(path, revision, pegRevision, EnumMapper::toDepth(jdepth),
- changelists, &callback);
+ cl->info(path, revision, pegRevision, EnumMapper::toDepth(jdepth),
+ svn_boolean_t(jfetchExcluded), svn_boolean_t(jfetchActualOnly),
+ svn_boolean_t(jincludeExternals),
+ changelists, &callback);
}
JNIEXPORT void JNICALL
@@ -1851,3 +1960,44 @@ Java_org_apache_subversion_javahl_SVNClient_patch
jreverse ? true : false, jignoreWhitespace ? true : false,
jremoveTempfiles ? true : false, &callback);
}
+
+JNIEXPORT void JNICALL
+Java_org_apache_subversion_javahl_SVNClient_vacuum
+(JNIEnv *env, jobject jthis, jstring jpath,
+ jboolean jremoveUnversionedItems, jboolean jremoveIgnoredItems,
+ jboolean jfixRecordedTimestamps, jboolean jremoveUnusedPristines,
+ jboolean jincludeExternals)
+{
+ JNIEntry(SVNClient, patch);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError("bad C++ this");
+ return;
+ }
+
+ JNIStringHolder path(jpath);
+ cl->vacuum(path,
+ jremoveUnversionedItems, jremoveIgnoredItems,
+ jfixRecordedTimestamps, jremoveUnusedPristines,
+ jincludeExternals);
+}
+
+JNIEXPORT jobject JNICALL
+Java_org_apache_subversion_javahl_SVNClient_nativeOpenRemoteSession
+(JNIEnv *env, jobject jthis, jstring jpath, jint jretryAttempts)
+{
+ JNIEntry(SVNClient, openRemoteSession);
+ SVNClient *cl = SVNClient::getCppObject(jthis);
+ if (cl == NULL)
+ {
+ JNIUtil::throwError("bad C++ this");
+ return NULL;
+ }
+
+ JNIStringHolder path(jpath);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ return cl->openRemoteSession(path, jretryAttempts);
+}