diff options
Diffstat (limited to 'libjava/gnu/xml/aelfred2/JAXPFactory.java')
-rw-r--r-- | libjava/gnu/xml/aelfred2/JAXPFactory.java | 273 |
1 files changed, 119 insertions, 154 deletions
diff --git a/libjava/gnu/xml/aelfred2/JAXPFactory.java b/libjava/gnu/xml/aelfred2/JAXPFactory.java index ff585a82aa6..006dc1302e3 100644 --- a/libjava/gnu/xml/aelfred2/JAXPFactory.java +++ b/libjava/gnu/xml/aelfred2/JAXPFactory.java @@ -60,172 +60,137 @@ import javax.xml.parsers.SAXParserFactory; * * @author David Brownell */ -public final class JAXPFactory - extends SAXParserFactory +public final class JAXPFactory extends SAXParserFactory { - - private Hashtable flags = new Hashtable(); - - /** - * Constructs a factory which normally returns a non-validating - * parser. - */ - public JAXPFactory() - { - } - - public SAXParser newSAXParser() - throws ParserConfigurationException, SAXException - { - JaxpParser jaxp = new JaxpParser(); - Enumeration e = flags.keys(); - XMLReader parser = jaxp.getXMLReader(); - - parser.setFeature(SAXDriver.FEATURE + "namespaces", - isNamespaceAware()); - parser.setFeature(SAXDriver.FEATURE + "validation", - isValidating()); - // that makes SAX2 feature flags trump JAXP - - while (e.hasMoreElements()) - { - String uri = (String) e.nextElement(); - Boolean value = (Boolean) flags.get(uri); - parser.setFeature(uri, value.booleanValue()); - } - - return jaxp; - } - - // yes, this "feature transfer" mechanism doesn't play well - - public void setFeature(String name, boolean value) - throws ParserConfigurationException, SAXNotRecognizedException, - SAXNotSupportedException - { - try - { - // force "early" detection of errors where possible - // (flags can't necessarily be set before parsing) - new JaxpParser().getXMLReader().setFeature(name, value); - - flags.put(name, new Boolean(value)); - } - catch (SAXNotRecognizedException e) - { - throw new SAXNotRecognizedException(name); - } - catch (SAXNotSupportedException e) - { - throw new SAXNotSupportedException(name); - } - catch (Exception e) - { - throw new ParserConfigurationException(e.getClass().getName() - + ": " - + e.getMessage()); - } - } - - public boolean getFeature(String name) - throws ParserConfigurationException, SAXNotRecognizedException, - SAXNotSupportedException - { - Boolean value = (Boolean) flags.get(name); - - if (value != null) - { - return value.booleanValue(); - } - else - { - try - { - return new JaxpParser().getXMLReader().getFeature(name); - } - catch (SAXNotRecognizedException e) - { - throw new SAXNotRecognizedException(name); - } - catch (SAXNotSupportedException e) - { - throw new SAXNotSupportedException(name); - } - catch (SAXException e) - { - throw new ParserConfigurationException(e.getClass().getName() - + ": " - + e.getMessage()); - } - } - } - - private static class JaxpParser - extends SAXParser - { - - private XmlReader ae2 = new XmlReader(); - private XMLReaderAdapter parser = null; - - JaxpParser() - { - } + private Hashtable flags = new Hashtable (); - public void setProperty(String id, Object value) - throws SAXNotRecognizedException, SAXNotSupportedException - { - ae2.setProperty(id, value); - } + /** + * Constructs a factory which normally returns a non-validating + * parser. + */ + public JAXPFactory () { } - public Object getProperty(String id) - throws SAXNotRecognizedException, SAXNotSupportedException + public SAXParser newSAXParser () + throws ParserConfigurationException, SAXException { - return ae2.getProperty(id); + JaxpParser jaxp = new JaxpParser (); + Enumeration e = flags.keys (); + XMLReader parser = jaxp.getXMLReader (); + + parser.setFeature ( + SAXDriver.FEATURE + "namespaces", + isNamespaceAware ()); + parser.setFeature ( + SAXDriver.FEATURE + "validation", + isValidating ()); + // that makes SAX2 feature flags trump JAXP + + while (e.hasMoreElements ()) { + String uri = (String) e.nextElement (); + Boolean value = (Boolean) flags.get (uri); + parser.setFeature (uri, value.booleanValue ()); + } + + return jaxp; } - public Parser getParser() - throws SAXException - { - if (parser == null) - { - parser = new XMLReaderAdapter(ae2); - } - return parser; - } + // yes, this "feature transfer" mechanism doesn't play well - public XMLReader getXMLReader () - throws SAXException + public void setFeature (String name, boolean value) + throws + ParserConfigurationException, + SAXNotRecognizedException, + SAXNotSupportedException { - return ae2; + try { + // force "early" detection of errors where possible + // (flags can't necessarily be set before parsing) + new JaxpParser ().getXMLReader ().setFeature (name, value); + + flags.put (name, new Boolean (value)); + } catch (SAXNotRecognizedException e) { + throw new SAXNotRecognizedException (name); + } catch (SAXNotSupportedException e) { + throw new SAXNotSupportedException (name); + } catch (Exception e) { + throw new ParserConfigurationException ( + e.getClass ().getName () + + ": " + + e.getMessage ()); + } } - public boolean isNamespaceAware() + public boolean getFeature (String name) + throws + ParserConfigurationException, + SAXNotRecognizedException, + SAXNotSupportedException { - try - { - return ae2.getFeature(SAXDriver.FEATURE + "namespaces"); - } - catch (Exception e) - { - throw new Error(); - } + Boolean value = (Boolean) flags.get (name); + + if (value != null) + return value.booleanValue (); + else + try { + return new JaxpParser ().getXMLReader ().getFeature (name); + } catch (SAXNotRecognizedException e) { + throw new SAXNotRecognizedException (name); + } catch (SAXNotSupportedException e) { + throw new SAXNotSupportedException (name); + } catch (SAXException e) { + throw new ParserConfigurationException ( + e.getClass ().getName () + + ": " + + e.getMessage ()); + } } - - public boolean isValidating() + + private static class JaxpParser extends SAXParser { - try - { - return ae2.getFeature(SAXDriver.FEATURE + "validation"); - } - catch (Exception e) - { - throw new Error(); - } + private XmlReader ae2 = new XmlReader (); + private XMLReaderAdapter parser = null; + + JaxpParser () { } + + public void setProperty (String id, Object value) + throws SAXNotRecognizedException, SAXNotSupportedException + { ae2.setProperty (id, value); } + + public Object getProperty (String id) + throws SAXNotRecognizedException, SAXNotSupportedException + { return ae2.getProperty (id); } + + public Parser getParser () + throws SAXException + { + if (parser == null) + parser = new XMLReaderAdapter (ae2); + return parser; + } + + public XMLReader getXMLReader () + throws SAXException + { return ae2; } + + public boolean isNamespaceAware () + { + try { + return ae2.getFeature (SAXDriver.FEATURE + "namespaces"); + } catch (Exception e) { + throw new Error (); + } + } + + public boolean isValidating () + { + try { + return ae2.getFeature (SAXDriver.FEATURE + "validation"); + } catch (Exception e) { + throw new Error (); + } + } + + // TODO isXIncludeAware() + } - - // TODO isXIncludeAware() - - } - } - |