You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/07/01 16:48:15 UTC
svn commit: r790197 - in /commons/sandbox/runtime/trunk/src:
main/native/include/acr_clazz.h main/native/shared/clazz.c
main/native/test/testcase.c test/org/apache/commons/runtime/TestPrivate.java
Author: mturk
Date: Wed Jul 1 14:48:15 2009
New Revision: 790197
URL: http://svn.apache.org/viewvc?rev=790197&view=rev
Log:
Add Class getname API
Modified:
commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h
commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c
commons/sandbox/runtime/trunk/src/main/native/test/testcase.c
commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h?rev=790197&r1=790196&r2=790197&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h Wed Jul 1 14:48:15 2009
@@ -115,6 +115,14 @@
*/
ACR_DECLARE(int) ACR_ClassGetFlags(JNIEnv *env, jobject obj);
+/**
+ * Get the Class name.
+ * @param env Current JNI environment.
+ * @param obj Class to use.
+ * @param simple If non-zero use getSimpleName instead getName
+ */
+ACR_DECLARE(char *) ACR_ClassGetName(JNIEnv *env, jobject obj, int simple);
+
#ifdef __cplusplus
}
#endif
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c?rev=790197&r1=790196&r2=790197&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c Wed Jul 1 14:48:15 2009
@@ -437,6 +437,24 @@
return flags;
}
+ACR_DECLARE(char *) ACR_ClassGetName(ACR_JNISTDARGS, int simple)
+{
+ char *name = NULL;
+ if (IS_JOBJECT_NULL(_E, _O))
+ return NULL;
+
+ if (_clazzn.i && J4MID(0000)) {
+ jstring sn;
+ if (simple)
+ sn = CALL_METHOD0(Object, 0001, _O);
+ else
+ sn = CALL_METHOD0(Object, 0000, _O);
+ if (sn)
+ name = ACR_GetJavaStringA(_E, sn, NULL);
+ }
+ return name;
+}
+
#ifdef ACR_ENABLE_TEST
/* Just for testing the cache table */
int acr_clazz_cache_size()
Modified: commons/sandbox/runtime/trunk/src/main/native/test/testcase.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/test/testcase.c?rev=790197&r1=790196&r2=790197&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/test/testcase.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/test/testcase.c Wed Jul 1 14:48:15 2009
@@ -381,6 +381,18 @@
return ACR_ClassGetFlags(_E, c);
}
+ACR_JNI_EXPORT_DECLARE(jstring, TestPrivate, test036)(ACR_JNISTDARGS, jobject c)
+{
+ char *n;
+ jstring r = NULL;
+ n = ACR_ClassGetName(_E, c, 0);
+ if (n) {
+ r = ACR_NewJavaStringA(_E, n);
+ free(n);
+ }
+ return r;
+}
+
ACR_JNI_EXPORT_DECLARE(jint, TestFile, ftest00)(ACR_JNISTDARGS, jint d)
{
return ldfile(_E);
Modified: commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java?rev=790197&r1=790196&r2=790197&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java (original)
+++ commons/sandbox/runtime/trunk/src/test/org/apache/commons/runtime/TestPrivate.java Wed Jul 1 14:48:15 2009
@@ -85,6 +85,7 @@
private static native int test033(int d);
private static native int test034(Descriptor p);
private static native int test035(Class c);
+ private static native String test036(Class c);
private static native String test100(String s);
@@ -272,6 +273,14 @@
assertEquals("Flags", 4, i);
}
+ public void testClassGetName()
+ throws Exception
+ {
+ String[] s = new String[2];
+ String n = test036(s.getClass());
+ assertEquals("Name", s.getClass().getName(), n);
+ }
+
public void testPointerCb()
throws Throwable
{