[prev in list] [next in list] [prev in thread] [next in thread]
List: subversion-commits
Subject: svn commit: r1518577 - in /subversion/trunk/subversion/bindings/javahl: native/ src/org/apache/subve
From: brane () apache ! org
Date: 2013-08-29 10:45:44
Message-ID: 20130829104545.2978E23888E7 () eris ! apache ! org
[Download RAW message or body]
Author: brane
Date: Thu Aug 29 10:45:44 2013
New Revision: 1518577
URL: http://svn.apache.org/r1518577
Log:
Updated JavaHL diff utilities to return useful values from the diff and merge
functions. Incidentally, attempted to fix the related tests on Windows.
[in subversion/bindings/javahl/src/org/apache/subversion/javahl]
* SVNUtil.java (SVNUtil.fileDiff): Return a boolean value indicating
that there were differences between the files.
(SVNUtil.fileMerge): Return a boolean value indicating that
the merge produced conflicts.
* util/DiffLib.java
(DiffLib.fileDiff, DiffLib.fileMerge,
DiffLib.nativeFileDiff, DiffLib.nativeFileMerge):
Same changes as above.
[in subversion/bindings/javahl/native]
* org_apache_subversion_javahl_util_DiffLib.cpp
(Java_org_apache_subversion_javahl_util_DiffLib_nativeFileDiff,
Java_org_apache_subversion_javahl_util_DiffLib_nativeFileMerge):
Calculate and and return the boolean return value.
[in subversion/bindings/javahl/tests/org/apache/subversion/javahl]
* UtilTests.java (UtilTests.testFileDiff): Check return value from
SVNUtil.fileDiff, and adjust expected output for platform-specific
end-of-line sequences.
(UtilTests.testFileMerge): Similar changes as above.
Modified:
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/o \
rg_apache_subversion_javahl_util_DiffLib.cpp?rev=1518577&r1=1518576&r2=1518577&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp \
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_util_DiffLib.cpp \
Thu Aug 29 10:45:44 2013 @@ -35,7 +35,7 @@
#include "svn_diff.h"
-JNIEXPORT void JNICALL
+JNIEXPORT jboolean JNICALL
Java_org_apache_subversion_javahl_util_DiffLib_nativeFileDiff(
JNIEnv* env, jobject jthis,
jstring joriginal_file,
@@ -60,13 +60,13 @@ Java_org_apache_subversion_javahl_util_D
Path original(joriginal_file, pool);
if (JNIUtil::isJavaExceptionThrown())
- return;
- SVN_JNI_ERR(original.error_occurred(),);
+ return false;
+ SVN_JNI_ERR(original.error_occurred(), false);
Path modified(jmodified_file, pool);
if (JNIUtil::isJavaExceptionThrown())
- return;
- SVN_JNI_ERR(modified.error_occurred(),);
+ return false;
+ SVN_JNI_ERR(modified.error_occurred(), false);
svn_diff_t* diff;
svn_diff_file_options_t* diff_options =
@@ -79,24 +79,27 @@ Java_org_apache_subversion_javahl_util_D
original.c_str(),
modified.c_str(),
diff_options,
- pool.getPool()),);
+ pool.getPool()),
+ false);
+
+ const jboolean diffs = svn_diff_contains_diffs(diff);
JNIStringHolder original_header(joriginal_header);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder modified_header(jmodified_header);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder header_encoding(jheader_encoding);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder relative_to_dir(jrelative_to_dir);
if (JNIUtil::isJavaExceptionThrown())
- return;
-
+ return false;
+
OutputStream result_stream(jresult_stream);
SVN_JNI_ERR(svn_diff_file_output_unified3(
@@ -105,10 +108,13 @@ Java_org_apache_subversion_javahl_util_D
original_header.c_str(), modified_header.c_str(),
header_encoding.c_str(), relative_to_dir.c_str(),
diff_options->show_c_function,
- pool.getPool()),);
+ pool.getPool()),
+ false);
+
+ return diffs;
}
-JNIEXPORT void JNICALL
+JNIEXPORT jboolean JNICALL
Java_org_apache_subversion_javahl_util_DiffLib_nativeFileMerge(
JNIEnv* env, jobject jthis,
jstring joriginal_file,
@@ -135,18 +141,18 @@ Java_org_apache_subversion_javahl_util_D
Path original(joriginal_file, pool);
if (JNIUtil::isJavaExceptionThrown())
- return;
- SVN_JNI_ERR(original.error_occurred(),);
+ return false;
+ SVN_JNI_ERR(original.error_occurred(), false);
Path modified(jmodified_file, pool);
if (JNIUtil::isJavaExceptionThrown())
- return;
- SVN_JNI_ERR(modified.error_occurred(),);
+ return false;
+ SVN_JNI_ERR(modified.error_occurred(), false);
Path latest(jlatest_file, pool);
if (JNIUtil::isJavaExceptionThrown())
- return;
- SVN_JNI_ERR(latest.error_occurred(),);
+ return false;
+ SVN_JNI_ERR(latest.error_occurred(), false);
svn_diff_t* diff;
svn_diff_file_options_t* diff_options =
@@ -160,24 +166,27 @@ Java_org_apache_subversion_javahl_util_D
modified.c_str(),
latest.c_str(),
diff_options,
- pool.getPool()),);
+ pool.getPool()),
+ false);
+
+ const jboolean conflicts = svn_diff_contains_conflicts(diff);
JNIStringHolder conflict_original(jconflict_original);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder conflict_modified(jconflict_modified);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder conflict_latest(jconflict_latest);
if (JNIUtil::isJavaExceptionThrown())
- return;
+ return false;
JNIStringHolder conflict_separator(jconflict_separator);
if (JNIUtil::isJavaExceptionThrown())
- return;
-
+ return false;
+
OutputStream result_stream(jresult_stream);
SVN_JNI_ERR(svn_diff_file_output_merge2(
@@ -188,5 +197,8 @@ Java_org_apache_subversion_javahl_util_D
conflict_latest.c_str(),
conflict_separator.c_str(),
svn_diff_conflict_display_style_t(jconflict_style_ordinal),
- pool.getPool()),);
+ pool.getPool()),
+ false);
+
+ return conflicts;
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/ \
apache/subversion/javahl/SVNUtil.java?rev=1518577&r1=1518576&r2=1518577&view=diff \
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java \
(original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNUtil.java \
Thu Aug 29 10:45:44 2013 @@ -131,23 +131,25 @@ public class SVNUtil
* This path will be stripped from the beginning of those
* file names if they are used in the unidiff index header.
* @param resultStream The stream that receives the merged output.
+ * @return <code>true</code> if there were differences between the files.
* @throws ClientException
*/
- public static void FileDiff(String originalFile,
- String modifiedFile,
- SVNUtil.DiffOptions diffOptions,
-
- String originalHeader,
- String modifiedHeader,
- String headerEncoding,
- String relativeToDir,
+ public static boolean fileDiff(String originalFile,
+ String modifiedFile,
+ SVNUtil.DiffOptions diffOptions,
+
+ String originalHeader,
+ String modifiedHeader,
+ String headerEncoding,
+ String relativeToDir,
- OutputStream resultStream)
+ OutputStream resultStream)
throws ClientException
{
- new DiffLib().FileDiff(originalFile, modifiedFile, diffOptions,
- originalHeader, modifiedHeader, headerEncoding,
- relativeToDir, resultStream);
+ return new DiffLib().fileDiff(originalFile, modifiedFile, diffOptions,
+ originalHeader, modifiedHeader,
+ headerEncoding,
+ relativeToDir, resultStream);
}
@@ -171,26 +173,27 @@ public class SVNUtil
* @param conflictSeparator Optional custom conflict separator.
* @param conflictStyle Determines how conflicts are displayed.
* @param resultStream The stream that receives the merged output.
+ * @return <code>true</code> if there were any conflicts.
* @throws ClientException
*/
- public static void FileMerge(String originalFile,
- String modifiedFile,
- String latestFile,
- DiffOptions diffOptions,
-
- String conflictOriginal,
- String conflictModified,
- String conflictLatest,
- String conflictSeparator,
- ConflictDisplayStyle conflictStyle,
+ public static boolean fileMerge(String originalFile,
+ String modifiedFile,
+ String latestFile,
+ DiffOptions diffOptions,
+
+ String conflictOriginal,
+ String conflictModified,
+ String conflictLatest,
+ String conflictSeparator,
+ ConflictDisplayStyle conflictStyle,
- OutputStream resultStream)
+ OutputStream resultStream)
throws ClientException
{
- new DiffLib().FileMerge(originalFile, modifiedFile, latestFile,
- diffOptions,
- conflictOriginal, conflictModified,
- conflictLatest, conflictSeparator,
- conflictStyle, resultStream);
+ return new DiffLib().fileMerge(originalFile, modifiedFile, latestFile,
+ diffOptions,
+ conflictOriginal, conflictModified,
+ conflictLatest, conflictSeparator,
+ conflictStyle, resultStream);
}
-}
\ No newline at end of file
+}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/ \
apache/subversion/javahl/util/DiffLib.java?rev=1518577&r1=1518576&r2=1518577&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java \
(original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/util/DiffLib.java \
Thu Aug 29 10:45:44 2013 @@ -43,42 +43,10 @@ public class DiffLib
NativeResources.loadNativeLibrary();
}
- /** @see ISVNUtil.FileDiff */
- public void FileDiff(String originalFile,
- String modifiedFile,
- SVNUtil.DiffOptions diffOptions,
-
- String originalHeader,
- String modifiedHeader,
- String headerEncoding,
- String relativeToDir,
-
- OutputStream resultStream)
- throws ClientException
- {
- nativeFileDiff(originalFile, modifiedFile,
-
- // Interpret the diff options
- (diffOptions == null
- ? SVNUtil.DiffOptions.IgnoreSpace.none.ordinal()
- : diffOptions.ignoreSpace.ordinal()),
- (diffOptions == null ? false
- : diffOptions.ignoreEolStyle),
- (diffOptions == null ? false
- : diffOptions.showCFunction),
-
- originalHeader, modifiedHeader, headerEncoding,
- relativeToDir, resultStream);
- }
-
- private native
- void nativeFileDiff(String originalFile,
+ /** @see ISVNUtil.fileDiff */
+ public boolean fileDiff(String originalFile,
String modifiedFile,
-
- // Interpreted diff options
- int ignoreSpace,
- boolean ignoreEolStyle,
- boolean showCFunction,
+ SVNUtil.DiffOptions diffOptions,
String originalHeader,
String modifiedHeader,
@@ -86,61 +54,93 @@ public class DiffLib
String relativeToDir,
OutputStream resultStream)
- throws ClientException;
-
- /** @see ISVNUtil.FileMerge */
- public void FileMerge(String originalFile,
- String modifiedFile,
- String latestFile,
- SVNUtil.DiffOptions diffOptions,
-
- String conflictOriginal,
- String conflictModified,
- String conflictLatest,
- String conflistSeparator,
- SVNUtil.ConflictDisplayStyle conflictStyle,
-
- OutputStream resultStream)
throws ClientException
{
- nativeFileMerge(originalFile, modifiedFile, latestFile,
+ return nativeFileDiff(originalFile, modifiedFile,
- // Interpret the diff options
- (diffOptions == null
- ? SVNUtil.DiffOptions.IgnoreSpace.none.ordinal()
- : diffOptions.ignoreSpace.ordinal()),
- (diffOptions == null ? false
- : diffOptions.ignoreEolStyle),
- (diffOptions == null ? false
- : diffOptions.showCFunction),
+ // Interpret the diff options
+ (diffOptions == null
+ ? SVNUtil.DiffOptions.IgnoreSpace.none.ordinal()
+ : diffOptions.ignoreSpace.ordinal()),
+ (diffOptions == null ? false
+ : diffOptions.ignoreEolStyle),
+ (diffOptions == null ? false
+ : diffOptions.showCFunction),
- conflictOriginal, conflictModified, conflictLatest,
- conflistSeparator,
-
- // Interpret the conflict style
- conflictStyle.ordinal(),
-
- resultStream);
+ originalHeader, modifiedHeader, headerEncoding,
+ relativeToDir, resultStream);
}
private native
- void nativeFileMerge(String originalFile,
+ boolean nativeFileDiff(String originalFile,
+ String modifiedFile,
+
+ // Interpreted diff options
+ int ignoreSpace,
+ boolean ignoreEolStyle,
+ boolean showCFunction,
+
+ String originalHeader,
+ String modifiedHeader,
+ String headerEncoding,
+ String relativeToDir,
+
+ OutputStream resultStream)
+ throws ClientException;
+
+ /** @see ISVNUtil.fileMerge */
+ public boolean fileMerge(String originalFile,
String modifiedFile,
String latestFile,
-
- // Interpreted diff options
- int ignoreSpace,
- boolean ignoreEolStyle,
- boolean showCFunction,
+ SVNUtil.DiffOptions diffOptions,
String conflictOriginal,
String conflictModified,
String conflictLatest,
String conflistSeparator,
-
- // Interpreted conflict display style
- int conflictStyle,
+ SVNUtil.ConflictDisplayStyle conflictStyle,
OutputStream resultStream)
+ throws ClientException
+ {
+ return nativeFileMerge(originalFile, modifiedFile, latestFile,
+
+ // Interpret the diff options
+ (diffOptions == null
+ ? SVNUtil.DiffOptions.IgnoreSpace.none.ordinal()
+ : diffOptions.ignoreSpace.ordinal()),
+ (diffOptions == null ? false
+ : diffOptions.ignoreEolStyle),
+ (diffOptions == null ? false
+ : diffOptions.showCFunction),
+
+ conflictOriginal, conflictModified,
+ conflictLatest, conflistSeparator,
+
+ // Interpret the conflict style
+ conflictStyle.ordinal(),
+
+ resultStream);
+ }
+
+ private native
+ boolean nativeFileMerge(String originalFile,
+ String modifiedFile,
+ String latestFile,
+
+ // Interpreted diff options
+ int ignoreSpace,
+ boolean ignoreEolStyle,
+ boolean showCFunction,
+
+ String conflictOriginal,
+ String conflictModified,
+ String conflictLatest,
+ String conflistSeparator,
+
+ // Interpreted conflict display style
+ int conflictStyle,
+
+ OutputStream resultStream)
throws ClientException;
}
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/or \
g/apache/subversion/javahl/UtilTests.java?rev=1518577&r1=1518576&r2=1518577&view=diff \
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java \
(original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/UtilTests.java \
Thu Aug 29 10:45:44 2013 @@ -35,6 +35,8 @@ import org.junit.Assert;
*/
public class UtilTests extends SVNTests
{
+ private final static String NL = System.getProperty("line.separator");
+
/**
* Base name of all our tests.
*/
@@ -85,14 +87,15 @@ public class UtilTests extends SVNTests
writeFileContents(modified, "\nmodified\n\n");
ByteArrayOutputStream result = new ByteArrayOutputStream();
- SVNUtil.FileDiff(original.getAbsolutePath(),
- modified.getAbsolutePath(),
- null, "original", "modified", "UTF-8", null,
- result);
-
- final byte[] expected = ("--- original\n" +
- "+++ modified\n" +
- "@@ -3,7 +3,7 @@\n" +
+ boolean diffs = SVNUtil.fileDiff(original.getAbsolutePath(),
+ modified.getAbsolutePath(),
+ null, "original", "modified", "UTF-8",
+ null, result);
+ assertTrue(diffs);
+
+ final byte[] expected = ("--- original" + NL +
+ "+++ modified" + NL +
+ "@@ -3,7 +3,7 @@" + NL +
" 3\n 4\n \n" +
"-original\n" +
"+modified\n" +
@@ -111,26 +114,27 @@ public class UtilTests extends SVNTests
writeFileContents(latest, "\nlatest\n\n");
ByteArrayOutputStream result = new ByteArrayOutputStream();
- SVNUtil.FileMerge(original.getAbsolutePath(),
- modified.getAbsolutePath(),
- latest.getAbsolutePath(),
- null,
- "||||||| base",
- "<<<<<<< branch",
- ">>>>>>> local",
- "=======",
- SVNUtil.ConflictDisplayStyle.modified_original_latest,
- result);
+ boolean conflicts = SVNUtil.fileMerge(original.getAbsolutePath(),
+ modified.getAbsolutePath(),
+ latest.getAbsolutePath(),
+ null,
+ "||||||| base",
+ "<<<<<<< branch",
+ ">>>>>>> local",
+ "=======",
+ \
SVNUtil.ConflictDisplayStyle.modified_original_latest, + \
result); + assertTrue(conflicts);
final byte[] expected = ("1\n2\n3\n4\n\n" +
- "<<<<<<< branch\n" +
+ "<<<<<<< branch" + NL +
"modified\n" +
- "||||||| base\n" +
+ "||||||| base" + NL +
"original\n" +
- "=======\n" +
+ "=======" + NL +
"latest\n" +
- ">>>>>>> local\n\n" +
- "N-3\nN-2\nN-1\nN\n").getBytes();
+ ">>>>>>> local" + NL +
+ "\nN-3\nN-2\nN-1\nN\n").getBytes();
Assert.assertArrayEquals(expected, result.toByteArray());
}
}
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic