Denis Sharypov <sdv@sparc.spb.su> implemented DOMExceptions

git-svn-id: svn://10.0.0.236/trunk@49023 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
akhil.arora%sun.com 1999-09-25 02:35:56 +00:00
parent a3615e55f8
commit 143c1894fc
9 changed files with 615 additions and 561 deletions

View File

@ -58,17 +58,8 @@ jclass JavaDOMGlobals::domExceptionClass = NULL;
jmethodID JavaDOMGlobals::domExceptionInitMID = NULL;
jclass JavaDOMGlobals::runtimeExceptionClass = NULL;
jmethodID JavaDOMGlobals::runtimeExceptionInitMID = NULL;
jshort JavaDOMGlobals::exceptionCodeIndexSize = 0;
jshort JavaDOMGlobals::exceptionCodeDomStringSize = 0;
jshort JavaDOMGlobals::exceptionCodeHierarchyRequest = 0;
jshort JavaDOMGlobals::exceptionCodeWrongDocument = 0;
jshort JavaDOMGlobals::exceptionCodeInvalidCharacter = 0;
jshort JavaDOMGlobals::exceptionCodeNoDataAllowed = 0;
jshort JavaDOMGlobals::exceptionCodeNoModificationAllowed = 0;
jshort JavaDOMGlobals::exceptionCodeNotFound = 0;
jshort JavaDOMGlobals::exceptionCodeNotSupported = 0;
jshort JavaDOMGlobals::exceptionCodeInuseAttribute = 0;
const char* const JavaDOMGlobals::exceptionMessage[] =
const char* const JavaDOMGlobals::DOM_EXCEPTION_MESSAGE[] =
{"Invalid DOM error code",
"Index is out of bounds",
"Could not fit text",
@ -226,8 +217,6 @@ void JavaDOMGlobals::Initialize(JNIEnv *env)
textClass = (jclass) env->NewGlobalRef(textClass);
if (!textClass) return;
// caching DOMException class, init and field IDs
domExceptionClass = env->FindClass("org/mozilla/dom/DOMExceptionImpl");
if (!domExceptionClass) return;
domExceptionClass = (jclass) env->NewGlobalRef(domExceptionClass);
@ -243,78 +232,6 @@ void JavaDOMGlobals::Initialize(JNIEnv *env)
runtimeExceptionInitMID =
env->GetMethodID(runtimeExceptionClass, "<init>", "(Ljava/lang/String;)V");
if (!runtimeExceptionInitMID) return;
jfieldID exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "INDEX_SIZE_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeIndexSize =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "DOMSTRING_SIZE_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeDomStringSize =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "HIERARCHY_REQUEST_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeHierarchyRequest =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "WRONG_DOCUMENT_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeWrongDocument =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "INVALID_CHARACTER_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeInvalidCharacter =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "NO_DATA_ALLOWED_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeNoDataAllowed =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "NO_MODIFICATION_ALLOWED_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeNoModificationAllowed =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "NOT_FOUND_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeNotFound =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "NOT_SUPPORTED_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeNotSupported =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
exceptionCodeFID =
env->GetStaticFieldID(domExceptionClass, "INUSE_ATTRIBUTE_ERR", "S");
if (!exceptionCodeFID) return;
exceptionCodeInuseAttribute =
env->GetStaticShortField(domExceptionClass, exceptionCodeFID);
if (env->ExceptionOccurred()) return;
// end DOMException caching
}
void JavaDOMGlobals::Destroy(JNIEnv *env)
@ -596,51 +513,55 @@ void JavaDOMGlobals::TakeOutGarbage()
}
// caller must return from JNI immediately after calling this function
void JavaDOMGlobals::ThrowDOMException(JNIEnv *env, jshort code)
{
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::ThrowDOMException: (%x) %s\n",
code, exceptionMessage[code]));
void JavaDOMGlobals::ThrowException(JNIEnv *env,
const char * message,
nsresult rv,
ExceptionType exceptionType) {
// probably redundant check... this should not happen
// if it does, we prefer to throw the original exception
if (env->ExceptionOccurred())
return;
jthrowable newException = NULL;
jstring message = env->NewStringUTF(exceptionMessage[code]);
if (exceptionType == EXCEPTION_DOM) {
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::ThrowException: (%x) %s: %s\n",
NS_ERROR_GET_CODE(rv),
message ? message : "",
DOM_EXCEPTION_MESSAGE[NS_ERROR_GET_CODE(rv)]));
jstring jmessage =
env->NewStringUTF(DOM_EXCEPTION_MESSAGE[NS_ERROR_GET_CODE(rv)]);
newException =
(jthrowable)env->NewObject(domExceptionClass,
domExceptionInitMID,
NS_ERROR_GET_CODE(rv),
message);
} else {
char buffer[256];
const char* msg = message;
if (rv != NS_OK) {
sprintf(buffer,
"(%x.%x) %s",
NS_ERROR_GET_MODULE(rv),
NS_ERROR_GET_CODE(rv),
message ? message : "");
msg = buffer;
}
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::ThrowException: %s\n", msg));
jstring jmessage = env->NewStringUTF(msg);
jthrowable newException =
(jthrowable)env->NewObject(runtimeExceptionClass,
runtimeExceptionInitMID,
jmessage);
}
jthrowable newException =
(jthrowable)env->NewObject(domExceptionClass,
domExceptionInitMID,
code,
message);
if (newException != NULL) {
env->Throw(newException);
}
// an exception is thrown in any case
}
// caller must return from JNI immediately after calling this function
void JavaDOMGlobals::ThrowException(JNIEnv *env, const char * message)
{
PR_LOG(log, PR_LOG_ERROR,
("JavaDOMGlobals::ThrowException: %s\n", message));
// probably redundant check... this should not happen
// if it does, we prefer to throw the original exception
if (env->ExceptionOccurred())
return;
jstring msg = env->NewStringUTF(message);
jthrowable newException =
(jthrowable)env->NewObject(runtimeExceptionClass,
runtimeExceptionInitMID,
msg);
if (newException != NULL) {
env->Throw(newException);
}
// an exception is thrown in any case
}
}

