Skip to content

Commit 0b8a730

Browse files
committed
fix compiler warning by using more Nan functions
1 parent a4c45e1 commit 0b8a730

5 files changed

Lines changed: 25 additions & 29 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
"find-java-home": "0.1.3",
3131
"glob": "7.1.1",
3232
"lodash": "4.16.4",
33-
"nan": "2.4.0"
33+
"nan": "2.6.2"
3434
},
3535
"devDependencies": {
3636
"chalk": "1.1.3",

src/java.cpp

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -894,11 +894,11 @@ NAN_METHOD(Java::newByte) {
894894
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
895895
}
896896

897-
v8::Local<v8::Number> val = info[0]->ToNumber();
897+
jbyte val = Nan::To<int32_t>(info[0]).FromJust();
898898

899899
jclass clazz = env->FindClass("java/lang/Byte");
900900
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(B)V");
901-
jobject newObj = env->NewObject(clazz, constructor, (jbyte)val->Value());
901+
jobject newObj = env->NewObject(clazz, constructor, val);
902902

903903
info.GetReturnValue().Set(JavaObject::New(self, newObj));
904904
return;
@@ -924,11 +924,11 @@ NAN_METHOD(Java::newShort) {
924924
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
925925
}
926926

927-
v8::Local<v8::Number> val = info[0]->ToNumber();
927+
jshort val = Nan::To<int32_t>(info[0]).FromJust();
928928

929929
jclass clazz = env->FindClass("java/lang/Short");
930930
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(S)V");
931-
jobject newObj = env->NewObject(clazz, constructor, (jshort)val->Value());
931+
jobject newObj = env->NewObject(clazz, constructor, val);
932932

933933
info.GetReturnValue().Set(JavaObject::New(self, newObj));
934934
}
@@ -953,11 +953,11 @@ NAN_METHOD(Java::newLong) {
953953
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
954954
}
955955

956-
v8::Local<v8::Number> val = info[0]->ToNumber();
956+
jlong val = Nan::To<int64_t>(info[0]).FromJust();
957957

958958
jclass clazz = env->FindClass("java/lang/Long");
959959
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(J)V");
960-
jobject newObj = env->NewObject(clazz, constructor, (jlong)val->Value());
960+
jobject newObj = env->NewObject(clazz, constructor, val);
961961

