@@ -109,6 +109,8 @@ jvalueType javaGetType(JNIEnv *env, jclass type) {
109109 // printf("javaGetType: %s\n", typeStr);
110110 if (strcmp (typeStr, " int" ) == 0 ) {
111111 return TYPE_INT ;
112+ } else if (strcmp (typeStr, " double" ) == 0 ) {
113+ return TYPE_DOUBLE ;
112114 } else if (strcmp (typeStr, " long" ) == 0 ) {
113115 return TYPE_LONG ;
114116 } else if (strcmp (typeStr, " void" ) == 0 ) {
@@ -171,13 +173,20 @@ jobject v8ToJava(JNIEnv* env, v8::Local<v8::Value> arg) {
171173 return env->NewStringUTF (*val);
172174 }
173175
174- if (arg->IsInt32 ()) {
176+ if (arg->IsInt32 () || arg-> IsUint32 () ) {
175177 jint val = arg->ToInt32 ()->Value ();
176178 jclass clazz = env->FindClass (" java/lang/Integer" );
177179 jmethodID constructor = env->GetMethodID (clazz, " <init>" , " (I)V" );
178180 return env->NewObject (clazz, constructor, val);
179181 }
180182
183+ if (arg->IsNumber ()) {
184+ jdouble val = arg->ToNumber ()->Value ();
185+ jclass clazz = env->FindClass (" java/lang/Double" );
186+ jmethodID constructor = env->GetMethodID (clazz, " <init>" , " (D)V" );
187+ return env->NewObject (clazz, constructor, val);
188+ }
189+
181190 if (arg->IsBoolean ()) {
182191 jboolean val = arg->ToBoolean ()->Value ();
183192 jclass clazz = env->FindClass (" java/lang/Boolean" );
@@ -310,6 +319,13 @@ v8::Handle<v8::Value> javaToV8(Java* java, JNIEnv* env, jvalueType resultType, j
310319 jint result = env->CallIntMethod (obj, integer_intValue);
311320 return scope.Close (v8::Integer::New (result));
312321 }
322+ case TYPE_DOUBLE :
323+ {
324+ jclass doubleClazz = env->FindClass (" java/lang/Double" );
325+ jmethodID double_doubleValue = env->GetMethodID (doubleClazz, " doubleValue" , " ()D" );
326+ jdouble result = env->CallDoubleMethod (obj, double_doubleValue);
327+ return scope.Close (v8::Number::New (result));
328+ }
313329 case TYPE_STRING :
314330 return scope.Close (v8::String::New (javaObjectToString (env, obj).c_str ()));
315331 case TYPE_OBJECT :
0 commit comments