@@ -86,10 +86,7 @@ Plugin::Plugin()
8686
8787 std::string className = arg_list[1 ].GetValue <std::string>();
8888 std::string methodName = arg_list[2 ].GetValue <std::string>();
89-
9089 std::string signature = arg_list[3 ].GetValue <std::string>();
91- size_t spos = signature.find (" )" );
92- std::string returnSignature = signature.substr (spos + 1 , signature.length () - spos);
9390
9491 jobject* params = new jobject[arg_size - 4 ];
9592 for (int i = 4 ; i < arg_size; i++) {
@@ -165,14 +162,19 @@ Plugin::Plugin()
165162 }
166163
167164 if (returnValue != nullptr ) {
168- if (returnSignature.compare (" I" )) {
169- Lua::ReturnValues (L, returnValue);
165+ if (jenv->IsInstanceOf (returnValue, jenv->FindClass (" java/lang/Integer" ))) {
166+ jclass cls = jenv->GetObjectClass (returnValue);
167+ jmethodID intValue = jenv->GetMethodID (cls, " intValue" , " ()I" );
168+ jint result = jenv->CallIntMethod (returnValue, intValue);
169+
170+ Lua::ReturnValues (L, result);
170171 }
171172
172- if (returnSignature. compare ( " Ljava. lang. String; " )) {
173+ if (jenv-> IsInstanceOf (returnValue, jenv-> FindClass ( " java/ lang/ String" ) )) {
173174 const char * cstr = jenv->GetStringUTFChars ((jstring)returnValue, NULL );
174175 std::string str = std::string (cstr);
175176 jenv->ReleaseStringUTFChars ((jstring)returnValue, cstr);
177+
176178 Lua::ReturnValues (L, str);
177179 }
178180 }
0 commit comments