diff options
Diffstat (limited to 'java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp')
-rw-r--r-- | java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp | 186 |
1 files changed, 35 insertions, 151 deletions
diff --git a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp index 174739c..1f0c0df 100644 --- a/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp +++ b/java/android/OlmLibSdk/olm-sdk/src/main/jni/olm_jni_helper.cpp @@ -63,12 +63,13 @@ bool setRandomInBuffer(uint8_t **aBuffer2Ptr, size_t aRandomSize) /** -* Read the account instance ID of the calling object. +* Read the instance ID of the calling object. * @param aJniEnv pointer pointing on the JNI function table * @param aJavaObject reference to the object on which the method is invoked +* @param aCallingClass java calling clas name * @return the instance ID if operation succeed, -1 if instance ID was not found. **/ -jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) +jlong getInstanceId(JNIEnv* aJniEnv, jobject aJavaObject, const char *aCallingClass) { jlong instanceId = 0; jfieldID instanceIdField; @@ -77,7 +78,7 @@ jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) if(NULL!=aJniEnv) { - requiredClass = aJniEnv->FindClass(CLASS_OLM_ACCOUNT); + requiredClass = aJniEnv->FindClass(aCallingClass); if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass))) { @@ -85,78 +86,56 @@ jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) } else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject))) { - if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmAccountId", "J"))) + if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeId", "J"))) { instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField); aJniEnv->DeleteLocalRef(loaderClass); - LOGD("## getAccountInstanceId(): read from java instanceId=%lld",instanceId); + LOGD("## getInstanceId(): read from java instanceId=%lld",instanceId); } else { - LOGE("## getAccountInstanceId() ERROR! GetFieldID=null"); + LOGE("## getInstanceId() ERROR! GetFieldID=null"); } } else { - LOGE("## getAccountInstanceId() ERROR! GetObjectClass=null"); + LOGE("## getInstanceId() ERROR! GetObjectClass=null"); } } else { - LOGE("## getAccountInstanceId() ERROR! aJniEnv=NULL"); + LOGE("## getInstanceId() ERROR! aJniEnv=NULL"); } - LOGD("## getAccountInstanceId() success - instanceId=%p (jlong)(intptr_t)instanceId=%lld",(void*)instanceId, (jlong)(intptr_t)instanceId); + LOGD("## getInstanceId() success - instanceId=%p (jlong)(intptr_t)instanceId=%lld",(void*)instanceId, (jlong)(intptr_t)instanceId); return instanceId; } /** -* Read the session instance ID of the calling object (aJavaObject).<br> +* Read the account instance ID of the calling object. * @param aJniEnv pointer pointing on the JNI function table * @param aJavaObject reference to the object on which the method is invoked -* @return the instance ID if read succeed, -1 otherwise. +* @return the instance ID if operation succeed, -1 if instance ID was not found. **/ -jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) +jlong getAccountInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) { - jlong instanceId = 0; - jfieldID instanceIdField; - jclass loaderClass; - jclass requiredClass = 0; + jlong instanceId = getInstanceId(aJniEnv, aJavaObject, CLASS_OLM_ACCOUNT); + return instanceId; +} - if(NULL!=aJniEnv) - { - requiredClass = aJniEnv->FindClass(CLASS_OLM_SESSION); - if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass))) - { - LOGE("## getSessionInstanceId() failure - invalid instance of"); - } - else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject))) - { - if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmSessionId", "J"))) - { - instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField); - aJniEnv->DeleteLocalRef(loaderClass); - } - else - { - LOGE("## getSessionInstanceId() ERROR! GetFieldID=null"); - } - } - else - { - LOGE("## getSessionInstanceId() ERROR! GetObjectClass=null"); - } - } - else - { - LOGE("## getSessionInstanceId() ERROR! aJniEnv=NULL"); - } - //LOGD("## getSessionInstanceId() success - instanceId=%lld",instanceId); +/** +* Read the session instance ID of the calling object (aJavaObject).<br> +* @param aJniEnv pointer pointing on the JNI function table +* @param aJavaObject reference to the object on which the method is invoked +* @return the instance ID if read succeed, -1 otherwise. +**/ +jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) +{ + jlong instanceId = getInstanceId(aJniEnv, aJavaObject, CLASS_OLM_SESSION); return instanceId; } - /** * Read the inbound group session instance ID of the calling object (aJavaObject).<br> * @param aJniEnv pointer pointing on the JNI function table @@ -165,41 +144,7 @@ jlong getSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) **/ jlong getInboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) { - jlong instanceId = 0; - jfieldID instanceIdField; - jclass loaderClass; - jclass requiredClass = 0; - - if(NULL!=aJniEnv) - { - requiredClass = aJniEnv->FindClass(CLASS_OLM_INBOUND_GROUP_SESSION); - - if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass))) - { - LOGE("## getInboundGroupSessionInstanceId() failure - invalid instance of"); - } - else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject))) - { - if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmInboundGroupSessionId", "J"))) - { - instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField); - aJniEnv->DeleteLocalRef(loaderClass); - } - else - { - LOGE("## getInboundGroupSessionInstanceId() ERROR! GetFieldID=null"); - } - } - else - { - LOGE("## getInboundGroupSessionInstanceId() ERROR! GetObjectClass=null"); - } - } - else - { - LOGE("## getInboundGroupSessionInstanceId() ERROR! aJniEnv=NULL"); - } - + jlong instanceId = getInstanceId(aJniEnv, aJavaObject, CLASS_OLM_INBOUND_GROUP_SESSION); return instanceId; } @@ -212,84 +157,23 @@ jlong getInboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) **/ jlong getOutboundGroupSessionInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) { - jlong instanceId = 0; - jfieldID instanceIdField; - jclass loaderClass; - jclass requiredClass = 0; - - if(NULL!=aJniEnv) - { - requiredClass = aJniEnv->FindClass(CLASS_OLM_OUTBOUND_GROUP_SESSION); - - if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass))) - { - LOGE("## getOutboundGroupSessionInstanceId() failure - invalid instance of"); - } - else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject))) - { - if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmOutboundGroupSessionId", "J"))) - { - instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField); - aJniEnv->DeleteLocalRef(loaderClass); - } - else - { - LOGE("## getOutboundGroupSessionInstanceId() ERROR! GetFieldID=null"); - } - } - else - { - LOGE("## getOutboundGroupSessionInstanceId() ERROR! GetObjectClass=null"); - } - } - else - { - LOGE("## getOutboundGroupSessionInstanceId() ERROR! aJniEnv=NULL"); - } - + jlong instanceId = getInstanceId(aJniEnv, aJavaObject, CLASS_OLM_OUTBOUND_GROUP_SESSION); return instanceId; } +/** +* Read the utility instance ID of the calling object (aJavaObject).<br> +* @param aJniEnv pointer pointing on the JNI function table +* @param aJavaObject reference to the object on which the method is invoked +* @return the instance ID if read succeed, -1 otherwise. +**/ jlong getUtilityInstanceId(JNIEnv* aJniEnv, jobject aJavaObject) { - jlong instanceId = 0; - jfieldID instanceIdField; - jclass loaderClass; - jclass requiredClass = 0; - - if(NULL!=aJniEnv) - { - requiredClass = aJniEnv->FindClass(CLASS_OLM_UTILITY); - - if((0 != requiredClass) && (JNI_TRUE != aJniEnv->IsInstanceOf(aJavaObject, requiredClass))) - { - LOGE("## getUtilityInstanceId() failure - invalid instance of"); - } - else if(0 != (loaderClass=aJniEnv->GetObjectClass(aJavaObject))) - { - if(0 != (instanceIdField=aJniEnv->GetFieldID(loaderClass, "mNativeOlmUtilityId", "J"))) - { - instanceId = aJniEnv->GetLongField(aJavaObject, instanceIdField); - aJniEnv->DeleteLocalRef(loaderClass); - } - else - { - LOGE("## getUtilityInstanceId() ERROR! GetFieldID=null"); - } - } - else - { - LOGE("## getUtilityInstanceId() ERROR! GetObjectClass=null"); - } - } - else - { - LOGE("## getUtilityInstanceId() ERROR! aJniEnv=NULL"); - } - + jlong instanceId = getInstanceId(aJniEnv, aJavaObject, CLASS_OLM_UTILITY); return instanceId; } + template <typename T> jstring serializeDataWithKey(JNIEnv *env, jobject thiz, jstring aKey, |