cziegeler 01/09/24 02:18:40 Modified: src/org/apache/cocoon/components/parser Tag: cocoon_20_branch XercesParser.java Log: This will fix bug 3595 Entity catalogs - XercesParser.java needs setEntityResolver - applies the same changes as recently done for JaxpParser.java to setEntityResolver PR: bug #3595 Submitted by: David Crossley Revision Changes Path No revision No revision 1.1.2.2 +29 -2 xml-cocoon2/src/org/apache/cocoon/components/parser/XercesParser.java Index: XercesParser.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/org/apache/cocoon/components/parser/XercesParser.java,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- XercesParser.java 2001/08/20 14:07:28 1.1.2.1 +++ XercesParser.java 2001/09/24 09:18:40 1.1.2.2 @@ -7,7 +7,11 @@ *****************************************************************************/ package org.apache.cocoon.components.parser; +import org.apache.avalon.framework.component.ComponentException; +import org.apache.avalon.framework.component.ComponentManager; +import org.apache.avalon.framework.component.Composable; import org.apache.avalon.framework.thread.SingleThreaded; +import org.apache.cocoon.components.resolver.Resolver; import org.apache.cocoon.xml.AbstractXMLProducer; import org.apache.xerces.dom.DocumentImpl; import org.apache.xerces.dom.DocumentTypeImpl; @@ -25,13 +29,20 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Pierpaolo Fumagalli</a> * (Apache Software Foundation, Exoffice Technologies) - * @version CVS $Revision: 1.1.2.1 $ $Date: 2001/08/20 14:07:28 $ + * @version CVS $Revision: 1.1.2.2 $ $Date: 2001/09/24 09:18:40 $ */ public class XercesParser extends AbstractXMLProducer -implements Parser, ErrorHandler, SingleThreaded { +implements Parser, ErrorHandler, Composable, SingleThreaded { + /** the SAX Parser */ final SAXParser parser; + /** the component manager */ + protected ComponentManager manager; + + /** the Entity Resolver */ + protected Resolver resolver = null; + public XercesParser () throws SAXException { this.parser = new SAXParser(); @@ -42,12 +53,28 @@ true); } + /** + * Get the Entity Resolver from the component manager + */ + public void compose(ComponentManager manager) throws ComponentException { + try { + this.manager = manager; + getLogger().debug("Looking up " + Resolver.ROLE); + this.resolver = (Resolver)manager.lookup(Resolver.ROLE); + } catch(ComponentException e) { + // This exception is ok during initialization/startup. + getLogger().debug("Error in XercesParser: Cannot find " + Resolver.ROLE); + } + } + public void parse(InputSource in) throws SAXException, IOException { this.parser.setProperty("http://xml.org/sax/properties/lexical-handler", super.lexicalHandler); this.parser.setErrorHandler(this); this.parser.setContentHandler(super.contentHandler); + if(this.resolver != null) + this.parser.setEntityResolver(this.resolver); this.parser.parse(in); } ---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]