55#include < sstream>
66#include < algorithm>
77
8- /* static*/ std::map<std::string, v8 ::Persistent<v8::FunctionTemplate>*> JavaObject::sFunctionTemplates ;
8+ /* static*/ std::map<std::string, Nan ::Persistent<v8::FunctionTemplate>*> JavaObject::sFunctionTemplates ;
99
1010/* static*/ void JavaObject::Init (v8::Handle<v8::Object> target) {
1111}
1212
1313/* static*/ v8::Local<v8::Object> JavaObject::New (Java *java, jobject obj) {
14- NanEscapableScope () ;
14+ Nan::EscapableHandleScope scope ;
1515
1616 JNIEnv *env = java->getJavaEnv ();
1717 JavaScope javaScope (env);
2929
3030 v8::Local<v8::Function> promisify;
3131 if (java->DoPromise ()) {
32- v8::Local<v8::Object> asyncOptions = NanObjectWrapHandle ( java)->Get (NanNew <v8::String>(" asyncOptions" )).As <v8::Object>();
33- v8::Local<v8::Value> promisifyValue = asyncOptions->Get (NanNew <v8::String>(" promisify" ));
32+ v8::Local<v8::Object> asyncOptions = java-> handle ( )->Get (Nan::New <v8::String>(" asyncOptions" ). ToLocalChecked ( )).As <v8::Object>();
33+ v8::Local<v8::Value> promisifyValue = asyncOptions->Get (Nan::New <v8::String>(" promisify" ). ToLocalChecked ( ));
3434 promisify = promisifyValue.As <v8::Function>();
3535 }
3636
3737 v8::Local<v8::FunctionTemplate> funcTemplate;
3838 if (sFunctionTemplates .find (className) != sFunctionTemplates .end ()) {
3939 // printf("existing className: %s\n", className.c_str());
40- funcTemplate = NanNew (*sFunctionTemplates [className]);
40+ funcTemplate = Nan::New (*sFunctionTemplates [className]);
4141 } else {
4242 // printf("create className: %s\n", className.c_str());
4343
44- funcTemplate = NanNew <v8::FunctionTemplate>();
44+ funcTemplate = Nan::New <v8::FunctionTemplate>();
4545 funcTemplate->InstanceTemplate ()->SetInternalFieldCount (1 );
46- funcTemplate->SetClassName (NanNew <v8::String>(className.c_str ()));
46+ funcTemplate->SetClassName (Nan::New <v8::String>(className.c_str ()). ToLocalChecked ( ));
4747
4848 std::list<jobject> methods;
4949 javaReflectionGetMethods (env, objClazz, &methods, false );
5454 assert (!env->ExceptionCheck ());
5555 std::string methodNameStr = javaToString (env, methodNameJava);
5656
57- v8::Handle <v8::String> baseMethodName = NanNew <v8::String>(methodNameStr.c_str ());
57+ v8::Local <v8::String> baseMethodName = Nan::New <v8::String>(methodNameStr.c_str ()). ToLocalChecked ( );
5858
59- v8::Handle <v8::String> methodNameAsync = NanNew <v8::String>((methodNameStr + java->AsyncSuffix ()).c_str ());
60- v8::Local<v8::FunctionTemplate> methodCallTemplate = NanNew <v8::FunctionTemplate>(methodCall, baseMethodName);
59+ v8::Local <v8::String> methodNameAsync = Nan::New <v8::String>((methodNameStr + java->AsyncSuffix ()).c_str ()). ToLocalChecked ( );
60+ v8::Local<v8::FunctionTemplate> methodCallTemplate = Nan::New <v8::FunctionTemplate>(methodCall, baseMethodName);
6161 funcTemplate->PrototypeTemplate ()->Set (methodNameAsync, methodCallTemplate->GetFunction ());
6262
63- v8::Handle <v8::String> methodNameSync = NanNew <v8::String>((methodNameStr + java->SyncSuffix ()).c_str ());
64- v8::Local<v8::FunctionTemplate> methodCallSyncTemplate = NanNew <v8::FunctionTemplate>(methodCallSync, baseMethodName);
63+ v8::Local <v8::String> methodNameSync = Nan::New <v8::String>((methodNameStr + java->SyncSuffix ()).c_str ()). ToLocalChecked ( );
64+ v8::Local<v8::FunctionTemplate> methodCallSyncTemplate = Nan::New <v8::FunctionTemplate>(methodCallSync, baseMethodName);
6565 funcTemplate->PrototypeTemplate ()->Set (methodNameSync, methodCallSyncTemplate->GetFunction ());
6666
6767 if (java->DoPromise ()) {
68- v8::Local<v8::Object> recv = NanNew <v8::Object>();
68+ v8::Local<v8::Object> recv = Nan::New <v8::Object>();
6969 v8::Local<v8::Value> argv[] = { methodCallTemplate->GetFunction () };
7070 v8::Local<v8::Value> result = promisify->Call (recv, 1 , argv);
7171 if (!result->IsFunction ()) {
7272 fprintf (stderr, " Promisified result is not a function -- asyncOptions.promisify must return a function.\n " );
7373 assert (result->IsFunction ());
7474 }
7575 v8::Local<v8::Function> promFunction = result.As <v8::Function>();
76- v8::Handle <v8::String> methodNamePromise = NanNew <v8::String>((methodNameStr + java->PromiseSuffix ()).c_str ());
76+ v8::Local <v8::String> methodNamePromise = Nan::New <v8::String>((methodNameStr + java->PromiseSuffix ()).c_str ()). ToLocalChecked ( );
7777 funcTemplate->PrototypeTemplate ()->Set (methodNamePromise, promFunction);
7878 }
7979 }
8787 checkJavaException (env);
8888 std::string fieldNameStr = javaToString (env, fieldNameJava);
8989
90- v8::Handle <v8::String> fieldName = NanNew <v8::String>(fieldNameStr.c_str ());
91- funcTemplate->InstanceTemplate ()-> SetAccessor ( fieldName, fieldGetter, fieldSetter);
90+ v8::Local <v8::String> fieldName = Nan::New <v8::String>(fieldNameStr.c_str ()). ToLocalChecked ( );
91+ Nan::SetAccessor ( funcTemplate->InstanceTemplate (), fieldName, fieldGetter, fieldSetter);
9292 }
9393
94- v8 ::Persistent<v8::FunctionTemplate>* persistentFuncTemplate = new v8 ::Persistent<v8::FunctionTemplate>();
95- NanAssignPersistent (* persistentFuncTemplate, funcTemplate);
94+ Nan ::Persistent<v8::FunctionTemplate>* persistentFuncTemplate = new Nan ::Persistent<v8::FunctionTemplate>();
95+ persistentFuncTemplate-> Reset ( funcTemplate);
9696 sFunctionTemplates [className] = persistentFuncTemplate;
9797 }
9898
9999 v8::Local<v8::Function> ctor = funcTemplate->GetFunction ();
100100 v8::Local<v8::Object> javaObjectObj = ctor->NewInstance ();
101- javaObjectObj->SetHiddenValue (NanNew <v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT), NanNew <v8::Boolean>(true ));
101+ javaObjectObj->SetHiddenValue (Nan::New <v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT). ToLocalChecked (), Nan::New <v8::Boolean>(true ));
102102 JavaObject *self = new JavaObject (java, obj);
103103 self->Wrap (javaObjectObj);
104104
105- return NanEscapeScope (javaObjectObj);
105+ return scope. Escape (javaObjectObj);
106106}
107107
108108JavaObject::JavaObject (Java *java, jobject obj) {
@@ -119,31 +119,32 @@ JavaObject::~JavaObject() {
119119}
120120
121121NAN_METHOD (JavaObject::methodCall) {
122- NanScope () ;
123- JavaObject* self = node ::ObjectWrap::Unwrap<JavaObject>(args .This ());
122+ Nan::HandleScope scope ;
123+ JavaObject* self = Nan ::ObjectWrap::Unwrap<JavaObject>(info .This ());
124124 JNIEnv *env = self->m_java ->getJavaEnv ();
125125 JavaScope javaScope (env);
126126
127- v8::String::Utf8Value methodName (args .Data ());
127+ v8::String::Utf8Value methodName (info .Data ());
128128 std::string methodNameStr = *methodName;
129129
130130 int argsStart = 0 ;
131- int argsEnd = args .Length ();
131+ int argsEnd = info .Length ();
132132
133133 // arguments
134134 ARGS_BACK_CALLBACK ();
135135
136136 if (!callbackProvided && methodNameStr == " toString" ) {
137- return methodCallSync (args );
137+ return methodCallSync (info );
138138 }
139139
140- jobjectArray methodArgs = v8ToJava (env, args , argsStart, argsEnd);
140+ jobjectArray methodArgs = v8ToJava (env, info , argsStart, argsEnd);
141141
142142 jobject method = javaFindMethod (env, self->m_class , methodNameStr, methodArgs);
143143 if (method == NULL ) {
144- std::string msg = methodNotFoundToString (env, self->m_class , methodNameStr, false , args , argsStart, argsEnd);
144+ std::string msg = methodNotFoundToString (env, self->m_class , methodNameStr, false , info , argsStart, argsEnd);
145145 EXCEPTION_CALL_CALLBACK (self->m_java , msg);
146- NanReturnUndefined ();
146+ info.GetReturnValue ().SetUndefined ();
147+ return ;
147148 }
148149
149150 // run
@@ -154,42 +155,44 @@ NAN_METHOD(JavaObject::methodCall) {
154155}
155156
156157NAN_METHOD (JavaObject::methodCallSync) {
157- NanScope () ;
158- JavaObject* self = node ::ObjectWrap::Unwrap<JavaObject>(args .This ());
158+ Nan::HandleScope scope ;
159+ JavaObject* self = Nan ::ObjectWrap::Unwrap<JavaObject>(info .This ());
159160 JNIEnv *env = self->m_java ->getJavaEnv ();
160161 JavaScope javaScope (env);
161162
162- v8::String::Utf8Value methodName (args .Data ());
163+ v8::String::Utf8Value methodName (info .Data ());
163164 std::string methodNameStr = *methodName;
164165
165166 int argsStart = 0 ;
166- int argsEnd = args .Length ();
167+ int argsEnd = info .Length ();
167168
168- jobjectArray methodArgs = v8ToJava (env, args , argsStart, argsEnd);
169+ jobjectArray methodArgs = v8ToJava (env, info , argsStart, argsEnd);
169170
170171 jobject method = javaFindMethod (env, self->m_class , methodNameStr, methodArgs);
171172 if (method == NULL ) {
172- std::string msg = methodNotFoundToString (env, self->m_class , methodNameStr, false , args, argsStart, argsEnd);
173- v8::Handle<v8::Value> ex = javaExceptionToV8 (self->m_java , env, msg);
174- return NanThrowError (ex);
173+ std::string msg = methodNotFoundToString (env, self->m_class , methodNameStr, false , info, argsStart, argsEnd);
174+ v8::Local<v8::Value> ex = javaExceptionToV8 (self->m_java , env, msg);
175+ Nan::ThrowError (ex);
176+ return ;
175177 }
176178
177179 // run
178- v8::Handle <v8::Value> callback = NanUndefined ();
180+ v8::Local <v8::Value> callback = Nan::Undefined ();
179181 InstanceMethodCallBaton* baton = new InstanceMethodCallBaton (self->m_java , self, method, methodArgs, callback);
180- v8::Handle <v8::Value> result = baton->runSync ();
182+ v8::Local <v8::Value> result = baton->runSync ();
181183 delete baton;
182184
183185 if (result->IsNativeError ()) {
184- return NanThrowError (result);
186+ Nan::ThrowError (result);
187+ return ;
185188 }
186189
187- NanReturnValue (result);
190+ info. GetReturnValue (). Set (result);
188191}
189192
190193NAN_GETTER (JavaObject::fieldGetter) {
191- NanScope () ;
192- JavaObject* self = node ::ObjectWrap::Unwrap<JavaObject>(args .This ());
194+ Nan::HandleScope scope ;
195+ JavaObject* self = Nan ::ObjectWrap::Unwrap<JavaObject>(info .This ());
193196 JNIEnv *env = self->m_java ->getJavaEnv ();
194197 JavaScope javaScope (env);
195198
@@ -199,8 +202,9 @@ NAN_GETTER(JavaObject::fieldGetter) {
199202 if (field == NULL ) {
200203 std::ostringstream errStr;
201204 errStr << " Could not find field " << propertyStr;
202- v8::Handle<v8::Value> ex = javaExceptionToV8 (self->m_java , env, errStr.str ());
203- return NanThrowError (ex);
205+ v8::Local<v8::Value> ex = javaExceptionToV8 (self->m_java , env, errStr.str ());
206+ Nan::ThrowError (ex);
207+ return ;
204208 }
205209
206210 jclass fieldClazz = env->FindClass (" java/lang/reflect/Field" );
@@ -211,18 +215,19 @@ NAN_GETTER(JavaObject::fieldGetter) {
211215 if (env->ExceptionOccurred ()) {
212216 std::ostringstream errStr;
213217 errStr << " Could not get field " << propertyStr;
214- v8::Handle<v8::Value> ex = javaExceptionToV8 (self->m_java , env, errStr.str ());
215- return NanThrowError (ex);
218+ v8::Local<v8::Value> ex = javaExceptionToV8 (self->m_java , env, errStr.str ());
219+ Nan::ThrowError (ex);
220+ return ;
216221 }
217222
218- v8::Handle <v8::Value> result = javaToV8 (self->m_java , env, val);
223+ v8::Local <v8::Value> result = javaToV8 (self->m_java , env, val);
219224
220- NanReturnValue (result);
225+ info. GetReturnValue (). Set (result);
221226}
222227
223228NAN_SETTER (JavaObject::fieldSetter) {
224- NanScope () ;
225- JavaObject* self = node ::ObjectWrap::Unwrap<JavaObject>(args .This ());
229+ Nan::HandleScope scope ;
230+ JavaObject* self = Nan ::ObjectWrap::Unwrap<JavaObject>(info .This ());
226231 JNIEnv *env = self->m_java ->getJavaEnv ();
227232 JavaScope javaScope (env);
228233
@@ -234,8 +239,8 @@ NAN_SETTER(JavaObject::fieldSetter) {
234239 if (field == NULL ) {
235240 std::ostringstream errStr;
236241 errStr << " Could not find field " << propertyStr;
237- v8::Handle <v8::Value> error = javaExceptionToV8 (self->m_java , env, errStr.str ());
238- NanThrowError (error);
242+ v8::Local <v8::Value> error = javaExceptionToV8 (self->m_java , env, errStr.str ());
243+ Nan::ThrowError (error);
239244 return ;
240245 }
241246
@@ -249,38 +254,38 @@ NAN_SETTER(JavaObject::fieldSetter) {
249254 if (env->ExceptionOccurred ()) {
250255 std::ostringstream errStr;
251256 errStr << " Could not set field " << propertyStr;
252- v8::Handle <v8::Value> error = javaExceptionToV8 (self->m_java , env, errStr.str ());
253- NanThrowError (error);
257+ v8::Local <v8::Value> error = javaExceptionToV8 (self->m_java , env, errStr.str ());
258+ Nan::ThrowError (error);
254259 return ;
255260 }
256261}
257262
258- /* static*/ v8 ::Persistent<v8::FunctionTemplate> JavaProxyObject::s_proxyCt;
263+ /* static*/ Nan ::Persistent<v8::FunctionTemplate> JavaProxyObject::s_proxyCt;
259264
260265/* static*/ void JavaProxyObject::init () {
261- v8::Local<v8::FunctionTemplate> t = NanNew <v8::FunctionTemplate>();
262- NanAssignPersistent ( s_proxyCt, t);
266+ v8::Local<v8::FunctionTemplate> t = Nan::New <v8::FunctionTemplate>();
267+ s_proxyCt. Reset ( t);
263268 t->InstanceTemplate ()->SetInternalFieldCount (1 );
264- t->SetClassName (NanNew <v8::String>(" NodeDynamicProxy" ));
269+ t->SetClassName (Nan::New <v8::String>(" NodeDynamicProxy" ). ToLocalChecked ( ));
265270
266- v8::Handle <v8::String> methodName = NanNew <v8::String>(" unref" );
267- v8::Local<v8::FunctionTemplate> methodCallTemplate = NanNew <v8::FunctionTemplate>(doUnref);
271+ v8::Local <v8::String> methodName = Nan::New <v8::String>(" unref" ). ToLocalChecked ( );
272+ v8::Local<v8::FunctionTemplate> methodCallTemplate = Nan::New <v8::FunctionTemplate>(doUnref);
268273 t->PrototypeTemplate ()->Set (methodName, methodCallTemplate->GetFunction ());
269274
270- v8::Handle <v8::String> fieldName = NanNew <v8::String>(" invocationHandler" );
271- t->InstanceTemplate ()-> SetAccessor ( fieldName, invocationHandlerGetter);
275+ v8::Local <v8::String> fieldName = Nan::New <v8::String>(" invocationHandler" ). ToLocalChecked ( );
276+ Nan::SetAccessor ( t->InstanceTemplate (), fieldName, invocationHandlerGetter);
272277}
273278
274279v8::Local<v8::Object> JavaProxyObject::New (Java *java, jobject obj, DynamicProxyData* dynamicProxyData) {
275- NanEscapableScope () ;
280+ Nan::EscapableHandleScope scope ;
276281
277- v8::Local<v8::Function> ctor = NanNew (s_proxyCt)->GetFunction ();
282+ v8::Local<v8::Function> ctor = Nan::New (s_proxyCt)->GetFunction ();
278283 v8::Local<v8::Object> javaObjectObj = ctor->NewInstance ();
279- javaObjectObj->SetHiddenValue (NanNew <v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT), NanNew <v8::Boolean>(true ));
284+ javaObjectObj->SetHiddenValue (Nan::New <v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT). ToLocalChecked (), Nan::New <v8::Boolean>(true ));
280285 JavaProxyObject *self = new JavaProxyObject (java, obj, dynamicProxyData);
281286 self->Wrap (javaObjectObj);
282287
283- return NanEscapeScope (javaObjectObj);
288+ return scope. Escape (javaObjectObj);
284289}
285290
286291JavaProxyObject::JavaProxyObject (Java *java, jobject obj, DynamicProxyData* dynamicProxyData) : JavaObject(java, obj) {
@@ -294,19 +299,20 @@ JavaProxyObject::~JavaProxyObject() {
294299}
295300
296301NAN_METHOD (JavaProxyObject::doUnref) {
297- JavaProxyObject* self = node ::ObjectWrap::Unwrap<JavaProxyObject>(args .This ());
302+ JavaProxyObject* self = Nan ::ObjectWrap::Unwrap<JavaProxyObject>(info .This ());
298303 if (dynamicProxyDataVerify (self->m_dynamicProxyData )) {
299304 unref (self->m_dynamicProxyData );
300305 }
301- NanReturnUndefined ();
306+ info. GetReturnValue (). SetUndefined ();
302307}
303308
304309NAN_GETTER (JavaProxyObject::invocationHandlerGetter) {
305- NanScope () ;
310+ Nan::HandleScope scope ;
306311
307- JavaProxyObject* self = node ::ObjectWrap::Unwrap<JavaProxyObject>(args .This ());
312+ JavaProxyObject* self = Nan ::ObjectWrap::Unwrap<JavaProxyObject>(info .This ());
308313 if (!dynamicProxyDataVerify (self->m_dynamicProxyData )) {
309- return NanThrowError (" dynamicProxyData has been destroyed or corrupted" );
314+ Nan::ThrowError (" dynamicProxyData has been destroyed or corrupted" );
315+ return ;
310316 }
311- NanReturnValue ( self->m_dynamicProxyData ->functions );
317+ info. GetReturnValue (). Set ( Nan::New ( self->m_dynamicProxyData ->functions ) );
312318}
0 commit comments