/** * Constructs a parser configuration using the specified symbol table, grammar pool, and parent * settings. * * <p><strong>REVISIT:</strong> Grammar pool will be updated when the new validation engine is * implemented. * * @param symbolTable The symbol table to use. * @param grammarPool The grammar pool to use. * @param parentSettings The parent settings. */ public NonValidatingConfiguration( SymbolTable symbolTable, XMLGrammarPool grammarPool, XMLComponentManager parentSettings) { super(symbolTable, parentSettings); // add default recognized features final String[] recognizedFeatures = { PARSER_SETTINGS, NAMESPACES, // WARN_ON_DUPLICATE_ATTDEF, // from XMLDTDScannerImpl // WARN_ON_UNDECLARED_ELEMDEF, // from XMLDTDScannerImpl // ALLOW_JAVA_ENCODINGS, // from XMLEntityManager CONTINUE_AFTER_FATAL_ERROR, // LOAD_EXTERNAL_DTD, // from XMLDTDScannerImpl // NOTIFY_BUILTIN_REFS, // from XMLDocumentFragmentScannerImpl // NOTIFY_CHAR_REFS, // from XMLDocumentFragmentScannerImpl // WARN_ON_DUPLICATE_ENTITYDEF // from XMLEntityManager }; addRecognizedFeatures(recognizedFeatures); // set state for default features // setFeature(WARN_ON_DUPLICATE_ATTDEF, false); // from XMLDTDScannerImpl // setFeature(WARN_ON_UNDECLARED_ELEMDEF, false); // from XMLDTDScannerImpl // setFeature(ALLOW_JAVA_ENCODINGS, false); // from XMLEntityManager fFeatures.put(CONTINUE_AFTER_FATAL_ERROR, Boolean.FALSE); fFeatures.put(PARSER_SETTINGS, Boolean.TRUE); fFeatures.put(NAMESPACES, Boolean.TRUE); // setFeature(LOAD_EXTERNAL_DTD, true); // from XMLDTDScannerImpl // setFeature(NOTIFY_BUILTIN_REFS, false); // from XMLDocumentFragmentScannerImpl // setFeature(NOTIFY_CHAR_REFS, false); // from XMLDocumentFragmentScannerImpl // setFeature(WARN_ON_DUPLICATE_ENTITYDEF, false); // from XMLEntityManager // add default recognized properties final String[] recognizedProperties = { ERROR_REPORTER, ENTITY_MANAGER, DOCUMENT_SCANNER, DTD_SCANNER, DTD_VALIDATOR, NAMESPACE_BINDER, XMLGRAMMAR_POOL, DATATYPE_VALIDATOR_FACTORY, VALIDATION_MANAGER, LOCALE, SECURITY_MANAGER, XML_SECURITY_PROPERTY_MANAGER }; addRecognizedProperties(recognizedProperties); fGrammarPool = grammarPool; if (fGrammarPool != null) { fProperties.put(XMLGRAMMAR_POOL, fGrammarPool); } fEntityManager = createEntityManager(); fProperties.put(ENTITY_MANAGER, fEntityManager); addComponent(fEntityManager); fErrorReporter = createErrorReporter(); fErrorReporter.setDocumentLocator(fEntityManager.getEntityScanner()); fProperties.put(ERROR_REPORTER, fErrorReporter); addComponent(fErrorReporter); // this configuration delays creation of the scanner // till it is known if namespace processing should be performed fDTDScanner = createDTDScanner(); if (fDTDScanner != null) { fProperties.put(DTD_SCANNER, fDTDScanner); if (fDTDScanner instanceof XMLComponent) { addComponent((XMLComponent) fDTDScanner); } } fDatatypeValidatorFactory = createDatatypeValidatorFactory(); if (fDatatypeValidatorFactory != null) { fProperties.put(DATATYPE_VALIDATOR_FACTORY, fDatatypeValidatorFactory); } fValidationManager = createValidationManager(); if (fValidationManager != null) { fProperties.put(VALIDATION_MANAGER, fValidationManager); } // add message formatters if (fErrorReporter.getMessageFormatter(XMLMessageFormatter.XML_DOMAIN) == null) { XMLMessageFormatter xmft = new XMLMessageFormatter(); fErrorReporter.putMessageFormatter(XMLMessageFormatter.XML_DOMAIN, xmft); fErrorReporter.putMessageFormatter(XMLMessageFormatter.XMLNS_DOMAIN, xmft); } fConfigUpdated = false; // set locale try { setLocale(Locale.getDefault()); } catch (XNIException e) { // do nothing // REVISIT: What is the right thing to do? -Ac } } // <init>(SymbolTable,XMLGrammarPool)