@@ -38,6 +38,7 @@ long my_getThreadId() {
3838 s_ct->InstanceTemplate ()->SetInternalFieldCount (1 );
3939 s_ct->SetClassName (v8::String::NewSymbol (" Java" ));
4040
41+ NODE_SET_PROTOTYPE_METHOD (s_ct, " getClassLoader" , getClassLoader);
4142 NODE_SET_PROTOTYPE_METHOD (s_ct, " newInstance" , newInstance);
4243 NODE_SET_PROTOTYPE_METHOD (s_ct, " newInstanceSync" , newInstanceSync);
4344 NODE_SET_PROTOTYPE_METHOD (s_ct, " newProxy" , newProxy);
@@ -146,9 +147,31 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
146147 JNI_CreateJavaVM (&jvmTemp, (void **)env, &args);
147148 *jvm = jvmTemp;
148149
150+ m_classLoader = getSystemClassLoader (*env);
151+
149152 return v8::Undefined ();
150153}
151154
155+ /* static*/ v8::Handle<v8::Value> Java::getClassLoader (const v8::Arguments& args) {
156+ v8::HandleScope scope;
157+ Java* self = node::ObjectWrap::Unwrap<Java>(args.This ());
158+ v8::Handle<v8::Value> ensureJvmResults = self->ensureJvm ();
159+ if (!ensureJvmResults->IsUndefined ()) {
160+ return ensureJvmResults;
161+ }
162+ JNIEnv* env = self->getJavaEnv ();
163+
164+ jclass classClazz = env->FindClass (" java/lang/ClassLoader" );
165+ printf (" %d\n " , (int )classClazz);
166+ jmethodID class_getClassLoader = env->GetStaticMethodID (classClazz, " getSystemClassLoader" , " ()Ljava/lang/ClassLoader;" );
167+ printf (" %d\n " , (int )class_getClassLoader);
168+ jobject classLoader = env->CallStaticObjectMethod (classClazz, class_getClassLoader);
169+ printf (" %d\n " , (int )classLoader);
170+
171+ jobject result = env->NewGlobalRef (classLoader);
172+ return scope.Close (javaToV8 (self, env, result));
173+ }
174+
152175/* static*/ v8::Handle<v8::Value> Java::newInstance (const v8::Arguments& args) {
153176 v8::HandleScope scope;
154177 Java* self = node::ObjectWrap::Unwrap<Java>(args.This ());
0 commit comments