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 18:11:23 UTC
svn commit: r918579 - in /subversion/trunk/subversion/bindings/javahl:
native/ src/org/apache/subversion/javahl/
src/org/apache/subversion/javahl/callback/
src/org/tigris/subversion/javahl/ tests/org/apache/subversion/javahl/
Author: hwright
Date: Wed Mar 3 17:11:22 2010
New Revision: 918579
URL: http://svn.apache.org/viewvc?rev=918579&view=rev
Log:
JavaHL: Update a callback interface to return a Set in place of an array.
[ in subversion/bindings/javahl/ ]
* tests/org/apache/subversion/javahl/BasicTests.java:
Update test implemetations to expect the new API.
* native/LogMessageCallback.cpp
(singleMessage): Return a set of ChangePaths, in place of the array.
* src/org/tigris/subversion/javahl/ChangePath.java:
Make this class Comparable, for backward compat.
* src/org/tigris/subversion/javahl/SVNClient.java
(logMessages, getMergeinfoLog): Update compat wrappers for the new API.
* src/org/apache/subversion/javahl/LogMessage.java
(LogMessage): Update constructor to take the new type.
(changedPaths): Use the Set type.
(getChangedPaths): Return the new type.
* src/org/apache/subversion/javahl/callback/LogMessageCallback.java
(singleMessage): Update the interface to use a Set of change paths.
Modified:
subversion/trunk/subversion/bindings/javahl/native/LogMessageCallback.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LogMessage.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/BasicTests.java
Modified: subversion/trunk/subversion/bindings/javahl/native/LogMessageCallback.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/LogMessageCallback.cpp?rev=918579&r1=918578&r2=918579&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/LogMessageCallback.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/LogMessageCallback.cpp Wed Mar 3 17:11:22 2010
@@ -81,8 +81,7 @@
sm_mid = env->GetMethodID(clazz,
"singleMessage",
- "([L"JAVA_PACKAGE"/ChangePath;"
- "JLjava/util/Map;Z)V");
+ "(Ljava/util/Set;JLjava/util/Map;Z)V");
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
@@ -105,29 +104,19 @@
return SVN_NO_ERROR;
}
- jobjectArray jChangedPaths = NULL;
+ jobject jChangedPaths = NULL;
if (log_entry->changed_paths)
{
- apr_array_header_t *sorted_paths;
- int i;
+ apr_hash_index_t *hi;
+ std::vector<jobject> jcps;
- /* Get an array of sorted hash keys. */
- sorted_paths = svn_sort__hash(log_entry->changed_paths,
- svn_sort_compare_items_as_paths,
- pool);
-
- jChangedPaths = env->NewObjectArray(sorted_paths->nelts,
- clazzCP,
- NULL);
-
- for (i = 0; i < sorted_paths->nelts; ++i)
+ for (hi = apr_hash_first(pool, log_entry->changed_paths);
+ hi;
+ hi = apr_hash_next(hi))
{
- svn_sort__item_t *item = &(APR_ARRAY_IDX(sorted_paths, i,
- svn_sort__item_t));
- const char *path = (const char *)item->key;
- svn_log_changed_path2_t *log_item
- = (svn_log_changed_path2_t *)
- apr_hash_get(log_entry->changed_paths, item->key, item->klen);
+ const char *path = (const char *) svn_apr_hash_index_key(hi);
+ svn_log_changed_path2_t *log_item =
+ (svn_log_changed_path2_t *) svn_apr_hash_index_val(hi);
jstring jpath = JNIUtil::makeJString(path);
if (JNIUtil::isJavaExceptionThrown())
@@ -147,13 +136,7 @@
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
- env->SetObjectArrayElement(jChangedPaths, i, cp);
- if (JNIUtil::isJavaExceptionThrown())
- return SVN_NO_ERROR;
-
- env->DeleteLocalRef(cp);
- if (JNIUtil::isJavaExceptionThrown())
- return SVN_NO_ERROR;
+ jcps.push_back(cp);
env->DeleteLocalRef(jpath);
if (JNIUtil::isJavaExceptionThrown())
@@ -163,6 +146,8 @@
if (JNIUtil::isJavaExceptionThrown())
return SVN_NO_ERROR;
}
+
+ jChangedPaths = CreateJ::Set(jcps);
}
jobject jrevprops = NULL;
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LogMessage.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LogMessage.java?rev=918579&r1=918578&r2=918579&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LogMessage.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/LogMessage.java Wed Mar 3 17:11:22 2010
@@ -24,6 +24,8 @@
package org.apache.subversion.javahl;
import java.util.Date;
+import java.util.Map;
+import java.util.Set;
/**
* This class describes a single subversion revision with log message,
@@ -71,7 +73,7 @@
* SVNClientInterface.logMessages is used with discoverPaths
* true).
*/
- private ChangePath[] changedPaths;
+ private Set<ChangePath> changedPaths;
/**
* This constructor is the original constructor from Subversion
@@ -85,7 +87,7 @@
* of microseconds since 00:00:00 January 1,
* 1970 UTC
*/
- LogMessage(ChangePath[] cp, long r, String a, Date d, String m)
+ LogMessage(Set<ChangePath> cp, long r, String a, Date d, String m)
{
changedPaths = cp;
revision = r;
@@ -106,7 +108,7 @@
* @param message the log message text
* @since 1.5
*/
- LogMessage(ChangePath[] cp, long r, String a, long t, String m)
+ LogMessage(Set<ChangePath> cp, long r, String a, long t, String m)
{
changedPaths = cp;
revision = r;
@@ -191,7 +193,7 @@
* Returns the changes items by this commit
* @return the changes items by this commit
*/
- public ChangePath[] getChangedPaths()
+ public Set<ChangePath> getChangedPaths()
{
return changedPaths;
}
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java?rev=918579&r1=918578&r2=918579&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/callback/LogMessageCallback.java Wed Mar 3 17:11:22 2010
@@ -26,6 +26,7 @@
import org.apache.subversion.javahl.ChangePath;
import java.util.Map;
+import java.util.Set;
/**
* This interface is used to receive every log message for the log
@@ -49,7 +50,7 @@
/**
* The method will be called for every log message.
*
- * @param changedPaths the paths that were changed
+ * @param changedPaths a set of the paths that were changed
* @param revision the revision of the commit
* @param revprops All of the requested revision properties,
* possibly including svn:date, svn:author,
@@ -57,7 +58,7 @@
* @param hasChildren when merge sensitive option was requested,
* whether or not this entry has child entries.
*/
- public void singleMessage(ChangePath[] changedPaths,
+ public void singleMessage(Set<ChangePath> changedPaths,
long revision,
Map<String, byte[]> revprops,
boolean hasChildren);
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java?rev=918579&r1=918578&r2=918579&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/ChangePath.java Wed Mar 3 17:11:22 2010
@@ -23,7 +23,7 @@
package org.tigris.subversion.javahl;
-public class ChangePath implements java.io.Serializable
+public class ChangePath implements java.io.Serializable, Comparable
{
// Update the serialVersionUID when there is a incompatible change
// made to this class. See any of the following, depending upon
@@ -62,6 +62,11 @@
aChangePath.getNodeKind());
}
+ public int compareTo(Object other)
+ {
+ return path.compareTo(((ChangePath)other).path);
+ }
+
/** Path of commited item */
private String path;
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java?rev=918579&r1=918578&r2=918579&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/SVNClient.java Wed Mar 3 17:11:22 2010
@@ -28,6 +28,7 @@
import java.io.OutputStream;
import java.util.Map;
+import java.util.Set;
import java.util.HashMap;
import java.util.List;
import java.util.HashSet;
@@ -469,7 +470,7 @@
}
public void singleMessage(
- org.apache.subversion.javahl.ChangePath[] aChangedPaths,
+ Set<org.apache.subversion.javahl.ChangePath> aChangedPaths,
long revision, Map<String, byte[]> revprops,
boolean hasChildren)
{
@@ -479,12 +480,16 @@
if (aChangedPaths != null)
{
- changedPaths = new ChangePath[aChangedPaths.length];
+ changedPaths = new ChangePath[aChangedPaths.size()];
- for (int i = 0; i < aChangedPaths.length; i++)
+ int i = 0;
+ for (org.apache.subversion.javahl.ChangePath cp
+ : aChangedPaths)
{
- changedPaths[i] = new ChangePath(aChangedPaths[i]);
+ changedPaths[i] = new ChangePath(cp);
+ i++;
}
+ Arrays.sort(changedPaths);
}
else
{
@@ -1342,18 +1347,22 @@
implements org.apache.subversion.javahl.callback.LogMessageCallback
{
public void singleMessage(
- org.apache.subversion.javahl.ChangePath[] aChangedPaths,
- long revision, Map revprops, boolean hasChildren)
+ Set<org.apache.subversion.javahl.ChangePath> aChangedPaths,
+ long revision, Map<String, byte[]> revprops,
+ boolean hasChildren)
{
ChangePath[] changedPaths;
if (aChangedPaths != null)
{
- changedPaths = new ChangePath[aChangedPaths.length];
+ changedPaths = new ChangePath[aChangedPaths.size()];
- for (int i = 0; i < aChangedPaths.length; i++)
+ int i = 0;
+ for (org.apache.subversion.javahl.ChangePath cp
+ : aChangedPaths)
{
- changedPaths[i] = new ChangePath(aChangedPaths[i]);
+ changedPaths[i] = new ChangePath(cp);
+ i++;
}
}
else
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=918579&r1=918578&r2=918579&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 17:11:22 2010
@@ -2119,12 +2119,14 @@
assertEquals("wrong revision", 1, lm[0].getRevisionNumber());
assertEquals("wrong user", "jrandom", lm[0].getAuthor());
assertNotNull("changed paths set", lm[0].getChangedPaths());
- ChangePath cp[] = lm[0].getChangedPaths();
- assertEquals("wrong number of chang pathes", 20, cp.length);
- assertEquals("wrong path", "/A", cp[0].getPath());
- assertEquals("wrong copy source rev", -1, cp[0].getCopySrcRevision());
- assertNull("wrong copy source path", cp[0].getCopySrcPath());
- assertEquals("wrong action", 'A', cp[0].getAction());
+ Set<ChangePath> cp = lm[0].getChangedPaths();
+ assertEquals("wrong number of chang pathes", 20, cp.size());
+ ChangePath changedApath = cp.toArray(new ChangePath[1])[0];
+ assertNotNull("wrong path", changedApath);
+ assertEquals("wrong copy source rev", -1,
+ changedApath.getCopySrcRevision());
+ assertNull("wrong copy source path", changedApath.getCopySrcPath());
+ assertEquals("wrong action", 'A', changedApath.getAction());
assertEquals("wrong time with getTimeMicros()",
lm[0].getTimeMicros()/1000,
lm[0].getDate().getTime());
@@ -2360,8 +2362,9 @@
List<Long> revList = new ArrayList<Long>();
- public void singleMessage(ChangePath[] changedPaths, long revision,
- Map<String, byte[]> revprops, boolean hasChildren) {
+ public void singleMessage(Set<ChangePath> changedPaths,
+ long revision, Map<String, byte[]> revprops,
+ boolean hasChildren) {
revList.add(new Long(revision));
}
@@ -3460,7 +3463,7 @@
{
Map<String, byte[]> revprops;
- public void singleMessage(ChangePath[] changedPaths,
+ public void singleMessage(Set<ChangePath> changedPaths,
long revision,
Map<String, byte[]> revprops,
boolean hasChildren)
@@ -3759,7 +3762,7 @@
{
private List<LogMessage> messages = new ArrayList<LogMessage>();
- public void singleMessage(ChangePath[] changedPaths,
+ public void singleMessage(Set<ChangePath> changedPaths,
long revision,
Map<String, byte[]> revprops,
boolean hasChildren)