John et al,

This issue comes up in other contexts. The general issue is that some
validation rules have  preconditions. This means it doesn't make sense
to check the rule unless the precondition is satisfied.

To make progress we can assume that the schema validation is a
precondition for the other rules.

I think ultimately the WSDL 2.0 spec should include the preconditions
but that is not guaranteed to happen.

Woden should implement its own precondition architecture. The general
approach would be to describe the set of all rules using a dependency
graph (directed acyclic). Woden should execute the rules ordered by a
"topological" sort, whichs means that all preconditions get evaluated
before a rule. Each rule should set a boolean flag when it is executed
to indicate that it is satisfied. Only execute a rule if all
preconditions are true. Set the flag to false if any precondition is
false.

Thoughts?

-- Arthur

On 12/28/06, Lawrence Mandel <[EMAIL PROTECTED]> wrote:
John,

+1. I thought I had already implemented that check (but I guess not).
Please open a Jira and let's get this fixed. You're welcome to assign this
to me if you like. I'm still hoping to find some time next week to get
through my Jira pile.

Lawrence




John Kaputin <[EMAIL PROTECTED]>
12/28/2006 07:12 AM
Please respond to
woden-dev@ws.apache.org


To
woden-dev@ws.apache.org
cc

Subject
NPE occurs after schema validation has reported the error







Lawrence (and others),
I did some testing with the Woden DOM implementation which does schema
validation via Xerces and noticed a potential NPE problem.

Currently, our DOMWSDLReader logic does these validation steps in
sequence:
   perform schema validation and report any schema errors (during the
   Xerces XML parsing)
   perform Document validation (i.e. the non-schema rules that apply to
the
   WSDL infoset)
   if Document validation passes, perform Component validation (i.e. the
   non-schema rules that apply to the WSDL component model)

A null pointer exception occurs if you read a WSDL document that has no
target namespace attribute. The schema validation does report the missing
TNS, but the Document validation is performed anyway and throws a NPE with
this code in method testAssertionDescription0025:

    URI targetNS = descElement.getTargetNamespace();
    if(!targetNS.isAbsolute()) ...  <-NPE

This is just one example, but there may be similar potential NPEs.

A solution would be to check if any schema validation errors have been
reported and if so, don't perform any non-schema validation (i.e. don't
invoke Document and Component validation).

Alternatively, we need to include the appropriate null checks in the
Document and Component validation code to avoid such NPEs, but then we're
duplicating some of the schema rule checking anyway and we still need to
decide how to handle a null value. For example, the code could just remain
silent on the missing value and assume than XML parser's schema validation
has already reported the error. Or we could detect somehow if schema
validation is being done and if not, report a suitable error.

I think I prefer the first solution - if the WSDL is not schema valid,
then
don't do any further non-schema validation. Any thoughts?


John Kaputin


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to