svn_boolean_t OperationContext::checkTunnel(void *tunnel_baton, const char *tunnel_name) { JNIEnv *env = JNIUtil::getEnv(); jstring jtunnel_name = JNIUtil::makeJString(tunnel_name); if (JNIUtil::isJavaExceptionThrown()) return false; static jmethodID mid = 0; if (0 == mid) { jclass cls = env->FindClass(JAVAHL_CLASS("/callback/TunnelAgent")); if (JNIUtil::isJavaExceptionThrown()) return false; mid = env->GetMethodID(cls, "checkTunnel", "(Ljava/lang/String;)Z"); if (JNIUtil::isJavaExceptionThrown()) return false; } jobject jtunnelcb = jobject(tunnel_baton); jboolean check = env->CallBooleanMethod(jtunnelcb, mid, jtunnel_name); if (JNIUtil::isJavaExceptionThrown()) return false; return svn_boolean_t(check); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_util_DiffLib_nativeFileDiff( JNIEnv* env, jobject jthis, jstring joriginal_file, jstring jmodified_file, jint jignore_space_ordinal, jboolean jignore_eol_style, jboolean jshow_c_function, jstring joriginal_header, jstring jmodified_header, jstring jheader_encoding, jstring jrelative_to_dir, jobject jresult_stream) { JNIEntry(DiffLib, nativeFileDiff); // Using a "global" request pool since we don't keep a context with // its own pool around for these functions. SVN::Pool pool; Path original(joriginal_file, pool); if (JNIUtil::isJavaExceptionThrown()) return; SVN_JNI_ERR(original.error_occurred(),); Path modified(jmodified_file, pool); if (JNIUtil::isJavaExceptionThrown()) return; SVN_JNI_ERR(modified.error_occurred(),); svn_diff_t* diff; svn_diff_file_options_t* diff_options = svn_diff_file_options_create(pool.getPool()); diff_options->ignore_space = svn_diff_file_ignore_space_t(jignore_space_ordinal); diff_options->ignore_eol_style = svn_boolean_t(jignore_eol_style); diff_options->show_c_function = svn_boolean_t(jshow_c_function); SVN_JNI_ERR(svn_diff_file_diff_2(&diff, original.c_str(), modified.c_str(), diff_options, pool.getPool()),); JNIStringHolder original_header(joriginal_header); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder modified_header(jmodified_header); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder header_encoding(jheader_encoding); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder relative_to_dir(jrelative_to_dir); if (JNIUtil::isJavaExceptionThrown()) return; OutputStream result_stream(jresult_stream); SVN_JNI_ERR(svn_diff_file_output_unified3( result_stream.getStream(pool), diff, original.c_str(), modified.c_str(), original_header.c_str(), modified_header.c_str(), header_encoding.c_str(), relative_to_dir.c_str(), diff_options->show_c_function, pool.getPool()),); }
JNIEXPORT void JNICALL Java_org_apache_subversion_javahl_util_DiffLib_nativeFileMerge( JNIEnv* env, jobject jthis, jstring joriginal_file, jstring jmodified_file, jstring jlatest_file, jint jignore_space_ordinal, jboolean jignore_eol_style, jboolean jshow_c_function, jstring jconflict_original, jstring jconflict_modified, jstring jconflict_latest, jstring jconflict_separator, jint jconflict_style_ordinal, jobject jresult_stream) { JNIEntry(DiffLib, nativeFileMerge); // Using a "global" request pool since we don't keep a context with // its own pool around for these functions. SVN::Pool pool; Path original(joriginal_file, pool); if (JNIUtil::isJavaExceptionThrown()) return; SVN_JNI_ERR(original.error_occurred(),); Path modified(jmodified_file, pool); if (JNIUtil::isJavaExceptionThrown()) return; SVN_JNI_ERR(modified.error_occurred(),); Path latest(jlatest_file, pool); if (JNIUtil::isJavaExceptionThrown()) return; SVN_JNI_ERR(latest.error_occurred(),); svn_diff_t* diff; svn_diff_file_options_t* diff_options = svn_diff_file_options_create(pool.getPool()); diff_options->ignore_space = svn_diff_file_ignore_space_t(jignore_space_ordinal); diff_options->ignore_eol_style = svn_boolean_t(jignore_eol_style); diff_options->show_c_function = svn_boolean_t(jshow_c_function); SVN_JNI_ERR(svn_diff_file_diff3_2(&diff, original.c_str(), modified.c_str(), latest.c_str(), diff_options, pool.getPool()),); JNIStringHolder conflict_original(jconflict_original); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder conflict_modified(jconflict_modified); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder conflict_latest(jconflict_latest); if (JNIUtil::isJavaExceptionThrown()) return; JNIStringHolder conflict_separator(jconflict_separator); if (JNIUtil::isJavaExceptionThrown()) return; OutputStream result_stream(jresult_stream); SVN_JNI_ERR(svn_diff_file_output_merge2( result_stream.getStream(pool), diff, original.c_str(), modified.c_str(), latest.c_str(), conflict_original.c_str(), conflict_modified.c_str(), conflict_latest.c_str(), conflict_separator.c_str(), svn_diff_conflict_display_style_t(jconflict_style_ordinal), pool.getPool()),); }