Use new XalanDumper; minor updates to logging info
(yay! good commits again!)

diff --git a/java/src/org/apache/qetest/xalanj2/TransformStateAPITest.java b/java/src/org/apache/qetest/xalanj2/TransformStateAPITest.java
index fd23842..ea70a7f 100644
--- a/java/src/org/apache/qetest/xalanj2/TransformStateAPITest.java
+++ b/java/src/org/apache/qetest/xalanj2/TransformStateAPITest.java
@@ -128,7 +128,7 @@
     public static final String X2J_SUBDIR = "xalanj2";
 
     /** Level that various TransformState logging should use.  */
-    protected int traceLoggingLevel = Logger.INFOMSG;
+    protected int traceLoggingLevel = Logger.INFOMSG - 1;
 
     /** Just initialize test name, comment, numTestCases. */
     public TransformStateAPITest()
@@ -194,6 +194,9 @@
             reporter.logWarningMsg("---- About to process " + QetestUtils.filenameToURL(testFileInfo.inputName));
             transformer.transform(new StreamSource(QetestUtils.filenameToURL(testFileInfo.xmlName)),
                                   new SAXResult(this)); // use us to handle result
+            // Reset our transformState after each transform
+            transformState = null;
+
             Transformer transformer2 = factory.newTransformer(new StreamSource(QetestUtils.filenameToURL(testFileInfo2.inputName)));
             reporter.logWarningMsg("---- About to process " + QetestUtils.filenameToURL(testFileInfo2.inputName));
             transformer2.transform(new StreamSource(QetestUtils.filenameToURL(testFileInfo2.xmlName)),
@@ -211,6 +214,7 @@
     }
 
 
+    ////////////////// partially Implement LoggingHandler ////////////////// 
     /** Cheap-o string representation of last event we got.  */
     protected String lastItem = LoggingHandler.NOTHING_HANDLED;
 
@@ -241,12 +245,10 @@
             reporter.logTraceMsg("TS null for:" + event + value);
             return;
         }
-        // Experimenting: which info is reported where? What's most useful to validate on?
-        reporter.logMsg(traceLoggingLevel, event 
-                     + getCurrentElementInfo(ts) + " is processing: " 
-                     + getCurrentNodeInfo(ts, value));
         reporter.logArbitrary(traceLoggingLevel, event 
-                     + getTransformStateDump(ts));
+                + "L" + ts.getCurrentTemplate().getLineNumber()
+                + "C" + ts.getCurrentTemplate().getColumnNumber() + "\n"
+                + getTransformStateDump(ts));
         //@todo: implement validation service for this stuff
         //  focus on what tooling/debugging clients will want to see
     }
@@ -288,158 +290,29 @@
     {
         StringBuffer buf = new StringBuffer();
         ElemTemplateElement elem = ts.getCurrentElement(); // may be actual or default template
-        buf.append("getCurrentElement:" + getElemTemplateElementDump(elem) + "\n");
+        buf.append("getCurrentElement:" + XalanDumper.dump(elem, XalanDumper.DUMP_DEFAULT) + "\n");
 
         ElemTemplate currentTempl = ts.getCurrentTemplate(); // Actual current template
-        buf.append("getCurrentTemplate:" + getElemTemplateDump(currentTempl) + "\n");
+        buf.append("getCurrentTemplate:" + XalanDumper.dump(currentTempl, XalanDumper.DUMP_DEFAULT) + "\n");
 
         ElemTemplate matchTempl = ts.getMatchedTemplate(); // Actual matched template
-        buf.append("getMatchedTemplate:" + getElemTemplateDump(matchTempl) + "\n");
+        if (matchTempl != currentTempl)
+            buf.append("getMatchedTemplate:" + XalanDumper.dump(matchTempl, XalanDumper.DUMP_DEFAULT) + "\n");
 
         Node n = ts.getCurrentNode();   // current context node in source tree
-        buf.append("getCurrentNode:" + n + "\n"); // TBD
+        buf.append("getCurrentNode:" + XalanDumper.dump(n, XalanDumper.DUMP_DEFAULT) + "\n");
 
         Node matchedNode = ts.getMatchedNode(); // node in source matched via getMatchedTemplate
-        buf.append("getMatchedNode:" + matchedNode + "\n"); // TBD
+        buf.append("getMatchedNode:" + XalanDumper.dump(matchedNode, XalanDumper.DUMP_DEFAULT) + "\n");
 
         NodeIterator contextNodeList = ts.getContextNodeList(); // current context node list
-        buf.append("getContextNodeList:" + contextNodeList + "\n"); // TBD
+        buf.append("getContextNodeList:" + contextNodeList + "\n");
 
         Transformer transformer = ts.getTransformer(); // current transformer working
         buf.append("getTransformer:" + transformer + "\n"); // TBD
         return buf.toString();
     }
 