View File

@ -19,6 +19,7 @@ Inc. All Rights Reserved.
#include "jni.h"
#include "prclist.h"
#include "nsError.h"
class nsISupports;
class nsIDOMNode;
@ -66,17 +67,11 @@ class JavaDOMGlobals {
static jmethodID domExceptionInitMID;
static jclass runtimeExceptionClass;
static jmethodID runtimeExceptionInitMID;
static jshort exceptionCodeIndexSize;
static jshort exceptionCodeDomStringSize;
static jshort exceptionCodeHierarchyRequest;
static jshort exceptionCodeWrongDocument;
static jshort exceptionCodeInvalidCharacter;
static jshort exceptionCodeNoDataAllowed;
static jshort exceptionCodeNoModificationAllowed;
static jshort exceptionCodeNotFound;
static jshort exceptionCodeNotSupported;
static jshort exceptionCodeInuseAttribute;
static const char* const exceptionMessage[];
static const char* const DOM_EXCEPTION_MESSAGE[];
typedef enum ExceptionType { EXCEPTION_RUNTIME,
EXCEPTION_DOM } ExceptionType;
static PRLogModuleInfo* log;
static PRCList garbage;
@ -90,10 +85,10 @@ class JavaDOMGlobals {
static void AddToGarbage(nsISupports* domObject);
static void TakeOutGarbage();
static void ThrowDOMException(JNIEnv *env,
jshort code);
static void ThrowException(JNIEnv *env,
const char * message);
const char * message = NULL,
nsresult rv = NS_OK,
ExceptionType exceptionType = EXCEPTION_RUNTIME);
};
#endif /* __JavaDOMGlobals_h__ */

View File

@ -16,6 +16,7 @@ Inc. All Rights Reserved.
#include "prlog.h"
#include "nsIDOMCharacterData.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_CharacterDataImpl.h"
@ -30,16 +31,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.appendData: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.appendData: GetStringUTFChars failed");
return;
}
@ -47,8 +48,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_appendData
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.appendData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.appendData: failed", rv, exceptionType);
return;
}
}
@ -64,15 +70,21 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_deleteData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.deleteData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.deleteData: NULL pointer");
return;
}
nsresult rv = data->DeleteData((PRUint32) offset, (PRUint32) count);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.deleteData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INDEX_SIZE_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.deleteData: failed", rv, exceptionType);
return;
}
}
@ -88,23 +100,28 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_getData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.getData: NULL pointer");
return NULL;
}
nsString ret;
nsresult rv = data->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_DOMSTRING_SIZE_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.getData: failed", rv, exceptionType);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getData: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.getData: NewString failed");
}
return jret;
@ -121,16 +138,16 @@ JNIEXPORT jint JNICALL Java_org_mozilla_dom_CharacterDataImpl_getLength
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getLength: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.getLength: NULL pointer");
return 0;
}
PRUint32 len = 0;
nsresult rv = data->GetLength(&len);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.getLength: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"CharacterData.getLength: failed", rv);
return 0;
}
@ -148,16 +165,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.insertData: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.insertData: GetStringUTFChars failed");
return;
}
@ -165,8 +182,14 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_insertData
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.insertData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INDEX_SIZE_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.insertData: failed", rv, exceptionType);
return;
}
}
@ -182,16 +205,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.replaceData: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.replaceData: GetStringUTFChars failed");
return;
}
@ -199,8 +222,14 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_replaceData
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.replaceData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INDEX_SIZE_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.replaceData: failed", rv, exceptionType);
return;
}
}
@ -216,16 +245,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.setData: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.setData: GetStringUTFChars failed");
return;
}
@ -233,8 +262,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_CharacterDataImpl_setData
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.setData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.setData: failed", rv, exceptionType);
return;
}
}
@ -250,23 +284,29 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_CharacterDataImpl_substringData
nsIDOMCharacterData* data = (nsIDOMCharacterData*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.substringData: NULL pointer");
return NULL;
}
nsString ret;
nsresult rv = data->SubstringData((PRUint32) offset, (PRUint32) count, ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INDEX_SIZE_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_DOMSTRING_SIZE_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"CharacterData.substringData: failed", rv, exceptionType);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("CharacterData.substringData: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"CharacterData.substringData: NewString failed");
}
return jret;

