You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2010/03/10 15:29:34 UTC

svn commit: r921364 - in /subversion/trunk/subversion/bindings/javahl: native/org_apache_subversion_javahl_SVNClient.cpp src/org/apache/subversion/javahl/SVNClient.java

Author: hwright
Date: Wed Mar 10 14:29:33 2010
New Revision: 921364

URL: http://svn.apache.org/viewvc?rev=921364&view=rev
Log:
JavaHL: More nativization of collections, this time with revision range lists.

[ in subversion/bindings/javahl/ ]
* native/org_apache_subversion_javahl_SVNClient.cpp
  (Java_org_apache_subversion_javahl_SVNClient_logMessages,
   Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_util_List_2Ljava_lang_String_2ZIZZZ):
    Adjust to unpack the list of ranges.

* src/org/apache/subversion/javahl/SVNClient.java
  (logMessages, merge): Pass the List of RevisionRanges directly to the native
    implementations, remove wrappers.

Modified:
    subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
    subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java

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=921364&r1=921363&r2=921364&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 Wed Mar 10 14:29:33 2010
@@ -261,9 +261,9 @@ Java_org_apache_subversion_javahl_SVNCli
 JNIEXPORT void JNICALL
 Java_org_apache_subversion_javahl_SVNClient_logMessages
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
- jobjectArray jranges, jboolean jstopOnCopy,
- jboolean jdisoverPaths, jboolean jincludeMergedRevisions,
- jobject jrevProps, jlong jlimit, jobject jlogMessageCallback)
+ jobject jranges, jboolean jstopOnCopy, jboolean jdisoverPaths,
+ jboolean jincludeMergedRevisions, jobject jrevProps, jlong jlimit,
+ jobject jlogMessageCallback)
 {
   JNIEntry(SVNClient, logMessages);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -287,22 +287,17 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   // Build the revision range vector from the Java array.
-  std::vector<RevisionRange> revisionRanges;
-
-  jint arraySize = env->GetArrayLength(jranges);
+  Array ranges(jranges);
   if (JNIUtil::isExceptionThrown())
     return;
 
-  if (JNIUtil::isExceptionThrown())
-    return;
+  std::vector<RevisionRange> revisionRanges;
+  std::vector<jobject> rangeVec = ranges.vector();
 
-  for (int i = 0; i < arraySize; ++i)
+  for (std::vector<jobject>::const_iterator it = rangeVec.begin();
+        it < rangeVec.end(); ++it)
     {
-      jobject elem = env->GetObjectArrayElement(jranges, i);
-      if (JNIUtil::isExceptionThrown())
-        return;
-
-      RevisionRange revisionRange(elem);
+      RevisionRange revisionRange(*it);
       if (JNIUtil::isExceptionThrown())
         return;
 
@@ -871,10 +866,10 @@ Java_org_apache_subversion_javahl_SVNCli
 }
 
 JNIEXPORT void JNICALL
-Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2_3Lorg_apache_subversion_javahl_RevisionRange_2Ljava_lang_String_2ZIZZZ
+Java_org_apache_subversion_javahl_SVNClient_merge__Ljava_lang_String_2Lorg_apache_subversion_javahl_Revision_2Ljava_util_List_2Ljava_lang_String_2ZIZZZ
 (JNIEnv *env, jobject jthis, jstring jpath, jobject jpegRevision,
- jobjectArray jranges, jstring jlocalPath, jboolean jforce,
- jint jdepth, jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly)
+ jobject jranges, jstring jlocalPath, jboolean jforce, jint jdepth,
+ jboolean jignoreAncestry, jboolean jdryRun, jboolean jrecordOnly)
 {
   JNIEntry(SVNClient, merge);
   SVNClient *cl = SVNClient::getCppObject(jthis);
@@ -897,22 +892,17 @@ Java_org_apache_subversion_javahl_SVNCli
     return;
 
   // Build the revision range vector from the Java array.
-  std::vector<RevisionRange> revisionRanges;
-
-  jint arraySize = env->GetArrayLength(jranges);
+  Array ranges(jranges);
   if (JNIUtil::isExceptionThrown())
     return;
 
-  if (JNIUtil::isExceptionThrown())
-    return;
+  std::vector<RevisionRange> revisionRanges;
+  std::vector<jobject> rangeVec = ranges.vector();
 
-  for (int i = 0; i < arraySize; ++i)
+  for (std::vector<jobject>::const_iterator it = rangeVec.begin();
+        it < rangeVec.end(); ++it)
     {
-      jobject elem = env->GetObjectArrayElement(jranges, i);
-      if (JNIUtil::isExceptionThrown())
-        return;
-
-      RevisionRange revisionRange(elem);
+      RevisionRange revisionRange(*it);
       if (JNIUtil::isExceptionThrown())
         return;
 

Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java?rev=921364&r1=921363&r2=921364&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java Wed Mar 10 14:29:33 2010
@@ -154,35 +154,14 @@ public class SVNClient implements ISVNCl
     /**
      * @since 1.6
      */
-    public void logMessages(String path,
-                            Revision pegRevision,
-                            List<RevisionRange> revisionRanges,
-                            boolean stopOnCopy,
-                            boolean discoverPath,
-                            boolean includeMergedRevisions,
-                            Set<String> revProps,
-                            long limit,
-                            LogMessageCallback callback)
-            throws ClientException
-    {
-        this.logMessages(path, pegRevision,
-                         revisionRanges == null ? null
-                            : revisionRanges.toArray(new RevisionRange[
-                                                        revisionRanges.size()]),
-                         stopOnCopy, discoverPath, includeMergedRevisions,
-                         revProps, limit, callback);
-    }
-
-    private native void logMessages(String path,
-                                    Revision pegRevision,
-                                    RevisionRange[] revisionRanges,
-                                    boolean stopOnCopy,
-                                    boolean discoverPath,
-                                    boolean includeMergedRevisions,
-                                    Set<String> revProps,
-                                    long limit,
-                                    LogMessageCallback 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)
             throws ClientException;
+
     /**
      * @since 1.5
      */
@@ -354,22 +333,10 @@ public class SVNClient implements ISVNCl
     /**
      * @since 1.5
      */
-    public void merge(String path, Revision pegRevision,
-                      List<RevisionRange> revisions, String localPath,
-                      boolean force, int depth, boolean ignoreAncestry,
-                      boolean dryRun, boolean recordOnly)
-            throws ClientException
-    {
-        this.merge(path, pegRevision,
-                   revisions == null ? null
-                    : revisions.toArray(new RevisionRange[revisions.size()]),
-                   localPath, force, depth, ignoreAncestry, dryRun, recordOnly);
-    }
-
-    private native void merge(String path, Revision pegRevision,
-                              RevisionRange[] revisions, String localPath,
-                              boolean force, int depth, boolean ignoreAncestry,
-                              boolean dryRun, boolean recordOnly)
+    public native void merge(String path, Revision pegRevision,
+                             List<RevisionRange> revisions, String localPath,
+                             boolean force, int depth, boolean ignoreAncestry,
+                             boolean dryRun, boolean recordOnly)
             throws ClientException;
 
     /**