Hi Sanjiva,
Thanks for responding so quickly!
> Why not just create a collection of all
> the SOAPHeader elements which are yet not understood and pass them in
> along with the MC? The engine knows what roles its acting in and should
> only pass those MU headers that need to be dealt with for its roles.
My thoughts were:
(1) I thought some validators might know about more roles than the engine.
For example, a JAXWS application handler can indicate what roles it is
valid for. The engine doesn't care about these roles since they are
JAXWS-specific; all it cares about is if there are any not-understood
headers left after all the validators run. That way we don't have to
implement an API for components to register additional roles with the
engine.
(2) I wasn't going to implement roles just yet, so passing in a null to
the validators seemed like a good way to let each one decide what roles it
wanted to default to. Current AxisEngine semantics default to "all
roles"; the JAXWS validator will default to NEXT and ULTIMATE_RECEVIER.
> Unless the validators are going to do anything beyond must understand
> checking, how about s/SOAPHeaderValidator/SOAPMustUnderstandChecker/ ?
I think they will only do mustUnderstand checking, so that's fine.
Thanks,
Jeff
IBM Software Group - WebSphere Web Services Development
Phone: 512-838-4587 or Tie Line 678-4587
Internet e-mail and Sametime ID: [EMAIL PROTECTED]
Sanjiva Weerawarana <[EMAIL PROTECTED]> wrote on 07/11/2007 08:42:34
PM:
> Hi Jeff,
>
> Overall sounds ok but I don't see why we pass separate collections of
> header QNames and String roles. Why not just create a collection of all
> the SOAPHeader elements which are yet not understood and pass them in
> along with the MC? The engine knows what roles its acting in and should
> only pass those MU headers that need to be dealt with for its roles.
>
> public interface SOAPHeaderValidator {
> void validate (MessageContext mc, Collection notUnderstoodHeaders);
> }
>
> Unless the validators are going to do anything beyond must understand
> checking, how about s/SOAPHeaderValidator/SOAPMustUnderstandChecker/ ?
>
> Sanjiva.
>
> Jeff Barrett wrote:
> > Hi All,
> >
> > Here is my proposal for a mustUnderstand header validation framework.
> >
> > PLEASE NOTE the mustUnderstand processing is required for fixes we're
> > trying to get in by 7/20 and which Geronimo needs.
> >
> > So, please take a look as soon as possible. If the overview seems OK,
> > then I'll start on the code (this is post 1.3 work)
> >
> > Here's the Jira: https://issues.apache.org/jira/browse/AXIS2-2853
> >
> > Goals
> > =====
> >
> > 1. Pluggable and extensible via configuration. Allow higher-level,
> > non-engine components to participate in mustUnderstand validation.
> > Examples include JAX-WS runtime and appliction handlers, WS-RM, and
> > systems using Axis2 as a bus.
> >
> > 2. Support for actors/roles. Only mustUnderstand headers for
> > actors/roles in which this node acts should be checked. Note that
> > actors/roles would not be implemented immediately, but future support
is
> > taken into consideration in the design.
> >
> > OVERVIEW
> > ========
> >
> > A list of soapHeaderValidators can optionally be configured in
axis2.xml.
> > The list of validators will be stored on the AxisConfiguration. Each
> > validator has a method which takes a collection of not-yet-understood
> > header QNames, a collection of String roles, and a MessageContext. The
> > method will return a collection of header QNames based on the input
> > parameter which are still not understood; that is, it removes any that
it
> > understands from the list.
> >
> > The AxisEngine.checkMustUnderstand() method will invoke each
validator,
> > passing in the collection of still-not-understood headers. If, after
all
> > the validators are called the collection is not empty, a
mustUnderstand
> > fault is thrown. The logic would be something like:
> >
> > String[] rolesActedIn = ... // list of
actors/roles
> > acted in.
> > QName[] notUnderstoodHeaders = ... // list of all mU
headers
> > not marked as processed
> > SOAPHeaderValidator[] validators =
> > axisConfig.getSoapHeaderValidators();
> > for (SOAPHeaderValidator validator : validators) {
> > notUnderstoodHeaders =
> > validator.validate(notUnderstoodHeaders, rolesActedIn, messageContext)
> > }
> >
> > // If there are any not-understood headers after running the
> > validators
> > // throw an exception
> > if (notUnderstoodHeader.length != 0) {
> > throw notUnderstoodException
> > }
> >
> > There is no API for the registration of understood headers; each
validator
> >
> > is responsible for deciding what it understands and removing it from
the
> > collection. For example, the JAXWS validator would look for a
property
> > (which it set earlier) on the AxisOperation containing the QNames for
any
> > JAXWS SEI header parameters and any headers understood by JAXWS
> > application handlers. That property would be set by JAXWS on the
> > AxisOperation during application startup.
> >
> > Configuration in axis2.xml
> > --------------------------
> >
> > The <soapHeaderValidators> element is optional. If ommited then all
> > mustUnderstand headers must be marked as processed by handlers, or a
> > mustUnderstand fault will be thown (i.e. current
> > AxisEngine.checkMustUnderstand semantics are unchanged)
> >
> > <soapHeaderValidators>
> >
> > <soapHeaderValidator>org.apache.axis2.jaxws.
> JAXWSSoapHeaderValidator</soapHeaderValidator>
> >
> > <soapHeaderValidator>my.other.validator.
> MySOAPHeaderValidator</soapHeaderValidator>
> > </soapHeaderValidators>
> >
> >
> >
> > Thanks,
> > Jeff
> >
> > IBM Software Group - WebSphere Web Services Development
> > Phone: 512-838-4587 or Tie Line 678-4587
> > Internet e-mail and Sametime ID: [EMAIL PROTECTED]
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
> --
> Sanjiva Weerawarana, Ph.D.
> Founder & Director; Lanka Software Foundation; http://www.opensource.lk/
> Founder, Chairman & CEO; WSO2, Inc.; http://www.wso2.com/
> Director; Open Source Initiative; http://www.opensource.org/
> Member; Apache Software Foundation; http://www.apache.org/
> Visiting Lecturer; University of Moratuwa; http://www.cse.mrt.ac.lk/
>
> ---------------------------------------------------------------------
> 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]