View File

@ -25,6 +25,7 @@ Inc. All Rights Reserved.
#include "nsIDOMCDATASection.h"
#include "nsIDOMDOMImplementation.h"
#include "nsIDOMProcessingInstruction.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_DocumentImpl.h"
@ -54,8 +55,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createAttribute: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: NULL pointer");
return NULL;
}
@ -63,8 +64,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: GetStringUTFChars failed");
return NULL;
}
@ -72,22 +73,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createAttribute
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: error %x\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: failed to set node ptr");
return NULL;
}
@ -106,8 +113,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createCDATASection: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: NULL pointer");
return NULL;
}
@ -115,8 +122,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: GetStringUTFChars failed");
return NULL;
}
@ -124,22 +131,27 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createCDATASection
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: error %x\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_SUPPORTED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::cDataSectionClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createCDATASection: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createCDATASection: failed to set node ptr");
return NULL;
}
@ -158,8 +170,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createComment: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createComment: NULL pointer");
return NULL;
}
@ -167,8 +179,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createComment: GetStringUTFChars failed");
return NULL;
}
@ -176,22 +188,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createComment
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.createComment: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::commentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createComment: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createComment: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createComment: failed to set node ptr");
return NULL;
}
@ -210,30 +222,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createDocumentFragme
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createDocumentFragment: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createDocumentFragment: NULL pointer");
return NULL;
}
nsIDOMDocumentFragment* ret = nsnull;
nsresult rv = doc->CreateDocumentFragment(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.createDocumentFragment: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::documentFragmentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createDocumentFragment: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createDocumentFragment: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createDocumentFragment: failed to set node ptr");
return NULL;
}
@ -252,8 +264,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createElement: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createElement: NULL pointer");
return NULL;
}
@ -261,8 +273,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
jboolean iscopy = JNI_FALSE;
const char* tagName = env->GetStringUTFChars(jtagName, &iscopy);
if (!tagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createElement: GetStringUTFChars failed");
return NULL;
}
@ -270,22 +282,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createElement
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtagName, tagName);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: error %x\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Document.createElement: failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::elementClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createElement: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createElement: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createElement: failed to set node ptr");
return NULL;
}
@ -304,8 +322,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReferenc
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createEntityReference: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: NULL pointer");
return NULL;
}
@ -313,8 +331,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReferenc
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: GetStringUTFChars failed");
return NULL;
}
@ -323,22 +341,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createEntityReferenc
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: error %x\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_SUPPORTED_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::entityReferenceClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createEntityReference: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createEntityReference: failed to set node ptr");
return NULL;
}
@ -357,8 +381,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInst
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createProcessingInstruction: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: NULL pointer");
return NULL;
}
@ -367,15 +391,15 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInst
jboolean iscopy2 = JNI_FALSE;
const char* target = env->GetStringUTFChars(jtarget, &iscopy);
if (!target) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: GetStringUTFChars target failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: GetStringUTFChars target failed");
return NULL;
}
const char* data = env->GetStringUTFChars(jdata, &iscopy2);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: GetStringUTFChars data failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: GetStringUTFChars data failed");
return NULL;
}
@ -385,22 +409,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createProcessingInst
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtarget, target);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: error %x\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_SUPPORTED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::processingInstructionClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createProcessingInstruction: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createProcessingInstruction: failed to set node ptr");
return NULL;
}
@ -419,8 +449,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Document.createTextNode: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createTextNode: NULL pointer");
return NULL;
}
@ -428,8 +458,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createAttribute: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createAttribute: GetStringUTFChars failed");
return NULL;
}
@ -437,22 +467,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_createTextNode
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.createTextNode failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::textClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.createTextNode: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.createTextNode: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Document.createTextNode: failed to set node ptr");
return NULL;
}
@ -470,32 +500,29 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDoctype
{
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: NULL pointer\n"));
if (!doc)
return NULL;
}
nsIDOMDocumentType* docType = nsnull;
nsresult rv = doc->GetDoctype(&docType);
if (NS_FAILED(rv) || !docType) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.getDoctype: failed", rv);
return NULL;
}
jobject jDocType = env->AllocObject(JavaDOMGlobals::documentTypeClass);
jobject jret = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getDoctype: failed to allocate object");
return NULL;
}
env->SetLongField(jDocType, JavaDOMGlobals::nodePtrFID, (jlong) docType);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDoctype: failed to set node ptr: %x\n", docType));
JavaDOMGlobals::ThrowException(env,
"Document.getDoctype: failed to set node ptr");
return NULL;
}
@ -514,30 +541,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getDocumentElement
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getDocumentElement: NULL pointer");
return NULL;
}
nsIDOMElement* element = nsnull;
nsresult rv = doc->GetDocumentElement(&element);
if (NS_FAILED(rv) || !element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.getDocumentElement: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::elementClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getDocumentElement: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) element);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getDocumentElement: failed to set node ptr: %x\n", element));
JavaDOMGlobals::ThrowException(env,
"Document.getDocumentElement: failed to set node ptr");
return NULL;
}
@ -556,8 +583,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: NULL pointer");
return NULL;
}
@ -565,8 +592,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
jboolean iscopy = JNI_FALSE;
const char* tagName = env->GetStringUTFChars(jtagName, &iscopy);
if (!tagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: GetStringUTFChars failed");
return NULL;
}
@ -574,22 +601,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getElementsByTagName
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jtagName, tagName);
if (NS_FAILED(rv) || !elements) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) elements);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getElementsByTagName: failed to set node ptr: %x\n", elements));
JavaDOMGlobals::ThrowException(env,
"Document.getElementsByTagName: failed to set node ptr");
return NULL;
}
@ -608,30 +635,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_DocumentImpl_getImplementation
nsIDOMDocument* doc = (nsIDOMDocument*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!doc) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getImplementation: NULL pointer");
return NULL;
}
nsIDOMDOMImplementation* impl = nsnull;
nsresult rv = doc->GetImplementation(&impl);
if (NS_FAILED(rv) || !impl) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: error %x\n", rv));
JavaDOMGlobals::ThrowException(env,
"Document.getImplementation: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::domImplementationClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Document.getImplementation: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) impl);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Document.getImplementation: failed to set node ptr: %x\n", impl));
JavaDOMGlobals::ThrowException(env,
"Document.getImplementation: failed to set node ptr");
return NULL;
}

