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/02 03:41:39 UTC
svn commit: r917842 - 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: Tue Mar 2 02:41:39 2010
New Revision: 917842
URL: http://svn.apache.org/viewvc?rev=917842&view=rev
Log:
JavaHL: Completely remove the PropertyData class from the new package, and
move the constants previously defined therein to the Property class.
* tests/org/apache/subversion/javahl/SVNAdminTests.java
(testSetRevProp): Update test to reflect the new API for pulling back
revprops.
* tests/org/apache/subversion/javahl/BasicTests.java
(testBasicProperties): Use the Map in place of the PropertyData array.
(testBasicLocking): Update the constant class name.
(collectProperties): Update for the lack of PropertyData.
* native/CreateJ.cpp,
native/CreateJ.h
(Property): Remove.
* native/SVNClient.h,
native/SVNClient.cpp
(revProperties): Return the created property Map object.
* native/org_apache_subversion_javahl_SVNClient.cpp
(Java_org_apache_subversion_javahl_SVNClient_revProperties):
Update return type.
* src/org/tigris/subversion/javahl/SVNClient.java
(revProperties): Update wrapper.
* src/org/tigris/subversion/javahl/PropertyData.java:
Remove backward compat constructor.
* src/org/apache/subversion/javahl/PropertyData.java:
Remove.
* src/org/apache/subversion/javahl/Property.java:
New.
* src/org/apache/subversion/javahl/SVNClient.java
(revProperties): Update return type.
* src/org/apache/subversion/javahl/ISVNClient.java
(revProperties): Same.
Added:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Property.java
- copied, changed from r917772, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/PropertyData.java
Removed:
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/PropertyData.java
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/native/SVNClient.h
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/SVNClient.java
subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.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
subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.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=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Tue Mar 2 02:41:39 2010
@@ -353,64 +353,6 @@
return jlock;
}
-jobject
-CreateJ::Property(jobject jthis, const char *path, const char *name,
- svn_string_t *value)
-{
- JNIEnv *env = JNIUtil::getEnv();
- jclass clazz = env->FindClass(JAVA_PACKAGE"/PropertyData");
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- static jmethodID mid = 0;
- if (mid == 0)
- {
- mid = env->GetMethodID(clazz, "<init>",
- "(L"JAVA_PACKAGE"/ISVNClient;"
- "Ljava/lang/String;Ljava/lang/String;"
- "Ljava/lang/String;[B)V");
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- }
-
- jstring jPath = JNIUtil::makeJString(path);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- jstring jName = JNIUtil::makeJString(name);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- jstring jValue = JNIUtil::makeJString(value->data);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- jbyteArray jData = JNIUtil::makeJByteArray((const signed char *)value->data,
- value->len);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- jobject jprop = env->NewObject(clazz, mid, jthis, jPath, jName, jValue,
- jData);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- env->DeleteLocalRef(clazz);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- env->DeleteLocalRef(jPath);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- env->DeleteLocalRef(jName);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- env->DeleteLocalRef(jValue);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- env->DeleteLocalRef(jData);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- return jprop;
-}
-
jobjectArray
CreateJ::RevisionRangeArray(apr_array_header_t *ranges)
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.h?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.h Tue Mar 2 02:41:39 2010
@@ -47,10 +47,6 @@
static jobject
Lock(const svn_lock_t *lock);
- static jobject
- Property(jobject jthis, const char *path, const char *name,
- svn_string_t *value);
-
static jobjectArray
RevisionRangeArray(apr_array_header_t *ranges);
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNClient.cpp Tue Mar 2 02:41:39 2010
@@ -1885,8 +1885,8 @@
SVN_JNI_ERR(svn_client_upgrade(path, ctx, requestPool.pool()), );
}
-jobjectArray SVNClient::revProperties(jobject jthis, const char *path,
- Revision &revision)
+jobject SVNClient::revProperties(jobject jthis, const char *path,
+ Revision &revision)
{
apr_hash_t *props;
SVN::Pool requestPool;
@@ -1909,45 +1909,7 @@
&set_rev, ctx, requestPool.pool()),
NULL);
- apr_hash_index_t *hi;
-
- int count = apr_hash_count(props);
-
- JNIEnv *env = JNIUtil::getEnv();
- jclass clazz = env->FindClass(JAVA_PACKAGE"/PropertyData");
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- jobjectArray jprops = env->NewObjectArray(count, clazz, NULL);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- env->DeleteLocalRef(clazz);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- int i = 0;
- for (hi = apr_hash_first(requestPool.pool(), props);
- hi;
- hi = apr_hash_next(hi), ++i)
- {
- const char *key;
- svn_string_t *val;
-
- apr_hash_this(hi, (const void **)&key, NULL, (void**)&val);
-
- jobject object = CreateJ::Property(jthis, path, key, val);
-
- env->SetObjectArrayElement(jprops, i, object);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- env->DeleteLocalRef(object);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- }
-
- return jprops;
+ return ProplistCallback::makeMapFromHash(props, requestPool.pool());
}
struct info_baton
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNClient.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNClient.h?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNClient.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNClient.h Tue Mar 2 02:41:39 2010
@@ -65,8 +65,7 @@
InfoCallback *callback);
void unlock(Targets &targets, bool force);
void lock(Targets &targets, const char *comment, bool force);
- jobjectArray revProperties(jobject jthis, const char *path,
- Revision &revision);
+ jobject revProperties(jobject jthis, const char *path, Revision &revision);
void cancelOperation();
void commitMessageHandler(CommitMessage *commitMessage);
const char *getConfigDirectory();
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=917842&r1=917841&r2=917842&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 Tue Mar 2 02:41:39 2010
@@ -1046,7 +1046,7 @@
return cl->revProperty(jthis, path, name, revision);
}
-JNIEXPORT jobjectArray JNICALL
+JNIEXPORT jobject JNICALL
Java_org_apache_subversion_javahl_SVNClient_revProperties
(JNIEnv *env, jobject jthis, jstring jpath, jobject jrevision)
{
Modified: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/ISVNClient.java Tue Mar 2 02:41:39 2010
@@ -731,7 +731,7 @@
* @throws ClientException
* @since 1.2
*/
- PropertyData[] revProperties(String path, Revision rev)
+ Map<String, byte[]> revProperties(String path, Revision rev)
throws ClientException;
/**
Copied: subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Property.java (from r917772, subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/PropertyData.java)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Property.java?p2=subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Property.java&p1=subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/PropertyData.java&r1=917772&r2=917842&rev=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/PropertyData.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/apache/subversion/javahl/Property.java Tue Mar 2 02:41:39 2010
@@ -24,37 +24,11 @@
package org.apache.subversion.javahl;
/**
- * This class describes one property managed by Subversion.
+ * This class describes standard Subversion known properties
*/
-public class PropertyData
+public class Property
{
/**
- * the name of the property
- */
- private String name;
-
- /**
- * the string value of the property
- */
- private String value;
-
- /**
- * the byte array value of the property
- */
- private byte[] data;
-
- /**
- * path of the subversion to change or delete this property
- */
- private String path;
-
- /**
- * reference to the creating ISVNClient object to change or delete this
- * property
- */
- private ISVNClient client;
-
- /**
* Standard subversion known properties
*/
@@ -119,117 +93,4 @@
* flag property if a lock is needed to modify this node
*/
public static final String NEEDS_LOCK = "svn:needs-lock";
-
- /**
- * this constructor is only used by the JNI code
- * @param cl the client object, which created this object
- * @param p the path of the item owning this property
- * @param n the name of the property
- * @param v the string value of the property
- * @param d the byte array value of the property
- */
- PropertyData(ISVNClient cl, String p, String n, String v, byte[] d)
- {
- path = p;
- name = n;
- value = v;
- client = cl;
- data = d;
- }
-
- /**
- * this contructor is used when building a thin wrapper around other
- * property retrieval methods
- * @param p the path of the item owning this property
- * @param n the name of the property
- * @param v the string value of the property
- */
- PropertyData(String p, String n, String v)
- {
- path = p;
- name = n;
- value = v;
- client = null;
- data = v.getBytes();
- }
-
- /**
- * Returns the name of the property
- * @return the name
- */
- public String getName()
- {
- return name;
- }
-
- /**
- * Returns the string value of the property.
- * There is no protocol if a property is a string or a binary value
- * @return the string value
- */
- public String getValue()
- {
- return value;
- }
-
- /**
- * Return the path of the item which owns this property
- * @return the path
- */
- public String getPath()
- {
- return path;
- }
-
- /**
- * Returns the byte array value of the property
- * There is no protocol if a property is a string or a binary value
- * @return the byte array value
- */
- public byte[] getData()
- {
- return data;
- }
-
- /**
- * modify the string value of a property
- * The byte array value is cleared
- * @param newValue the new string value
- * @param recurse if operation should recurse directories
- * @throws ClientException
- */
- public void setValue(String newValue, boolean recurse)
- throws ClientException
- {
- client.propertySet(path, name, newValue, Depth.infinityOrEmpty(recurse),
- null, false, null);
- value = newValue;
- data = null;
- }
-
- /**
- * modify the byte array value of a property
- * The string array value is cleared
- * @param newValue the new byte array value
- * @param recurse if operation should recurse directories
- * @throws ClientException
- */
- public void setValue(byte[] newValue, boolean recurse)
- throws ClientException
- {
- client.propertySet(path, name, new String(newValue),
- Depth.infinityOrEmpty(recurse), null, false, null);
- data = newValue;
- value = null;
- }
-
- /**
- * remove this property from subversion
- * @param recurse if operation should recurse directories
- * @throws ClientException
- */
- public void remove(boolean recurse) throws ClientException
- {
- client.propertyRemove(path, name, Depth.infinityOrEmpty(recurse), null);
- }
}
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=917842&r1=917841&r2=917842&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 Tue Mar 2 02:41:39 2010
@@ -653,7 +653,7 @@
/**
* @since 1.2
*/
- public native PropertyData[] revProperties(String path, Revision rev)
+ public native Map<String, byte[]> revProperties(String path, Revision rev)
throws ClientException;
/**
Modified: subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java (original)
+++ subversion/trunk/subversion/bindings/javahl/src/org/tigris/subversion/javahl/PropertyData.java Tue Mar 2 02:41:39 2010
@@ -154,15 +154,6 @@
}
/**
- * this constructor is used for backward compat
- */
- PropertyData(org.apache.subversion.javahl.PropertyData aPropertyData)
- {
- this(aPropertyData.getPath(), aPropertyData.getName(),
- aPropertyData.getValue());
- }
-
- /**
* Returns the name of the property
* @return the name
*/
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=917842&r1=917841&r2=917842&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 Tue Mar 2 02:41:39 2010
@@ -1929,14 +1929,17 @@
{
try
{
- org.apache.subversion.javahl.PropertyData[] aPropData =
+ Map<String, byte[]> aProps =
aSVNClient.revProperties(path,
rev == null ? null : rev.toApache());
- PropertyData[] propData = new PropertyData[aPropData.length];
+ PropertyData[] propData = new PropertyData[aProps.size()];
- for (int i = 0; i < aPropData.length; i++)
+ int i = 0;
+ for (String key : aProps.keySet())
{
- propData[i] = new PropertyData(aPropData[i]);
+ propData[i] = new PropertyData(path, key,
+ new String(aProps.get(key)));
+ i++;
}
return propData;
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=917842&r1=917841&r2=917842&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 Tue Mar 2 02:41:39 2010
@@ -745,12 +745,10 @@
client.propertySet(itemPath, "abc", "def", Depth.empty, null, false,
null);
- PropertyData[] properties = collectProperties(itemPath, null, null,
- Depth.empty, null);
+ Map<String, byte[]> properties = collectProperties(itemPath, null,
+ null, Depth.empty, null);
- PropertyData prop = properties[0];
- assertEquals("abc", prop.getName());
- assertEquals("def", prop.getValue());
+ assertEquals("def", new String(properties.get("abc")));
wc.setItemPropStatus("iota", Status.Kind.modified);
thisTest.checkStatus();
@@ -2166,7 +2164,7 @@
muPathSet.add(thisTest.getWCPath()+"/A/mu");
client.propertySet(thisTest.getWCPath()+"/A/mu",
- PropertyData.NEEDS_LOCK, "*", Depth.empty,
+ Property.NEEDS_LOCK, "*", Depth.empty,
null, false, null);
addExpectedCommitItem(thisTest.getWCPath(),
@@ -3642,7 +3640,8 @@
}
}
- private PropertyData[] collectProperties(String path, Revision revision,
+ private Map<String, byte[]> collectProperties(String path,
+ Revision revision,
Revision pegRevision, int depth,
Collection<String> changelists)
throws ClientException
@@ -3667,20 +3666,7 @@
client.properties(path, revision, revision, depth, changelists,
callback);
- Map<String, byte[]> propMap = callback.getProperties(path);
- if (propMap == null)
- return new PropertyData[0];
- PropertyData[] props = new PropertyData[propMap.size()];
-
- int i = 0;
- for (String key : propMap.keySet())
- {
- props[i] = new PropertyData(path, key,
- new String(propMap.get(key)));
- i++;
- }
-
- return props;
+ return callback.getProperties(path);
}
private DirEntry[] collectDirEntries(String url, Revision revision,
Modified: subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java?rev=917842&r1=917841&r2=917842&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java (original)
+++ subversion/trunk/subversion/bindings/javahl/tests/org/apache/subversion/javahl/SVNAdminTests.java Tue Mar 2 02:41:39 2010
@@ -26,6 +26,7 @@
import java.io.File;
import java.io.IOException;
+import java.util.Map;
/**
* This class is used for testing the SVNAdmin class
@@ -61,19 +62,11 @@
final String MSG = "Initial repository creation";
admin.setRevProp(thisTest.getRepositoryPath(), Revision.getInstance(0),
"svn:log", MSG, false, false);
- PropertyData[] pdata = client.revProperties(
+ Map<String, byte[]> pdata = client.revProperties(
makeReposUrl(thisTest.getRepository()),
Revision.getInstance(0));
assertNotNull("expect non null rev props");
- String logMessage = null;
- for (int i = 0; i < pdata.length; i++)
- {
- if ("svn:log".equals(pdata[i].getName()))
- {
- logMessage = pdata[i].getValue();
- break;
- }
- }
+ String logMessage = new String(pdata.get("svn:log"));
assertEquals("expect rev prop change to take effect", MSG, logMessage);
}
public void testLoadRepo()