void Proxy::bindProxy(Handle<Object> exports) { javaClassSymbol = SYMBOL_LITERAL("__javaClass__"); constructorSymbol = SYMBOL_LITERAL("constructor"); inheritSymbol = SYMBOL_LITERAL("inherit"); propertiesSymbol = SYMBOL_LITERAL("_properties"); lengthSymbol = SYMBOL_LITERAL("length"); sourceUrlSymbol = SYMBOL_LITERAL("sourceUrl"); Local<FunctionTemplate> proxyTemplate = FunctionTemplate::New(); Local<String> proxySymbol = String::NewSymbol("Proxy"); proxyTemplate->InstanceTemplate()->SetInternalFieldCount(kInternalFieldCount); proxyTemplate->SetClassName(proxySymbol); proxyTemplate->Inherit(EventEmitter::constructorTemplate); proxyTemplate->Set(javaClassSymbol, External::Wrap(JNIUtil::krollProxyClass), PropertyAttribute(DontDelete | DontEnum)); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "_hasListenersForEventType", hasListenersForEventType); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "onPropertiesChanged", proxyOnPropertiesChanged); baseProxyTemplate = Persistent<FunctionTemplate>::New(proxyTemplate); exports->Set(proxySymbol, proxyTemplate->GetFunction()); }
Handle<FunctionTemplate> PushbotsModule::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("com/pushbots/android/PushbotsModule"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("Pushbots"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::KrollModule::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<PushbotsModule>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "setPushEnabled", PushbotsModule::setPushEnabled); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "tag", PushbotsModule::tag); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "example", PushbotsModule::example); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- instanceTemplate->SetAccessor(String::NewSymbol("alias"), titanium::Proxy::getProperty , PushbotsModule::setter_alias , Handle<Value>(), DEFAULT); instanceTemplate->SetAccessor(String::NewSymbol("enabled"), PushbotsModule::getter_enabled , PushbotsModule::setter_enabled , Handle<Value>(), DEFAULT); instanceTemplate->SetAccessor(String::NewSymbol("exampleProp"), PushbotsModule::getter_exampleProp , PushbotsModule::setter_exampleProp , Handle<Value>(), DEFAULT); // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> ExampleProxy::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("ro/mihaiblaga/imei/ExampleProxy"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("Example"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::TiViewProxy::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<ExampleProxy>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "setMessage", ExampleProxy::setMessage); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "getMessage", ExampleProxy::getMessage); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "printMessage", ExampleProxy::printMessage); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "getImei", ExampleProxy::getImei); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- instanceTemplate->SetAccessor(String::NewSymbol("message"), ExampleProxy::getter_message , ExampleProxy::setter_message , Handle<Value>(), DEFAULT); instanceTemplate->SetAccessor(String::NewSymbol("imei"), ExampleProxy::getter_imei , titanium::Proxy::onPropertyChanged , Handle<Value>(), DEFAULT); // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> NfcTagProxy::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("ta/nfc/NfcTagProxy"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("NfcTag"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::KrollProxy::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<NfcTagProxy>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "getId", NfcTagProxy::getId); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "getTechList", NfcTagProxy::getTechList); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- instanceTemplate->SetAccessor(String::NewSymbol("id"), NfcTagProxy::getter_id , titanium::Proxy::onPropertyChanged , Handle<Value>(), DEFAULT); instanceTemplate->SetAccessor(String::NewSymbol("techList"), NfcTagProxy::getter_techList , titanium::Proxy::onPropertyChanged , Handle<Value>(), DEFAULT); // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> ViewProxy::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("ti/osmdroid/ViewProxy"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("View"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::TiViewProxy::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<ViewProxy>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "addAnnotations", ViewProxy::addAnnotations); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "zoom", ViewProxy::zoom); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "setMapType", ViewProxy::setMapType); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "setLocation", ViewProxy::setLocation); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> TitestModule::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("teunozz/test/module/TitestModule"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("Titest"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::KrollModule::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<TitestModule>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "start", TitestModule::start); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "sendData", TitestModule::sendData); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "stop", TitestModule::stop); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> TiAndroidRequeststoragepermissionModule::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("com/boxoutthinkers/reqstorageperm/TiAndroidRequeststoragepermissionModule"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("TiAndroidRequeststoragepermission"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::KrollModule::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<TiAndroidRequeststoragepermissionModule>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "requestStoragePermissions", TiAndroidRequeststoragepermissionModule::requestStoragePermissions); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "hasStoragePermission", TiAndroidRequeststoragepermissionModule::hasStoragePermission); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- // Accessors -------------------------------------------------------------- return proxyTemplate; }
Handle<FunctionTemplate> LocalyticsModule::getProxyTemplate() { if (!proxyTemplate.IsEmpty()) { return proxyTemplate; } LOGD(TAG, "GetProxyTemplate"); javaClass = titanium::JNIUtil::findClass("pw/localytics/LocalyticsModule"); HandleScope scope; // use symbol over string for efficiency Handle<String> nameSymbol = String::NewSymbol("Localytics"); Handle<FunctionTemplate> t = titanium::Proxy::inheritProxyTemplate( titanium::KrollModule::getProxyTemplate() , javaClass, nameSymbol); proxyTemplate = Persistent<FunctionTemplate>::New(t); proxyTemplate->Set(titanium::Proxy::inheritSymbol, FunctionTemplate::New(titanium::Proxy::inherit<LocalyticsModule>)->GetFunction()); titanium::ProxyFactory::registerProxyPair(javaClass, *proxyTemplate); // Method bindings -------------------------------------------------------- DEFINE_PROTOTYPE_METHOD(proxyTemplate, "logEvent", LocalyticsModule::logEvent); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "registerForPush", LocalyticsModule::registerForPush); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "logScreen", LocalyticsModule::logScreen); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "pauseSession", LocalyticsModule::pauseSession); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "resumeSession", LocalyticsModule::resumeSession); DEFINE_PROTOTYPE_METHOD(proxyTemplate, "initSession", LocalyticsModule::initSession); Local<ObjectTemplate> prototypeTemplate = proxyTemplate->PrototypeTemplate(); Local<ObjectTemplate> instanceTemplate = proxyTemplate->InstanceTemplate(); // Delegate indexed property get and set to the Java proxy. instanceTemplate->SetIndexedPropertyHandler(titanium::Proxy::getIndexedProperty, titanium::Proxy::setIndexedProperty); // Constants -------------------------------------------------------------- // Dynamic properties ----------------------------------------------------- // Accessors -------------------------------------------------------------- return proxyTemplate; }