View File

@ -18,6 +18,7 @@ Inc. All Rights Reserved.
#include "nsIDOMElement.h"
#include "nsIDOMAttr.h"
#include "nsIDOMNodeList.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_ElementImpl.h"
@ -33,16 +34,16 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getAttribute: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttribute: NULL pointer");
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttribute: GetStringUTFChars failed");
return NULL;
}
@ -51,15 +52,15 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getAttribute
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Element.getAttribute: failed", rv);
return NULL;
}
jstring jattr = env->NewString(attr.GetUnicode(), attr.Length());
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttribute: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttribute: NewString failed");
return NULL;
}
@ -77,16 +78,16 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getAttributeNode: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: NULL pointer");
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: GetStringUTFChars failed");
return NULL;
}
@ -95,22 +96,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getAttributeNode
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv) || !attr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: failed", rv);
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: failed to allocate object");
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) attr);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getAttributeNode: failed to set node ptr: %x\n", attr));
JavaDOMGlobals::ThrowException(env,
"Element.getAttributeNode: failed to set node ptr");
return NULL;
}
@ -129,16 +130,16 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getElementsByTagName: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: NULL pointer");
return NULL;
}
jboolean iscopy = JNI_FALSE;
const char* cname = env->GetStringUTFChars(jname, &iscopy);
if (!cname) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: GetStringUTFChars failed");
return NULL;
}
@ -147,22 +148,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_getElementsByTagName
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, cname);
if (NS_FAILED(rv) || !nodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: failed", rv);
return NULL;
}
jobject jnodes = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jnodes) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: failed to allocate object");
return NULL;
}
env->SetLongField(jnodes, JavaDOMGlobals::nodeListPtrFID, (jlong) nodes);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getElementsByTagName: failed to set node ptr: %x\n", nodes));
JavaDOMGlobals::ThrowException(env,
"Element.getElementsByTagName: failed to set node ptr");
return NULL;
}
@ -181,23 +182,23 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ElementImpl_getTagName
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.getTagName: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getTagName: NULL pointer");
return NULL;
}
nsString tagName;
nsresult rv = element->GetTagName(tagName);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getTagName: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Element.getTagName: failed", rv);
return NULL;
}
jstring jTagName = env->NewString(tagName.GetUnicode(), tagName.Length());
if (!jTagName) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.getTagName: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.getTagName: NewString failed");
return NULL;
}
@ -215,15 +216,15 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_normalize
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.normalize: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.normalize: NULL pointer");
return;
}
nsresult rv = element->Normalize();
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.normalize: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Element.normalize: failed", rv);
return;
}
}
@ -239,16 +240,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttribute: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttribute: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttribute: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttribute: GetStringUTFChars failed");
return;
}
@ -256,8 +257,13 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_removeAttribute
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttribute: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Element.removeAttribute: failed", rv, exceptionType);
return;
}
}
@ -273,38 +279,44 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_removeAttributeNode
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttributeNode: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttributeNode: NULL pointer");
return NULL;
}
nsIDOMAttr* oldAttr = (nsIDOMAttr*)
env->GetLongField(joldAttr, JavaDOMGlobals::nodePtrFID);
if (!oldAttr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.removeAttributeNode: NULL arg pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttributeNode: NULL arg pointer");
return NULL;
}
nsIDOMAttr* ret = nsnull;
nsresult rv = element->RemoveAttributeNode(oldAttr, &ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_FOUND_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Element.removeAttributeNode: failed", rv, exceptionType);
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttributeNode: failed to allocate object");
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.removeAttributeNode: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Element.removeAttributeNode: failed to set node ptr");
return NULL;
}
@ -323,24 +335,24 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttribute: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: GetStringUTFChars name failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: GetStringUTFChars name failed");
return;
}
jboolean iscopy2 = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy2);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: GetStringUTFChars value failed\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: GetStringUTFChars name failed");
return;
}
@ -350,8 +362,17 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ElementImpl_setAttribute
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv)) {
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttribute: failed (%x)\n", rv));
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INVALID_CHARACTER_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Element.setAttribute: failed", rv, exceptionType);
return;
}
}
@ -367,38 +388,45 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_ElementImpl_setAttributeNode
nsIDOMElement* element = (nsIDOMElement*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!element) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttributeNode: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttributeNode: NULL pointer");
return NULL;
}
nsIDOMAttr* newAttr = (nsIDOMAttr*)
env->GetLongField(jnewAttr, JavaDOMGlobals::nodePtrFID);
if (!newAttr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Element.setAttributeNode: NULL arg pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttributeNode: NULL arg pointer");
return NULL;
}
nsIDOMAttr* ret = nsnull;
nsresult rv = element->SetAttributeNode(newAttr, &ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_WRONG_DOCUMENT_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Element.setAttributeNode: failed", rv, exceptionType);
return NULL;
}
jobject jattr = env->AllocObject(JavaDOMGlobals::attrClass);
if (!jattr) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Element.setAttributeNode: failed to allocate object");
return NULL;
}
env->SetLongField(jattr, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Element.setAttributeNode: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Element.setAttributeNode: failed to set node ptr");
return NULL;
}

