Reorganize bindings methods. Also, properly check error conditions in those methods.

git-svn-id: svn://10.0.0.236/trunk@167699 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2005-01-14 00:09:49 +00:00
parent eaa00b45f3
commit 6dc662e1e6
6 changed files with 221 additions and 161 deletions

View File

@@ -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<nsIServiceManager> 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;
}