We seem to be in considerable agreement, which is reassuring.
I seem, however, to have left you (jortel) confused about one thing I said, to wit:
Jeff Ortel wrote, On 02/25/2010 06:26 PM:
On 02/25/2010 11:23 AM, Rod Montgomery wrote:
> I personally have been working under ticket #239. I have not looked at
> #255, but on its face it looks like a duplicate of #239.
> ...
> Only third -- and, as I see it, a distant third -- do we reach
> performing well in loading the Client definition for a service -- that
> is, in building the Definitions structure. Spending development effort
> on optimizing that process by caching to eliminate unnecessary network
> traffic strikes me as worthwhile, especially when several services all
> import the same common WSDL file(s). Spending development effort on
> reducing the amount of processor time needed to build the Definitions
> structure, given the xml or its parsed form in cache, though, strikes me
> as a waste. If you have to complexify the code to reduce that processor
> time, and that complexity makes it harder, or impossible, to handle all
> valid WSDL file sets, it's an even bigger waste. And if that complexity
> somehow got built anyway, I'd personally be inclined to un-build it, if
> only to decrease the volume of code within which bugs can breed in the
> future.
Ah, agreed but not sure where you're getting this from.
In my reply, I discussed reworking a bit of the WSDL load/merge code to
handle circular imports properly. That's all.
The "where I'm getting this from" is reading the code, which seems to
have much machinery whose only purpose seems to be to
cache *intermediate* Definitions structures.
I think I pretty much see how to make the code handle circular imports if I rip out that
machinery, leaving only the
machinery for caching the parsed xml and for caching the *top-level* Definitions
structures. I don't see how to make the code
handle circular imports if I leave that second-level Definitions-caching machinery in
place.
The problem is the "resolve" process. Resolving at top level works fine, but
resolving a second-level Definitions structure
is, in general, impossible, when there are circular imports, because to resolve a
structure you must have in hand everything
that it imports.