View File

@ -18,6 +18,7 @@ Inc. All Rights Reserved.
#include "nsIDOMNamedNodeMap.h"
#include "nsIDOMNode.h"
#include "javaDOMGlobals.h"
#include "nsDOMError.h"
#include "org_mozilla_dom_NamedNodeMapImpl.h"
@ -32,16 +33,16 @@ JNIEXPORT jint JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getLength
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.getLength: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.getLength: NULL pointer");
return 0;
}
PRUint32 length = 0;
nsresult rv = map->GetLength(&length);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getLength: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"NodeMap.getLength: failed", rv);
return 0;
}
@ -59,8 +60,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.getNamedItem: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.getNamedItem: NULL pointer");
return NULL;
}
@ -68,8 +69,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getNamedItem: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.getNamedItem: GetStringUTFChars failed");
return NULL;
}
@ -77,22 +78,22 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_getNamedItem
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.getNamedItem: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"NodeMap.getNamedItem: failed", rv);
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.getNamedItem: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.getNamedItem: failed to allocate object");
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.getNamedItem: failed to set node ptr: %x\n", node));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.getNamedItem: failed to set node ptr");
return NULL;
}
@ -111,30 +112,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_item
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.item: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.item: NULL pointer");
return NULL;
}
nsIDOMNode* node = nsnull;
nsresult rv = map->Item((PRUint32) jindex, &node);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.item: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"NodeMap.item: failed", rv);
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.item: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.item: failed to allocate object");
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.item: failed to set node ptr: %x\n", node));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.item: failed to set node ptr");
return NULL;
}
@ -153,8 +154,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.removeNamedItem: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.removeNamedItem: NULL pointer");
return NULL;
}
@ -162,8 +163,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
jboolean iscopy = JNI_FALSE;
const char* name = env->GetStringUTFChars(jname, &iscopy);
if (!name) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.removeNamedItem: GetStringUTFChars failed");
return NULL;
}
@ -171,22 +172,27 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_removeNamedItem
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jname, name);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.removeNamedItem: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_FOUND_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"NodeMap.removeNamedItem: failed", rv, exceptionType);
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.removeNamedItem: failed to allocate object");
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.removeNamedItem: failed to set node ptr: %x\n", node));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.removeNamedItem: failed to set node ptr");
return NULL;
}
@ -205,38 +211,45 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NamedNodeMapImpl_setNamedItem
nsIDOMNamedNodeMap* map = (nsIDOMNamedNodeMap*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!map) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.setNamedItem: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.setNamedItem: NULL pointer");
return NULL;
}
nsIDOMNode* arg = (nsIDOMNode*)
env->GetLongField(jarg, JavaDOMGlobals::nodePtrFID);
if (!arg) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("NodeMap.setNamedItem: NULL item pointer\n"));
JavaDOMGlobals::ThrowException(env,
"NodeMap.setNamedItem: NULL item pointer");
return NULL;
}
nsIDOMNode* node = nsnull;
nsresult rv = map->SetNamedItem(arg, &node);
if (NS_FAILED(rv) || !node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NodeMap.setNamedItem: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_WRONG_DOCUMENT_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INUSE_ATTRIBUTE_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"NodeMap.setNamedItem: failed", rv, exceptionType);
return NULL;
}
jobject jnode = env->AllocObject(JavaDOMGlobals::nodeClass);
if (!jnode) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.setNamedItem: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.setNamedItem: failed to allocate object");
return NULL;
}
env->SetLongField(jnode, JavaDOMGlobals::nodePtrFID, (jlong) node);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("NamedNodeMap.setNamedItem: failed to set node ptr: %x\n", node));
JavaDOMGlobals::ThrowException(env,
"NamedNodeMap.setNamedItem: failed to set node ptr");
return NULL;
}

