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/09 21:42:29 UTC
svn commit: r921112 - in
/subversion/trunk/subversion/bindings/javahl/native: SVNAdmin.cpp
SVNAdmin.h StringArray.cpp StringArray.h Targets.cpp Targets.h
org_apache_subversion_javahl_SVNAdmin.cpp
org_apache_subversion_javahl_SVNClient.cpp
Author: hwright
Date: Tue Mar 9 20:42:28 2010
New Revision: 921112
URL: http://svn.apache.org/viewvc?rev=921112&view=rev
Log:
JavaHL: Remove some duplicate functionality from the Targets JNI class, and
allow it to take a StringArray in the constructor.
[ subversion/bindings/javahl/ ]
* native/SVNAdmin.h,
native/SVNAdmin.cpp
(rmtxns, rmlocks): Take StringArray parameters, since that's really what
is being used.
* native/StringArray.h,
native/StringArray.cpp
(vector): Add a function to return a reference to the underlying vector.
* native/Targets.h,
native/Targets.cpp
(Targets): Take a StringArray as the constructor argument.
(array): Update to use the underlying StringArray.
(setDoesNotContainsPath): Remove.
* native/org_apache_subversion_javahl_SVNAdmin.cpp
(Java_org_apache_subversion_javahl_SVNAdmin_rmtxns,
Java_org_apache_subversion_javahl_SVNAdmin_rmlocks):
Use a StringArray instead of Targets to process the incoming (not-path)
arguments.
* native/org_apache_subversion_javahl_SVNClient.cpp
(Java_org_apache_subversion_javahl_SVNClient_remove,
Java_org_apache_subversion_javahl_SVNClient_add,
Java_org_apache_subversion_javahl_SVNClient_update,
Java_org_apache_subversion_javahl_SVNClient_commit,
Java_org_apache_subversion_javahl_SVNClient_move,
Java_org_apache_subversion_javahl_SVNClient_mkdir,
Java_org_apache_subversion_javahl_SVNClient_addToChangelist,
Java_org_apache_subversion_javahl_SVNClient_remove,
Java_org_apache_subversion_javahl_SVNClient_lock,
Java_org_apache_subversion_javahl_SVNClient_unlock):
Create a StringArray to then create the Targets.
Modified:
subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp
subversion/trunk/subversion/bindings/javahl/native/StringArray.h
subversion/trunk/subversion/bindings/javahl/native/Targets.cpp
subversion/trunk/subversion/bindings/javahl/native/Targets.h
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNClient.cpp
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.cpp Tue Mar 9 20:42:28 2010
@@ -333,7 +333,7 @@ jlong SVNAdmin::recover(const char *path
return youngest_rev;
}
-void SVNAdmin::rmtxns(const char *path, Targets &transactions)
+void SVNAdmin::rmtxns(const char *path, StringArray &transactions)
{
SVN::Pool requestPool;
SVN_JNI_NULL_PTR_EX(path, "path", );
@@ -541,7 +541,7 @@ jobject SVNAdmin::lslocks(const char *pa
return CreateJ::Set(jlocks);
}
-void SVNAdmin::rmlocks(const char *path, Targets &locks)
+void SVNAdmin::rmlocks(const char *path, StringArray &locks)
{
SVN::Pool requestPool;
apr_pool_t *pool = requestPool.pool();
Modified: subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/SVNAdmin.h Tue Mar 9 20:42:28 2010
@@ -34,12 +34,12 @@
#include "Outputer.h"
#include "Inputer.h"
#include "MessageReceiver.h"
-#include "Targets.h"
+#include "StringArray.h"
class SVNAdmin : public SVNBase
{
public:
- void rmlocks(const char *path, Targets &locks);
+ void rmlocks(const char *path, StringArray &locks);
jobject lslocks(const char *path);
void verify(const char *path, Outputer &messageOut,
Revision &revisionStart, Revision &revisionEnd);
@@ -47,7 +47,7 @@ class SVNAdmin : public SVNBase
const char *propName, const char *propValue,
bool usePreRevPropChangeHook,
bool usePostRevPropChangeHook);
- void rmtxns(const char *path, Targets &transactions);
+ void rmtxns(const char *path, StringArray &transactions);
jlong recover(const char *path);
void lstxns(const char *path, MessageReceiver &messageReceiver);
void load(const char *path, Inputer &dataIn, Outputer &messageOut,
Modified: subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp Tue Mar 9 20:42:28 2010
@@ -56,6 +56,11 @@ const apr_array_header_t *StringArray::a
return strings;
}
+const std::vector<std::string> &StringArray::vector(void)
+{
+ return m_strings;
+}
+
StringArray::StringArray(jobjectArray jstrings)
{
m_stringArray = jstrings;
Modified: subversion/trunk/subversion/bindings/javahl/native/StringArray.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/StringArray.h?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/StringArray.h Tue Mar 9 20:42:28 2010
@@ -32,7 +32,6 @@
struct apr_array_header_t;
struct svn_error_t;
-class SVN::Pool;
#include "Path.h"
#include <vector>
@@ -49,6 +48,7 @@ class StringArray
StringArray(jobject jstringCollection);
~StringArray();
const apr_array_header_t *array(const SVN::Pool &pool);
+ const std::vector<std::string> &vector(void);
};
#endif // STRINGARRAY_H
Modified: subversion/trunk/subversion/bindings/javahl/native/Targets.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Targets.cpp?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Targets.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Targets.cpp Tue Mar 9 20:42:28 2010
@@ -34,16 +34,13 @@
Targets::~Targets()
{
- if (m_targetArray != NULL)
- JNIUtil::getEnv()->DeleteLocalRef(m_targetArray);
}
Targets::Targets(const char *path)
{
- m_targetArray = NULL;
+ m_strArray = NULL;
m_targets.push_back (path);
m_error_occured = NULL;
- m_doesNotContainsPath = false;
}
void Targets::add(const char *path)
@@ -53,50 +50,24 @@ void Targets::add(const char *path)
const apr_array_header_t *Targets::array(const SVN::Pool &pool)
{
- if (m_targetArray != NULL)
+ if (m_strArray != NULL)
{
JNIEnv *env = JNIUtil::getEnv();
- jint arraySize = env->GetArrayLength(m_targetArray);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- jclass clazz = env->FindClass("java/lang/String");
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
- for (int i = 0; i < arraySize; ++i)
- {
- jobject elem = env->GetObjectArrayElement(m_targetArray, i);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
+ const std::vector<std::string> &vec = m_strArray->vector();
- if (env->IsInstanceOf(elem, clazz))
+ std::vector<std::string>::const_iterator it;
+ for (it = vec.begin(); it < vec.end(); ++it)
+ {
+ const char *tt = it->c_str();
+ svn_error_t *err = JNIUtil::preprocessPath(tt, pool.pool());
+ if (err != NULL)
{
- JNIStringHolder text((jstring)elem);
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- const char *tt = (const char *)text;
- if (!m_doesNotContainsPath)
- {
- svn_error_t *err = JNIUtil::preprocessPath(tt,
- pool.pool());
- if (err != NULL)
- {
- m_error_occured = err;
- break;
- }
- }
- m_targets.push_back(tt);
+ m_error_occured = err;
+ break;
}
- if (JNIUtil::isJavaExceptionThrown())
- return NULL;
-
- env->DeleteLocalRef(elem);
+ m_targets.push_back(tt);
}
- env->DeleteLocalRef(clazz);
- //JNIUtil::getEnv()->DeleteLocalRef(m_targetArray);
- m_targetArray = NULL;
}
std::vector<Path>::const_iterator it;
@@ -117,9 +88,9 @@ const apr_array_header_t *Targets::array
return apr_targets;
}
-Targets::Targets(jobjectArray jtargets)
+Targets::Targets(StringArray &strArray)
{
- m_targetArray = jtargets;
+ m_strArray = &strArray;
m_error_occured = NULL;
}
@@ -127,8 +98,3 @@ svn_error_t *Targets::error_occured()
{
return m_error_occured;
}
-
-void Targets::setDoesNotContainsPath()
-{
- m_doesNotContainsPath = true;
-}
Modified: subversion/trunk/subversion/bindings/javahl/native/Targets.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Targets.h?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Targets.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Targets.h Tue Mar 9 20:42:28 2010
@@ -29,10 +29,10 @@
#include <jni.h>
#include "Pool.h"
+#include "StringArray.h"
struct apr_array_header_t;
struct svn_error_t;
-class SVN::Pool;
#include "Path.h"
#include <vector>
@@ -41,17 +41,15 @@ class Targets
{
private:
std::vector<Path> m_targets;
- jobjectArray m_targetArray;
+ StringArray *m_strArray;
svn_error_t *m_error_occured;
- bool m_doesNotContainsPath;
public:
- Targets(jobjectArray jtargets);
+ Targets(StringArray &strArray);
Targets(const char *path);
void add(const char *path);
~Targets();
const apr_array_header_t *array(const SVN::Pool &pool);
svn_error_t *error_occured();
- void setDoesNotContainsPath();
};
#endif // TARGETS_H
Modified: subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp?rev=921112&r1=921111&r2=921112&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/org_apache_subversion_javahl_SVNAdmin.cpp Tue Mar 9 20:42:28 2010
@@ -329,11 +329,10 @@ Java_org_apache_subversion_javahl_SVNAdm
if (JNIUtil::isExceptionThrown())
return;
- Targets transactions(jtransactions);
+ StringArray transactions(jtransactions);
if (JNIUtil::isExceptionThrown())
return;
- transactions.setDoesNotContainsPath();
cl->rmtxns(path, transactions);
}
@@ -463,10 +462,9 @@ Java_org_apache_subversion_javahl_SVNAdm
if (JNIUtil::isExceptionThrown())
return;
- Targets locks(jlocks);
+ StringArray locks(jlocks);
if (JNIUtil::isExceptionThrown())
return;
- locks.setDoesNotContainsPath();
cl->rmlocks(path, locks);
}
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=921112&r1=921111&r2=921112&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 9 20:42:28 2010
@@ -455,7 +455,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError(_("bad C++ this"));
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
JNIStringHolder message(jmessage);
if (JNIUtil::isExceptionThrown())
return;
@@ -513,7 +514,7 @@ Java_org_apache_subversion_javahl_SVNCli
JNIEXPORT jlongArray JNICALL
Java_org_apache_subversion_javahl_SVNClient_update
-(JNIEnv *env, jobject jthis, jobjectArray jpath, jobject jrevision,
+(JNIEnv *env, jobject jthis, jobjectArray jtargets, jobject jrevision,
jint jdepth, jboolean jdepthIsSticky, jboolean jignoreExternals,
jboolean jallowUnverObstructions)
{
@@ -528,7 +529,8 @@ Java_org_apache_subversion_javahl_SVNCli
if (JNIUtil::isExceptionThrown())
return NULL;
- Targets targets(jpath);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
if (JNIUtil::isExceptionThrown())
return NULL;
@@ -551,7 +553,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError(_("bad C++ this"));
return -1;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
JNIStringHolder message(jmessage);
if (JNIUtil::isExceptionThrown())
return -1;
@@ -617,7 +620,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError(_("bad C++ this"));
return;
}
- Targets srcPaths(jsrcPaths);
+ StringArray srcPathArr(jsrcPaths);
+ Targets srcPaths(srcPathArr);
if (JNIUtil::isExceptionThrown())
return;
JNIStringHolder destPath(jdestPath);
@@ -648,7 +652,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError(_("bad C++ this"));
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
JNIStringHolder message(jmessage);
if (JNIUtil::isExceptionThrown())
return;
@@ -1670,7 +1675,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError("bad C++ this");
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
if (JNIUtil::isExceptionThrown())
return;
@@ -1698,7 +1704,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError("bad C++ this");
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
if (JNIUtil::isExceptionThrown())
return;
@@ -1746,7 +1753,8 @@ Java_org_apache_subversion_javahl_SVNCli
JNIUtil::throwError("bad C++ this");
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
if (JNIUtil::isExceptionThrown())
return;
@@ -1769,7 +1777,8 @@ Java_org_apache_subversion_javahl_SVNCli
return;
}
- Targets targets(jtargets);
+ StringArray targetsArr(jtargets);
+ Targets targets(targetsArr);
if (JNIUtil::isExceptionThrown())
return;