JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
{
    if (!vm)
    {
        return JNI_ERR;
    }

    JNIEnv *env = NULL;
    if (JNI_OK != vm->GetEnv((void **) &env, JNI_VERSION_1_6))
    {
        return JNI_ERR;
    }

    // Get the class references
    if (false == getClassRef(env, "java/lang/Object", gSimulatorClassRefs.classObject))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/lang/Integer", gSimulatorClassRefs.classInteger))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/lang/Double", gSimulatorClassRefs.classDouble))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/lang/Boolean", gSimulatorClassRefs.classBoolean))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/lang/String", gSimulatorClassRefs.classString))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/HashMap", gSimulatorClassRefs.classHashMap))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/Vector", gSimulatorClassRefs.classVector))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/Map", gSimulatorClassRefs.classMap))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/Map$Entry", gSimulatorClassRefs.classMapEntry))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/Set", gSimulatorClassRefs.classSet))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/Iterator", gSimulatorClassRefs.classIterator))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "java/util/LinkedList", gSimulatorClassRefs.classLinkedList))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/serviceprovider/SimulatorResourceServer",
                             gSimulatorClassRefs.classSimulatorResource))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/SimulatorResourceModel",
                             gSimulatorClassRefs.classSimulatorResourceModel))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/ResourceAttribute",
                             gSimulatorClassRefs.classResourceAttribute))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/clientcontroller/SimulatorRemoteResource",
                             gSimulatorClassRefs.classSimulatorRemoteResource))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/serviceprovider/ObserverInfo",
                             gSimulatorClassRefs.classObserverInfo))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/DeviceInfo",
                             gSimulatorClassRefs.classDeviceInfo))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/PlatformInfo",
                             gSimulatorClassRefs.classPlatformInfo))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/SimulatorException",
                             gSimulatorClassRefs.classSimulatorException))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/InvalidArgsException",
                             gSimulatorClassRefs.classInvalidArgsException))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/NoSupportException",
                             gSimulatorClassRefs.classNoSupportException))
    {
        return JNI_ERR;
    }

    if (false == getClassRef(env, "org/oic/simulator/OperationInProgressException",
                             gSimulatorClassRefs.classOperationInProgressException))
    {
        return JNI_ERR;
    }

    // Get the reference to methods
    gSimulatorClassRefs.classIntegerCtor = env->GetMethodID(gSimulatorClassRefs.classInteger, "<init>",
                                           "(I)V");
    if (!gSimulatorClassRefs.classIntegerCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classDoubleCtor = env->GetMethodID(gSimulatorClassRefs.classDouble, "<init>",
                                          "(D)V");
    if (!gSimulatorClassRefs.classDoubleCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classBooleanCtor= env->GetMethodID(gSimulatorClassRefs.classBoolean, "<init>",
                                          "(Z)V");
    if (!gSimulatorClassRefs.classBooleanCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classHashMapCtor = env->GetMethodID(gSimulatorClassRefs.classHashMap, "<init>",
                                           "()V");
    if (!gSimulatorClassRefs.classHashMapCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classHashMapPut = env->GetMethodID(gSimulatorClassRefs.classHashMap, "put",
                                          "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;");
    if (!gSimulatorClassRefs.classHashMapPut)
        return JNI_ERR;

    gSimulatorClassRefs.classVectorCtor = env->GetMethodID(gSimulatorClassRefs.classVector, "<init>",
                                          "()V");
    if (!gSimulatorClassRefs.classVectorCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classVectorAddElement = env->GetMethodID(gSimulatorClassRefs.classVector,
            "addElement",
            "(Ljava/lang/Object;)V");
    if (!gSimulatorClassRefs.classVectorAddElement)
        return JNI_ERR;

    gSimulatorClassRefs.classMapEntrySet = env->GetMethodID(
            gSimulatorClassRefs.classMap, "entrySet", "()Ljava/util/Set;");
    if (!gSimulatorClassRefs.classMapEntrySet)
        return JNI_ERR;

    gSimulatorClassRefs.classMapGetKey = env->GetMethodID(
            gSimulatorClassRefs.classMapEntry, "getKey", "()Ljava/lang/Object;");
    if (!gSimulatorClassRefs.classMapGetKey)
        return JNI_ERR;

    gSimulatorClassRefs.classMapGetValue = env->GetMethodID(
            gSimulatorClassRefs.classMapEntry, "getValue", "()Ljava/lang/Object;");
    if (!gSimulatorClassRefs.classMapGetValue)
        return JNI_ERR;

    gSimulatorClassRefs.classIteratorId = env->GetMethodID(
            gSimulatorClassRefs.classSet, "iterator", "()Ljava/util/Iterator;");
    if (!gSimulatorClassRefs.classIteratorId)
        return JNI_ERR;

    gSimulatorClassRefs.classHasNextId = env->GetMethodID(
            gSimulatorClassRefs.classIterator, "hasNext", "()Z");
    if (!gSimulatorClassRefs.classHasNextId)
        return JNI_ERR;

    gSimulatorClassRefs.classNextId = env->GetMethodID(
                                          gSimulatorClassRefs.classIterator, "next", "()Ljava/lang/Object;");
    if (!gSimulatorClassRefs.classNextId)
        return JNI_ERR;

    gSimulatorClassRefs.classLinkedListCtor = env->GetMethodID(gSimulatorClassRefs.classLinkedList,
            "<init>", "()V");
    if (!gSimulatorClassRefs.classLinkedListCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classLinkedListAddObject = env->GetMethodID(gSimulatorClassRefs.classLinkedList,
            "add", "(Ljava/lang/Object;)Z");
    if (!gSimulatorClassRefs.classLinkedListAddObject)
        return JNI_ERR;

    gSimulatorClassRefs.classSimulatorResourceCtor = env->GetMethodID(
                gSimulatorClassRefs.classSimulatorResource, "<init>", "(J)V");
    if (!gSimulatorClassRefs.classSimulatorResourceCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classSimulatorResourceModelCtor = env->GetMethodID(
                gSimulatorClassRefs.classSimulatorResourceModel, "<init>", "(J)V");
    if (!gSimulatorClassRefs.classSimulatorResourceModelCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classResourceAttributeCtor = env->GetMethodID(
                gSimulatorClassRefs.classResourceAttribute, "<init>", "()V");
    if (!gSimulatorClassRefs.classResourceAttributeCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classResourceAttributeSetRange = env->GetMethodID(
                gSimulatorClassRefs.classResourceAttribute, "setRange", "(II)V");
    if (!gSimulatorClassRefs.classResourceAttributeSetRange)
        return JNI_ERR;

    gSimulatorClassRefs.classSimulatorResourceModelId = env->GetMethodID(
                gSimulatorClassRefs.classSimulatorResourceModel, "<init>", "(J)V");
    if (!gSimulatorClassRefs.classSimulatorResourceModelId)
        return JNI_ERR;

    gSimulatorClassRefs.classObserverInfoCtor = env->GetMethodID(
                gSimulatorClassRefs.classObserverInfo, "<init>",
                "(ILjava/lang/String;I)V");
    if (!gSimulatorClassRefs.classObserverInfoCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classSimulatorExceptionCtor = env->GetMethodID(
                gSimulatorClassRefs.classSimulatorException, "<init>",
                "(ILjava/lang/String;)V");
    if (!gSimulatorClassRefs.classSimulatorExceptionCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classInvalidArgsExceptionCtor = env->GetMethodID(
                gSimulatorClassRefs.classInvalidArgsException, "<init>",
                "(ILjava/lang/String;)V");
    if (!gSimulatorClassRefs.classInvalidArgsExceptionCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classNoSupportExceptionCtor = env->GetMethodID(
                gSimulatorClassRefs.classNoSupportException, "<init>",
                "(ILjava/lang/String;)V");
    if (!gSimulatorClassRefs.classNoSupportExceptionCtor)
        return JNI_ERR;

    gSimulatorClassRefs.classOperationInProgressExceptionCtor = env->GetMethodID(
                gSimulatorClassRefs.classOperationInProgressException, "<init>",
                "(ILjava/lang/String;)V");
    if (!gSimulatorClassRefs.classOperationInProgressExceptionCtor)
        return JNI_ERR;

    gvm = vm;
    return JNI_VERSION_1_6;
}
示例#2
0
JSObjectRef QtPixmapRuntime::toJS(JSContextRef context, const QVariant& value, JSValueRef* exception)
{
    return JSObjectMake(context, getClassRef(), new QVariant(value));
}
示例#3
0
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
{
    if (!vm)
        return JNI_ERR;

    JNIEnv *env = nullptr;
    if (JNI_OK != vm->GetEnv((void **) &env, JNI_VERSION_1_6))
        return JNI_ERR;

    // Get the class references
    getClassRef(env, OBJECT_CLS, gSimulatorClassRefs.objectCls);
    getClassRef(env, INTEGER_CLS, gSimulatorClassRefs.integerCls);
    getClassRef(env, DOUBLE_CLS, gSimulatorClassRefs.doubleCls);
    getClassRef(env, BOOLEAN_CLS, gSimulatorClassRefs.booleanCls);
    getClassRef(env, STRING_CLS, gSimulatorClassRefs.stringCls);
    getClassRef(env, VECTOR_CLS, gSimulatorClassRefs.vectorCls);
    getClassRef(env, HASHMAP_CLS, gSimulatorClassRefs.hashMapCls);
    getClassRef(env, MAP_CLS, gSimulatorClassRefs.mapCls);
    getClassRef(env, MAP_ENTRY_CLS, gSimulatorClassRefs.mapEntryCls);
    getClassRef(env, SET_CLS, gSimulatorClassRefs.setCls);
    getClassRef(env, ITERATOR_CLS, gSimulatorClassRefs.iteratorCls);
    getClassRef(env, SIMULATOR_RESOURCE_CLS, gSimulatorClassRefs.simulatorResourceCls);
    getClassRef(env, SIMULATOR_RESOURCE_TYPE_CLS, gSimulatorClassRefs.simulatorResourceTypeCls);
    getClassRef(env, SIMULATOR_SINGLE_RESOURCE_CLS, gSimulatorClassRefs.simulatorSingleResourceCls);
    getClassRef(env, SIMULATOR_COLLECTION_RESOURCE_CLS,
                gSimulatorClassRefs.simulatorCollectionResourceCls);
    getClassRef(env, SIMULATOR_REMOTE_RESOURCE_CLS, gSimulatorClassRefs.simulatorRemoteResourceCls);
    getClassRef(env, SIMULATOR_RESOURCE_MODEL_CLS, gSimulatorClassRefs.simulatorResourceModelCls);
    getClassRef(env, SIMULATOR_RESOURCE_ATTRIBUTE_CLS,
                gSimulatorClassRefs.simulatorResourceAttributeCls);
    getClassRef(env, ATTRIBUTE_VALUE_CLS, gSimulatorClassRefs.attributeValueCls);
    getClassRef(env, ATTRIBUTE_VALUE_TYPE_CLS, gSimulatorClassRefs.attributeValueTypeCls);
    getClassRef(env, ATTRIBUTE_TYPE_INFO_CLS, gSimulatorClassRefs.attributeTypeInfoCls);
    getClassRef(env, ATTRIBUTE_PROPERTY_CLS, gSimulatorClassRefs.attributePropertyCls);
    getClassRef(env, ATTRIBUTE_PROPERTY_TYPE_CLS, gSimulatorClassRefs.attributePropertyTypeCls);
    getClassRef(env, AUTOMATION_TYPE_CLS, gSimulatorClassRefs.automationTypeCls);
    getClassRef(env, OBSERVER_CLS, gSimulatorClassRefs.observerCls);
    getClassRef(env, DEVICE_INFO_CLS, gSimulatorClassRefs.deviceInfoCls);
    getClassRef(env, PLATFORM_INFO_CLS, gSimulatorClassRefs.platformInfoCls);
    getClassRef(env, SIMULATOR_EXCEPTION_CLS, gSimulatorClassRefs.simulatorExceptionCls);
    getClassRef(env, INVALID_ARGS_EXCEPTION_CLS, gSimulatorClassRefs.invalidArgsExceptionCls);
    getClassRef(env, NO_SUPPORT_EXCEPTION_CLS, gSimulatorClassRefs.noSupportExceptionCls);
    getClassRef(env, OPERATION_IN_PROGRESS_EXCEPTION_CLS,
                gSimulatorClassRefs.operationInProgressExceptionCls);
    getClassRef(env, SIMULATOR_RESULT_CLS, gSimulatorClassRefs.simulatorResultCls);
    getClassRef(env, INTEGER_1D_ARRAY, gSimulatorClassRefs.integer1DArrayCls);
    getClassRef(env, INTEGER_2D_ARRAY, gSimulatorClassRefs.integer2DArrayCls);
    getClassRef(env, INTEGER_3D_ARRAY, gSimulatorClassRefs.integer3DArrayCls);
    getClassRef(env, DOUBLE_1D_ARRAY, gSimulatorClassRefs.double1DArrayCls);
    getClassRef(env, DOUBLE_2D_ARRAY, gSimulatorClassRefs.double2DArrayCls);
    getClassRef(env, DOUBLE_3D_ARRAY, gSimulatorClassRefs.double3DArrayCls);
    getClassRef(env, BOOLEAN_1D_ARRAY, gSimulatorClassRefs.boolean1DArrayCls);
    getClassRef(env, BOOLEAN_2D_ARRAY, gSimulatorClassRefs.boolean2DArrayCls);
    getClassRef(env, BOOLEAN_3D_ARRAY, gSimulatorClassRefs.boolean3DArrayCls);
    getClassRef(env, STRING_1D_ARRAY, gSimulatorClassRefs.string1DArrayCls);
    getClassRef(env, STRING_2D_ARRAY, gSimulatorClassRefs.string2DArrayCls);
    getClassRef(env, STRING_3D_ARRAY, gSimulatorClassRefs.string3DArrayCls);
    getClassRef(env, SIMULATOR_RESOURCE_MODEL_1D_ARRAY,
                gSimulatorClassRefs.simulatorResModel1DArrayCls);
    getClassRef(env, SIMULATOR_RESOURCE_MODEL_2D_ARRAY,
                gSimulatorClassRefs.simulatorResModel2DArrayCls);
    getClassRef(env, SIMULATOR_RESOURCE_MODEL_3D_ARRAY,
                gSimulatorClassRefs.simulatorResModel3DArrayCls);

    gJavaVM = vm;
    return JNI_VERSION_1_6;
}