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; /**