mrglavas 2003/09/13 21:31:04 Modified: java/src/org/apache/xerces/impl/dtd XMLDTDLoader.java Log: Fixes: Ensure we have a message formatter, and that the locator for the error reporter is the current entity scanner. Errors reported had garbled messages and no locator info. Revision Changes Path 1.8 +17 -3 xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDLoader.java Index: XMLDTDLoader.java =================================================================== RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dtd/XMLDTDLoader.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- XMLDTDLoader.java 16 Jan 2003 23:03:08 -0000 1.7 +++ XMLDTDLoader.java 14 Sep 2003 04:31:04 -0000 1.8 @@ -2,7 +2,7 @@ * The Apache Software License, Version 1.1 * * - * Copyright (c) 1999-2002 The Apache Software Foundation. + * Copyright (c) 1999-2003 The Apache Software Foundation. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -61,6 +61,7 @@ import org.apache.xerces.impl.XMLDTDScannerImpl; import org.apache.xerces.impl.XMLErrorReporter; import org.apache.xerces.impl.XMLEntityManager; +import org.apache.xerces.impl.msg.XMLMessageFormatter; import org.apache.xerces.util.SymbolTable; import org.apache.xerces.util.DefaultErrorHandler; @@ -80,7 +81,7 @@ /** * The DTD loader. The loader knows how to build grammars from XMLInputSources. - * It extends the dTD processor in order to do this; it's + * It extends the DTD processor in order to do this; it's * a separate class because DTD processors don't need to know how * to talk to the outside world in their role as instance-document * helpers. @@ -184,6 +185,12 @@ errorReporter.setProperty(ERROR_HANDLER, new DefaultErrorHandler()); } fErrorReporter = errorReporter; + // Add XML message formatter if there isn't one. + if (fErrorReporter.getMessageFormatter(XMLMessageFormatter.XML_DOMAIN) == null) { + XMLMessageFormatter xmft = new XMLMessageFormatter(); + fErrorReporter.putMessageFormatter(XMLMessageFormatter.XML_DOMAIN, xmft); + fErrorReporter.putMessageFormatter(XMLMessageFormatter.XMLNS_DOMAIN, xmft); + } fEntityResolver = entityResolver; if(fEntityResolver instanceof XMLEntityManager) { fEntityManager = (XMLEntityManager)fEntityResolver; @@ -286,6 +293,12 @@ fEntityManager.setProperty(propertyId, value); } else if(propertyId.equals( ERROR_REPORTER)) { fErrorReporter = (XMLErrorReporter)value; + // Add XML message formatter if there isn't one. + if (fErrorReporter.getMessageFormatter(XMLMessageFormatter.XML_DOMAIN) == null) { + XMLMessageFormatter xmft = new XMLMessageFormatter(); + fErrorReporter.putMessageFormatter(XMLMessageFormatter.XML_DOMAIN, xmft); + fErrorReporter.putMessageFormatter(XMLMessageFormatter.XMLNS_DOMAIN, xmft); + } fDTDScanner.setProperty(propertyId, value); fEntityManager.setProperty(propertyId, value); } else if(propertyId.equals( ERROR_HANDLER)) { @@ -404,6 +417,7 @@ super.reset(); fDTDScanner.reset(); fEntityManager.reset(); + fErrorReporter.setDocumentLocator(fEntityManager.getEntityScanner()); } } // class XMLDTDLoader
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]