MCPcopy Create free account
hub / github.com/NativeScript/android / ResolveClass

Method ResolveClass

test-app/runtime/src/main/cpp/CallbackHandlers.cpp:133–167  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

131}
132
133jclass CallbackHandlers::ResolveClass(Isolate *isolate, const string &baseClassName,
134 const string &fullClassName,
135 const Local<Object> &implementationObject, bool isInterface) {
136 JEnv env;
137 jclass globalRefToGeneratedClass = env.CheckForClassInCache(fullClassName);
138
139 if (globalRefToGeneratedClass == nullptr) {
140
141 // get needed arguments in order to load binding
142 JniLocalRef javaBaseClassName(env.NewStringUTF(baseClassName.c_str()));
143 JniLocalRef javaFullClassName(env.NewStringUTF(fullClassName.c_str()));
144
145 jobjectArray methodOverrides = GetMethodOverrides(env, implementationObject);
146
147 jobjectArray implementedInterfaces = GetImplementedInterfaces(env, implementationObject);
148
149 auto runtime = Runtime::GetRuntime(isolate);
150
151 // create or load generated binding (java class)
152 jclass generatedClass = (jclass) env.CallObjectMethod(runtime->GetJavaRuntime(),
153 RESOLVE_CLASS_METHOD_ID,
154 (jstring) javaBaseClassName,
155 (jstring) javaFullClassName,
156 methodOverrides,
157 implementedInterfaces,
158 isInterface);
159
160 globalRefToGeneratedClass = env.InsertClassIntoCache(fullClassName, generatedClass);
161
162 env.DeleteGlobalRef(methodOverrides);
163 env.DeleteGlobalRef(implementedInterfaces);
164 }
165
166 return globalRefToGeneratedClass;
167}
168
169// Called by ExtendMethodCallback when extending a class
170string CallbackHandlers::ResolveClassName(Isolate *isolate, jclass &clazz) {

Callers

nothing calls this directly

Calls 6

CheckForClassInCacheMethod · 0.80
NewStringUTFMethod · 0.80
CallObjectMethodMethod · 0.80
GetJavaRuntimeMethod · 0.80
InsertClassIntoCacheMethod · 0.80
DeleteGlobalRefMethod · 0.80

Tested by

no test coverage detected