vgritsenko 02/02/01 19:18:04 Added: src/java/org/apache/cocoon/xml LoggingContentHandler.java Log: logging cohtent handler to debug SAX streams Revision Changes Path 1.1 xml-cocoon2/src/java/org/apache/cocoon/xml/LoggingContentHandler.java Index: LoggingContentHandler.java =================================================================== /***************************************************************************** * Copyright (C) The Apache Software Foundation. All rights reserved. * * ------------------------------------------------------------------------- * * This software is published under the terms of the Apache Software License * * version 1.1, a copy of which has been included with this distribution in * * the LICENSE file. * *****************************************************************************/ package org.apache.cocoon.xml; import org.apache.avalon.excalibur.pool.Poolable; import org.apache.avalon.framework.parameters.Parameters; import org.apache.avalon.framework.logger.AbstractLoggable; import org.apache.cocoon.ProcessingException; import org.apache.cocoon.environment.SourceResolver; import org.xml.sax.Attributes; import org.xml.sax.Locator; import org.xml.sax.SAXException; import org.xml.sax.XMLFilter; import org.xml.sax.ContentHandler; import java.io.FileWriter; import java.io.IOException; import java.util.Date; import java.util.Map; /** * Logging content handler logs all events going through to the logger. * * @author <a href="mailto:[EMAIL PROTECTED]>Vadim Gritsenko</a> * @version $Revision: 1.1 $ $Date: 2002/02/02 03:18:04 $ */ public class LoggingContentHandler extends AbstractLoggable implements ContentHandler { /** * All debug messages from this handler are prefixed with this id. */ String id; /** The current <code>ContentHandler</code>. */ ContentHandler contentHandler; /** * Creates new <code>LoggingContentHandler</code> with specified * <code>id</code> and destination <code>contentHandler</code>. */ public LoggingContentHandler(String id, ContentHandler contentHandler) { this.id = id; this.contentHandler = contentHandler; } public void setDocumentLocator(Locator locator) { log("setDocumentLocator", ""); contentHandler.setDocumentLocator(locator); } public void startDocument() throws SAXException { log("startDocument", ""); this.contentHandler.startDocument(); } public void endDocument() throws SAXException { log ("endDocument", ""); this.contentHandler.endDocument(); } public void startPrefixMapping(String prefix, String uri) throws SAXException { log ("startPrefixMapping", "prefix="+prefix+",uri="+uri); this.contentHandler.startPrefixMapping(prefix,uri); } public void endPrefixMapping(String prefix) throws SAXException { log ("endPrefixMapping", "prefix="+prefix); this.contentHandler.endPrefixMapping(prefix); } public void startElement(String uri, String loc, String raw, Attributes a) throws SAXException { log ("startElement", "uri="+uri+",local="+loc+",raw="+raw); for (int i = 0; i < a.getLength(); i++) { log (" ", Integer.toString(i + 1) + ". uri=" + a.getURI(i) + ",local=" + a.getLocalName(i) + ",qname=" + a.getQName(i) + ",type=" + a.getType(i) + ",value=" + a.getValue(i)); } this.contentHandler.startElement(uri,loc,raw,a); } public void endElement(String uri, String loc, String qname) throws SAXException { log ("endElement", "uri="+uri+",local="+loc+",qname="+qname); this.contentHandler.endElement(uri,loc,qname); } public void characters(char ch[], int start, int len) throws SAXException { log ("characters", new String(ch,start,len)); this.contentHandler.characters(ch,start,len); } public void ignorableWhitespace(char ch[], int start, int len) throws SAXException { log ("ignorableWhitespace", new String(ch,start,len)); this.contentHandler.ignorableWhitespace(ch,start,len); } public void processingInstruction(String target, String data) throws SAXException { log ("processingInstruction", "target="+target+",data="+data); this.contentHandler.processingInstruction(target,data); } public void skippedEntity(String name) throws SAXException { log ("skippedEntity", "name="+name); this.contentHandler.skippedEntity(name); } private void log(String location, String description) { StringBuffer logEntry = new StringBuffer(); logEntry.append(id); logEntry.append("["); logEntry.append(location); logEntry.append("] "); logEntry.append(description); logEntry.append("\n"); getLogger().debug(logEntry.toString()); // System.out.print(logEntry.toString()); } }
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]