View File

@ -19,6 +19,7 @@ Inc. All Rights Reserved.
#include "nsIDOMNodeList.h"
#include "nsIDOMNamedNodeMap.h"
#include "nsIDOMDocument.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_NodeImpl.h"
@ -128,24 +129,31 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_appendChild
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.appendChild: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.appendChild: NULL pointer");
return NULL;
}
nsIDOMNode* child = (nsIDOMNode*)
env->GetLongField(jchild, JavaDOMGlobals::nodePtrFID);
if (!child) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.appendChild: NULL child pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.appendChild: NULL child pointer");
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->AppendChild(child, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.appendChild: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_WRONG_DOCUMENT_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.appendChild: failed", rv, exceptionType);
return NULL;
}
@ -163,8 +171,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_cloneNode
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.cloneNode: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.cloneNode: NULL pointer");
return NULL;
}
@ -172,8 +180,8 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_cloneNode
PRBool deep = jdeep == JNI_TRUE ? PR_TRUE : PR_FALSE;
nsresult rv = node->CloneNode(deep, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.cloneNode: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.cloneNode: failed", rv);
return NULL;
}
@ -190,17 +198,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getAttributes
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getAttributes: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNamedNodeMap* nodeMap = nsnull;
nsresult rv = node->GetAttributes(&nodeMap);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getAttributes: failed", rv);
return NULL;
}
if (!nodeMap) {
@ -211,15 +216,15 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getAttributes
jobject jret = env->AllocObject(JavaDOMGlobals::namedNodeMapClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getAttributes: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) nodeMap);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getAttributes: failed to set node ptr: %x\n", nodeMap));
JavaDOMGlobals::ThrowException(env,
"Node.getAttributes: failed to set node ptr");
return NULL;
}
@ -238,30 +243,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getChildNodes
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getChildNodes: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getChildNodes: NULL pointer");
return NULL;
}
nsIDOMNodeList* nodeList = nsnull;
nsresult rv = node->GetChildNodes(&nodeList);
if (NS_FAILED(rv) || !nodeList) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getChildNodes: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::nodeListClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getChildNodes: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodeListPtrFID, (jlong) nodeList);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getChildNodes: failed to set node ptr: %x\n", nodeList));
JavaDOMGlobals::ThrowException(env,
"Node.getChildNodes: failed to set node ptr");
return NULL;
}
@ -279,17 +284,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getFirstChild
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getFirstChild: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetFirstChild(&ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getFirstChild: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getFirstChild: failed", rv);
return NULL;
}
if (!ret) {
@ -311,17 +313,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getLastChild
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getLastChild: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetLastChild(&ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getLastChild: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getLastChild: failed", rv);
return NULL;
}
if (!ret) {
@ -343,17 +342,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getNextSibling
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNextSibling: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetNextSibling(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNextSibling: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getNextSibling: failed", rv);
return NULL;
}
@ -371,23 +367,23 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeName
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeName: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeName: NULL pointer");
return NULL;
}
nsString ret;
nsresult rv = node->GetNodeName(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeName: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeName: failed", rv);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeName: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeName: NewString failed");
return NULL;
}
@ -405,16 +401,16 @@ JNIEXPORT jshort JNICALL Java_org_mozilla_dom_NodeImpl_getNodeType
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeType: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeType: NULL pointer");
return (jshort) NULL;
}
PRUint16 type;
nsresult rv = node->GetNodeType(&type);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeType: failed", rv);
return (jshort) NULL;
}
@ -473,20 +469,20 @@ JNIEXPORT jshort JNICALL Java_org_mozilla_dom_NodeImpl_getNodeType
if (typeFID) {
jclass nodeClass = env->GetObjectClass(jthis);
if (!nodeClass) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: GetObjectClass failed (%x)\n", jthis));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeType: GetObjectClass failed");
return ret;
}
ret = env->GetStaticShortField(nodeClass, typeFID);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: typeFID failed\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeType: typeFID failed");
return ret;
}
} else {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeType: illegal type %d\n", type));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeType: illegal type");
}
return ret;
@ -502,24 +498,26 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_NodeImpl_getNodeValue
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getNodeValue: NULL pointer\n"));
if (!node)
return NULL;
}
nsString ret;
nsresult rv = node->GetNodeValue(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeValue: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_DOMSTRING_SIZE_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.getNodeValue: failed", rv, exceptionType);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getNodeValue: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getNodeValue: NewString failed");
return NULL;
}
@ -536,31 +534,28 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getOwnerDocument
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getOwnerDocument: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMDocument* ret = nsnull;
nsresult rv = node->GetOwnerDocument(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getOwnerDocument: failed", rv);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::documentClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Node.getOwnerDocument: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getOwnerDocument: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Node.getOwnerDocument: failed to set node ptr");
return NULL;
}
@ -578,17 +573,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getParentNode
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getParentNode: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetParentNode(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getParentNode: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getParentNode: failed", rv);
return NULL;
}
@ -605,17 +597,14 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_getPreviousSibling
{
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.getPreviousSibling: NULL pointer\n"));
if (!node)
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->GetPreviousSibling(&ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.getPreviousSibling: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.getPreviousSibling: failed", rv);
return NULL;
}
@ -633,16 +622,16 @@ JNIEXPORT jboolean JNICALL Java_org_mozilla_dom_NodeImpl_hasChildNodes
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.hasChildNodes: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.hasChildNodes: NULL pointer");
return (jboolean) NULL;
}
PRBool ret = PR_FALSE;
nsresult rv = node->HasChildNodes(&ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.hasChildNodes: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"Node.hasChildNodes: failed", rv);
return (jboolean) NULL;
}
@ -660,32 +649,40 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_insertBefore
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.insertBefore: NULL pointer");
return NULL;
}
nsIDOMNode* newChild = (nsIDOMNode*)
env->GetLongField(jnewChild, JavaDOMGlobals::nodePtrFID);
if (!newChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL newChild pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.insertBefore: NULL newChild pointer");
return NULL;
}
nsIDOMNode* refChild = (nsIDOMNode*)
env->GetLongField(jrefChild, JavaDOMGlobals::nodePtrFID);
if (!refChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.insertBefore: NULL refChild pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.insertBefore: NULL refChild pointer");
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->InsertBefore(newChild, refChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.insertBefore: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_WRONG_DOCUMENT_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_FOUND_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.insertBefore: failed", rv, exceptionType);
return NULL;
}
@ -703,24 +700,30 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_removeChild
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.removeChild: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.removeChild: NULL pointer");
return NULL;
}
nsIDOMNode* oldChild = (nsIDOMNode*)
env->GetLongField(joldChild, JavaDOMGlobals::nodePtrFID);
if (!oldChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.removeChild: NULL oldChild pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.removeChild: NULL oldChild pointer");
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->RemoveChild(oldChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.removeChild: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_FOUND_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.removeChild: failed", rv, exceptionType);
return NULL;
}
@ -738,32 +741,40 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_NodeImpl_replaceChild
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.replaceChild: NULL pointer");
return NULL;
}
nsIDOMNode* newChild = (nsIDOMNode*)
env->GetLongField(jnewChild, JavaDOMGlobals::nodePtrFID);
if (!newChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL newChild pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.replaceChild: NULL newChild pointer");
return NULL;
}
nsIDOMNode* oldChild = (nsIDOMNode*)
env->GetLongField(joldChild, JavaDOMGlobals::nodePtrFID);
if (!oldChild) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.replaceChild: NULL oldChild pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.replaceChild: NULL oldChild pointer");
return NULL;
}
nsIDOMNode* ret = nsnull;
nsresult rv = node->ReplaceChild(newChild, oldChild, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.replaceChild: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_WRONG_DOCUMENT_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_HIERARCHY_REQUEST_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NOT_FOUND_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.replaceChild: failed", rv, exceptionType);
return NULL;
}
@ -781,16 +792,16 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue
nsIDOMNode* node = (nsIDOMNode*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!node) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Node.setNodeValue: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Node.setNodeValue: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* value = env->GetStringUTFChars(jvalue, &iscopy);
if (!value) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.setNodeValue: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"Node.setNodeValue: GetStringUTFChars failed");
return;
}
@ -798,8 +809,14 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_NodeImpl_setNodeValue
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jvalue, value);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Node.setNodeValue: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Node.setNodeValue: failed", rv, exceptionType);
return;
}
}

