curcuru 01/06/29 11:01:13 Modified: test/java/src/org/apache/qetest/xalanj2 LoggingTraceListener.java Log: Update to call logElement for cleaner output; also added more items to be logged (should still add m_atts for appropriate generateEvent events) Revision Changes Path 1.4 +53 -30 xml-xalan/test/java/src/org/apache/qetest/xalanj2/LoggingTraceListener.java Index: LoggingTraceListener.java =================================================================== RCS file: /home/cvs/xml-xalan/test/java/src/org/apache/qetest/xalanj2/LoggingTraceListener.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- LoggingTraceListener.java 2001/06/18 04:01:08 1.3 +++ LoggingTraceListener.java 2001/06/29 18:01:09 1.4 @@ -64,6 +64,7 @@ import org.apache.qetest.*; import java.io.IOException; +import java.util.Hashtable; import org.w3c.dom.Node; import org.w3c.dom.traversal.NodeIterator; @@ -88,7 +89,7 @@ * Future improvements: allow you to specify a set of * expected events to validate. * @author [EMAIL PROTECTED] - * @version $Id: LoggingTraceListener.java,v 1.3 2001/06/18 04:01:08 sboag Exp $ + * @version $Id: LoggingTraceListener.java,v 1.4 2001/06/29 18:01:09 curcuru Exp $ */ public class LoggingTraceListener extends LoggingHandler implements TraceListener @@ -219,6 +220,10 @@ /** setExpected, etc. not yet implemented. */ ////////////////// Implement TraceListener ////////////////// + + /** Name of custom logElement each event outputs: traceListenerDump. */ + public static final String TRACE_LISTENER_DUMP = "traceListenerDump"; + /** * Logging implementation of TraceListener method. * Method that is called when a trace event occurs. @@ -229,30 +234,37 @@ public void trace(TracerEvent tracerEvent) { counters[TYPE_TRACE]++; + + Hashtable attrs = new Hashtable(); + attrs.put("event", "trace"); + attrs.put("location", "L" + tracerEvent.m_styleNode.getLineNumber() + + "C" + tracerEvent.m_styleNode.getColumnNumber()); - StringBuffer buf = new StringBuffer("trace:"); - int dumpLevel = XalanDumper.DUMP_DEFAULT; - if (null != tracerEvent.m_mode) // not terribly elegant way to do it - dumpLevel = XalanDumper.DUMP_NOCLOSE; + StringBuffer buf = new StringBuffer(" <styleNode>"); switch (tracerEvent.m_styleNode.getXSLToken()) { // Specific handling for most common 'interesting' items case Constants.ELEMNAME_TEXTLITERALRESULT : - buf.append(XalanDumper.dump((ElemTextLiteral) tracerEvent.m_styleNode, dumpLevel)); + buf.append(XalanDumper.dump((ElemTextLiteral) tracerEvent.m_styleNode, XalanDumper.DUMP_DEFAULT)); break; case Constants.ELEMNAME_TEMPLATE : - buf.append(XalanDumper.dump((ElemTemplate) tracerEvent.m_styleNode, dumpLevel)); + buf.append(XalanDumper.dump((ElemTemplate) tracerEvent.m_styleNode, XalanDumper.DUMP_DEFAULT)); break; default : - buf.append(XalanDumper.dump((ElemTemplateElement) tracerEvent.m_styleNode, dumpLevel)); + buf.append(XalanDumper.dump((ElemTemplateElement) tracerEvent.m_styleNode, XalanDumper.DUMP_DEFAULT)); } - if (null != tracerEvent.m_mode) - buf.append(XalanDumper.SEP + "m_mode=" + tracerEvent.m_mode + XalanDumper.RBRACKET); + buf.append(" </styleNode>\n"); + // Always add the mode value; will either use toString() + // automatically or will print 'null' + buf.append(" <m_mode>" + tracerEvent.m_mode + "</m_mode>\n"); + // Also dump the sourceNode too! + buf.append(" <m_sourceNode>" + XalanDumper.dump(tracerEvent.m_sourceNode, XalanDumper.DUMP_DEFAULT) + "</m_sourceNode>\n"); + setLastItem(buf.toString()); - logger.logMsg(level, prefix + getLast()); + logger.logElement(level, TRACE_LISTENER_DUMP, attrs, buf.toString()); } /** @@ -266,8 +278,13 @@ throws javax.xml.transform.TransformerException { counters[TYPE_SELECTED]++; + + Hashtable attrs = new Hashtable(); + attrs.put("event", "selected"); + attrs.put("location", "L" + selectionEvent.m_styleNode.getLineNumber() + + "C" + selectionEvent.m_styleNode.getColumnNumber()); - StringBuffer buf = new StringBuffer("selected:"); + StringBuffer buf = new StringBuffer(" <styleNode>"); ElemTemplateElement styleNodeElem = (ElemTemplateElement) selectionEvent.m_styleNode; ElemTemplateElement parent = (ElemTemplateElement) styleNodeElem.getParentNode(); if (parent == styleNodeElem.getStylesheetRoot().getDefaultRootRule()) @@ -283,14 +300,15 @@ buf.append("[default-rule]"); } else - buf.append(XalanDumper.dump(styleNodeElem, XalanDumper.DUMP_NOCLOSE)); + buf.append(XalanDumper.dump(styleNodeElem, XalanDumper.DUMP_DEFAULT)); + buf.append(" </styleNode>\n"); - buf.append(selectionEvent.m_attributeName + "=" - + selectionEvent.m_xpath.getPatternString() + ";"); + buf.append(" <m_xpath>" + selectionEvent.m_attributeName + "=" + + selectionEvent.m_xpath.getPatternString() + "</m_xpath>\n"); + buf.append(" <m_selection>"); if (selectionEvent.m_selection.getType() == selectionEvent.m_selection.CLASS_NODESET) { - // Must create as DTMNodeIterator for DTM_EXP merge 13-Jun-01 NodeIterator nl = selectionEvent.m_selection.nodeset(); if (nl instanceof ContextNodeList) @@ -327,9 +345,10 @@ { buf.append("[" + selectionEvent.m_selection.str() +"]"); } - buf.append(XalanDumper.RBRACKET); // Since we said DUMP_NOCLOSE above + buf.append("</m_selection>\n"); + buf.append(" <m_sourceNode>" + XalanDumper.dump(selectionEvent.m_sourceNode, XalanDumper.DUMP_DEFAULT) + "</m_sourceNode>\n"); setLastItem(buf.toString()); - logger.logMsg(level, prefix + getLast()); + logger.logElement(level, TRACE_LISTENER_DUMP, attrs, buf.toString()); } /** @@ -341,53 +360,57 @@ public void generated(GenerateEvent generateEvent) { counters[TYPE_GENERATED]++; + + Hashtable attrs = new Hashtable(); + attrs.put("event", "generated"); - StringBuffer buf = new StringBuffer("generated:"); + StringBuffer buf = new StringBuffer(" <eventtype "); switch (generateEvent.m_eventtype) { case GenerateEvent.EVENTTYPE_STARTDOCUMENT : - buf.append("STARTDOCUMENT"); + buf.append("type=\"STARTDOCUMENT\">"); break; case GenerateEvent.EVENTTYPE_ENDDOCUMENT : - buf.append("ENDDOCUMENT"); + buf.append("type=\"ENDDOCUMENT\">"); break; case GenerateEvent.EVENTTYPE_STARTELEMENT : - buf.append("STARTELEMENT[" + generateEvent.m_name + "]"); // just hardcode [ LBRACKET ] RBRACKET here + buf.append("type=\"STARTELEMENT\">" + generateEvent.m_name); break; case GenerateEvent.EVENTTYPE_ENDELEMENT : - buf.append("ENDELEMENT[" + generateEvent.m_name + "]"); + buf.append("type=\"ENDELEMENT\">" + generateEvent.m_name); break; case GenerateEvent.EVENTTYPE_CHARACTERS : String chars1 = new String(generateEvent.m_characters, generateEvent.m_start, generateEvent.m_length); - buf.append("CHARACTERS[" + chars1 + "]"); + buf.append("type=\"CHARACTERS\">" + chars1); break; case GenerateEvent.EVENTTYPE_CDATA : String chars2 = new String(generateEvent.m_characters, generateEvent.m_start, generateEvent.m_length); - buf.append("CDATA[" + chars2 + "]"); + buf.append("type=\"CDATA\">" + chars2); break; case GenerateEvent.EVENTTYPE_COMMENT : - buf.append("COMMENT[" + generateEvent.m_data + "]"); + buf.append("type=\"COMMENT\">" + generateEvent.m_data); break; case GenerateEvent.EVENTTYPE_PI : - buf.append("PI[" + generateEvent.m_name + ", " + generateEvent.m_data + "]"); + buf.append("type=\"PI\">" + generateEvent.m_name + ", " + generateEvent.m_data); break; case GenerateEvent.EVENTTYPE_ENTITYREF : - buf.append("ENTITYREF[" + generateEvent.m_name + "]"); + buf.append("type=\"ENTITYREF\">" + generateEvent.m_name); break; case GenerateEvent.EVENTTYPE_IGNORABLEWHITESPACE : - buf.append("IGNORABLEWHITESPACE"); + buf.append("type=\"IGNORABLEWHITESPACE\">"); break; } + buf.append("</eventtype>\n"); setLastItem(buf.toString()); - logger.logMsg(level, prefix + getLast()); + logger.logElement(level, TRACE_LISTENER_DUMP, attrs, buf.toString()); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]