VALUE rho_cast_helper<VALUE, jobject>::operator()(JNIEnv *env, jobject obj) { if (env->IsSameObject(obj, NULL) == JNI_TRUE) return Qnil; if (!initConvertor(env)) { env->ThrowNew(getJNIClass(RHODES_JAVA_CLASS_RUNTIME_EXCEPTION), "Java <=> Ruby conversion initialization failed"); return Qnil; } if (env->IsInstanceOf(obj, clsString)) { const char *str = env->GetStringUTFChars(static_cast<jstring>(obj), JNI_FALSE); VALUE res = rho_ruby_create_string(str); env->ReleaseStringUTFChars(static_cast<jstring>(obj), str); return res; } if (env->IsInstanceOf(obj, clsMap)) return convertJavaMapToRubyHash(env, obj); RAWLOG_ERROR("rho_cast<VALUE, jobject>: unknown type of value"); return Qnil; }
RHO_GLOBAL VALUE ringtone_manager_get_all() { jclass cls = getJNIClass(RHODES_JAVA_CLASS_RINGTONE_MANAGER); if (!cls) return Qnil; jmethodID mid = getJNIClassStaticMethod(cls, "getAllRingtones", "()Ljava/util/Map;"); if (!mid) return Qnil; JNIEnv *env = jnienv(); jobject obj = env->CallStaticObjectMethod(cls, mid); if (!obj) return Qnil; return convertJavaMapToRubyHash(obj); }
VALUE rho_cast_helper<VALUE, jobject>::operator()(JNIEnv *env, jobject obj) { if (!rho_cast_java_ruby_init(env)) { env->ThrowNew(getJNIClass(RHODES_JAVA_CLASS_RUNTIME_EXCEPTION), "Java <=> Ruby conversion initialization failed"); return Qnil; } if (!obj) return Qnil; if (env->IsInstanceOf(obj, clsString)) return rho_ruby_create_string(rho_cast<std::string>(env, (jstring)obj).c_str()); if (env->IsInstanceOf(obj, clsMap)) return convertJavaMapToRubyHash(env, obj); RAWLOG_ERROR("rho_cast<VALUE, jobject>: unknown type of value"); return Qnil; }