View File

@ -16,6 +16,7 @@ Inc. All Rights Reserved.
#include "prlog.h"
#include "nsIDOMProcessingInstruction.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_ProcessingInstructionImpl.h"
@ -31,23 +32,23 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getData
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.getData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getData: NULL pointer");
return NULL;
}
nsString ret;
nsresult rv = pi->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getData: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getData: failed", rv);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getData: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getData: NewString failed");
return NULL;
}
@ -65,23 +66,23 @@ JNIEXPORT jstring JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_getTarg
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.getTarget: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getTarget: NULL pointer");
return NULL;
}
nsString ret;
nsresult rv = pi->GetData(ret);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getTarget: failed (%x)\n", rv));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getTarget: failed", rv);
return NULL;
}
jstring jret = env->NewString(ret.GetUnicode(), ret.Length());
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.getTarget: NewString failed\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.getTarget: NewString failed");
return NULL;
}
@ -99,24 +100,29 @@ JNIEXPORT void JNICALL Java_org_mozilla_dom_ProcessingInstructionImpl_setData
nsIDOMProcessingInstruction* pi = (nsIDOMProcessingInstruction*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!pi) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("ProcessingInstruction.setData: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.setData: NULL pointer");
return;
}
jboolean iscopy = JNI_FALSE;
const char* data = env->GetStringUTFChars(jdata, &iscopy);
if (!data) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.setData: GetStringUTFChars failed\n"));
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.setData: GetStringUTFChars failed");
return;
}
nsresult rv = pi->SetData(data);
if (iscopy == JNI_TRUE)
env->ReleaseStringUTFChars(jdata, data);
if (NS_FAILED(rv)) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("ProcessingInstruction.setData: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"ProcessingInstruction.setData: failed", rv, exceptionType);
return;
}
}

