OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.


Help: OASIS Mailing Lists Help | MarkMail Help

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: SAX-core #2: factories

In fact I'd probably like to go farther than just adding a
compiled-in default. JAXP has enough bootstrap flexibility,
except it returns something that's not a SAX2 parser.  It
checks four places to find the default (non-SAX) parser
class, I think it's this order:

    * system property (SAX does too) if possible
        --> per-JVM-instance defaulting
    * $(JAVA_HOME)/jre/lib/jaxp.properties
        --> installation-wide defaulting
    * META-INF/services/... resource (usually in jarfile)
        --> can vary based on thread's class loader config
              (threads' loaders may see different resources)
    * compiled-in default (this proposal adds to SAX)
        --> can also vary based on thread's class loader config
              (with different javax.xml.parsers implementations)

Only the compiled-in default can work in all configurations;
access permissions can get in the way of looking up the
default using all the other mechanisms (fragile).

Michael, are you suggesting adding the META-INF/services
support _in addition_ to a compiled-in default?  Or instead
of that?  I wonder if an installation-wide default would be
appropriate (check jaxp.properties?) and whether SAX1
ParserFactory deserves such updates (I'd assume not).

- Dave

----- Original Message -----
From: "Michael Brennan" <Michael_Brennan@allegis.com>
To: "'David Brownell'" <david-b@pacbell.net>; <sax-devel@lists.sourceforge.net>;
Sent: Tuesday, August 07, 2001 4:27 PM
Subject: RE: SAX-core #2: factories

> I like this proposal, too. As of JDK 1.3, Sun seems to have adopted the
> convention of putting a file in /META-INF/services named after the service
> interface containing a list of implementation class names. This is what JAXP
> does. I think adopting this approach would be great. (And although the
> convention seems to have started with JDK 1.3, it does not seem to have any
> inherent dependency on 1.3. JAXP just loads the appropriate files via
> ClassLoader.getResourceAsStream.)
> > -----Original Message-----
> > From: David Brownell [mailto:david-b@pacbell.net]
> > Sent: Tuesday, August 07, 2001 10:05 AM
> > To: sax-devel@lists.sourceforge.net; xml-dev@lists.xml.org
> > Subject: SAX-core #2: factories
> >
> >
> > This seems to me most like a bugfix, but I'm sending it for
> > possible discussion in case anyone has issues.
> >
> > Factories
> >
> > - Most distributions don't bother defining a default parser to
> >   use when the appropriate system property isn't set, or access
> >   to it is disallowed (applets etc), though that's allowed by
> >   the spec.  Net result, the SAX bootstrap API is excessively
> >   fragile with respect to environment and configuration.
> >
> >   This encourages initting by calling constructors directly
> >   (and using nonstandard parse APIs), or using other bootstrap
> >   APIs (like JAXP) which provide robust defaults.  Neither of
> >   those is healthy for SAX.
> >
> >
> >     - Update javadoc to say clearly that when the system property
> >       can't be accessed, an environment-specific default may be used.
> >
> >     - Encourage distributions to provide such a default; it doesn't
> >       change the API, only increases robustness.