962962
info.GetReturnValue().Set(JavaObject::New(self, newObj));
963963
}
@@ -980,8 +980,7 @@ NAN_METHOD(Java::newChar) {
980980
// argument - value
981981
jchar charVal;
982982
if(info[0]->IsNumber()) {
983-
v8::Local<v8::Number> val = info[0]->ToNumber();
984-
charVal = (jchar)val->Value();
983+
charVal = (jchar)Nan::To<int32_t>(info[0]).FromJust();
985984
} else if(info[0]->IsString()) {
986985
v8::Local<v8::String> val = info[0]->ToString();
987986
if(val->Length() != 1) {
@@ -1016,11 +1015,11 @@ NAN_METHOD(Java::newFloat) {
10161015
} else if(!info[0]->IsNumber()) {
10171016
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
10181017
}
1019-
v8::Local<v8::Number> val = info[0]->ToNumber();
1018+
jfloat val = (jfloat)Nan::To<double>(info[0]).FromJust();
10201019

10211020
jclass clazz = env->FindClass("java/lang/Float");
10221021
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(F)V");
1023-
jobject newObj = env->NewObject(clazz, constructor, (jfloat)val->Value());
1022+
jobject newObj = env->NewObject(clazz, constructor, val);
10241023

10251024
info.GetReturnValue().Set(JavaObject::New(self, newObj));
10261025
}
@@ -1041,11 +1040,12 @@ NAN_METHOD(Java::newDouble) {
10411040
} else if(!info[0]->IsNumber()) {
10421041
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
10431042
}
1044-
v8::Local<v8::Number> val = info[0]->ToNumber();
1043+
1044+
jdouble val = (jdouble)Nan::To<double>(info[0]).FromJust();
10451045

10461046
jclass clazz = env->FindClass("java/lang/Double");
10471047
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(D)V");
1048-
jobject newObj = env->NewObject(clazz, constructor, (jdouble)val->Value());
1048+
jobject newObj = env->NewObject(clazz, constructor, val);
10491049

10501050
info.GetReturnValue().Set(JavaObject::New(self, newObj));
10511051
}
@@ -1260,18 +1260,14 @@ void EIO_AfterCallJs(uv_work_t* req) {
12601260
argv[i] = v8Args->Get(i);
12611261
}
12621262

1263-
v8::TryCatch tryCatch;
1263+
Nan::TryCatch tryCatch;
1264+
tryCatch.SetCaptureMessage(true);
12641265
v8Result = fn->Call(dynamicProxyDataFunctions, argc, argv);
12651266
delete[] argv;
12661267
if (tryCatch.HasCaught()) {
12671268
dynamicProxyData->throwableClass = "node/NodeJsException";
1268-
v8::String::Utf8Value stackTrace(tryCatch.StackTrace());
1269-
if (stackTrace.length() > 0) {
1270-
dynamicProxyData->throwableMessage = std::string(*stackTrace);
1271-
} else {
1272-
v8::String::Utf8Value exception(tryCatch.Exception());
1273-
dynamicProxyData->throwableMessage = std::string(*exception);
1274-
}
1269+
v8::String::Utf8Value message(tryCatch.Message()->Get());
1270+
dynamicProxyData->throwableMessage = std::string(*message);
12751271
tryCatch.Reset();
12761272
dynamicProxyData->done = DYNAMIC_PROXY_JS_ERROR;
12771273
return;

src/javaObject.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@
112112
sFunctionTemplates[className] = persistentFuncTemplate;
113113
}
114114

115-
v8::Local<v8::Function> ctor = funcTemplate->GetFunction();
116-
v8::Local<v8::Object> javaObjectObj = ctor->NewInstance();
115+
v8::Local<v8::Function> ctor = Nan::GetFunction(funcTemplate).ToLocalChecked();
116+
v8::Local<v8::Object> javaObjectObj = Nan::NewInstance(ctor).ToLocalChecked();
117117
SetHiddenValue(javaObjectObj, Nan::New<v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), Nan::New<v8::Boolean>(true));
118118
JavaObject *self = new JavaObject(java, obj);
119119
self->Wrap(javaObjectObj);
@@ -346,7 +346,7 @@ v8::Local<v8::Object> JavaProxyObject::New(Java *java, jobject obj, DynamicProxy
346346
Nan::EscapableHandleScope scope;
347347

348348
v8::Local<v8::Function> ctor = Nan::New(s_proxyCt)->GetFunction();
349-
v8::Local<v8::Object> javaObjectObj = ctor->NewInstance();
349+
v8::Local<v8::Object> javaObjectObj = Nan::NewInstance(ctor).ToLocalChecked();
350350
SetHiddenValue(javaObjectObj, Nan::New<v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), Nan::New<v8::Boolean>(true));
351351
JavaProxyObject *self = new JavaProxyObject(java, obj, dynamicProxyData);
352352
self->Wrap(javaObjectObj);

src/utils.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -344,21 +344,21 @@ jobject v8ToJava(JNIEnv* env, v8::Local<v8::Value> arg) {
344344
}
345345

346346
if(arg->IsInt32() || arg->IsUint32()) {
347-
jint val = arg->ToInt32()->Value();
347+
jint val = Nan::To<int32_t>(arg).FromJust();
348348
jclass clazz = env->FindClass("java/lang/Integer");
349349
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(I)V");
350350
return env->NewObject(clazz, constructor, val);
351351
}
352352

353353
if(arg->IsNumber()) {
354-
jdouble val = arg->ToNumber()->Value();
354+
jdouble val = Nan::To<double>(arg).FromJust();
355355
jclass clazz = env->FindClass("java/lang/Double");
356356
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(D)V");
357357
return env->NewObject(clazz, constructor, val);
358358
}
359359

360360
if(arg->IsBoolean()) {
361-
jboolean val = arg->ToBoolean()->Value();
361+
jboolean val = Nan::To<bool>(arg).FromJust();
362362
jclass clazz = env->FindClass("java/lang/Boolean");
363363
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(Z)V");
364364
return env->NewObject(clazz, constructor, val);

test/dynamicProxy-test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ exports['Dynamic Proxy'] = nodeunit.testCase({
237237
test.fail("Exception was not thrown");
238238
} catch (e) {
239239
test.equals(e.cause.getClassSync().getNameSync(), "java.lang.RuntimeException");
240-
test.ok(/Caused by: node\.NodeJsException: myError/.test(e.message));
240+
test.ok(/Caused by: node\.NodeJsException:.*myError/.test(e.message));
241241
}
242242

243243
test.done();
@@ -256,7 +256,7 @@ exports['Dynamic Proxy'] = nodeunit.testCase({
256256
test.fail("Exception was not thrown");
257257
} catch (e) {
258258
test.equals(e.cause.getClassSync().getNameSync(), "java.lang.RuntimeException");
259-
test.ok(/Caused by: node\.NodeJsException: Error: newError/.test(e.message));
259+
test.ok(/Caused by: node\.NodeJsException:.*newError/.test(e.message));
260260
}
261261

262262
test.done();

0 commit comments

Comments
 (0)