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 2011/04/11 07:36:38 UTC

svn commit: r1090939 - /commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c

Author: mturk
Date: Mon Apr 11 05:36:38 2011
New Revision: 1090939

URL: http://svn.apache.org/viewvc?rev=1090939&view=rev
Log:
Add few more Reflect native methods

Modified:
    commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c?rev=1090939&r1=1090938&r2=1090939&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/reflect.c Mon Apr 11 05:36:38 2011
@@ -32,16 +32,33 @@ ACR_JNI_EXPORT(jobject, Reflect, get0)(J
     WITH_CSTR(name) {
         _jni_classname(J2S(name));
         c = (jobject)(*_E)->FindClass(_E, J2S(name));
+        /* XXX: Do we need some reference here?
+         */
+    }
+    DONE_WITH_STR(name);
+    return c;
+}
+
+ACR_JNI_EXPORT(jobject, Reflect, get1)(JNI_STDARGS, jstring name,
+                                       jboolean isWeak)
+{
+    jobject c = 0;
+    WITH_CSTR(name) {
+        _jni_classname(J2S(name));
+        c = (jobject)(*_E)->FindClass(_E, J2S(name));
         if (c != 0) {
             /* Can throw OutOfMemoryError */
-            c = (*_E)->NewWeakGlobalRef(_E, c);
+            if (isWeak)
+                c = (*_E)->NewWeakGlobalRef(_E, c);
+            else
+                c = (*_E)->NewGlobalRef(_E, c);
         }
     }
     DONE_WITH_STR(name);
     return c;
 }
 
-ACR_JNI_EXPORT(jlong, Reflect, get1)(JNI_STDARGS,
+ACR_JNI_EXPORT(jlong, Reflect, get2)(JNI_STDARGS,
                                      jclass clazz,
                                      jstring name,
                                      jstring sig,
@@ -62,7 +79,7 @@ ACR_JNI_EXPORT(jlong, Reflect, get1)(JNI
     return id;
 }
 
-ACR_JNI_EXPORT(jlong, Reflect, get2)(JNI_STDARGS,
+ACR_JNI_EXPORT(jlong, Reflect, get3)(JNI_STDARGS,
                                      jclass clazz,
                                      jstring name,
                                      jstring sig,
@@ -83,7 +100,7 @@ ACR_JNI_EXPORT(jlong, Reflect, get2)(JNI
     return id;
 }
 
-ACR_JNI_EXPORT(jobject, Reflect, get3)(JNI_STDARGS,
+ACR_JNI_EXPORT(jobject, Reflect, get4)(JNI_STDARGS,
                                        jclass clazz,
                                        jlong methodId,
                                        jboolean isStatic)
@@ -91,10 +108,36 @@ ACR_JNI_EXPORT(jobject, Reflect, get3)(J
     return (*_E)->ToReflectedMethod(_E, clazz, J2P(methodId, jmethodID), isStatic);
 }
 
-ACR_JNI_EXPORT(jobject, Reflect, get4)(JNI_STDARGS,
+ACR_JNI_EXPORT(jobject, Reflect, get5)(JNI_STDARGS,
                                        jclass clazz,
                                        jlong fieldId,
                                        jboolean isStatic)
 {
     return (*_E)->ToReflectedField(_E, clazz, J2P(fieldId, jfieldID), isStatic);
 }
+
+ACR_JNI_EXPORT(jint, Reflect, get6)(JNI_STDARGS,
+                                    jobject obj)
+{
+    return (jint)(*_E)->GetObjectRefType(_E, obj);
+}
+
+ACR_JNI_EXPORT(jobject, Reflect, new0)(JNI_STDARGS,
+                                       jclass clazz)
+{
+    return (*_E)->AllocObject(_E, clazz);
+}
+
+ACR_JNI_EXPORT(void, Reflect, clr0)(JNI_STDARGS, jobject obj)
+{
+    jobject o = (*_E)->NewLocalRef(_E, obj);
+    if (o != 0) {
+        (*_E)->DeleteWeakGlobalRef(_E, obj);
+        (*_E)->DeleteLocalRef(_E, o);        
+    }
+}
+
+ACR_JNI_EXPORT(void, Reflect, clr1)(JNI_STDARGS, jobject obj)
+{
+    (*_E)->DeleteGlobalRef(_E, obj);        
+}