public SAXParser getParser(boolean disableExternalEntities, boolean enableSecureProcessingFeature, boolean disableDTDs) throws ParserConfigurationException, SAXException { int index = (disableExternalEntities ? 1 : 0) | (enableSecureProcessingFeature ? 1 << 1 : 0) | (disableDTDs ? 1 << 2 : 0); SAXParserFactory f = factories[index]; if (f == null) { f = SAXParserFactory.newInstance(); configureParserFactory(f, disableExternalEntities, enableSecureProcessingFeature, disableDTDs); factories[index] = f; } SAXParser sp = f.newSAXParser(); configParser(sp, disableExternalEntities); return sp; } }