added newDouble and updated readme for newFloat · imjerrybao/node-java@e0121df · GitHub
Skip to content

Commit e0121df

Browse files
committed
added newDouble and updated readme for newFloat
1 parent 9c3d289 commit e0121df

8 files changed

Lines changed: 105 additions & 11 deletions

File tree

README.md

Lines changed: 28 additions & 0 deletions

src/java.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ long my_getThreadId() {
5656
NODE_SET_PROTOTYPE_METHOD(s_ct, "newLong", newLong);
5757
NODE_SET_PROTOTYPE_METHOD(s_ct, "newChar", newChar);
5858
NODE_SET_PROTOTYPE_METHOD(s_ct, "newFloat", newFloat);
59+
NODE_SET_PROTOTYPE_METHOD(s_ct, "newDouble", newDouble);
5960
NODE_SET_PROTOTYPE_METHOD(s_ct, "getStaticFieldValue", getStaticFieldValue);
6061
NODE_SET_PROTOTYPE_METHOD(s_ct, "setStaticFieldValue", setStaticFieldValue);
6162
NODE_SET_PROTOTYPE_METHOD(s_ct, "instanceOf", instanceOf);
@@ -725,6 +726,30 @@ void Java::destroyJVM(JavaVM** jvm, JNIEnv** env) {
725726
return scope.Close(JavaObject::New(self, newObj));
726727
}
727728

729+
/*static*/ v8::Handle<v8::Value> Java::newDouble(const v8::Arguments& args) {
730+
v8::HandleScope scope;
731+
Java* self = node::ObjectWrap::Unwrap<Java>(args.This());
732+
v8::Handle<v8::Value> ensureJvmResults = self->ensureJvm();
733+
if(!ensureJvmResults->IsUndefined()) {
734+
return ensureJvmResults;
735+
}
736+
JNIEnv* env = self->getJavaEnv();
737+
JavaScope javaScope(env);
738+
739+
if(args.Length() != 1) {
740+
return ThrowException(v8::Exception::TypeError(v8::String::New("newDouble only takes 1 argument")));
741+
} else if(!args[0]->IsNumber()) {
742+
return ThrowException(v8::Exception::TypeError(v8::String::New("Argument 1 must be a number")));
743+
}
744+
v8::Local<v8::Number> val = args[0]->ToNumber();
745+
746+
jclass clazz = env->FindClass("java/lang/Double");
747+
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(D)V");
748+
jobject newObj = env->NewObject(clazz, constructor, (jdouble)val->Value());
749+
750+
return scope.Close(JavaObject::New(self, newObj));
751+
}
752+
728753
/*static*/ v8::Handle<v8::Value> Java::getStaticFieldValue(const v8::Arguments& args) {
729754
v8::HandleScope scope;
730755
Java* self = node::ObjectWrap::Unwrap<Java>(args.This());

src/java.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class Java : public node::ObjectWrap {
3434
static v8::Handle<v8::Value> newShort(const v8::Arguments& args);
3535
static v8::Handle<v8::Value> newLong(const v8::Arguments& args);
3636
static v8::Handle<v8::Value> newFloat(const v8::Arguments& args);
37+
static v8::Handle<v8::Value> newDouble(const v8::Arguments& args);
3738
static v8::Handle<v8::Value> getStaticFieldValue(const v8::Arguments& args);
3839
static v8::Handle<v8::Value> setStaticFieldValue(const v8::Arguments& args);
3940
static v8::Handle<v8::Value> instanceOf(const v8::Arguments& args);

test/Test$SubClass.class

0 Bytes
Binary file not shown.

test/Test$SuperClass.class

0 Bytes
Binary file not shown.

test/Test.class

123 Bytes
Binary file not shown.

test/Test.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ public Test() {}
3131
public static int staticByte(byte b) { return (int)b; }
3232
public static int staticShort(short s) { return (int)s; }
3333
public static int staticLong(long l) { return (int)l; }
34+
public static double staticDouble(double s) { return s; }
35+
public static float staticFloat(float s) { return s; }
3436

3537
public static int staticChar(char ch) { return (int)ch; }
3638
public static short[] staticShortArray(Short[] arg) {

test/simple-test.js

Lines changed: 49 additions & 11 deletions

0 commit comments

Comments
 (0)