View File

@ -16,6 +16,7 @@ Inc. All Rights Reserved.
#include "prlog.h"
#include "nsIDOMText.h"
#include "nsDOMError.h"
#include "javaDOMGlobals.h"
#include "org_mozilla_dom_TextImpl.h"
@ -31,30 +32,36 @@ JNIEXPORT jobject JNICALL Java_org_mozilla_dom_TextImpl_splitText
nsIDOMText* text = (nsIDOMText*)
env->GetLongField(jthis, JavaDOMGlobals::nodePtrFID);
if (!text) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_WARNING,
("Text.splitText: NULL pointer\n"));
JavaDOMGlobals::ThrowException(env,
"Text.splitText: NULL pointer");
return NULL;
}
nsIDOMText* ret = nsnull;
nsresult rv = text->SplitText((PRUint32) joffset, &ret);
if (NS_FAILED(rv) || !ret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed (%x)\n", rv));
JavaDOMGlobals::ExceptionType exceptionType = JavaDOMGlobals::EXCEPTION_RUNTIME;
if (NS_ERROR_GET_MODULE(rv) == NS_ERROR_MODULE_DOM &&
(NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_NO_MODIFICATION_ALLOWED_ERR ||
NS_ERROR_GET_CODE(rv) == NS_ERROR_DOM_INDEX_SIZE_ERR)) {
exceptionType = JavaDOMGlobals::EXCEPTION_DOM;
}
JavaDOMGlobals::ThrowException(env,
"Text.splitText: failed", rv, exceptionType);
return NULL;
}
jobject jret = env->AllocObject(JavaDOMGlobals::textClass);
if (!jret) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed to allocate object\n"));
JavaDOMGlobals::ThrowException(env,
"Text.splitText: failed to allocate object");
return NULL;
}
env->SetLongField(jret, JavaDOMGlobals::nodePtrFID, (jlong) ret);
if (env->ExceptionOccurred()) {
PR_LOG(JavaDOMGlobals::log, PR_LOG_ERROR,
("Text.splitText: failed to set node ptr: %x\n", ret));
JavaDOMGlobals::ThrowException(env,
"Text.splitText: failed to set node ptr");
return NULL;
}