/** * Override SAXParser's setFeature method to track the initial state of features. This keeps us * from affecting the performance of the SAXParser when it is created with XMLReaderFactory. */ public synchronized void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if (name == null) { // TODO: Add localized error message. throw new NullPointerException(); } if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) { try { fSecurityManager.setSecureProcessing(value); setProperty(SECURITY_MANAGER, fSecurityManager); } catch (SAXNotRecognizedException exc) { // If the property is not supported // re-throw the exception if the value is true. if (value) { throw exc; } } catch (SAXNotSupportedException exc) { // If the property is not supported // re-throw the exception if the value is true. if (value) { throw exc; } } return; } if (!fInitFeatures.containsKey(name)) { boolean current = super.getFeature(name); fInitFeatures.put(name, current ? Boolean.TRUE : Boolean.FALSE); } /** Forward feature to the schema validator if there is one. * */ if (fSAXParser != null && fSAXParser.fSchemaValidator != null) { setSchemaValidatorFeature(name, value); } super.setFeature(name, value); }
synchronized void restoreInitState() throws SAXNotRecognizedException, SAXNotSupportedException { Iterator iter; if (!fInitFeatures.isEmpty()) { iter = fInitFeatures.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String name = (String) entry.getKey(); boolean value = ((Boolean) entry.getValue()).booleanValue(); super.setFeature(name, value); } fInitFeatures.clear(); } if (!fInitProperties.isEmpty()) { iter = fInitProperties.entrySet().iterator(); while (iter.hasNext()) { Map.Entry entry = (Map.Entry) iter.next(); String name = (String) entry.getKey(); Object value = entry.getValue(); super.setProperty(name, value); } fInitProperties.clear(); } }
void setFeature0(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { super.setFeature(name, value); }