Landing fix for bug 249366. Better error handing for webservices. Patch by keeda@hotpop.com, r=chantepie@altern.org, sr=jst@mozilla.org

This commit is contained in:
jst%mozilla.jstenback.com 2005-01-12 19:26:45 +00:00
parent 97d293e4bd
commit 3c883bda20
4 changed files with 14 additions and 13 deletions

View File

@ -44,13 +44,13 @@ interface nsISchemaType;
interface nsIDOMElement;
interface nsISchemaLoadListener;
[scriptable, uuid(77061d1d-e191-11d8-a3cc-000393b6661a)]
[scriptable, uuid(9B2F0B4A-8F00-4a78-961A-7E84ED49B0B6)]
interface nsISchemaLoader : nsISupports {
nsISchema load(in AString schemaURI);
void loadAsync(in AString schemaURI,
in nsISchemaLoadListener listener);
nsISchema processSchemaElement(in nsIWebServiceErrorHandler aErrorHandler,
in nsIDOMElement element);
nsISchema processSchemaElement(in nsIDOMElement element,
in nsIWebServiceErrorHandler aErrorHandler);
};
[scriptable, function, uuid(8d9aa9ce-e191-11d8-9f31-000393b6661a)]

View File

@ -155,7 +155,7 @@ LoadListener::HandleEvent(nsIDOMEvent *event)
//XXXTelemac TODO Use an nsIWebServiceErrorHandler instead of nsnull
if (element)
rv = mLoader->ProcessSchemaElement(nsnull, element, getter_AddRefs(schema));
rv = mLoader->ProcessSchemaElement(element, nsnull, getter_AddRefs(schema));
else
rv = NS_ERROR_SCHEMA_NOT_SCHEMA_ELEMENT;
}
@ -708,7 +708,8 @@ nsSchemaLoader::Load(const nsAString& schemaURI,
nsCOMPtr<nsIDOMElement> element;
document->GetDocumentElement(getter_AddRefs(element));
if (element) {
rv = ProcessSchemaElement(nsnull, element, _retval); //XXXTelemac TODO Have an error handler there instead or nsnull
//XXXTelemac TODO Have an error handler there instead or nsnull
rv = ProcessSchemaElement(element, nsnull, _retval);
}
else {
rv = NS_ERROR_SCHEMA_NOT_SCHEMA_ELEMENT;
@ -784,10 +785,10 @@ static const char* kSchemaNamespaces[] = {NS_SCHEMA_1999_NAMESPACE,
NS_SCHEMA_2001_NAMESPACE};
static PRUint32 kSchemaNamespacesLength = sizeof(kSchemaNamespaces) / sizeof(const char*);
/* nsISchema processSchemaElement (in nsIWebServiceErrorHandler aErrorHandler, in nsIDOMElement element); */
/* nsISchema processSchemaElement (in nsIDOMElement element, in nsIWebServiceErrorHandler aErrorHandler); */
NS_IMETHODIMP
nsSchemaLoader::ProcessSchemaElement(nsIWebServiceErrorHandler* aErrorHandler,
nsIDOMElement* aElement,
nsSchemaLoader::ProcessSchemaElement(nsIDOMElement* aElement,
nsIWebServiceErrorHandler* aErrorHandler,
nsISchema **_retval)
{
NS_ENSURE_ARG(aElement);

View File

@ -378,7 +378,7 @@ nsWSDLLoadRequest::LoadDefinition(const nsAString& aURI)
IsElementOfNamespace(element,
NS_LITERAL_STRING(SCHEMA_1999_NAMESPACE))) {
nsCOMPtr<nsISchema> schema;
rv = mSchemaLoader->ProcessSchemaElement(mErrorHandler, element,
rv = mSchemaLoader->ProcessSchemaElement(element, mErrorHandler,
getter_AddRefs(schema));
if (NS_FAILED(rv)) {
return NS_ERROR_WSDL_SCHEMA_PROCESSING_ERROR;
@ -511,7 +511,7 @@ nsWSDLLoadRequest::HandleEvent(nsIDOMEvent *event)
IsElementOfNamespace(element,
NS_LITERAL_STRING(SCHEMA_1999_NAMESPACE))) {
nsCOMPtr<nsISchema> schema;
rv = mSchemaLoader->ProcessSchemaElement(mErrorHandler, element,
rv = mSchemaLoader->ProcessSchemaElement(element, mErrorHandler,
getter_AddRefs(schema));
if (NS_FAILED(rv)) {
return NS_ERROR_WSDL_SCHEMA_PROCESSING_ERROR;
@ -994,7 +994,7 @@ nsWSDLLoadRequest::ProcessTypesElement(nsIDOMElement* aElement)
// XXX : We need to deal with xs:import elements too.
if (tagName == nsWSDLAtoms::sSchema_atom) {
nsCOMPtr<nsISchema> schema;
rv = mSchemaLoader->ProcessSchemaElement(mErrorHandler, childElement,
rv = mSchemaLoader->ProcessSchemaElement(childElement, mErrorHandler,
getter_AddRefs(schema));
if (NS_FAILED(rv)) {
return NS_ERROR_WSDL_SCHEMA_PROCESSING_ERROR;

View File

@ -310,7 +310,7 @@ nsXFormsModelElement::DoneAddingChildren()
nsCOMPtr<nsISchema> schema;
// no need to observe errors via the callback. instead, rely on
// this method returning a failure code when it encounters errors.
rv = mSchemas->ProcessSchemaElement(nsnull, el,
rv = mSchemas->ProcessSchemaElement(el, nsnull,
getter_AddRefs(schema));
if (NS_SUCCEEDED(rv))
mSchemaCount++;
@ -535,7 +535,7 @@ nsXFormsModelElement::HandleEvent(nsIDOMEvent* aEvent)
nsCOMPtr<nsISchema> schema;
// no need to observe errors via the callback. instead, rely on
// this method returning a failure code when it encounters errors.
rv = mSchemas->ProcessSchemaElement(nsnull, el,
rv = mSchemas->ProcessSchemaElement(el, nsnull,
getter_AddRefs(schema));
if (NS_SUCCEEDED(rv))
mSchemaCount++;