Skip to content

Commit 463345c

Browse files
committed
added int's as parameters
1 parent df16e2a commit 463345c

3 files changed

Lines changed: 17 additions & 3 deletions

File tree

src/java.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,13 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
125125
if(clazz == NULL) {
126126
std::ostringstream errStr;
127127
errStr << "Could not create class " << className.c_str();
128-
return javaExceptionToV8(env, errStr.str());
128+
v8::Handle<v8::Value> error = javaExceptionToV8(env, errStr.str());
129+
130+
v8::Handle<v8::Value> argv[2];
131+
argv[0] = error;
132+
argv[1] = v8::Undefined();
133+
v8::Function::Cast(*callback)->Call(v8::Context::GetCurrent()->Global(), 2, argv);
134+
return v8::Undefined();
129135
}
130136
std::list<jobject> constructors = javaReflectionGetConstructors(env, clazz);
131137
jobject method = javaFindBestMatchingConstructor(env, constructors, methodArgTypes);
@@ -163,7 +169,7 @@ v8::Handle<v8::Value> Java::createJVM(JavaVM** jvm, JNIEnv** env) {
163169
if(clazz == NULL) {
164170
std::ostringstream errStr;
165171
errStr << "Could not create class " << className.c_str();
166-
return javaExceptionToV8(env, errStr.str());
172+
return ThrowException(javaExceptionToV8(env, errStr.str()));
167173
}
168174
std::list<jobject> constructors = javaReflectionGetConstructors(env, clazz);
169175
jobject method = javaFindBestMatchingConstructor(env, constructors, methodArgTypes);

src/utils.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,12 @@ jobject v8ToJava(JNIEnv* env, v8::Local<v8::Value> arg, int *methodArgType) {
150150
*methodArgType = TYPE_STRING;
151151
v8::String::AsciiValue val(arg->ToString());
152152
return env->NewStringUTF(*val);
153+
} else if(arg->IsInt32()) {
154+
jint val = arg->ToInt32()->Value();
155+
*methodArgType = TYPE_INT;
156+
jclass clazz = env->FindClass("java/lang/Integer");
157+
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(I)V");
158+
return env->NewObject(clazz, constructor, val);
153159
} else {
154160
// TODO: handle other arg types
155161
*methodArgType = TYPE_OBJECT;

test/simple-test.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ exports['Simple'] = nodeunit.testCase({
6767
list.addSync("hello");
6868
list.addSync("world");
6969
test.equal(list.sizeSync(), 2);
70-
list.clearSync();
70+
console.log("before get");
71+
var item0 = list.getSync(0);
72+
test.equal(item0.toStringSync(), "hello");
7173
var clazz = list.getClassSync();
7274
var result = clazz.getNameSync();
7375
test.equal(result, "java.util.ArrayList");

0 commit comments

Comments
 (0)