From 3fca91143c205666c13c185be5f8c871411627cb Mon Sep 17 00:00:00 2001 From: "pedemont%us.ibm.com" Date: Wed, 27 Sep 2006 15:17:49 +0000 Subject: [PATCH] Reorganize bindings methods. Also, properly check error conditions in those methods. Original committer: pedemont%us.ibm.com Original revision: 1.18 Original date: 2005/01/14 00:09:49 git-svn-id: svn://10.0.0.236/trunk@212625 18797224-902f-48f8-a5cc-f745e15eee43 --- .../java/xpcom/src/nsJavaInterfaces.cpp | 74 +++++++++---------- .../java/xpcom/src/nsJavaWrapper.cpp | 17 ++--- 2 files changed, 41 insertions(+), 50 deletions(-) diff --git a/mozilla/extensions/java/xpcom/src/nsJavaInterfaces.cpp b/mozilla/extensions/java/xpcom/src/nsJavaInterfaces.cpp index 26507d04a3b..1645abe01cc 100644 --- a/mozilla/extensions/java/xpcom/src/nsJavaInterfaces.cpp +++ b/mozilla/extensions/java/xpcom/src/nsJavaInterfaces.cpp @@ -130,7 +130,6 @@ XPCOM_NATIVE(initXPCOM) (JNIEnv* env, jclass, jobject aMozBinDirectory, delete provider; } - jobject java_stub = nsnull; if (NS_SUCCEEDED(rv)) { // wrap xpcom instance JavaXPCOMInstance* inst; @@ -140,12 +139,13 @@ XPCOM_NATIVE(initXPCOM) (JNIEnv* env, jclass, jobject aMozBinDirectory, if (NS_SUCCEEDED(rv)) { // create java stub - java_stub = CreateJavaWrapper(env, "nsIServiceManager"); + jobject java_stub = CreateJavaWrapper(env, "nsIServiceManager"); if (java_stub) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_stub, inst); - return java_stub; + rv = gBindings->AddBinding(env, java_stub, inst); + if (NS_SUCCEEDED(rv)) + return java_stub; } } } @@ -164,8 +164,8 @@ XPCOM_NATIVE(shutdownXPCOM) (JNIEnv *env, jclass, jobject aServMgr) nsCOMPtr servMgr; if (aServMgr) { // Find corresponding XPCOM object - void* xpcomObj = GetMatchingXPCOMObject(env, aServMgr); - NS_ASSERTION(xpcomObj != nsnull, "Failed to get matching XPCOM object"); + void* xpcomObj = gBindings->GetXPCOMObject(env, aServMgr); + NS_ASSERTION(xpcomObj != nsnull, "Failed to get XPCOM obj for ServiceMgr."); // Even if we failed to get the matching xpcom object, we don't abort this // function. Just call NS_ShutdownXPCOM with a null service manager. @@ -188,8 +188,6 @@ extern "C" JNIEXPORT jobject JNICALL XPCOM_NATIVE(newLocalFile) (JNIEnv *env, jclass, jstring aPath, jboolean aFollowLinks) { - jobject java_stub = nsnull; - // Create a Mozilla string from the jstring jboolean isCopy; const PRUnichar* buf = nsnull; @@ -216,26 +214,24 @@ XPCOM_NATIVE(newLocalFile) (JNIEnv *env, jclass, jstring aPath, if (NS_SUCCEEDED(rv)) { // create java stub - java_stub = CreateJavaWrapper(env, "nsILocalFile"); + jobject java_stub = CreateJavaWrapper(env, "nsILocalFile"); if (java_stub) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_stub, inst); + rv = gBindings->AddBinding(env, java_stub, inst); + if (NS_SUCCEEDED(rv)) + return java_stub; } } } - if (java_stub == nsnull) - ThrowException(env, rv, "Failure in newLocalFile"); - - return java_stub; + ThrowException(env, rv, "Failure in newLocalFile"); + return nsnull; } extern "C" JNIEXPORT jobject JNICALL XPCOM_NATIVE(getComponentManager) (JNIEnv *env, jclass) { - jobject java_stub = nsnull; - // Call XPCOM method nsIComponentManager* cm = nsnull; nsresult rv = NS_GetComponentManager(&cm); @@ -248,26 +244,24 @@ XPCOM_NATIVE(getComponentManager) (JNIEnv *env, jclass) if (NS_SUCCEEDED(rv)) { // create java stub - java_stub = CreateJavaWrapper(env, "nsIComponentManager"); + jobject java_stub = CreateJavaWrapper(env, "nsIComponentManager"); if (java_stub) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_stub, inst); + rv = gBindings->AddBinding(env, java_stub, inst); + if (NS_SUCCEEDED(rv)) + return java_stub; } } } - if (java_stub == nsnull) - ThrowException(env, rv, "Failure in getComponentManager"); - - return java_stub; + ThrowException(env, rv, "Failure in getComponentManager"); + return nsnull; } extern "C" JNIEXPORT jobject JNICALL XPCOM_NATIVE(getComponentRegistrar) (JNIEnv *env, jclass) { - jobject java_stub = nsnull; - // Call XPCOM method nsIComponentRegistrar* cr = nsnull; nsresult rv = NS_GetComponentRegistrar(&cr); @@ -280,26 +274,24 @@ XPCOM_NATIVE(getComponentRegistrar) (JNIEnv *env, jclass) if (NS_SUCCEEDED(rv)) { // create java stub - java_stub = CreateJavaWrapper(env, "nsIComponentRegistrar"); + jobject java_stub = CreateJavaWrapper(env, "nsIComponentRegistrar"); if (java_stub) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_stub, inst); + rv = gBindings->AddBinding(env, java_stub, inst); + if (NS_SUCCEEDED(rv)) + return java_stub; } } } - if (java_stub == nsnull) - ThrowException(env, rv, "Failure in getComponentRegistrar"); - - return java_stub; + ThrowException(env, rv, "Failure in getComponentRegistrar"); + return nsnull; } extern "C" JNIEXPORT jobject JNICALL XPCOM_NATIVE(getServiceManager) (JNIEnv *env, jclass) { - jobject java_stub = nsnull; - // Call XPCOM method nsIServiceManager* sm = nsnull; nsresult rv = NS_GetServiceManager(&sm); @@ -312,19 +304,19 @@ XPCOM_NATIVE(getServiceManager) (JNIEnv *env, jclass) if (NS_SUCCEEDED(rv)) { // create java stub - java_stub = CreateJavaWrapper(env, "nsIServiceManager"); + jobject java_stub = CreateJavaWrapper(env, "nsIServiceManager"); if (java_stub) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_stub, inst); + rv = gBindings->AddBinding(env, java_stub, inst); + if (NS_SUCCEEDED(rv)) + return java_stub; } } } - if (java_stub == nsnull) - ThrowException(env, rv, "Failure in getServiceManager"); - - return java_stub; + ThrowException(env, rv, "Failure in getServiceManager"); + return nsnull; } extern "C" JNIEXPORT void JNICALL @@ -539,7 +531,7 @@ extern "C" JNIEXPORT void JNICALL XPCOMPRIVATE_NATIVE(FinalizeStub) (JNIEnv *env, jclass that, jobject aJavaObject) { -#ifdef DEBUG +#ifdef DEBUG_pedemonte jboolean isCopy; jclass clazz = env->GetObjectClass(aJavaObject); jstring name = (jstring) env->CallObjectMethod(clazz, getNameMID); @@ -549,10 +541,10 @@ XPCOMPRIVATE_NATIVE(FinalizeStub) (JNIEnv *env, jclass that, env->ReleaseStringUTFChars(name, javaObjectName); #endif - void* obj = GetMatchingXPCOMObject(env, aJavaObject); + void* obj = gBindings->GetXPCOMObject(env, aJavaObject); NS_ASSERTION(!IsXPTCStub(obj), "Expecting JavaXPCOMInstance, got nsJavaXPTCStub"); - RemoveJavaXPCOMBinding(env, aJavaObject, nsnull); + gBindings->RemoveBinding(env, aJavaObject, nsnull); delete (JavaXPCOMInstance*) obj; } diff --git a/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp b/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp index f96937cf9f3..ca3ef1cfada 100644 --- a/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp +++ b/mozilla/extensions/java/xpcom/src/nsJavaWrapper.cpp @@ -334,7 +334,7 @@ SetupParams(JNIEnv *env, const jobject aParam, const nsXPTParamInfo &aParamInfo, void* xpcom_obj; if (java_obj) { // Check if we already have a corresponding XPCOM object - void* inst = GetMatchingXPCOMObject(env, java_obj); + void* inst = gBindings->GetXPCOMObject(env, java_obj); // Get IID for this param nsID iid; @@ -366,7 +366,7 @@ SetupParams(JNIEnv *env, const jobject aParam, const nsXPTParamInfo &aParamInfo, break; } inst = SetAsXPTCStub(xpcomStub); - AddJavaXPCOMBinding(env, java_obj, inst); + gBindings->AddBinding(env, java_obj, inst); } if (isWeakRef) { @@ -670,7 +670,7 @@ FinalizeParams(JNIEnv *env, const jobject aParam, jobject java_obj = nsnull; if (xpcom_obj) { // Find matching Java object for given xpcom object - java_obj = GetMatchingJavaObject(env, xpcom_obj); + java_obj = gBindings->GetJavaObject(env, xpcom_obj); // If no matching Java object exists, create one if (java_obj == nsnull) { @@ -699,7 +699,7 @@ FinalizeParams(JNIEnv *env, const jobject aParam, if (java_obj) { // Associate XPCOM object w/ Java stub - AddJavaXPCOMBinding(env, java_obj, inst); + gBindings->AddBinding(env, java_obj, inst); } } } @@ -889,7 +889,7 @@ SetRetval(JNIEnv *env, const nsXPTParamInfo &aParamInfo, case nsXPTType::T_INTERFACE_IS: { if (aVariant.val.p) { - jobject java_obj = GetMatchingJavaObject(env, aVariant.val.p); + jobject java_obj = gBindings->GetJavaObject(env, aVariant.val.p); if (java_obj == nsnull) { nsID iid; @@ -914,10 +914,9 @@ SetRetval(JNIEnv *env, const nsXPTParamInfo &aParamInfo, java_obj = CreateJavaWrapper(env, iface_name); if (java_obj) - AddJavaXPCOMBinding(env, java_obj, inst); + gBindings->AddBinding(env, java_obj, inst); } - // XXX not sure if this is necessary // If returned object is an nsJavaXPTCStub, release it. nsISupports* xpcom_obj = NS_STATIC_CAST(nsISupports*, aVariant.val.p); nsJavaXPTCStub* stub = nsnull; @@ -989,7 +988,7 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject, jint aMethodIndex, jobjectArray aParams, jvalue &aResult) { // Find corresponding XPCOM object - void* xpcomObj = GetMatchingXPCOMObject(env, aJavaObject); + void* xpcomObj = gBindings->GetXPCOMObject(env, aJavaObject); if (xpcomObj == nsnull) { ThrowException(env, 0, "Failed to get matching XPCOM object"); return; @@ -1008,7 +1007,7 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject, return; } -#ifdef DEBUG +#ifdef DEBUG_pedemonte const char* ifaceName; iinfo->GetNameShared(&ifaceName); LOG(("=> Calling %s::%s()\n", ifaceName, methodInfo->GetName()));