The patch works for me (or at least doesn't break anything ;-) ).

good work


On 13/12/06, Yang ZHONG <[EMAIL PROTECTED]> wrote:

A patch has been attached into
http://issues.apache.org/jira/browse/TUSCANY-990

BTW, Caroline has also requested this improvement (
http://www.mail-archive.com/tuscany-dev%40ws.apache.org/msg11839.html)

On 12/10/06, Pete Robbins <[EMAIL PROTECTED]> wrote:
>
> On 09/12/06, Yang ZHONG <[EMAIL PROTECTED]> wrote:
> >
> > Thank you Pete for the alternative to host LoadingContext/ResourceSet
> > within
> > DataFactory.
> > How to browse from SDOSchemaSAX2Parser to DataFactory please?
> > My prototype checks LoadingContext/ResourceSet
> > within SDOSchemaSAX2Parser::startInclude
> >
> > My LoadingContext/ResourceSet is internal to parsers, not a user
> context.
>
>
> I wasn't thinking clearly ;-) It's SDOSchemaSAX2Parser that needs to
> remember what it has loaded. Your suggsetion sounds good. Could you post
a
> patch so we can see your idea?
>
>
>
> On 12/9/06, Pete Robbins <[EMAIL PROTECTED]> wrote:
> > >
> > > Yang,
> > > Yes we've noticed this when loading the Atom schema.
> > >
> > >
> > > On 09/12/06, Yang ZHONG <[EMAIL PROTECTED]> wrote:
> > > >
> > > > While working on http://issues.apache.org/jira/browse/TUSCANY-907
> > > > I've observed duplicated XSD loading. It could be infinite
loading.
> I
> > > > might
> > > > have a way to avoid that.
> > > >
> > > > Could you verify current implementation may load redundantly even
> > > > infinitely?
> > > > Could you brainstorm how to avoid that?
> > > >
> > > > http://pecl.php.net/bugs/bug.php?id=9243
> > > > has the Test Case:
> > > >    1. http://ping.chip.org/phr/xml/insurance.xsd imports
> > > > http://ping.chip.org/phr/xml/types.xsd
> > > >    2. http://ping.chip.org/phr/xml/insurance.xsd imports
> > > > http://ping.chip.org/phr/xml/contact.xsd which also imports
> > > > http://ping.chip.org/phr/xml/types.xsd
> > > >
> > > > I've observed http://ping.chip.org/phr/xml/types.xsd is
> loaded/parsed
> > > > multiple times during loading
> > http://ping.chip.org/phr/xml/insurance.xsd
> > > >
> > > > That impacts performance, especially types.xsd is remote.
> > > >
> > > > More deadly, that may cause infinite loading or stack overflow.
> > > > Imagine A imports B which imports A, or X imports Y which imports
Z
> > > which
> > > > imports X.
> > > >
> > > > If above is true, let's brainstorm how to avoid that.
> > > >
> > > > We can have a LoadingContext/ResourceSet to cache loaded/parsed
> > > resources,
> > > > and reuse parsing results if a location/URI has been loaded/parsed
> > > > already.
> > > >
> > > > 3-1. The LoadingContext/ResourceSet can be a Thread Local
> > > > 3-2. The LoadingContext/ResourceSet can be explicitly passed into
> each
> > > > parser
> > > > 3-3. Currently ParserErrorSetter is explicitly passed into each
> > parser,
> > > > which can host the LoadingContext/ResourceSet
> > > >
> > > > Do you have alternatives? Which would you prefer?
> > >
> > >
> > > The most basic problem is when a user uses XSDHelper to load
X.xsdwhich
> > > imports other schema... which in turn include some of the same
schema.
> > At
> > > the moment his causes redundant parsing. A simple solution is to
> > remember
> > > the schema namespace/location so the import/include of a schema we
> > already
> > > have parsed can be ignored. This information could be held in the
> > > DataFactory so that if the user calls XSDHelper::define() for the
same
> > > schema we could ignore it (as we know the types are already
defined).
> > >
> > > I'm not sure if you are suggesting a wider ranging improvement  of
> some
> > > context the user can pass into XSDHelper?
> > >
> > > Cheers,
> > > --
> > > Pete
> > >
> > >
> >
> >
> > --
> >
> > Yang ZHONG
> >
> >
>
>
> --
> Pete
>
>


--

Yang ZHONG




--
Pete

Reply via email to