From aa893047e8c09ca8b27e3583edd2829ade0a2318 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 24 Mar 2005 00:04:22 +0000 Subject: Makefile.in: Rebuilt. * Makefile.in: Rebuilt. * Makefile.am (AM_CXXFLAGS): Define TOOLEXECLIBDIR. (libgcj0_convenience_la_SOURCES): Don't include gnu_xml_source_files. (libgcj0_convenience_la_LIBADD): New variable. (libgcj_la_LIBADD): Don't include sax or w3c_dom. (all_java_source_files): javax_imageio_source_files, javax_xml_source_files, and gnu_java_beans_source_files. ($(gnu_xml_source_files:.java=.lo)): Removed target. (gnu-xml.lo): New target. (javax-imageio.lo): Likewise. (javax-xml.lo): Likewise. (gnu-java-beans.lo): Likewise. (gnu_java_beans_source_files): New variable. (javax_imageio_source_files): Likewise. (javax_xml_source_files): Likewise. (javax_source_files): Moved files to other variable. (awt_java_source_files): Likewise. (ordinary_java_source_files): Added BootClassLoader.java. * java/lang/natVMClassLoader.cc (defineClass): Use boot loader, not system class loader. (initBootLoader): New method. (loadClass): Search bootLoader. * java/lang/natClassLoader.cc (_Jv_RegisterInitiatingLoader): Use boot loader, not system class loader. (_Jv_UnregisterInitiatingLoader): Likewise. (_Jv_FindClass): Likewise. Ensure entries in bootstrap_class_list are unique. * java/lang/natClass.cc (getClassLoader): Don't special case system class loader. * java/lang/VMClassLoader.java (bootLoader): New field. (getResource): Use bootLoader. (getResources): Likewise. (initBootLoader): Declare. * gnu/gcj/runtime/BootClassLoader.java: New file. * external/sax/org/xml/sax/helpers/NamespaceSupport.java (EMPTY_ENUMERATION): Now package-private. * external/w3c_com/Makefile.in: Rebuilt. * external/w3c_com/Makefile.am (MULTIBUILDTOP): New variable. (w3c.jar): New target. (classes.stamp): Updated. (toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES. Changed name of library. (libw3c_gcj_la_SOURCES): New variable. (libw3c_gcj_la_GCJFLAGS): Likewise. (source_files): Renamed from lib3c_convenience_la_SOURCES. * external/sax/Makefile.in: Rebuilt. * external/sax/Makefile.am (MULTIBUILDTOP): New variable. (sax.jar): New target. (classes.stamp): Updated. (toolexeclib_LTLIBRARIES): Renamed from noinst_LTLIBRARIES. Changed name of library. (libsax_gcj_la_SOURCES): New variable. (libsax_gcj_la_GCJFLAGS): Likewise. (source_files): Renamed from libsax_convenience_la_SOURCES. * stacktrace.cc (non_system_trace_fn): Don't look at system class loader. * prims.cc (_Jv_CreateJavaVM): Initialize the bootstrap class loader. (_Jv_RunMain): Handle case where 'runtime' is NULL at exit. From-SVN: r96960 --- libjava/gnu/xml/aelfred2/XmlReader.java | 515 ++++++++++++++++++-------------- 1 file changed, 287 insertions(+), 228 deletions(-) (limited to 'libjava/gnu/xml/aelfred2/XmlReader.java') diff --git a/libjava/gnu/xml/aelfred2/XmlReader.java b/libjava/gnu/xml/aelfred2/XmlReader.java index 96c9c723fb6..dacf8b103d1 100644 --- a/libjava/gnu/xml/aelfred2/XmlReader.java +++ b/libjava/gnu/xml/aelfred2/XmlReader.java @@ -70,246 +70,305 @@ import gnu.xml.pipeline.ValidationConsumer; * * @author David Brownell */ -public final class XmlReader implements XMLReader +public final class XmlReader + implements XMLReader { - private SAXDriver aelfred2 = new SAXDriver (); - private EventFilter filter = new EventFilter (); - private boolean isValidating; - private boolean active; - - /** Constructs a SAX Parser. */ - public XmlReader () - { } - - /** - * Constructs a SAX Parser, optionally treating validity errors - * as if they were fatal errors. - */ - public XmlReader (boolean invalidIsFatal) - { - if (invalidIsFatal) - setErrorHandler (new DefaultHandler2 () { - public void error (SAXParseException e) - throws SAXException - { throw e; } - }); - } - - /** - * SAX2: Returns the object used to report the logical - * content of an XML document. - */ - public ContentHandler getContentHandler () - { return filter.getContentHandler (); } - - /** - * SAX2: Assigns the object used to report the logical - * content of an XML document. - * @exception IllegalStateException if called mid-parse - */ - public void setContentHandler (ContentHandler handler) + static class FatalErrorHandler + extends DefaultHandler2 + { + + public void error(SAXParseException e) + throws SAXException { - if (active) - throw new IllegalStateException ("already parsing"); - filter.setContentHandler (handler); + throw e; } - - /** - * SAX2: Returns the object used to process declarations related - * to notations and unparsed entities. - */ - public DTDHandler getDTDHandler () - { return filter.getDTDHandler (); } - - /** - * SAX1 Assigns DTD handler - * @exception IllegalStateException if called mid-parse - */ - public void setDTDHandler (DTDHandler handler) - { - if (active) - throw new IllegalStateException ("already parsing"); - filter.setDTDHandler (handler); - } - - /** - * SAX2: Returns the object used when resolving external - * entities during parsing (both general and parameter entities). - */ - public EntityResolver getEntityResolver () - { return aelfred2.getEntityResolver (); } - - /** SAX1 Assigns parser's entity resolver */ - public void setEntityResolver (EntityResolver handler) - { aelfred2.setEntityResolver (handler); } - - /** - * SAX2: Returns the object used to receive callbacks for XML - * errors of all levels (fatal, nonfatal, warning); this is never null; - */ - public ErrorHandler getErrorHandler () - { return aelfred2.getErrorHandler (); } - - /** - * SAX1 Assigns error handler - * @exception IllegalStateException if called mid-parse - */ - public void setErrorHandler (ErrorHandler handler) - { - if (active) - throw new IllegalStateException ("already parsing"); - aelfred2.setErrorHandler (handler); - } - - /** - * SAX2: Assigns the specified property. - * @exception IllegalStateException if called mid-parse - */ - public void setProperty (String propertyId, Object value) + + } + + private SAXDriver aelfred2 = new SAXDriver(); + private EventFilter filter = new EventFilter(); + private boolean isValidating; + private boolean active; + + /** + * Constructs a SAX Parser. + */ + public XmlReader() + { + } + + /** + * Constructs a SAX Parser, optionally treating validity errors + * as if they were fatal errors. + */ + public XmlReader(boolean invalidIsFatal) + { + if (invalidIsFatal) + { + setErrorHandler(new FatalErrorHandler()); + } + } + + /** + * SAX2: Returns the object used to report the logical + * content of an XML document. + */ + public ContentHandler getContentHandler() + { + return filter.getContentHandler(); + } + + /** + * SAX2: Assigns the object used to report the logical + * content of an XML document. + * @exception IllegalStateException if called mid-parse + */ + public void setContentHandler(ContentHandler handler) + { + if (active) + { + throw new IllegalStateException("already parsing"); + } + filter.setContentHandler(handler); + } + + /** + * SAX2: Returns the object used to process declarations related + * to notations and unparsed entities. + */ + public DTDHandler getDTDHandler() + { + return filter.getDTDHandler(); + } + + /** + * SAX1 Assigns DTD handler + * @exception IllegalStateException if called mid-parse + */ + public void setDTDHandler(DTDHandler handler) + { + if (active) + { + throw new IllegalStateException("already parsing"); + } + filter.setDTDHandler(handler); + } + + /** + * SAX2: Returns the object used when resolving external + * entities during parsing (both general and parameter entities). + */ + public EntityResolver getEntityResolver() + { + return aelfred2.getEntityResolver(); + } + + /** + * SAX1 Assigns parser's entity resolver + */ + public void setEntityResolver(EntityResolver handler) + { + aelfred2.setEntityResolver(handler); + } + + /** + * SAX2: Returns the object used to receive callbacks for XML + * errors of all levels (fatal, nonfatal, warning); this is never null; + */ + public ErrorHandler getErrorHandler() + { + return aelfred2.getErrorHandler(); + } + + /** + * SAX1 Assigns error handler + * @exception IllegalStateException if called mid-parse + */ + public void setErrorHandler(ErrorHandler handler) + { + if (active) + { + throw new IllegalStateException("already parsing"); + } + aelfred2.setErrorHandler(handler); + } + + /** + * SAX2: Assigns the specified property. + * @exception IllegalStateException if called mid-parse + */ + public void setProperty(String propertyId, Object value) throws SAXNotRecognizedException, SAXNotSupportedException - { - if (active) - throw new IllegalStateException ("already parsing"); - if (getProperty (propertyId) != value) - filter.setProperty (propertyId, value); - } - - /** - * SAX2: Returns the specified property. - */ - public Object getProperty (String propertyId) + { + if (active) + { + throw new IllegalStateException("already parsing"); + } + if (getProperty(propertyId) != value) + { + filter.setProperty(propertyId, value); + } + } + + /** + * SAX2: Returns the specified property. + */ + public Object getProperty(String propertyId) throws SAXNotRecognizedException - { - if ((SAXDriver.PROPERTY + "declaration-handler") - .equals (propertyId) - || (SAXDriver.PROPERTY + "lexical-handler") - .equals (propertyId)) - return filter.getProperty (propertyId); - throw new SAXNotRecognizedException (propertyId); - } - - private void forceValidating () + { + if ((SAXDriver.PROPERTY + "declaration-handler").equals(propertyId) + || (SAXDriver.PROPERTY + "lexical-handler").equals(propertyId)) + { + return filter.getProperty(propertyId); + } + throw new SAXNotRecognizedException(propertyId); + } + + private void forceValidating() throws SAXNotRecognizedException, SAXNotSupportedException - { - aelfred2.setFeature ( - SAXDriver.FEATURE + "namespace-prefixes", - true); - aelfred2.setFeature ( - SAXDriver.FEATURE + "external-general-entities", - true); - aelfred2.setFeature ( - SAXDriver.FEATURE + "external-parameter-entities", - true); - } - - /** - * SAX2: Sets the state of features supported in this parser. - * Note that this parser requires reporting of namespace prefixes when - * validating. - */ - public void setFeature (String featureId, boolean state) + { + aelfred2.setFeature(SAXDriver.FEATURE + "namespace-prefixes", + true); + aelfred2.setFeature(SAXDriver.FEATURE + "external-general-entities", + true); + aelfred2.setFeature(SAXDriver.FEATURE + "external-parameter-entities", + true); + } + + /** + * SAX2: Sets the state of features supported in this parser. + * Note that this parser requires reporting of namespace prefixes when + * validating. + */ + public void setFeature(String featureId, boolean state) throws SAXNotRecognizedException, SAXNotSupportedException - { - boolean value = getFeature (featureId); - - if (state == value) - return; - - if ((SAXDriver.FEATURE + "validation").equals (featureId)) { - if (active) - throw new SAXNotSupportedException ("already parsing"); - if (state) - forceValidating (); - isValidating = state; - } else - aelfred2.setFeature (featureId, state); - } - - /** - * SAX2: Tells whether this parser supports the specified feature. - * At this time, this directly parallels the underlying SAXDriver, - * except that validation is optionally supported. - * - * @see SAXDriver - */ - public boolean getFeature (String featureId) + { + boolean value = getFeature(featureId); + + if (state == value) + { + return; + } + + if ((SAXDriver.FEATURE + "validation").equals(featureId)) + { + if (active) + { + throw new SAXNotSupportedException("already parsing"); + } + if (state) + { + forceValidating(); + } + isValidating = state; + } + else + { + aelfred2.setFeature(featureId, state); + } + } + + /** + * SAX2: Tells whether this parser supports the specified feature. + * At this time, this directly parallels the underlying SAXDriver, + * except that validation is optionally supported. + * + * @see SAXDriver + */ + public boolean getFeature(String featureId) throws SAXNotRecognizedException, SAXNotSupportedException - { - if ((SAXDriver.FEATURE + "validation").equals (featureId)) - return isValidating; - - return aelfred2.getFeature (featureId); - } - - /** - * SAX1: Sets the locale used for diagnostics; currently, - * only locales using the English language are supported. - * @param locale The locale for which diagnostics will be generated - */ - public void setLocale (Locale locale) + { + if ((SAXDriver.FEATURE + "validation").equals(featureId)) + { + return isValidating; + } + + return aelfred2.getFeature(featureId); + } + + /** + * SAX1: Sets the locale used for diagnostics; currently, + * only locales using the English language are supported. + * @param locale The locale for which diagnostics will be generated + */ + public void setLocale(Locale locale) throws SAXException - { aelfred2.setLocale (locale); } + { + aelfred2.setLocale(locale); + } - /** - * SAX1: Preferred API to parse an XML document, using a - * system identifier (URI). + /** + * SAX1: Preferred API to parse an XML document, using a + * system identifier (URI). */ - public void parse (String systemId) + public void parse(String systemId) throws SAXException, IOException - { - parse (new InputSource (systemId)); - } - - /** - * SAX1: Underlying API to parse an XML document, used - * directly when no URI is available. When this is invoked, - * and the parser is set to validate, some features will be - * automatically reset to appropriate values: for reporting - * namespace prefixes, and incorporating external entities. - * - * @param source The XML input source. - * - * @exception IllegalStateException if called mid-parse - * @exception SAXException The handlers may throw any SAXException, - * and the parser normally throws SAXParseException objects. - * @exception IOException IOExceptions are normally through through - * the parser if there are problems reading the source document. - */ - public void parse (InputSource source) + { + parse(new InputSource(systemId)); + } + + /** + * SAX1: Underlying API to parse an XML document, used + * directly when no URI is available. When this is invoked, + * and the parser is set to validate, some features will be + * automatically reset to appropriate values: for reporting + * namespace prefixes, and incorporating external entities. + * + * @param source The XML input source. + * + * @exception IllegalStateException if called mid-parse + * @exception SAXException The handlers may throw any SAXException, + * and the parser normally throws SAXParseException objects. + * @exception IOException IOExceptions are normally through through + * the parser if there are problems reading the source document. + */ + public void parse(InputSource source) throws SAXException, IOException - { - EventFilter next; - boolean nsdecls; - - synchronized (aelfred2) { - if (active) - throw new IllegalStateException ("already parsing"); - active = true; - } - - // set up the output pipeline - if (isValidating) { - forceValidating (); - next = new ValidationConsumer (filter); - } else - next = filter; - - // connect pipeline and error handler - // don't let _this_ call to bind() affect xmlns* attributes - nsdecls = aelfred2.getFeature ( - SAXDriver.FEATURE + "namespace-prefixes"); - EventFilter.bind (aelfred2, next); - if (!nsdecls) - aelfred2.setFeature ( - SAXDriver.FEATURE + "namespace-prefixes", - false); - - // parse, clean up - try { - aelfred2.parse (source); - } finally { - active = false; - } - } + { + EventFilter next; + boolean nsdecls; + + synchronized (aelfred2) + { + if (active) + { + throw new IllegalStateException("already parsing"); + } + active = true; + } + + // set up the output pipeline + if (isValidating) + { + forceValidating(); + next = new ValidationConsumer(filter); + } + else + { + next = filter; + } + + // connect pipeline and error handler + // don't let _this_ call to bind() affect xmlns* attributes + nsdecls = aelfred2.getFeature(SAXDriver.FEATURE + "namespace-prefixes"); + EventFilter.bind(aelfred2, next); + if (!nsdecls) + { + aelfred2.setFeature(SAXDriver.FEATURE + "namespace-prefixes", + false); + } + + // parse, clean up + try + { + aelfred2.parse(source); + } + finally + { + active = false; + } + } + } + -- cgit v1.2.3