-    /**
-     * Utility method to dump data from an ElemTemplate.  
-     * @return String describing various bits of the state
-     */
-    protected String getElemTemplateDump(ElemTemplate et)
-    {
-        StringBuffer buf = new StringBuffer("ElemTemplateDump;");
-        if (null == et)
-            return buf.toString();
-        buf.append("\n    getNodeName:" + et.getNodeName() + ";");
-        buf.append("\n    getStylesheet:" + et.getStylesheet() + ";");
-        buf.append("\n    getSystemId:" + et.getSystemId() + ";");
-        buf.append("\n    getPublicId:" + et.getPublicId() + ";");
-        QName qname = et.getName();
-        if (null != qname)
-            buf.append("\n    getName:" + qname.toString() + ";");
-        else
-            buf.append("\n    getName:NULL;");
-        qname = et.getMode();
-        if (null != qname)
-            buf.append("\n    getMode:" + qname.toString() + ";");
-        else
-            buf.append("\n    getMode:NULL;");
-
-        XPath xpath = et.getMatch();
-        if (null != xpath)
-            buf.append("\n    getMatch:" + xpath.getPatternString() + ";");
-        else
-            buf.append("\n    getMatch:NULL;");
-
-        buf.append("\n    getPriority:" + et.getPriority() + ";");
-        return buf.toString();
-    }
-    /**
-     * Utility method to dump data from an ElemTemplateElement.  
-     * @return String describing various bits of the state
-     */
-    protected String getElemTemplateElementDump(ElemTemplateElement et)
-    {
-        StringBuffer buf = new StringBuffer("ElemTemplateElementDump;");
-        if (null == et)
-            return buf.toString();
-        buf.append("\n    getNodeName:" + et.getNodeName() + ";");
-        buf.append("\n    getStylesheet:" + et.getStylesheet() + ";");
-        buf.append("\n    getSystemId:" + et.getSystemId() + ";");
-        buf.append("\n    getPublicId:" + et.getPublicId() + ";");
-        buf.append("\n    getLength:" + et.getLength() + ";");
-        buf.append("\n    getLineNumber:" + et.getLineNumber() + ";");
-        buf.append("\n    getColumnNumber:" + et.getColumnNumber() + ";");
-
-        return buf.toString();
-    }
-
-    /**
-     * Utility method to gather data about current node.  
-     * @return String describing node
-     */
-    protected String getCurrentNodeInfo(TransformState ts, String x)
-    {
-        StringBuffer buf = new StringBuffer();
-        Node n = ts.getCurrentNode();
-        if(null != n)
-        {
-            buf.append(n.getNodeName());
-            if(Node.TEXT_NODE == n.getNodeType())
-            {
-                buf.append("[");
-                buf.append(n.getNodeValue());
-                buf.append("]");
-            }
-        }
-        else
-            buf.append("[NULL-NODE]");
-
-        if (null != x)            
-            buf.append("[value:" + x + "]");
-
-        return buf.toString();
-    }
-
-    /**
-     * Utility method to gather data about current element in xsl.  
-     * @return String describing element
-     */
-    protected String getCurrentElementInfo(TransformState ts)
-    {
-        StringBuffer buf = new StringBuffer();
-        ElemTemplateElement templ = ts.getCurrentElement();
-
-        if(null != templ)
-        {
-            // Note for user if it's an LRE or an xsl element
-            if(templ instanceof ElemLiteralResult)
-                buf.append("LRE:");
-            else
-                buf.append("xsl:");
-
-            buf.append(templ.getNodeName());
-            buf.append(", line# "+templ.getLineNumber());
-            buf.append(", col# "+templ.getColumnNumber());
-            try
-            {
-                Class cl = ((Object)templ).getClass();
-                Method getSelect = cl.getMethod("getSelect", null);
-                if(null != getSelect)
-                {
-                    buf.append(", select='");
-                    XPath xpath = (XPath)getSelect.invoke(templ, null);
-                    buf.append(xpath.getPatternString()+"'");
-                }
-            }
-            catch(java.lang.reflect.InvocationTargetException ite)
-            {
-                // no-op: just don't put in the select info for these items
-                // buf.append("(threw: InvocationTargetException)");
-            }
-            catch(IllegalAccessException iae)
-            {
-                // no-op
-            }
-            catch(NoSuchMethodException nsme)
-            {
-                // no-op
-            }
-        }
-        else
-            buf.append("[NULL-ELEMENT]");
-
-        return buf.toString();
-    }
 
     //-----------------------------------------------------------
     //---- Implement the ContentHandler interface
@@ -462,8 +335,11 @@
     public void setDocumentLocator (Locator locator)
     {
         // Note: this implies this class is !not! threadsafe
-        setLastItem("setDocumentLocator");
         ourLocator = locator; // future use
+        if (null != locator)
+            setLastItem("setDocumentLocator.getSystemId():" + locator.getSystemId());
+        else
+            setLastItem("setDocumentLocator:NULL");
         reporter.logMsg(traceLoggingLevel, getLast());
     }
 
@@ -498,7 +374,7 @@
     public void startPrefixMapping (String prefix, String uri)
         throws SAXException
     {
-        setLastItem("startPrefixMapping: " + ", " + uri);
+        setLastItem("startPrefixMapping: " + prefix + ", " + uri);
         reporter.logMsg(traceLoggingLevel, getLast());
     }
 
@@ -514,12 +390,12 @@
 
     /** Implement ContentHandler.startElement.  */
     public void startElement (String namespaceURI, String localName,
-                                                        String qName, Attributes atts)
+                              String qName, Attributes atts)
         throws SAXException
     {
         StringBuffer buf = new StringBuffer();
         buf.append(namespaceURI + ", " 
-                   + namespaceURI + ", " + qName);
+                   + localName + ", " + qName + ";");
                    
         int n = atts.getLength();
         for(int i = 0; i < n; i++)
@@ -536,7 +412,7 @@
     public void endElement (String namespaceURI, String localName, String qName)
         throws SAXException
     {
-        setLastItem(END_ELEMENT + namespaceURI + ", " + namespaceURI + ", " + qName);
+        setLastItem(END_ELEMENT + namespaceURI + ", " + localName + ", " + qName);
 
         validateTransformState(transformState, END_ELEMENT, null);
     }