@@ -54,6 +54,7 @@ long my_getThreadId() {
5454 NODE_SET_PROTOTYPE_METHOD (s_ct, " newByte" , newByte);
5555 NODE_SET_PROTOTYPE_METHOD (s_ct, " newShort" , newShort);
5656 NODE_SET_PROTOTYPE_METHOD (s_ct, " newChar" , newChar);
57+ NODE_SET_PROTOTYPE_METHOD (s_ct, " newFloat" , newFloat);
5758 NODE_SET_PROTOTYPE_METHOD (s_ct, " getStaticFieldValue" , getStaticFieldValue);
5859 NODE_SET_PROTOTYPE_METHOD (s_ct, " setStaticFieldValue" , setStaticFieldValue);
5960
@@ -634,6 +635,30 @@ void Java::destroyJVM(JavaVM** jvm, JNIEnv** env) {
634635 return scope.Close (JavaObject::New (self, newObj));
635636}
636637
638+ /* static*/ v8::Handle<v8::Value> Java::newFloat (const v8::Arguments& args) {
639+ v8::HandleScope scope;
640+ Java* self = node::ObjectWrap::Unwrap<Java>(args.This ());
641+ v8::Handle<v8::Value> ensureJvmResults = self->ensureJvm ();
642+ if (!ensureJvmResults->IsUndefined ()) {
643+ return ensureJvmResults;
644+ }
645+ JNIEnv* env = self->getJavaEnv ();
646+ JavaScope javaScope (env);
647+
648+ if (args.Length () != 1 ) {
649+ return ThrowException (v8::Exception::TypeError (v8::String::New (" newShort only takes 1 argument" )));
650+ } else if (!args[0 ]->IsNumber ()) {
651+ return ThrowException (v8::Exception::TypeError (v8::String::New (" Argument 1 must be a number" )));
652+ }
653+ v8::Local<v8::Number> val = args[0 ]->ToNumber ();
654+
655+ jclass clazz = env->FindClass (" java/lang/Float" );
656+ jmethodID constructor = env->GetMethodID (clazz, " <init>" , " (F)V" );
657+ jobject newObj = env->NewObject (clazz, constructor, (jfloat)val->Value ());
658+
659+ return scope.Close (JavaObject::New (self, newObj));
660+ }
661+
637662/* static*/ v8::Handle<v8::Value> Java::getStaticFieldValue (const v8::Arguments& args) {
638663 v8::HandleScope scope;
639664 Java* self = node::ObjectWrap::Unwrap<Java>(args.This ());
0 commit comments