bool JavaNPObject_GetProperty(NPObject* obj, NPIdentifier identifier, NPVariant* result) { VOID_TO_NPVARIANT(*result); JavaInstance* instance = ExtractJavaInstance(obj); if (instance == 0) return false; NPUTF8* name = _NPN_UTF8FromIdentifier(identifier); if (name == 0) return false; JavaField* field = instance->getClass()->fieldNamed(name); free(name); // TODO: use NPN_MemFree if (field == 0) { return false; } jobject local_ref = instance->getLocalRef(); jvalue value = getJNIField(local_ref, field->getJNIType(), field->name(), field->type()); getJNIEnv()->DeleteLocalRef(local_ref); convertJValueToNPVariant(value, field->getJNIType(), field->type(), result); return true; }