1111#include " node_NodeDynamicProxyClass.h"
1212#include < node_version.h>
1313#include < sstream>
14+ #include < nan.h>
1415
1516long v8ThreadId;
1617
@@ -38,10 +39,10 @@ long my_getThreadId() {
3839
3940 v8ThreadId = my_getThreadId ();
4041
41- v8::Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New (New);
42- NanAssignPersistent (v8::FunctionTemplate, s_ct, t);
42+ v8::Local<v8::FunctionTemplate> t = NanNew< v8::FunctionTemplate> (New);
43+ NanAssignPersistent (s_ct, t);
4344 t->InstanceTemplate ()->SetInternalFieldCount (1 );
44- t->SetClassName (v8::String::NewSymbol (" Java" ));
45+ t->SetClassName (NanNew< v8::String> (" Java" ));
4546
4647 NODE_SET_PROTOTYPE_METHOD (t, " getClassLoader" , getClassLoader);
4748 NODE_SET_PROTOTYPE_METHOD (t, " newInstance" , newInstance);
@@ -61,7 +62,7 @@ long my_getThreadId() {
6162 NODE_SET_PROTOTYPE_METHOD (t, " setStaticFieldValue" , setStaticFieldValue);
6263 NODE_SET_PROTOTYPE_METHOD (t, " instanceOf" , instanceOf);
6364
64- target->Set (v8::String::NewSymbol (" Java" ), t->GetFunction ());
65+ target->Set (NanNew< v8::String> (" Java" ), t->GetFunction ());
6566}
6667
6768NAN_METHOD (Java::New) {
@@ -70,9 +71,9 @@ NAN_METHOD(Java::New) {
7071 Java *self = new Java ();
7172 self->Wrap (args.This ());
7273
73- NanObjectWrapHandle (self)->Set (v8::String::New (" classpath" ), v8::Array::New ());
74- NanObjectWrapHandle (self)->Set (v8::String::New (" options" ), v8::Array::New ());
75- NanObjectWrapHandle (self)->Set (v8::String::New (" nativeBindingLocation" ), v8::String::New (" Not Set" ));
74+ NanObjectWrapHandle (self)->Set (NanNew< v8::String> (" classpath" ), NanNew< v8::Array> ());
75+ NanObjectWrapHandle (self)->Set (NanNew< v8::String> (" options" ), NanNew< v8::Array> ());
76+ NanObjectWrapHandle (self)->Set (NanNew< v8::String> (" nativeBindingLocation" ), NanNew< v8::String> (" Not Set" ));
7677
7778 NanReturnValue (args.This ());
7879}
@@ -91,7 +92,7 @@ v8::Handle<v8::Value> Java::ensureJvm() {
9192 return createJVM (&this ->m_jvm , &this ->m_env );
9293 }
9394
94- return v8::Undefined ();
95+ NanReturnUndefined ();
9596}
9697
9798v8::Handle<v8::Value> Java::createJVM (JavaVM** jvm, JNIEnv** env) {
@@ -102,12 +103,12 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
102103 std::ostringstream classPath;
103104 classPath << " -Djava.class.path=" ;
104105
105- v8::Local<v8::Value> classPathValue = NanObjectWrapHandle (this )->Get (v8::String::New (" classpath" ));
106+ v8::Local<v8::Value> classPathValue = NanObjectWrapHandle (this )->Get (NanNew< v8::String> (" classpath" ));
106107 if (!classPathValue->IsArray ()) {
107- return ThrowException ( v8::Exception::TypeError ( v8::String::New ( " Classpath must be an array" )) );
108+ return NanThrowTypeError ( " Classpath must be an array" );
108109 }
109110 v8::Handle<v8::Array> classPathArrayTemp = v8::Handle<v8::Array>::Cast (classPathValue);
110- NanAssignPersistent (v8::Array, m_classPathArray, classPathArrayTemp);
111+ NanAssignPersistent (m_classPathArray, classPathArrayTemp);
111112 for (uint32_t i=0 ; i<classPathArrayTemp->Length (); i++) {
112113 if (i != 0 ) {
113114 #ifdef WIN32
@@ -118,25 +119,25 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
118119 }
119120 v8::Local<v8::Value> arrayItemValue = classPathArrayTemp->Get (i);
120121 if (!arrayItemValue->IsString ()) {
121- return ThrowException ( v8::Exception::TypeError ( v8::String::New ( " Classpath must only contain strings" )) );
122+ return NanThrowTypeError ( " Classpath must only contain strings" );
122123 }
123124 v8::Local<v8::String> arrayItem = arrayItemValue->ToString ();
124125 v8::String::AsciiValue arrayItemStr (arrayItem);
125126 classPath << *arrayItemStr;
126127 }
127128
128129 // set the native binding location
129- v8::Local<v8::Value> v8NativeBindingLocation = NanObjectWrapHandle (this )->Get (v8::String::New (" nativeBindingLocation" ));
130+ v8::Local<v8::Value> v8NativeBindingLocation = NanObjectWrapHandle (this )->Get (NanNew< v8::String> (" nativeBindingLocation" ));
130131 v8::String::AsciiValue nativeBindingLocationStr (v8NativeBindingLocation);
131132 s_nativeBindingLocation = *nativeBindingLocationStr;
132133
133134 // get other options
134- v8::Local<v8::Value> optionsValue = NanObjectWrapHandle (this )->Get (v8::String::New (" options" ));
135+ v8::Local<v8::Value> optionsValue = NanObjectWrapHandle (this )->Get (NanNew< v8::String> (" options" ));
135136 if (!optionsValue->IsArray ()) {
136- return ThrowException ( v8::Exception::TypeError ( v8::String::New ( " options must be an array" )) );
137+ return NanThrowTypeError ( " options must be an array" );
137138 }
138139 v8::Handle<v8::Array> optionsArrayTemp = v8::Handle<v8::Array>::Cast (optionsValue);
139- NanAssignPersistent (v8::Array, m_optionsArray, optionsArrayTemp);
140+ NanAssignPersistent (m_optionsArray, optionsArrayTemp);
140141
141142 // create vm options
142143 int vmOptionsCount = optionsArrayTemp->Length () + 1 ;
@@ -147,7 +148,7 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
147148 v8::Local<v8::Value> arrayItemValue = optionsArrayTemp->Get (i);
148149 if (!arrayItemValue->IsString ()) {
149150 delete[] vmOptions;
150- return ThrowException ( v8::Exception::TypeError ( v8::String::New ( " options must only contain strings" )) );
151+ return NanThrowTypeError ( " options must only contain strings" );
151152 }
152153 v8::Local<v8::String> arrayItem = arrayItemValue->ToString ();
153154 v8::String::AsciiValue arrayItemStr (arrayItem);
@@ -165,11 +166,11 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
165166 m_classLoader = getSystemClassLoader (*env);
166167
167168 // TODO: this handles sets put doesn't prevent modifing the underlying data. So java.classpath.push will still work which is invalid.
168- NanObjectWrapHandle (this )->SetAccessor (v8::String::New (" classpath" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
169- NanObjectWrapHandle (this )->SetAccessor (v8::String::New (" options" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
170- NanObjectWrapHandle (this )->SetAccessor (v8::String::New (" nativeBindingLocation" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
169+ NanObjectWrapHandle (this )->SetAccessor (NanNew< v8::String> (" classpath" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
170+ NanObjectWrapHandle (this )->SetAccessor (NanNew< v8::String> (" options" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
171+ NanObjectWrapHandle (this )->SetAccessor (NanNew< v8::String> (" nativeBindingLocation" ), AccessorProhibitsOverwritingGetter, AccessorProhibitsOverwritingSetter);
171172
172- return v8::Undefined ();
173+ NanReturnUndefined ();
173174}
174175
175176NAN_GETTER (Java::AccessorProhibitsOverwritingGetter) {
@@ -181,19 +182,19 @@ NAN_GETTER(Java::AccessorProhibitsOverwritingGetter) {
181182 } else if (!strcmp (" options" , *nameStr)) {
182183 NanReturnValue (self->m_optionsArray );
183184 } else if (!strcmp (" nativeBindingLocation" , *nameStr)) {
184- NanReturnValue (v8::String::New (Java::s_nativeBindingLocation.c_str ()));
185+ NanReturnValue (NanNew< v8::String> (Java::s_nativeBindingLocation.c_str ()));
185186 }
186187
187188 std::ostringstream errStr;
188189 errStr << " Invalid call to accessor " << *nameStr;
189- NanReturnValue (v8::Exception::Error (v8::String::New (errStr.str ().c_str ())));
190+ NanReturnValue (v8::Exception::Error (NanNew< v8::String> (errStr.str ().c_str ())));
190191}
191192
192193NAN_SETTER (Java::AccessorProhibitsOverwritingSetter) {
193194 v8::String::AsciiValue nameStr (property);
194195 std::ostringstream errStr;
195196 errStr << " Cannot set " << *nameStr << " after calling any other java function." ;
196- v8::ThrowException (v8::Exception::Error (v8::String::New (errStr.str ().c_str ())));
197+ v8::ThrowException (v8::Exception::Error (NanNew< v8::String> (errStr.str ().c_str ())));
197198}
198199
199200void Java::destroyJVM (JavaVM** jvm, JNIEnv** env) {
@@ -324,7 +325,7 @@ NAN_METHOD(Java::newProxy) {
324325 dynamicProxyData->markerEnd = DYNAMIC_PROXY_DATA_MARKER_END;
325326 dynamicProxyData->java = self;
326327 dynamicProxyData->interfaceName = interfaceName;
327- NanAssignPersistent (v8::Object, dynamicProxyData->functions , functions);
328+ NanAssignPersistent (dynamicProxyData->functions , functions);
328329
329330 // find NodeDynamicProxyClass
330331 std::string className = " node.NodeDynamicProxyClass" ;
@@ -339,7 +340,7 @@ NAN_METHOD(Java::newProxy) {
339340 // find constructor
340341 jclass objectClazz = env->FindClass (" java/lang/Object" );
341342 jobjectArray methodArgs = env->NewObjectArray (2 , objectClazz, NULL );
342- env->SetObjectArrayElement (methodArgs, 0 , v8ToJava (env, v8::String::New (s_nativeBindingLocation.c_str ())));
343+ env->SetObjectArrayElement (methodArgs, 0 , v8ToJava (env, NanNew< v8::String> (s_nativeBindingLocation.c_str ())));
343344 env->SetObjectArrayElement (methodArgs, 1 , longToJavaLongObj (env, (long )dynamicProxyData));
344345 jobject method = javaFindConstructor (env, clazz, methodArgs);
345346 if (method == NULL ) {
@@ -492,7 +493,7 @@ NAN_METHOD(Java::newArray) {
492493 if (args.Length () < argsStart+1 || !args[argsStart]->IsArray ()) {
493494 std::ostringstream errStr;
494495 errStr << " Argument " << (argsStart+1 ) << " must be an array" ;
495- return NanThrowError (v8::Exception::TypeError (v8::String::New (errStr.str ().c_str ())));
496+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (errStr.str ().c_str ())));
496497 }
497498 v8::Local<v8::Array> arrayObj = v8::Local<v8::Array>::Cast (args[argsStart]);
498499
@@ -593,12 +594,12 @@ NAN_METHOD(Java::newByte) {
593594 JavaScope javaScope (env);
594595
595596 if (args.Length () != 1 ) {
596- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newByte only takes 1 argument" )));
597+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newByte only takes 1 argument" )));
597598 }
598599
599600 // argument - value
600601 if (!args[0 ]->IsNumber ()) {
601- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
602+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number" )));
602603 }
603604
604605 v8::Local<v8::Number> val = args[0 ]->ToNumber ();
@@ -621,12 +622,12 @@ NAN_METHOD(Java::newShort) {
621622 JavaScope javaScope (env);
622623
623624 if (args.Length () != 1 ) {
624- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newShort only takes 1 argument" )));
625+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newShort only takes 1 argument" )));
625626 }
626627
627628 // argument - value
628629 if (!args[0 ]->IsNumber ()) {
629- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
630+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number" )));
630631 }
631632
632633 v8::Local<v8::Number> val = args[0 ]->ToNumber ();
@@ -649,12 +650,12 @@ NAN_METHOD(Java::newLong) {
649650 JavaScope javaScope (env);
650651
651652 if (args.Length () != 1 ) {
652- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newLong only takes 1 argument" )));
653+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newLong only takes 1 argument" )));
653654 }
654655
655656 // argument - value
656657 if (!args[0 ]->IsNumber ()) {
657- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
658+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number" )));
658659 }
659660
660661 v8::Local<v8::Number> val = args[0 ]->ToNumber ();
@@ -677,7 +678,7 @@ NAN_METHOD(Java::newChar) {
677678 JavaScope javaScope (env);
678679
679680 if (args.Length () != 1 ) {
680- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newChar only takes 1 argument" )));
681+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newChar only takes 1 argument" )));
681682 }
682683
683684 // argument - value
@@ -688,12 +689,12 @@ NAN_METHOD(Java::newChar) {
688689 } else if (args[0 ]->IsString ()) {
689690 v8::Local<v8::String> val = args[0 ]->ToString ();
690691 if (val->Length () != 1 ) {
691- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a string of 1 character." )));
692+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a string of 1 character." )));
692693 }
693694 std::string strVal = std::string (*v8::String::Utf8Value (val));
694695 charVal = (jchar)strVal[0 ];
695696 } else {
696- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number or string" )));
697+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number or string" )));
697698 }
698699
699700 jclass clazz = env->FindClass (" java/lang/Character" );
@@ -714,9 +715,9 @@ NAN_METHOD(Java::newFloat) {
714715 JavaScope javaScope (env);
715716
716717 if (args.Length () != 1 ) {
717- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newFloat only takes 1 argument" )));
718+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newFloat only takes 1 argument" )));
718719 } else if (!args[0 ]->IsNumber ()) {
719- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
720+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number" )));
720721 }
721722 v8::Local<v8::Number> val = args[0 ]->ToNumber ();
722723
@@ -738,9 +739,9 @@ NAN_METHOD(Java::newDouble) {
738739 JavaScope javaScope (env);
739740
740741 if (args.Length () != 1 ) {
741- return NanThrowError (v8::Exception::TypeError (v8::String::New (" newDouble only takes 1 argument" )));
742+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" newDouble only takes 1 argument" )));
742743 } else if (!args[0 ]->IsNumber ()) {
743- return NanThrowError (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
744+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (" Argument 1 must be a number" )));
744745 }
745746 v8::Local<v8::Number> val = args[0 ]->ToNumber ();
746747
@@ -817,7 +818,7 @@ NAN_METHOD(Java::setStaticFieldValue) {
817818 if (args.Length () < argsStart+1 ) {
818819 std::ostringstream errStr;
819820 errStr << " setStaticFieldValue requires " << (argsStart+1 ) << " arguments" ;
820- return NanThrowError (v8::Exception::TypeError (v8::String::New (errStr.str ().c_str ())));
821+ return NanThrowError (v8::Exception::TypeError (NanNew< v8::String> (errStr.str ().c_str ())));
821822 }
822823 jobject newValue = v8ToJava (env, args[argsStart]);
823824 argsStart++;
@@ -882,7 +883,7 @@ NAN_METHOD(Java::instanceOf) {
882883 }
883884
884885 jboolean res = env->IsInstanceOf (instance, clazz);
885- NanReturnValue (v8::Boolean::New (res));
886+ NanReturnValue (NanNew< v8::Boolean> (res));
886887}
887888
888889void EIO_CallJs (uv_work_t * req) {
@@ -910,8 +911,8 @@ void EIO_AfterCallJs(uv_work_t* req) {
910911 v8::Local<v8::Value> v8Result;
911912 jobject javaResult;
912913
913- v8::Local<v8::Object> dynamicProxyDataFunctions = NanPersistentToLocal (dynamicProxyData->functions );
914- v8::Local<v8::Value> fnObj = dynamicProxyDataFunctions->Get (v8::String::New (dynamicProxyData->methodName .c_str ()));
914+ v8::Local<v8::Object> dynamicProxyDataFunctions = NanNew (dynamicProxyData->functions );
915+ v8::Local<v8::Value> fnObj = dynamicProxyDataFunctions->Get (NanNew< v8::String> (dynamicProxyData->methodName .c_str ()));
915916 if (fnObj->IsUndefined () || fnObj->IsNull ()) {
916917 printf (" ERROR: Could not find method %s\n " , dynamicProxyData->methodName .c_str ());
917918 goto CleanUp;
0 commit comments