Author: brane
Date: Tue Jan 15 10:20:26 2019
New Revision: 1851333
URL: http://svn.apache.org/viewvc?rev=1851333&view=rev
Log:
Fix issue #4801: Make JavaHL blame return byte[] file contents in the
blame callback instead of assuming they can be converted to String.
[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* ISVNClient.java
(ISVNClient.blame): Add a new overload that uses the new BlameLineCallback.
Deprecate the other two overloads that use BlameCallback.
* SVNClient.java
(SVNClient.blame): Implement new native overload and deprecate the old ones.
(SVNClient.BlameCallbackAdapter): New helper class.
* callback/BlameCallback.java
(BlameCallback): Deprecated.
* callback/BlameLineCallback.java
(BlameLineCallback): New, replaces BlameCallback.
[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* BasicTests.java
(testBasicBlame, testBlameWithDiffOptions): Suppress deprecation warnings
as these tests use the old API, and should continue to do so in order to
test the callback adapter.
(testBinaryBlame): New test case.
(collectBlameLines, BlameCallbackImpl): Suppress deprecation warnings.
(BlameLineCallbackImpl): New helper class.
* ExceptionTests.java
(testBlameCallback): Use the new API in this test case.
[in subversion/bindings/javahl/native]
* org_apache_subversion_javahl_SVNClient.cpp
(Java_org_apache_subversion_javahl_SVNClient_blame): Update parameter order.
* BlameCallback.cpp
(BlameCallback::singleLine): Use BlameLineCallback instead of BlameCallback.
Added:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameLineCallback.java
(with props)
Modified:
subversion/trunk/subversion/bindings/javahl/native/BlameCallback.cpp
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/BlameCallback.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/BlameCallback.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/BlameCallback.cpp?rev=1851333&r1=1851332&r2=1851333&view=diff
==
--- subversion/trunk/subversion/bindings/javahl/native/BlameCallback.cpp
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/BlameCallback.cpp Tue
Jan 15 10:20:26 2019
@@ -89,13 +89,13 @@ BlameCallback::singleLine(apr_int64_t li
static jmethodID mid = 0;
if (mid == 0)
{
- jclass clazz = env->FindClass(JAVAHL_CLASS("/callback/BlameCallback"));
+ jclass clazz =
env->FindClass(JAVAHL_CLASS("/callback/BlameLineCallback"));
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN(SVN_NO_ERROR);
mid = env->GetMethodID(clazz, "singleLine",
"(JJLjava/util/Map;JLjava/util/Map;"
- "Ljava/lang/String;Ljava/lang/String;Z)V");
+ "Ljava/lang/String;Z[B)V");
if (JNIUtil::isJavaExceptionThrown() || mid == 0)
POP_AND_RETURN(SVN_NO_ERROR);
}
@@ -117,14 +117,14 @@ BlameCallback::singleLine(apr_int64_t li
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN(SVN_NO_ERROR);
- jstring jline = JNIUtil::makeJString(line->data);
+ jbyteArray jline = JNIUtil::makeJByteArray(line);
if (JNIUtil::isJavaExceptionThrown())
POP_AND_RETURN(SVN_NO_ERROR);
// call the Java method
env->CallVoidMethod(m_callback, mid, (jlong)line_no, (jlong)revision,
jrevProps, (jlong)mergedRevision, jmergedRevProps,
- jmergedPath, jline, (jboolean)localChange);
+ jmergedPath, (jboolean)localChange, jline);
POP_AND_RETURN_EXCEPTION_AS_SVNERROR();
}
Modified:
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp?rev=1851333&r1=1851332&r2=1851333&view=diff
==
---
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
(original)
+++
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
Tue Jan 15 10:20:26 2019
@@ -1658,8 +1658,8 @@ JNIEXPORT void JNICALL
Java_org_apache_subversion_javahl_SVNClient_blame
(JNIEnv *env, jobject jthis, jstring jp