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/03 22:57:46 UTC
svn commit: r918715 - in /subversion/trunk/subversion/bindings/javahl:
native/ src/org/apache/subversion/javahl/ src/org/tigris/subversion/javahl/
tests/org/apache/subversion/javahl/
Author: hwright
Date: Wed Mar 3 21:57:46 2010
New Revision: 918715
URL: http://svn.apache.org/viewvc?rev=918715&view=rev
Log:
JavaHL: More API updates to use the Collections framework, this time in the
Mergeinfo class.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/BasicTests.java:
Update tests for new datastructures.
* native/CreateJ.cpp,
native/CreateJ.h
(RevisionRangeArray): Rename to...
(RevisionRangeList): ...this, and update to return a List.
* native/SVNClient.cpp
(getMergeinfo): Create a RevisionRangeList, per the new API.
* src/org/tigris/subversion/javahl/Mergeinfo.java
(Mergeinfo): Update wrapper to use the new data structures.
* src/org/apache/subversion/javahl/Mergeinfo.java
(addRevisions, getPaths, getRevisionRange): Update to use Java Collections.
Modified:
subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
subversion/trunk/subversion/bindings/javahl/native/CreateJ.h
subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Mergeinfo.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Wed Mar 3 21:57:46 2010
@@ -354,36 +354,57 @@
}
-jobjectArray
-CreateJ::RevisionRangeArray(apr_array_header_t *ranges)
+jobject
+CreateJ::RevisionRangeList(apr_array_header_t *ranges)
{
- JNIEnv *env = JNIUtil::getEnv();
+ JNIEnv *env = JNIUtil::getEnv();
+
+ jclass clazz = env->FindClass("java/util/ArrayList");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
- jclass clazz = env->FindClass(JAVA_PACKAGE "/RevisionRange");
- if (JNIUtil::isJavaExceptionThrown())
+ static jmethodID init_mid = 0;
+ if (init_mid == 0)
+ {
+ init_mid = env->GetMethodID(clazz, "<init>", "()V");
+ if (JNIUtil::isJavaExceptionThrown())
return NULL;
+ }
- jobjectArray jranges = env->NewObjectArray(ranges->nelts, clazz, NULL);
+ static jmethodID add_mid = 0;
+ if (add_mid == 0)
+ {
+ add_mid = env->GetMethodID(clazz, "add", "(Ljava/lang/Object;)Z");
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+ }
+
+ jobject jranges = env->NewObject(clazz, init_mid);
- for (int i = 0; i < ranges->nelts; ++i)
+ for (int i = 0; i < ranges->nelts; ++i)
{
- // Convert svn_merge_range_t *'s to Java RevisionRange objects.
- svn_merge_range_t *range =
- APR_ARRAY_IDX(ranges, i, svn_merge_range_t *);
- jobject jrange = RevisionRange::makeJRevisionRange(range);
- if (jrange == NULL)
- return NULL;
+ // Convert svn_merge_range_t *'s to Java RevisionRange objects.
+ svn_merge_range_t *range =
+ APR_ARRAY_IDX(ranges, i, svn_merge_range_t *);
- env->SetObjectArrayElement(jranges, i, jrange);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ jobject jrange = RevisionRange::makeJRevisionRange(range);
+ if (jrange == NULL)
+ return NULL;
+
+ env->CallObjectMethod(jranges, add_mid, jrange);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
- env->DeleteLocalRef(jrange);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ env->DeleteLocalRef(jrange);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
}
- return jranges;
+ env->DeleteLocalRef(clazz);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
+ return jranges;
}
jobject
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.h?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.h Wed Mar 3 21:57:46 2010
@@ -49,8 +49,8 @@
static jobject
Lock(const svn_lock_t *lock);
- static jobjectArray
- RevisionRangeArray(apr_array_header_t *ranges);
+ static jobject
+ RevisionRangeList(apr_array_header_t *ranges);
static jobject
StringSet(apr_array_header_t *strings);
@@ -66,6 +66,9 @@
protected:
static jobject
ConflictVersion(const svn_wc_conflict_version_t *version);
+
+ static jobject
+ Collection(std::vector<jobject> &object, const char *className);
};
#endif // CREATEJ_H
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp Wed Mar 3 21:57:46 2010
@@ -793,7 +793,7 @@
{
addRevisions = env->GetMethodID(clazz, "addRevisions",
"(Ljava/lang/String;"
- "[L"JAVA_PACKAGE"/RevisionRange;)V");
+ "Ljava/util/List;)V");
if (JNIUtil::isJavaExceptionThrown())
return NULL;
}
@@ -812,8 +812,8 @@
apr_hash_this(hi, &path, NULL, &val);
jstring jpath = JNIUtil::makeJString((const char *) path);
- jobjectArray jranges =
- CreateJ::RevisionRangeArray((apr_array_header_t *) val);
+ jobject jranges =
+ CreateJ::RevisionRangeList((apr_array_header_t *) val);
env->CallVoidMethod(jmergeinfo, addRevisions, jpath, jranges);
@@ -825,6 +825,10 @@
return NULL;
}
+ env->DeleteLocalRef(clazz);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
+
return jmergeinfo;
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Mergeinfo.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Mergeinfo.java?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Mergeinfo.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Mergeinfo.java Wed Mar 3 21:57:46 2010
@@ -77,7 +77,7 @@
* @throws SubversionException If range list contains objects of
* type other than RevisionRange.
*/
- public void addRevisions(String mergeSrc, RevisionRange[] ranges)
+ public void addRevisions(String mergeSrc, List<RevisionRange> ranges)
{
for (RevisionRange range : ranges)
addRevisionRange(mergeSrc, range);
@@ -103,12 +103,9 @@
* Get the merge source URLs.
* @return The merge source URLs.
*/
- public String[] getPaths()
+ public Set<String> getPaths()
{
- Set<String> pathSet = mergeSources.keySet();
- if (pathSet == null)
- return null;
- return pathSet.toArray(new String[pathSet.size()]);
+ return mergeSources.keySet();
}
/**
@@ -128,12 +125,9 @@
* @param mergeSrc The merge source URL, or <code>null</code>.
* @return Array of RevisionRange objects, or <code>null</code>.
*/
- public RevisionRange[] getRevisionRange(String mergeSrc)
+ public List<RevisionRange> getRevisionRange(String mergeSrc)
{
- List<RevisionRange> revisions = this.getRevisions(mergeSrc);
- if (revisions == null)
- return null;
- return revisions.toArray(new RevisionRange[revisions.size()]);
+ return this.getRevisions(mergeSrc);
}
/**
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/Mergeinfo.java Wed Mar 3 21:57:46 2010
@@ -74,19 +74,19 @@
public Mergeinfo(org.apache.subversion.javahl.Mergeinfo aMergeinfo)
{
this();
- String[] srcPaths = aMergeinfo.getPaths();
+ Set<String> srcPaths = aMergeinfo.getPaths();
- for (int i = 0; i < srcPaths.length; i++)
+ for (String srcPath : srcPaths)
{
- org.apache.subversion.javahl.RevisionRange[] aRange =
- aMergeinfo.getRevisionRange(srcPaths[i]);
+ List<org.apache.subversion.javahl.RevisionRange> aRanges =
+ aMergeinfo.getRevisionRange(srcPath);
List<RevisionRange> list = new ArrayList<RevisionRange>();
- for (int j = 0; j < aRange.length; j++)
+ for (org.apache.subversion.javahl.RevisionRange range : aRanges)
{
- list.add(new RevisionRange(aRange[j]));
+ list.add(new RevisionRange(range));
}
- mergeSources.put(srcPaths[i], list);
+ mergeSources.put(srcPath, list);
}
}
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java?rev=918715&r1=918714&r2=918715&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java Wed Mar 3 21:57:46 2010
@@ -189,17 +189,17 @@
String mergeInfoPropertyValue =
"/trunk:1-300,305,307,400-405\n/branches/branch:308-400";
Mergeinfo info = new Mergeinfo(mergeInfoPropertyValue);
- String[] paths = info.getPaths();
- assertEquals(2, paths.length);
- RevisionRange[] trunkRange = info.getRevisionRange("/trunk");
- assertEquals(4, trunkRange.length);
- assertEquals("1-300", trunkRange[0].toString());
- assertEquals("305", trunkRange[1].toString());
- assertEquals("307", trunkRange[2].toString());
- assertEquals("400-405", trunkRange[3].toString());
- RevisionRange[] branchRange =
+ Set<String> paths = info.getPaths();
+ assertEquals(2, paths.size());
+ List<RevisionRange> trunkRange = info.getRevisionRange("/trunk");
+ assertEquals(4, trunkRange.size());
+ assertEquals("1-300", trunkRange.get(0).toString());
+ assertEquals("305", trunkRange.get(1).toString());
+ assertEquals("307", trunkRange.get(2).toString());
+ assertEquals("400-405", trunkRange.get(3).toString());
+ List<RevisionRange> branchRange =
info.getRevisionRange("/branches/branch");
- assertEquals(1, branchRange.length);
+ assertEquals(1, branchRange.size());
}
/**