+1 to this.
Cheers,
Jeremy
On 06/01/07, John Kaputin (JIRA) <[EMAIL PROTECTED]> wrote:
readWSDL methods should return Description not DescriptionElement
-----------------------------------------------------------------
Key: WODEN-120
URL: https://issues.apache.org/jira/browse/WODEN-120
Project: Woden
Issue Type: Improvement
Components: Parser
Reporter: John Kaputin
Fix For: M7
I propose changing the WSDLReader API so that all readWSDL methods return a
Description component instead of DescriptionElement.
So the WSDLReader methods:
DescriptionElement readWSDL(...)
become
Description readWSDL(...)
Description is the top level interface of Woden's Component API which
represents the WSDL Component model, while DescriptionElement is the 'top' of
the Element API which represents the WSDL XML infoset. This change will reflect
the intention of the WSDL 2.0 spec, which is focussed on the WSDL Component
model, not the underlying XML infoset, in its discussion of WSDL data
structures, data relationships, semantic behaviour and assertions. This focus
is reflected in Woden, so to take full advantage of WSDL 2.0 the Woden user
needs the Component API, not the Element API. In fact, certain WSDL 2.0
features such as Interface inheritance are only fully supported in the
Component API. The Element API really just provides a WSDL view of the XML
infoset, but does not support all of the semantic behaviour defined for the
WSDL Component model.
Currently, after calling a readWSDL method, the user must then call the
DescriptionElement.toComponent() method to get a Description with which to make
full use of WSDL 2.0. It would be more useful to most WSDL 2.0 consumers if
these readWSDL methods returned a Description instead. If a user does need to
access the WSDL XML infoset, they can call Description.toElement() to get a
DescriptionElement. In fact, they can call toElement() on any Component to get
the corresponding Element.
Note also that because of the 'flattened' abstraction provided by the WSDL
Component model, the toComponent() method only exists on DescriptionElement,
not on other interfaces in the Element API. If a user gets a DescriptionElement
from readWSDL and starts traversing the WSDL tree using the Element API, then
realizes they need something from the Component model, they must still have a
reference to the DescriptionElement so they can call its toComponent() method -
they can't just call toComponent() from wherever they are in the Element API.
And then they will probably need to traverse the WSDL again via the Component
API to the required point. Better for them to work with the Component API by
default via Description and explicitly change to the Element API if required
(remembering of course that toElement() can be called from any Component).
Returning Description rather than DescriptionElement will minimize the risk that
users might navigate down a WSDL import hierarchy via the Element API, then call
toComponent() on a 'nested' DescriptionElement. This can be done, but toComponent()
is really intended to be used only on the top level DescriptionElement because it is
this root <description> element that most likely has the appropriate visibility
of all of the WSDL content necessary to correctly resolve the infoset to a 'useful'
Component model. Although toComponent() called on a nested DescriptionElement will
return a Description based on that point of the WSDL infoset, it might not be
particularly useful and might be confusing to the Woden user.
There may be WSDLReader Use Cases that do require a DescriptionElement, rather
than a Description component (e.g. a WSDL editor tool parsing a WSDL document
to modify its content). However, we have not addressed these yet and as our
current focus and development effort is on parsing WSDL documents into the WSDL
component model, I think our existing readWSDL methods should reflect this. We
can always add methods to the WSDLReader API later if and when we need to
support other Use Cases.
As mentioned in the other WSDLReader API change proposed by WODEN-119, we have
not yet declared the Woden API 'stable'. This will happen with a 1.0 release,
in the meantime our Milestone releases are subject to API change. Because this
proposal only changes the return types (not the method arguments), this change
cannot be accomplished with a deprecation strategy where the old and new method
signatures co-exist in the next Milestone release. It might be necessary in
this case to actively publicize the change via the mailing list and liaise with
known users (e.g. Axis2) prior to M7, then simply change the method signatures
for the M7 release.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
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]