jclass NativeScriptRuntime::ResolveClass(const std::string& fullClassname, const Local<Object>& implementationObject) { auto itFound = s_classCache.find(fullClassname); jclass globalRefToGeneratedClass; if (itFound != s_classCache.end()) { globalRefToGeneratedClass = itFound->second; } else { JEnv env; //get needed arguments in order to load binding JniLocalRef javaFullClassName(env.NewStringUTF(fullClassname.c_str())); jobjectArray methodOverrides = GetMethodOverrides(env, implementationObject); //create or load generated binding (java class) JniLocalRef generatedClass(env.CallStaticObjectMethod(PlatformClass, RESOLVE_CLASS_METHOD_ID, (jstring)javaFullClassName, methodOverrides)); globalRefToGeneratedClass = reinterpret_cast<jclass>(env.NewGlobalRef(generatedClass)); s_classCache.insert(make_pair(fullClassname, globalRefToGeneratedClass)); } return globalRefToGeneratedClass; }
jclass NativeScriptRuntime::ResolveClass(const std::string& fullClassname, const Handle<Object>& implementationObject) { JEnv env; //get needed arguments in order to load binding JniLocalRef javaFullClassName(env.NewStringUTF(fullClassname.c_str())); jobjectArray methodOverrides = GetMethodOverrides(env, implementationObject); //create or load generated binding (java class) JniLocalRef generatedClass(env.CallStaticObjectMethod(PlatformClass, RESOLVE_CLASS_METHOD_ID, (jstring)javaFullClassName, methodOverrides)); jclass globalRefToGeneratedClass = reinterpret_cast<jclass>(env.NewGlobalRef(generatedClass)); return globalRefToGeneratedClass; }
void JsDebugger::Init(v8::Isolate *isolate, const string& packageName, jobject jsDebugger) { s_isolate = isolate; s_packageName = packageName; JEnv env; s_jsDebugger = env.NewGlobalRef(jsDebugger); s_JsDebuggerClass = env.FindClass("com/tns/JsDebugger"); assert(s_JsDebuggerClass != nullptr); s_EnqueueMessage = env.GetMethodID(s_JsDebuggerClass, "enqueueMessage", "(Ljava/lang/String;)V"); assert(s_EnqueueMessage != nullptr); s_EnableAgent = env.GetMethodID(s_JsDebuggerClass, "enableAgent", "()V"); assert(s_EnableAgent != nullptr); }
DirectBuffer::DirectBuffer(uint32_t length) { m_length = length; m_data = new int[m_length]; m_end = m_data + m_length; Reset(); int capacity = m_length * sizeof(int); JEnv env; JniLocalRef buff(env.NewDirectByteBuffer(m_data, capacity)); m_buff = env.NewGlobalRef(buff); }