On 11.11.2016 14:02, Branko Čibej wrote:
> One solution would be to introduce an overload of the
> ISVNClient.logMessages() method that would have the option to return all
> revprops.
In fact, the attached patch does just that. Can you test it, please?
-- Brane
Index: subversion/bindings/javahl/native/SVNClient.cpp
===================================================================
--- subversion/bindings/javahl/native/SVNClient.cpp (revision 1769285)
+++ subversion/bindings/javahl/native/SVNClient.cpp (working copy)
@@ -265,7 +265,8 @@
void SVNClient::logMessages(const char *path, Revision &pegRevision,
std::vector<RevisionRange> &logRanges,
bool stopOnCopy, bool discoverPaths,
- bool includeMergedRevisions, StringArray &revProps,
+ bool includeMergedRevisions,
+ StringArray &revProps, bool allRevProps,
int limit, LogMessageCallback *callback)
{
SVN::Pool subPool(pool);
@@ -285,10 +286,13 @@
if (JNIUtil::isExceptionThrown())
return;
+ const apr_array_header_t *revprops = NULL;
+ if (!allRevProps)
+ revprops = revProps.array(subPool);
+
SVN_JNI_ERR(svn_client_log5(targets, pegRevision.revision(), ranges,
limit, discoverPaths, stopOnCopy,
- includeMergedRevisions,
- revProps.array(subPool),
+ includeMergedRevisions, revprops,
LogMessageCallback::callback, callback, ctx,
subPool.getPool()), );
}
Index: subversion/bindings/javahl/native/SVNClient.h
===================================================================
--- subversion/bindings/javahl/native/SVNClient.h (revision 1769285)
+++ subversion/bindings/javahl/native/SVNClient.h (working copy)
@@ -172,7 +172,7 @@
void logMessages(const char *path, Revision &pegRevision,
std::vector<RevisionRange> &ranges, bool stopOnCopy,
bool discoverPaths, bool includeMergedRevisions,
- StringArray &revProps,
+ StringArray &revProps, bool allRevProps,
int limit, LogMessageCallback *callback);
jobject getVersionExtended(bool verbose);
jstring getAdminDirectoryName();
Index:
subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
===================================================================
---
subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
(revision 1769285)
+++
subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
(working copy)
@@ -313,8 +313,9 @@
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)
+ jboolean jincludeMergedRevisions,
+ jobject jrevProps, jboolean jallRevProps,
+ jlong jlimit, jobject jlogMessageCallback)
{
JNIEntry(SVNClient, logMessages);
@@ -366,7 +367,8 @@
cl->logMessages(path, pegRevision, revisionRanges,
jstopOnCopy ? true: false, jdisoverPaths ? true : false,
jincludeMergedRevisions ? true : false,
- revProps, int(jlimit), &callback);
+ revProps, jallRevProps ? true : false,
+ int(jlimit), &callback);
}
JNIEXPORT jlong JNICALL
Index:
subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
===================================================================
--- subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
(revision 1769285)
+++ subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
(working copy)
@@ -180,6 +180,21 @@
/**
* Retrieve the log messages for an item.
+ * <p>
+ * Behaves like the 1.10 version with <code>allRevProps = false</code>
+ * @deprecated
+ */
+ @Deprecated
+ void logMessages(String path, Revision pegRevision,
+ List<RevisionRange> ranges, boolean stopOnCopy,
+ boolean discoverPath, boolean includeMergedRevisions,
+ Set<String> revProps, long limit,
+ LogMessageCallback callback)
+ throws ClientException;
+
+
+ /**
+ * Retrieve the log messages for an item.
* @param path path or url to get the log message for.
* @param pegRevision revision to interpret path
* @param ranges an array of revision ranges to show
@@ -189,15 +204,19 @@
* @param includeMergedRevisions include log messages for revisions which
* were merged.
* @param revProps the revprops to retrieve
+ * @param allRevProps if <code>true</code>, ignore the
+ * <code>revProps</code> parameter and retrieve all
+ * revision properties
* @param limit limit the number of log messages (if 0 or less no
* limit)
* @param callback the object to receive the log messages
+ * @since 1.10
*/
void logMessages(String path, Revision pegRevision,
List<RevisionRange> ranges, boolean stopOnCopy,
boolean discoverPath, boolean includeMergedRevisions,
- Set<String> revProps, long limit,
- LogMessageCallback callback)
+ Set<String> revProps, boolean allRevProps,
+ long limit, LogMessageCallback callback)
throws ClientException;
/**
Index:
subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
===================================================================
--- subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
(revision 1769285)
+++ subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
(working copy)
@@ -157,12 +157,24 @@
public native void setTunnelAgent(TunnelAgent tunnelAgent);
+ @Deprecated
+ public void logMessages(String path, Revision pegRevision,
+ List<RevisionRange> ranges, boolean stopOnCopy,
+ boolean discoverPath, boolean
includeMergedRevisions,
+ Set<String> revProps, long limit,
+ LogMessageCallback callback)
+ throws ClientException
+ {
+ logMessages(path, pegRevision, ranges, stopOnCopy, discoverPath,
+ includeMergedRevisions, revProps, false, limit, callback);
+ }
+
public native void logMessages(String path, Revision pegRevision,
List<RevisionRange> revisionRanges,
boolean stopOnCopy, boolean discoverPath,
boolean includeMergedRevisions,
- Set<String> revProps, long limit,
- LogMessageCallback callback)
+ Set<String> revProps, boolean allRevProps,
+ long limit, LogMessageCallback callback)
throws ClientException;
public native long checkout(String moduleName, String destPath,
Index:
subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
===================================================================
---
subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
(revision 1769285)
+++
subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
(working copy)
@@ -4193,10 +4193,11 @@
Set<String> revProps = new HashSet<String>(2);
revProps.add("kfogel");
revProps.add("cmpilato");
+ // Testing variant with allRevProps = false
client.logMessages(thisTest.getWCPath(), Revision.getInstance(2),
toRevisionRange(Revision.getInstance(2),
Revision.getInstance(2)),
- false, false, false, revProps, 0,
+ false, false, false, revProps, false, 0,
new LogMessageCallback () {
public void singleMessage(Set<ChangePath> changedPaths,
long revision,
@@ -4671,13 +4672,10 @@
}
MyLogMessageCallback callback = new MyLogMessageCallback();
- Set<String> revProps = new HashSet<String>();
- revProps.add("svn:log");
- revProps.add("svn:date");
- revProps.add("svn:author");
+ // Testing variant with allRevProps = true
client.logMessages(path, pegRevision, revisionRanges, stopOnCopy,
- discoverPath, includeMergedRevisions, revProps,
- limit, callback);
+ discoverPath, includeMergedRevisions, null,
+ true, limit, callback);
return callback.getMessages();
}
Index:
subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
===================================================================
---
subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
(revision 1769285)
+++
subversion/bindings/javahl/tests/org/apache/subversion/javahl/ExceptionTests.java
(working copy)
@@ -241,10 +241,11 @@
{
List<RevisionRange> ranges = new ArrayList<RevisionRange>(1);
ranges.add(new RevisionRange(null, null));
+ // Testing variant with allRevProps = false
client.logMessages(thisTest.getWorkingCopy() + "/iota",
Revision.getInstance(1), ranges,
false, false, false,
- null, 2,
+ null, false, 2,
new LogMessageCallback()
{
public void singleMessage(