diff options
Diffstat (limited to 'libjava/gnu/xml/aelfred2/JAXPFactory.java')
-rw-r--r-- | libjava/gnu/xml/aelfred2/JAXPFactory.java | 273 |
1 files changed, 154 insertions, 119 deletions
diff --git a/libjava/gnu/xml/aelfred2/JAXPFactory.java b/libjava/gnu/xml/aelfred2/JAXPFactory.java index 006dc1302e3..ff585a82aa6 100644 --- a/libjava/gnu/xml/aelfred2/JAXPFactory.java +++ b/libjava/gnu/xml/aelfred2/JAXPFactory.java @@ -60,137 +60,172 @@ 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 () + + 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() { - 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 setProperty(String id, Object value) + throws SAXNotRecognizedException, SAXNotSupportedException + { + ae2.setProperty(id, value); + } - public void setFeature (String name, boolean value) - throws - ParserConfigurationException, - SAXNotRecognizedException, - SAXNotSupportedException + public Object getProperty(String id) + throws 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 ()); - } + return ae2.getProperty(id); } - public boolean getFeature (String name) - throws - ParserConfigurationException, - SAXNotRecognizedException, - SAXNotSupportedException + public Parser getParser() + throws SAXException { - 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 ()); - } + if (parser == null) + { + parser = new XMLReaderAdapter(ae2); + } + return parser; } - private static class JaxpParser extends SAXParser + public XMLReader getXMLReader () + throws SAXException { - 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() - + 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() + + } + } + |