folly::dynamic JavaNativeModule::getConstants() { static auto constantsMethod = wrapper_->getClass()->getMethod<NativeMap::javaobject()>("getConstants"); auto constants = constantsMethod(wrapper_); if (!constants) { return nullptr; } else { return cthis(constants)->consume(); } }
xplat::module::CxxModule::Provider ModuleHolder::getProvider() const { return [self=jni::make_global(self())] { static auto method = ModuleHolder::javaClassStatic()->getMethod<JNativeModule::javaobject()>( "getModule"); // This is the call which uses the lazy Java Provider to instantiate the // Java CxxModuleWrapper which contains the CxxModule. auto module = method(self); CHECK(module->isInstanceOf(CxxModuleWrapperBase::javaClassStatic())) << "module isn't a C++ module"; auto cxxModule = jni::static_ref_cast<CxxModuleWrapperBase::javaobject>(module); // Then, we grab the CxxModule from the wrapper, which is no longer needed. return cxxModule->cthis()->getModule(); }; }