示例#1
0
VALUE MethodResultJni::enumerateRubyObjects(VALUE klass)
{
    RAWTRACE("enumerateRubyObjects");

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        rb_raise(rb_eRuntimeError,"JNI initialization failed");
        return Qnil;;
    }

    if(getResultType(env) == typeList)
    {
        CHoldRubyValue valArray(rho_ruby_create_array());

        HStringVector pIDs = rho_cast<HStringVector>(env, getListResult(env));

        for(HStringVector::element_type::size_type i = 0; i < pIDs->size(); ++i)
        {
            VALUE valObj = rho_ruby_create_object_with_id( klass, (*pIDs)[i].c_str() );
            rho_ruby_add_to_array(valArray, valObj);
        }

        RAWTRACE("has enumerated");
        reset(env);
        return valArray;
    } else
    {
        return toRuby();
    }

}
示例#2
0
MethodResultJni::MethodResultJni(JNIEnv* env, jobject jResult) : m_jhResult(jResult), m_bGlobalRef(false), m_bSlaveRef(false), m_hasCallback(false), m_resType(typeNone)
{
    m_env = jniInit(env);
    if (!m_env) {
        RAWLOG_ERROR("ctor - JNI initialization failed");
        return;
    }
}
示例#3
0
MethodResultJni::MethodResultJni() : m_jhResult(0), m_hasCallbackUrl(false), m_resType(typeNone)
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("ctor - JNI initialization failed");
        return;
    }

    m_jhResult = env->NewObject(s_methodResultClass, s_midMethodResult);
}
示例#4
0
JNIEnv* CGenPropBagBase::jniInit()
{
    JNIEnv *env = jnienv();
    if(!env)
    {
        LOG(FATAL) + "JNI init failed: JNIEnv is null";
        return 0;
    }
    return jniInit(env);
}
示例#5
0
void MethodExecutorJni::runWithUiThread(jhobject jhTask)
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    env->CallStaticVoidMethod(s_MethodExecutorClass, s_midRunWithUiThread, jhTask.get());
}
示例#6
0
JNIEnv* CBarcode1::jniInit()
{
    JNIEnv *env = jnienv();
    if(!env)
    {
        RAWLOG_ERROR("JNI init failed: JNIEnv is null");
        return 0;
    }
    return jniInit(env);
}
示例#7
0
MethodResultJni::MethodResultJni(bool isRuby) : m_env(0), m_jhResult(0), m_bGlobalRef(false), m_bSlaveRef(false), m_hasCallback(false), m_resType(typeNone)
{
    m_env = jniInit();
    if (!m_env) {
        RAWLOG_ERROR("ctor - JNI initialization failed");
        return;
    }

    m_jhResult = m_env->NewObject(s_methodResultClass, s_midMethodResult, static_cast<jboolean>(isRuby));
}
JNIEnv* CLightsensorBase::jniInit()
{
    JNIEnv *env = jnienv();
    if(!env)
    {
        LOG(FATAL) + "JNI init failed: JNIEnv is null";
        return 0;
    }
    return jniInit(env);
}
示例#9
0
jhobject CBarcode1::create(jhstring& jhId)
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject res = env->CallStaticObjectMethod(s_class, s_midCreate, ghId.get());
}
示例#10
0
jhobject CBarcode1::enumerate()
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject res = env->CallStaticObjectMethod(s_class, s_midEnumerate);
    return res;
}
示例#11
0
void CBarcode1::setDefaultID(jhstring& jhId)
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    env->CallStaticVoidMethod(s_class, s_midSetDefaultID, jhId.get());

}
示例#12
0
jhobject CBarcode1::getDefault()
{
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhstring res = env->CallStaticObjectMethod(s_class, s_midGetDefault);
    return res;

}
示例#13
0
MethodResultJni::MethodResultJni(JNIEnv* env, jobject jResult) : m_bhasLocalFrame(false), m_jhResult(jResult), m_bGlobalRef(false), m_bSlaveRef(false), m_hasCallback(false), m_resType(typeNone), m_javaResultType(0)
{
	if(env->PushLocalFrame(256) >= 0)
	{
		m_bhasLocalFrame = true;
	}
	
    m_env = jniInit(env);
    if (!m_env) {
        RAWLOG_ERROR("ctor - JNI initialization failed");
        return;
    }
}
示例#14
0
void CBarcode1::enumerate(MethodResultJni& res)
{
    RAWTRACE("enumerate");

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject jhSingleton = getSingleton(env);
    env->CallVoidMethod(jhSingleton.get(), s_midEnumerate, static_cast<jobject>(res));
}
void CLightsensorBase::setJavaFactory(JNIEnv* env, jobject jFactory)
{
    LOG(TRACE) + "setJavaFactory";

    env = jniInit(env);
    if (!env) {
        LOG(FATAL) + "JNI initialization failed";
        return;
    }

    env->CallStaticVoidMethod(s_clsFactorySingleton, s_midFactorySetInstance, jFactory);

    LOG(TRACE) + "setJavaFactory succeeded";
}
示例#16
0
文件: main.c 项目: CCQIU/CC
/*
 * Class:     com_jni_demos_TestJNI
 * Method:    Init
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_com_libcc_test_TestJNI_Init
(JNIEnv *env, jobject obj, jobject amgr)
{
     if (amgr && env) {  
         assetManager = AAssetManager_fromJava(env, amgr);
         if (NULL == assetManager) {
             CC_ERROR_LOG("AAssetManager_fromJava() return null !");  
         }
         cc_jni_set_asset_manager(assetManager);
		jniInit();
     } else {  
         CC_ERROR_LOG("assetManager is null !");  
     }
}
void CLightsensorBase::setDefaultID(const rho::String& id)
{
    LOG(TRACE) + "setDefaultID: " + id;

    JNIEnv *env = jniInit();
    if (!env) {
        LOG(FATAL) + "JNI initialization failed";
        return;
    }

    jhobject instance = getSingleton(env);
    jhstring jhId = rho_cast<jstring>(env, id);
    env->CallVoidMethod(instance.get(), s_midSetDefaultID, jhId.get());
}
rho::String CLightsensorBase::getDefaultID()
{
    LOG(TRACE) + "getDefaultID";

    JNIEnv *env = jniInit();
    if (!env) {
        LOG(FATAL) + "JNI initialization failed";
        return rho::String();
    }

    jhobject jhSingleton = getSingleton(env);
    jhstring res = static_cast<jstring>(env->CallObjectMethod(jhSingleton.get(), s_midGetDefaultID));
    return rho_cast<rho::String>(env, res);
}
示例#19
0
void CBarcode1::setDefaultID(const rho::String& id)
{
    RAWTRACE1("setDefaultID(id = \"%s\")", id.c_str());

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject instance = getSingleton(env);
    jhstring jhId = rho_cast<jstring>(env, id);
    env->CallVoidMethod(instance.get(), s_midSetDefaultID, jhId.get());
}
示例#20
0
rho::String CBarcode1::getDefaultID()
{
    RAWTRACE("getDefaultID");

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return rho::String();
    }

    jhobject jhSingleton = getSingleton(env);
    jhstring res = static_cast<jstring>(env->CallObjectMethod(jhSingleton.get(), s_midGetDefaultID));
    return rho_cast<rho::String>(env, res);
}
示例#21
0
//----------------------------------------------------------------------------------------------------------------------
void CBarcode1::takeBarcode(MethodResultJni& result)
{
    RAWTRACE("takeBarcode(result)");

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject jhObject = getObject(env);
    jhobject jhTask = env->NewObject(s_clsTakeBarcodeTask, s_midTakeBarcodeTask,
                    jhObject.get(), static_cast<jobject>(result));
    run(env, jhTask.get(), result);
}
示例#22
0
void CBarcode1::getProps(jobject names, MethodResultJni& result)
{
    RAWTRACE("getProps(nameList, result)");

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    jhobject jhObject = getObject(env);
    jhobject jhTask = env->NewObject(s_clsGetProps2Task, s_midGetProps2Task,
                    jhObject.get(), names, static_cast<jobject>(result));
    run(env, jhTask.get(), result);
}
示例#23
0
void CBarcode1::setJavaFactory(JNIEnv* env, jobject jFactory)
{
    RAWTRACE("setJavaFactory");

    env = jniInit(env);
    if (!env) {
        RAWLOG_ERROR("JNI initialization failed");
        return;
    }

    RAWTRACE1("s_clsFactorySingleton: 0x%.8X ------------------------------------", s_clsFactorySingleton);

    env->CallStaticVoidMethod(s_clsFactorySingleton, s_midFactorySetInstance, jFactory);

    RAWTRACE("setJavaFactory succeeded");
}
示例#24
0
VALUE MethodResultJni::toRuby()
{
    RAWTRACE("toRuby");

    VALUE res = Qnil;

    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_FATAL("JNI initialization failed");
        rb_raise(rb_eRuntimeError,"JNI initialization failed");
        return Qnil;
    }

    int type = getResultType(env);
    switch(type)
    {
    case typeNone:
        break;
    case typeBoolean:
        {
            bool booleanResult = static_cast<bool>(getBooleanResult(env));
            res = booleanResult ? Qtrue : Qfalse;
        }
        break;
    case typeInteger:
    {
        int intResult = static_cast<int>(getIntegerResult(env));
        res = rho_ruby_create_integer(intResult);
    }
    break;
    case typeDouble:
    {
        double doubleResult = static_cast<double>(getDoubleResult(env));
        res = rho_ruby_create_double(doubleResult);
    }
    break;
    case typeString:
        {
            jhstring jhStrResult = getStringResult(env);
            res = rho_cast<VALUE>(env, jhStrResult);
        }
        break;
    case typeList:
        {
            jhobject jhListResult = getListResult(env);
            res = rho_cast<VALUE>(env, jhListResult);
        }
        break;
    case typeMap:
        {
            jhobject jhMapResult = getMapResult(env);
            res = rho_cast<VALUE>(env, jhMapResult);
        }
        break;
    case typeArgError:
        rho_ruby_raise_argerror(getErrorMessage(env).c_str());
        break;
    case typeError:
        rb_raise(rb_eRuntimeError, getErrorMessage(env).c_str());
        break;
    default:
        RAWLOG_FATAL("Unknown runtime error in MethodResultJni class");
        rb_raise(rb_eRuntimeError,"Unknown runtime error in MethodResultJni class");
    }

    reset(env);
    return res;
}
示例#25
0
 JNIEXPORT void JNICALL Java_com_mapzen_tangram_Tangram_init(JNIEnv* jniEnv, jobject obj, jobject tangramInstance, jobject assetManager) {
     jniInit(jniEnv, tangramInstance, assetManager);
     Tangram::initialize();
 }
示例#26
0
std::string MethodResultJni::toJson()
{
    std::string res = "{}";
    JNIEnv *env = jniInit();
    if (!env) {
        RAWLOG_FATAL("JNI initialization failed");
        rb_raise(rb_eRuntimeError,"JNI initialization failed");
        return res;
    }

    int type = getResultType(env);
    switch(type)
    {
    case typeNone:
        break;
    case typeBoolean:
//        {
//            bool booleanResult = static_cast<bool>(getBooleanResult(env));
//            res = booleanResult ? Qtrue : Qfalse;
//        }
        break;
    case typeInteger:
//        {
//            int intResult = static_cast<int>(getIntegerResult(env));
//            res = rho_ruby_create_integer(intResult);
//        }
        break;
    case typeDouble:
//        {
//            double doubleResult = static_cast<double>(getDoubleResult(env));
//            res = rho_ruby_create_double(doubleResult);
//        }
        break;
    case typeString:
//        {
//            jhstring jhStrResult = getStringResult(env);
//            res = rho_cast<VALUE>(env, jhStrResult);
//        }
        break;
    case typeList:
//        {
//            jhobject jhListResult = getListResult(env);
//            res = rho_cast<VALUE>(env, jhListResult);
//        }
        break;
    case typeMap:
//        {
//            jhobject jhMapResult = getMapResult(env);
//            res = rho_cast<VALUE>(env, jhMapResult);
//        }
        break;
    case typeArgError:
    case typeError:
        {
            res = "{'error' : { 'message' : '";
            res += getErrorMessage(env) + "' } }";
        }
        break;
    default:
        RAWLOG_ERROR("Unknown runtime error in MethodResultJni class");
        res = "{'error' : { 'message' : 'Unknown runtime error in MethodResultJni class' } }";
    }

    reset(env);
    return res;
}