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(

Reply via email to