JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_streamFileContent (JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision, jobject jpegRevision, jobject jstream) { JNIEntry(SVNClient, streamFileContent); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; OutputStream dataOut(jstream); if (JNIUtil::isExceptionThrown()) return; cl->streamFileContent(path, revision, pegRevision, dataOut); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_list (JNIEnv *env, jobject jthis, jstring jurl, jobject jrevision, jobject jpegRevision, jobject jdepth, jint jdirentFields, jboolean jfetchLocks, jobject jcallback) { JNIEntry(SVNClient, list); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) return; JNIStringHolder url(jurl); if (JNIUtil::isExceptionThrown()) return; Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; ListCallback callback(jcallback); cl->list(url, revision, pegRevision, EnumMapper::toDepth(jdepth), (int)jdirentFields, jfetchLocks ? true : false, &callback); }
JNIEXPORT jlong JNICALL Java_org_apache_subversion_javahl_SVNClient_checkout (JNIEnv *env, jobject jthis, jstring jmoduleName, jstring jdestPath, jobject jrevision, jobject jpegRevision, jobject jdepth, jboolean jignoreExternals, jboolean jallowUnverObstructions) { JNIEntry(SVNClient, checkout); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return -1; } Revision revision(jrevision, true); if (JNIUtil::isExceptionThrown()) return -1; Revision pegRevision(jpegRevision, true); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder moduleName(jmoduleName); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder destPath(jdestPath); if (JNIUtil::isExceptionThrown()) return -1; return cl->checkout(moduleName, destPath, revision, pegRevision, EnumMapper::toDepth(jdepth), jignoreExternals ? true : false, jallowUnverObstructions ? true : false); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_mergeReintegrate (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision, jstring jlocalPath, jboolean jdryRun) { JNIEntry(SVNClient, mergeReintegrate); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder localPath(jlocalPath); if (JNIUtil::isExceptionThrown()) return; cl->mergeReintegrate(path, pegRevision, localPath, jdryRun ? true:false); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_properties (JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision, jobject jpegRevision, jobject jdepth, jobject jchangelists, jobject jproplistCallback) { JNIEntry(SVNClient, properties); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; StringArray changelists(jchangelists); if (JNIUtil::isExceptionThrown()) return; ProplistCallback callback(jproplistCallback); cl->properties(path, revision, pegRevision, EnumMapper::toDepth(jdepth), changelists, &callback); }
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) { JNIEntry(SVNClient, blame); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision, false, true); if (JNIUtil::isExceptionThrown()) return; Revision revisionStart(jrevisionStart, false, true); if (JNIUtil::isExceptionThrown()) return; Revision revisionEnd(jrevisionEnd, true); if (JNIUtil::isExceptionThrown()) return; BlameCallback callback(jblameCallback); cl->blame(path, pegRevision, revisionStart, revisionEnd, jignoreMimeType ? true : false, jincludeMergedRevisions ? true : false, &callback); }
JNIEXPORT jbyteArray JNICALL Java_org_apache_subversion_javahl_SVNClient_propertyGet (JNIEnv *env, jobject jthis, jstring jpath, jstring jname, jobject jrevision, jobject jpegRevision) { JNIEntry(SVNClient, propertyGet); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return NULL; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return NULL; JNIStringHolder name(jname); if (JNIUtil::isExceptionThrown()) return NULL; Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return NULL; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return NULL; return cl->propertyGet(path, name, revision, pegRevision); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_logMessages (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision, jobject jranges, jboolean jstopOnCopy, jboolean jdisoverPaths, jboolean jincludeMergedRevisions, jobject jrevProps, jlong jlimit, jobject jlogMessageCallback) { JNIEntry(SVNClient, logMessages); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } Revision pegRevision(jpegRevision, true); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; LogMessageCallback callback(jlogMessageCallback); StringArray revProps(jrevProps); if (JNIUtil::isExceptionThrown()) return; // Build the revision range vector from the Java array. Array ranges(jranges); if (JNIUtil::isExceptionThrown()) return; std::vector<RevisionRange> revisionRanges; std::vector<jobject> rangeVec = ranges.vector(); for (std::vector<jobject>::const_iterator it = rangeVec.begin(); it < rangeVec.end(); ++it) { RevisionRange revisionRange(*it); if (JNIUtil::isExceptionThrown()) return; revisionRanges.push_back(revisionRange); } cl->logMessages(path, pegRevision, revisionRanges, jstopOnCopy ? true: false, jdisoverPaths ? true : false, jincludeMergedRevisions ? true : false, revProps, jlimit, &callback); }
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_2ZZZ (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision, jobject jranges, jstring jlocalPath, jboolean jforce, jobject jdepth, jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly) { JNIEntry(SVNClient, merge); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder localPath(jlocalPath); if (JNIUtil::isExceptionThrown()) return; // Build the revision range vector from the Java array. Array ranges(jranges); if (JNIUtil::isExceptionThrown()) return; std::vector<RevisionRange> revisionRanges; std::vector<jobject> rangeVec = ranges.vector(); for (std::vector<jobject>::const_iterator it = rangeVec.begin(); it < rangeVec.end(); ++it) { RevisionRange revisionRange(*it); if (JNIUtil::isExceptionThrown()) return; revisionRanges.push_back(revisionRange); } cl->merge(path, pegRevision, revisionRanges, localPath, jforce ? true:false, EnumMapper::toDepth(jdepth), jignoreAncestry ? true:false, jdryRun ? true:false, jrecordOnly ? true:false); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_diff__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Ljava_lang_String_2Ljava_io_OutputStream_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZZZZZ (JNIEnv *env, jobject jthis, jstring jtarget, jobject jpegRevision, jobject jstartRevision, jobject jendRevision, jstring jrelativeToDir, jobject jstream, jobject jdepth, jobject jchangelists, jboolean jignoreAncestry, jboolean jnoDiffDeleted, jboolean jforce, jboolean jcopiesAsAdds, jboolean jignoreProps) { JNIEntry(SVNClient, diff); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder target(jtarget); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return; Revision startRevision(jstartRevision); if (JNIUtil::isExceptionThrown()) return; Revision endRevision(jendRevision); if (JNIUtil::isExceptionThrown()) return; OutputStream dataOut(jstream); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder relativeToDir(jrelativeToDir); if (JNIUtil::isExceptionThrown()) return; StringArray changelists(jchangelists); if (JNIUtil::isExceptionThrown()) return; cl->diff(target, pegRevision, startRevision, endRevision, relativeToDir, dataOut, EnumMapper::toDepth(jdepth), changelists, jignoreAncestry ? true:false, jnoDiffDeleted ? true:false, jforce ? true:false, jcopiesAsAdds ? true:false, jignoreProps ? true:false); }
JNIEXPORT jobject JNICALL Java_org_apache_subversion_javahl_SVNClient_getMergeinfo (JNIEnv *env, jobject jthis, jstring jtarget, jobject jpegRevision) { JNIEntry(SVNClient, getMergeinfo); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return NULL; } JNIStringHolder target(jtarget); if (JNIUtil::isExceptionThrown()) return NULL; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return NULL; return cl->getMergeinfo(target, pegRevision); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_getMergeinfoLog (JNIEnv *env, jobject jthis, jobject jkind, jstring jpathOrUrl, jobject jpegRevision, jstring jmergeSourceUrl, jobject jsrcPegRevision, jboolean jdiscoverChangedPaths, jobject jdepth, jobject jrevProps, jobject jlogMessageCallback) { JNIEntry(SVNClient, getMergeinfoLog); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } Revision pegRevision(jpegRevision, true); if (JNIUtil::isExceptionThrown()) return; Revision srcPegRevision(jsrcPegRevision, true); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder pathOrUrl(jpathOrUrl); if (JNIUtil::isExceptionThrown()) return; JNIStringHolder mergeSourceUrl(jmergeSourceUrl); if (JNIUtil::isExceptionThrown()) return; StringArray revProps(jrevProps); if (JNIUtil::isExceptionThrown()) return; LogMessageCallback callback(jlogMessageCallback); cl->getMergeinfoLog(EnumMapper::toMergeinfoLogKind(jkind), pathOrUrl, pegRevision, mergeSourceUrl, srcPegRevision, jdiscoverChangedPaths ? true : false, EnumMapper::toDepth(jdepth), revProps, &callback); }
JNIEXPORT jobject JNICALL Java_org_apache_subversion_javahl_SVNClient_suggestMergeSources (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision) { JNIEntry(SVNClient, suggestMergeSources); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return NULL; } JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return NULL; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return NULL; return cl->suggestMergeSources(path, pegRevision); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_SVNClient_diffSummarize__Ljava_lang_String_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Revision_2Lorg_apache_subversion_javahl_types_Depth_2Ljava_util_Collection_2ZLorg_apache_subversion_javahl_callback_DiffSummaryCallback_2 (JNIEnv *env, jobject jthis, jstring jtarget, jobject jPegRevision, jobject jStartRevision, jobject jEndRevision, jobject jdepth, jobject jchangelists, jboolean jignoreAncestry, jobject jdiffSummaryReceiver) { JNIEntry(SVNClient, diffSummarize); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return; } JNIStringHolder target(jtarget); if (JNIUtil::isExceptionThrown()) return; Revision pegRevision(jPegRevision); if (JNIUtil::isExceptionThrown()) return; Revision startRevision(jStartRevision); if (JNIUtil::isExceptionThrown()) return; Revision endRevision(jEndRevision); if (JNIUtil::isExceptionThrown()) return; DiffSummaryReceiver receiver(jdiffSummaryReceiver); if (JNIUtil::isExceptionThrown()) return; StringArray changelists(jchangelists); if (JNIUtil::isExceptionThrown()) return; cl->diffSummarize(target, pegRevision, startRevision, endRevision, EnumMapper::toDepth(jdepth), changelists, jignoreAncestry ? true : false, receiver); }
JNIEXPORT jlong JNICALL Java_org_apache_subversion_javahl_SVNClient_doSwitch (JNIEnv *env, jobject jthis, jstring jpath, jstring jurl, jobject jrevision, jobject jPegRevision, jobject jdepth, jboolean jdepthIsSticky, jboolean jignoreExternals, jboolean jallowUnverObstructions, jboolean jignoreAncestry) { JNIEntry(SVNClient, doSwitch); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return -1; } Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return -1; Revision pegRevision(jPegRevision); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder path(jpath); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder url(jurl); if (JNIUtil::isExceptionThrown()) return -1; return cl->doSwitch(path, url, revision, pegRevision, EnumMapper::toDepth(jdepth), jdepthIsSticky ? true : false, jignoreExternals ? true : false, jallowUnverObstructions ? true : false, jignoreAncestry ? true : false); }
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) { JNIEntry(SVNClient, doExport); SVNClient *cl = SVNClient::getCppObject(jthis); if (cl == NULL) { JNIUtil::throwError(_("bad C++ this")); return -1; } Revision revision(jrevision); if (JNIUtil::isExceptionThrown()) return -1; Revision pegRevision(jpegRevision); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder srcPath(jsrcPath); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder destPath(jdestPath); if (JNIUtil::isExceptionThrown()) return -1; JNIStringHolder nativeEOL(jnativeEOL); if (JNIUtil::isExceptionThrown()) return -1; return cl->doExport(srcPath, destPath, revision, pegRevision, jforce ? true : false, jignoreExternals ? true : false, EnumMapper::toDepth(jdepth), nativeEOL); }
void SvnInternalDiffJob::run() { initBeforeRun(); SvnClient cli(m_ctxt); try { QString diff; if( destination().isValid() ) { QByteArray srcba; if( source().type() == KDevelop::VcsLocation::LocalLocation ) { KUrl url = source().localUrl(); if( url.isLocalFile() ) { srcba = url.toLocalFile( KUrl::RemoveTrailingSlash ).toUtf8(); }else { srcba = url.url( KUrl::RemoveTrailingSlash ).toUtf8(); } }else { srcba = source().repositoryServer().toUtf8(); } QByteArray dstba; if( destination().type() == KDevelop::VcsLocation::LocalLocation ) { KUrl url = destination().localUrl(); if( url.isLocalFile() ) { dstba = url.toLocalFile( KUrl::RemoveTrailingSlash ).toUtf8(); }else { dstba = url.url().toUtf8(); } }else { dstba = destination().repositoryServer().toUtf8(); } svn::Revision srcRev = createSvnCppRevisionFromVcsRevision( srcRevision() ); svn::Revision dstRev = createSvnCppRevisionFromVcsRevision( dstRevision() ); if( srcba.isEmpty() || ( dstba.isEmpty() && srcRev.kind() == svn_opt_revision_unspecified && dstRev.kind() == svn_opt_revision_unspecified ) ) { throw svn::ClientException( "Not enough information for a diff"); } diff = cli.diff( svn::Path( srcba.data() ), srcRev, svn::Path( dstba.data() ), dstRev, recursive(), ignoreAncestry(), noDiffOnDelete(), ignoreContentType() ); }else { QByteArray srcba; if( source().type() == KDevelop::VcsLocation::LocalLocation ) { KUrl url = source().localUrl(); if( url.isLocalFile() ) { srcba = url.toLocalFile( KUrl::RemoveTrailingSlash ).toUtf8(); }else { srcba = url.url().toUtf8(); } }else { srcba = source().repositoryServer().toUtf8(); } svn::Revision pegRev = createSvnCppRevisionFromVcsRevision( pegRevision() ); svn::Revision srcRev = createSvnCppRevisionFromVcsRevision( srcRevision() ); svn::Revision dstRev = createSvnCppRevisionFromVcsRevision( dstRevision() ); if( srcba.isEmpty() || pegRev.kind() == svn_opt_revision_unspecified || dstRev.kind() == svn_opt_revision_unspecified || srcRev.kind() == svn_opt_revision_unspecified) { throw svn::ClientException( "Not enough information for a diff"); } //@TODO: Make sure there's no diff-cmd set via the users configuration file, can be done only via C api diff = cli.diff( svn::Path( srcba.data() ), pegRev, srcRev, dstRev, recursive(), ignoreAncestry(), noDiffOnDelete(), ignoreContentType() ); } diff = repairDiff(diff); emit gotDiff( diff ); }catch( svn::ClientException ce ) { kDebug(9510) << "Exception while doing a diff: " << m_source.localUrl() << m_source.repositoryServer() << m_srcRevision.prettyValue() << m_destination.localUrl() << m_destination.repositoryServer() << m_dstRevision.prettyValue() << QString::fromUtf8( ce.message() ); setErrorMessage( QString::fromUtf8( ce.message() ) ); m_success = false; } }