Exemple #1
0
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;
}
Exemple #2
0
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);
}
Exemple #3
0
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;
}