Skip to content

Commit

Permalink
fix compiler warning by using more Nan functions
Browse files Browse the repository at this point in the history
  • Loading branch information
joeferner committed Jun 22, 2017
1 parent a4c45e1 commit 0b8a730
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 29 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
"find-java-home": "0.1.3",
"glob": "7.1.1",
"lodash": "4.16.4",
"nan": "2.4.0"
"nan": "2.6.2"
},
"devDependencies": {
"chalk": "1.1.3",
Expand Down
36 changes: 16 additions & 20 deletions src/java.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -894,11 +894,11 @@ NAN_METHOD(Java::newByte) {
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
}

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

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

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

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

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

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

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

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

info.GetReturnValue().Set(JavaObject::New(self, newObj));
}
Expand All @@ -980,8 +980,7 @@ NAN_METHOD(Java::newChar) {
// argument - value
jchar charVal;
if(info[0]->IsNumber()) {
v8::Local<v8::Number> val = info[0]->ToNumber();
charVal = (jchar)val->Value();
charVal = (jchar)Nan::To<int32_t>(info[0]).FromJust();
} else if(info[0]->IsString()) {
v8::Local<v8::String> val = info[0]->ToString();
if(val->Length() != 1) {
Expand Down Expand Up @@ -1016,11 +1015,11 @@ NAN_METHOD(Java::newFloat) {
} else if(!info[0]->IsNumber()) {
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
}
v8::Local<v8::Number> val = info[0]->ToNumber();
jfloat val = (jfloat)Nan::To<double>(info[0]).FromJust();

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

info.GetReturnValue().Set(JavaObject::New(self, newObj));
}
Expand All @@ -1041,11 +1040,12 @@ NAN_METHOD(Java::newDouble) {
} else if(!info[0]->IsNumber()) {
return Nan::ThrowError(Nan::TypeError("Argument 1 must be a number"));
}
v8::Local<v8::Number> val = info[0]->ToNumber();

jdouble val = (jdouble)Nan::To<double>(info[0]).FromJust();

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

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

v8::TryCatch tryCatch;
Nan::TryCatch tryCatch;
tryCatch.SetCaptureMessage(true);
v8Result = fn->Call(dynamicProxyDataFunctions, argc, argv);
delete[] argv;
if (tryCatch.HasCaught()) {
dynamicProxyData->throwableClass = "node/NodeJsException";
v8::String::Utf8Value stackTrace(tryCatch.StackTrace());
if (stackTrace.length() > 0) {
dynamicProxyData->throwableMessage = std::string(*stackTrace);
} else {
v8::String::Utf8Value exception(tryCatch.Exception());
dynamicProxyData->throwableMessage = std::string(*exception);
}
v8::String::Utf8Value message(tryCatch.Message()->Get());
dynamicProxyData->throwableMessage = std::string(*message);
tryCatch.Reset();
dynamicProxyData->done = DYNAMIC_PROXY_JS_ERROR;
return;
Expand Down
6 changes: 3 additions & 3 deletions src/javaObject.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,8 @@
sFunctionTemplates[className] = persistentFuncTemplate;
}

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

v8::Local<v8::Function> ctor = Nan::New(s_proxyCt)->GetFunction();
v8::Local<v8::Object> javaObjectObj = ctor->NewInstance();
v8::Local<v8::Object> javaObjectObj = Nan::NewInstance(ctor).ToLocalChecked();
SetHiddenValue(javaObjectObj, Nan::New<v8::String>(V8_HIDDEN_MARKER_JAVA_OBJECT).ToLocalChecked(), Nan::New<v8::Boolean>(true));
JavaProxyObject *self = new JavaProxyObject(java, obj, dynamicProxyData);
self->Wrap(javaObjectObj);
Expand Down
6 changes: 3 additions & 3 deletions src/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -344,21 +344,21 @@ jobject v8ToJava(JNIEnv* env, v8::Local<v8::Value> arg) {
}

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

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

if(arg->IsBoolean()) {
jboolean val = arg->ToBoolean()->Value();
jboolean val = Nan::To<bool>(arg).FromJust();
jclass clazz = env->FindClass("java/lang/Boolean");
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(Z)V");
return env->NewObject(clazz, constructor, val);
Expand Down
4 changes: 2 additions & 2 deletions test/dynamicProxy-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ exports['Dynamic Proxy'] = nodeunit.testCase({
test.fail("Exception was not thrown");
} catch (e) {
test.equals(e.cause.getClassSync().getNameSync(), "java.lang.RuntimeException");
test.ok(/Caused by: node\.NodeJsException: myError/.test(e.message));
test.ok(/Caused by: node\.NodeJsException:.*myError/.test(e.message));
}

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

test.done();
Expand Down

0 comments on commit 0b8a730

Please sign in to comment.