Пример #1
0
void JniFirebase::SetJson(const char *value) {
    auto env = getEnv();
    
    if (s_objectMapperInstance == NULL) {
        lock<std::mutex> lock(s_objectMapperLock);
        if (s_objectMapperInstance == NULL) {
            if (!GetClass(env, "java/util/HashMap", &s_objectClass)) {
                return;
            }

            if (!GetClass(env, s_objectMapperClassName, &s_objectMapperClass)) {
                return;
            }

            jmethodID ctor = NULL;
            if (!GetMethod(env, s_objectMapperClass, "<init>", "()V", &ctor))
            {
                return;
            }

            if (!GetMethod(env, s_objectMapperClass, s_objectMapperReadValueName, s_objectMapperReadValueSig, &s_objectMapperReadValue)) {
                return;
            }

            JOBJECT localRef = JOBJECT(env, env->NewObject(s_objectMapperClass, ctor));
            s_objectMapperInstance = env->NewGlobalRef(localRef);
        }
    }
    
    JOBJECT localValue = JOBJECT(env,
                                env->CallObjectMethod(s_objectMapperInstance, s_objectMapperReadValue,
                                                      (jstring)JSTRING(env, env->NewStringUTF(value)), s_objectClass));

    if (env->ExceptionCheck() == JNI_TRUE) {
        SetString(GetJNIExceptionDescription(env, env->ExceptionOccurred()));
        return;
    }
    
    if (!GetMethod(env, s_firebaseClass, s_firebaseSetValueName, s_firebaseSetValueSig, &s_firebaseSetValue)) {
        return;
    }
    
    env->CallVoidMethod(m_firebase, s_firebaseSetValue, (jobject)localValue);
}
Пример #2
0
uint64_t JniFirebase::GetAuthExpiration() {
    auto env = getEnv();
    if (!GetMethod(env, s_firebaseClass, "getAuth", "()Lcom.firebase.client.AuthData;",
                   &s_firebaseGetAuth)) {
        return NULL;
    }
    
    JOBJECT authData = JOBJECT(env, env->CallObjectMethod(m_firebase, s_firebaseGetAuth));
    JniAuth auth = JniAuth(authData);
    return auth.GetAuthExpiration();
}
Пример #3
0
JniFirebase* JniFirebase::Root() {
    if (!m_firebase) {
        return NULL;
    }
    auto env = getEnv();
    
    if (!GetMethod(env, s_firebaseClass, s_firebaseRootName, s_firebaseRootSig, &s_firebaseRoot)) {
        return NULL;
    }
    JOBJECT rootFirebase = JOBJECT(env, env->CallObjectMethod(m_firebase, s_firebaseRoot));
    return new JniFirebase(rootFirebase);
}
Пример #4
0
JniFirebase* JniFirebase::Child(const char *value) {
    if (!m_firebase) {
        return NULL;
    }
    auto env = getEnv();
    
    if (!GetMethod(env, s_firebaseClass, s_firebaseChildName, s_firebaseChildSig, &s_firebaseChild)) {
        return NULL;
    }
    JOBJECT childFirebase = JOBJECT(env, env->CallObjectMethod(m_firebase, s_firebaseChild, (jstring)JSTRING(env, env->NewStringUTF(value))));
    return new JniFirebase(childFirebase);
}
Пример #5
0
JniFirebase::JniFirebase(const char* path) {
    auto env = getEnv();
    
    if (!GetClass(env, "com/firebase/client/Firebase", &s_firebaseClass)) {
        return;
    }
        
    if (!GetMethod(env, s_firebaseClass, "<init>", "(Ljava/lang/String;)V", &s_firebaseCtor)) {
        return;
    }
        
    JOBJECT localRef = JOBJECT(env, env->NewObject(s_firebaseClass, s_firebaseCtor,
                                                  (jstring)JSTRING(env, env->NewStringUTF(path))));
    m_firebase = env->NewGlobalRef(localRef);
}
Пример #6
0
void JniFirebase::AuthAnonymously (long callback) {
    auto env = getEnv();
    if (!GetClass(env, "jnistub/AuthAnonymousStub", &s_anonymousClass)) {
        return;
    }
    
    if (!GetMethod(env, s_anonymousClass, "<init>",
                   "(Lcom/firebase/client/Firebase;J)V", &s_anonymousCtor)) {
        return;
    }
        
    JOBJECT localRef = JOBJECT(env,
                               env->NewObject(s_anonymousClass, s_anonymousCtor, getJniObject(),
                                              (jlong)callback));
}
Пример #7
0
void JniFirebase::AuthWithCustomToken (const char* token, long callback) {
    auto env = getEnv();
    if (!GetClass(env, "jnistub/AuthCustomTokenStub", &s_customTokenClass)) {
        return;
    }
    
    if (!GetMethod(env, s_customTokenClass, "<init>",
                   "(Lcom/firebase/client/Firebase;JLjava/lang/String;)V", &s_customTokenCtor)) {
        return;
    }
    
    JOBJECT localRef = JOBJECT(env,
                               env->NewObject(s_customTokenClass, s_customTokenCtor, getJniObject(),
                                              (jlong)callback,
                                              (jstring)JSTRING(env, env->NewStringUTF(token))));
}
Пример #8
0
void JniFirebase::AuthWithPassword (const char* email, const char* password, long callback) {
    auto env = getEnv();
    if (!GetClass(env, "jnistub/AuthPasswordStub", &s_passwordClass)) {
        return;
    }
    
    if (!GetMethod(env, s_passwordClass, "<init>",
                   "(Lcom/firebase/client/Firebase;JLjava/lang/String;Ljava/lang/String;)V", &s_passwordCtor)) {
        return;
    }
    
    JOBJECT localRef = JOBJECT(env,
                               env->NewObject(s_passwordClass, s_passwordCtor, getJniObject(),
                                              (jlong)callback,
                                              (jstring)JSTRING(env, env->NewStringUTF(email)),
                                              (jstring)JSTRING(env, env->NewStringUTF(password))));
}
Пример #9
0
JniChildEventStub::JniChildEventStub(JniFirebase* firebase, jlong cookie) {
    auto env = getEnv();
    
    if (!GetClass(env, s_stubClassName, &s_stubClass)) {
        return;
    }
    
    if (!GetMethod(env, s_stubClass, s_stubCtorName, s_stubCtorSig, &s_stubCtor)) {
        return;
    }
    
    if (!GetMethod(env, s_stubClass, s_stubReleaseName, s_stubReleaseSig, &s_stubRelease)) {
        return;
    }
    
    JOBJECT localRef = JOBJECT(env,
                               env->NewObject(s_stubClass, s_stubCtor, firebase->getJniObject(),
                                              cookie));
    m_stub = env->NewGlobalRef(localRef);
}