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 23:34:00 UTC
svn commit: r921176 - in
/subversion/trunk/subversion/bindings/javahl/native: Array.cpp Array.h
StringArray.cpp StringArray.h
Author: hwright
Date: Tue Mar 9 22:34:00 2010
New Revision: 921176
URL: http://svn.apache.org/viewvc?rev=921176&view=rev
Log:
JavaHL: Create a new C++ class which represents a generic array of Java
objects. Move the various collection parsing duties to this class, and make
the StringArray class inherit from it.
[ in subversion/bindings/javahl/ ]
* native/StringArray.h,
native/StringArray.cpp
(~StringArray): Don't destruct anything explicitly.
(init): New.
(StringArray): Use the parent constructor and then call the init function.
* native/Array.h,
native/Array.cpp:
New, copied and modified from StringArray.
Added:
subversion/trunk/subversion/bindings/javahl/native/Array.cpp
- copied, changed from r921141, subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp
subversion/trunk/subversion/bindings/javahl/native/Array.h
- copied, changed from r921141, subversion/trunk/subversion/bindings/javahl/native/StringArray.h
Modified:
subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp
subversion/trunk/subversion/bindings/javahl/native/StringArray.h
Copied: subversion/trunk/subversion/bindings/javahl/native/Array.cpp (from r921141, subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Array.cpp?p2=subversion/trunk/subversion/bindings/javahl/native/Array.cpp&p1=subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp&r1=921141&r2=921176&rev=921176&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Array.cpp Tue Mar 9 22:34:00 2010
@@ -20,80 +20,71 @@
* ====================================================================
* @endcopyright
*
- * @file StringArray.cpp
- * @brief Implementation of the class StringArray
+ * @file Array.cpp
+ * @brief Implementation of the class Array
*/
-#include "StringArray.h"
+#include "Array.h"
#include "JNIUtil.h"
#include "JNIStringHolder.h"
#include <apr_tables.h>
#include <apr_strings.h>
-#include "svn_path.h"
#include <iostream>
-StringArray::~StringArray()
+Array::~Array()
{
- if (m_stringArray != NULL)
- JNIUtil::getEnv()->DeleteLocalRef(m_stringArray);
- if (m_stringCollection != NULL)
- JNIUtil::getEnv()->DeleteLocalRef(m_stringCollection);
-}
-
-const apr_array_header_t *StringArray::array(const SVN::Pool &pool)
-{
- apr_array_header_t *strings
- = apr_array_make(pool.pool(), m_strings.size(), sizeof(char *));
-
- std::vector<std::string>::const_iterator it;
- for (it = m_strings.begin(); it < m_strings.end(); ++it)
+ if (m_objectArray != NULL)
{
- APR_ARRAY_PUSH(strings, const char *) = it->c_str();
- if (JNIUtil::isExceptionThrown())
- return NULL;
+ for (std::vector<jobject>::iterator it = m_objects.begin();
+ it < m_objects.end(); ++it)
+ {
+ JNIUtil::getEnv()->DeleteLocalRef(*it);
+ if (JNIUtil::isExceptionThrown())
+ return;
+ }
+
+ JNIUtil::getEnv()->DeleteLocalRef(m_objectArray);
}
-
- return strings;
}
-const std::vector<std::string> &StringArray::vector(void)
+const std::vector<jobject> &Array::vector(void)
{
- return m_strings;
+ return m_objects;
}
-StringArray::StringArray(jobjectArray jstrings)
+void
+Array::init(jobjectArray jobjects)
{
- m_stringArray = jstrings;
- m_stringCollection = NULL;
+ m_objectArray = jobjects;
- if (jstrings != NULL)
+ if (jobjects != NULL)
{
JNIEnv *env = JNIUtil::getEnv();
- jint arraySize = env->GetArrayLength(jstrings);
+ jint arraySize = env->GetArrayLength(jobjects);
if (JNIUtil::isExceptionThrown())
return;
for (int i = 0; i < arraySize; ++i)
{
- jobject jstr = env->GetObjectArrayElement(jstrings, i);
+ jobject jobj = env->GetObjectArrayElement(jobjects, i);
if (JNIUtil::isExceptionThrown())
return;
- JNIStringHolder str((jstring)jstr);
- if (JNIUtil::isExceptionThrown())
- return;
-
- m_strings.push_back(std::string((const char *)str));
+ m_objects.push_back(jobj);
}
}
}
-StringArray::StringArray(jobject jstringCollection)
+Array::Array(jobjectArray jobjects)
{
- m_stringArray = NULL;
- m_stringCollection = jstringCollection;
+ init(jobjects);
+}
- if (jstringCollection != NULL)
+Array::Array(jobject jobjectCollection)
+{
+ jobjectArray jobjects = NULL;
+
+ if (jobjectCollection != NULL)
{
JNIEnv *env = JNIUtil::getEnv();
@@ -108,32 +99,10 @@ StringArray::StringArray(jobject jstring
return;
}
- jobjectArray jstrings = (jobjectArray) env->CallObjectMethod(
- jstringCollection, mid_toArray);
+ jobjects = (jobjectArray) env->CallObjectMethod(jobjectCollection,
+ mid_toArray);
- jint arraySize = env->GetArrayLength(jstrings);
- if (JNIUtil::isExceptionThrown())
- return;
-
- for (int i = 0; i < arraySize; ++i)
- {
- jobject jstr = env->GetObjectArrayElement(jstrings, i);
- if (JNIUtil::isExceptionThrown())
- return;
-
- JNIStringHolder str((jstring)jstr);
- if (JNIUtil::isExceptionThrown())
- return;
-
- m_strings.push_back(std::string((const char *)str));
- }
-
- JNIUtil::getEnv()->DeleteLocalRef(clazz);
- if (JNIUtil::isExceptionThrown())
- return;
-
- JNIUtil::getEnv()->DeleteLocalRef(jstrings);
- if (JNIUtil::isExceptionThrown())
- return;
}
+
+ init(jobjects);
}
Copied: subversion/trunk/subversion/bindings/javahl/native/Array.h (from r921141, subversion/trunk/subversion/bindings/javahl/native/StringArray.h)
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Array.h?p2=subversion/trunk/subversion/bindings/javahl/native/Array.h&p1=subversion/trunk/subversion/bindings/javahl/native/StringArray.h&r1=921141&r2=921176&rev=921176&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Array.h Tue Mar 9 22:34:00 2010
@@ -20,35 +20,31 @@
* ====================================================================
* @endcopyright
*
- * @file StringArray.h
- * @brief Interface of the class StringArray
+ * @file Array.h
+ * @brief Interface of the class Array
*/
-#ifndef STRINGARRAY_H
-#define STRINGARRAY_H
+#ifndef ARRAY_H
+#define ARRAY_H
#include <jni.h>
#include "Pool.h"
struct apr_array_header_t;
-struct svn_error_t;
-#include "Path.h"
#include <vector>
-#include <string>
-class StringArray
+class Array
{
private:
- std::vector<std::string> m_strings;
- jobjectArray m_stringArray;
- jobject m_stringCollection;
+ jobjectArray m_objectArray;
+ std::vector<jobject> m_objects;
+ void init(jobjectArray jobjects);
public:
- StringArray(jobjectArray jstrings);
- StringArray(jobject jstringCollection);
- ~StringArray();
- const apr_array_header_t *array(const SVN::Pool &pool);
- const std::vector<std::string> &vector(void);
+ Array(jobjectArray jobjects);
+ Array(jobject jobjectsCollection);
+ virtual ~Array();
+ const std::vector<jobject> &vector(void);
};
-#endif // STRINGARRAY_H
+#endif // ARRAY_H
Modified: subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp?rev=921176&r1=921175&r2=921176&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/StringArray.cpp Tue Mar 9 22:34:00 2010
@@ -34,10 +34,6 @@
StringArray::~StringArray()
{
- if (m_stringArray != NULL)
- JNIUtil::getEnv()->DeleteLocalRef(m_stringArray);
- if (m_stringCollection != NULL)
- JNIUtil::getEnv()->DeleteLocalRef(m_stringCollection);
}
const apr_array_header_t *StringArray::array(const SVN::Pool &pool)
@@ -61,79 +57,30 @@ const std::vector<std::string> &StringAr
return m_strings;
}
-StringArray::StringArray(jobjectArray jstrings)
+void
+StringArray::init(void)
{
- m_stringArray = jstrings;
- m_stringCollection = NULL;
-
- if (jstrings != NULL)
+ const std::vector<jobject> &jobjects = Array::vector();
+
+ for (std::vector<jobject>::const_iterator it = jobjects.begin();
+ it < jobjects.end(); ++it)
{
- JNIEnv *env = JNIUtil::getEnv();
- jint arraySize = env->GetArrayLength(jstrings);
+ JNIStringHolder str((jstring) *it);
if (JNIUtil::isExceptionThrown())
return;
- for (int i = 0; i < arraySize; ++i)
- {
- jobject jstr = env->GetObjectArrayElement(jstrings, i);
- if (JNIUtil::isExceptionThrown())
- return;
-
- JNIStringHolder str((jstring)jstr);
- if (JNIUtil::isExceptionThrown())
- return;
-
- m_strings.push_back(std::string((const char *)str));
- }
+ m_strings.push_back(std::string((const char *)str));
}
}
-StringArray::StringArray(jobject jstringCollection)
+StringArray::StringArray(jobjectArray jstrings)
+ : Array(jstrings), m_strings()
{
- m_stringArray = NULL;
- m_stringCollection = jstringCollection;
-
- if (jstringCollection != NULL)
- {
- JNIEnv *env = JNIUtil::getEnv();
-
- jclass clazz = env->FindClass("java/util/Collection");
-
- static jmethodID mid_toArray = 0;
- if (mid_toArray == 0)
- {
- mid_toArray = env->GetMethodID(clazz, "toArray",
- "()[Ljava/lang/Object;");
- if (JNIUtil::isExceptionThrown())
- return;
- }
-
- jobjectArray jstrings = (jobjectArray) env->CallObjectMethod(
- jstringCollection, mid_toArray);
-
- jint arraySize = env->GetArrayLength(jstrings);
- if (JNIUtil::isExceptionThrown())
- return;
-
- for (int i = 0; i < arraySize; ++i)
- {
- jobject jstr = env->GetObjectArrayElement(jstrings, i);
- if (JNIUtil::isExceptionThrown())
- return;
-
- JNIStringHolder str((jstring)jstr);
- if (JNIUtil::isExceptionThrown())
- return;
-
- m_strings.push_back(std::string((const char *)str));
- }
-
- JNIUtil::getEnv()->DeleteLocalRef(clazz);
- if (JNIUtil::isExceptionThrown())
- return;
+ init();
+}
- JNIUtil::getEnv()->DeleteLocalRef(jstrings);
- if (JNIUtil::isExceptionThrown())
- return;
- }
+StringArray::StringArray(jobject jstringCollection)
+ : Array(jstringCollection), m_strings()
+{
+ init();
}
Modified: subversion/trunk/subversion/bindings/javahl/native/StringArray.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/StringArray.h?rev=921176&r1=921175&r2=921176&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/StringArray.h (original)
+++ subversion/trunk/subversion/bindings/javahl/native/StringArray.h Tue Mar 9 22:34:00 2010
@@ -31,18 +31,16 @@
#include "Pool.h"
struct apr_array_header_t;
-struct svn_error_t;
-#include "Path.h"
+#include "Array.h"
#include <vector>
#include <string>
-class StringArray
+class StringArray : Array
{
private:
std::vector<std::string> m_strings;
- jobjectArray m_stringArray;
- jobject m_stringCollection;
+ void init(void);
public:
StringArray(jobjectArray jstrings);
StringArray(jobject jstringCollection);
Re: svn commit: r921176 - in /subversion/trunk/subversion/bindings/javahl/native:
Array.cpp Array.h StringArray.cpp StringArray.h
Posted by Blair Zajac <bl...@orcaware.com>.
On 03/09/2010 02:34 PM, hwright@apache.org wrote:
> Author: hwright
> Date: Tue Mar 9 22:34:00 2010
> New Revision: 921176
>
> URL: http://svn.apache.org/viewvc?rev=921176&view=rev
> Log:
> JavaHL: Create a new C++ class which represents a generic array of Java
> objects. Move the various collection parsing duties to this class, and make
> the StringArray class inherit from it.
>
> + const std::vector<jobject> &vector(void);
This method could be const and its counterpart in StringArray.
Blair