PR: 9435
Brought down changes made on the mainline to support Xerces and Crimson.
Now support the updated version of the log4j.dtd as requested by Ceki.



Project: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/commit/4e117cc5
Tree: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/tree/4e117cc5
Diff: http://git-wip-us.apache.org/repos/asf/logging-chainsaw/diff/4e117cc5

Branch: refs/heads/v1_2-branch
Commit: 4e117cc57c19ec41d7bf5e51c1428ce05cdca334
Parents: 241c1bc
Author: oburn <[email protected]>
Authored: Wed May 29 11:54:24 2002 +0000
Committer: oburn <[email protected]>
Committed: Wed May 29 11:54:24 2002 +0000

----------------------------------------------------------------------
 .../apache/log4j/chainsaw/XMLFileHandler.java   | 49 +++++++++-----------
 1 file changed, 21 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-chainsaw/blob/4e117cc5/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java 
b/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
index 5ce82d0..a5e7d4f 100644
--- a/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
+++ b/src/java/org/apache/log4j/chainsaw/XMLFileHandler.java
@@ -37,12 +37,10 @@ class XMLFileHandler
     private final MyTableModel mModel;
     /** the number of events in the document **/
     private int mNumEvents;
-    /** the current element being parsed **/
-    private String mCurrentElement;
 
     /** the time of the event **/
     private long mTimeStamp;
-    /** the priority of the event **/
+    /** the priority (level) of the event **/
     private Priority mPriority;
     /** the category of the event **/
     private String mCategoryName;
@@ -56,7 +54,8 @@ class XMLFileHandler
     private String[] mThrowableStrRep;
     /** the location details for the event **/
     private String mLocationDetails;
-
+    /** buffer for collecting text **/
+    private final StringBuffer mBuf = new StringBuffer();
 
     /**
      * Creates a new <code>XMLFileHandler</code> instance.
@@ -76,21 +75,7 @@ class XMLFileHandler
 
     /** @see DefaultHandler **/
     public void characters(char[] aChars, int aStart, int aLength) {
-        if (mCurrentElement == TAG_NDC) {
-            mNDC = new String(aChars, aStart, aLength);
-        } else if (mCurrentElement == TAG_MESSAGE) {
-            mMessage = new String(aChars, aStart, aLength);
-        } else if (mCurrentElement == TAG_THROWABLE) {
-            final StringTokenizer st =
-                new StringTokenizer(new String(aChars, aStart, aLength), "\t");
-            mThrowableStrRep = new String[st.countTokens()];
-            if (mThrowableStrRep.length > 0) {
-                mThrowableStrRep[0] = st.nextToken();
-                for (int i = 1; i < mThrowableStrRep.length; i++) {
-                    mThrowableStrRep[i] = "\t" + st.nextToken();
-                }
-            }
-        }
+        mBuf.append(String.valueOf(aChars, aStart, aLength));
     }
 
     /** @see DefaultHandler **/
@@ -101,8 +86,20 @@ class XMLFileHandler
         if (TAG_EVENT.equals(aQName)) {
             addEvent();
             resetData();
-        } else if (mCurrentElement != TAG_EVENT) {
-            mCurrentElement = TAG_EVENT; // hack - but only thing I care about
+        } else if (TAG_NDC.equals(aQName)) {
+            mNDC = mBuf.toString();
+        } else if (TAG_MESSAGE.equals(aQName)) {
+            mMessage = mBuf.toString();
+        } else if (TAG_THROWABLE.equals(aQName)) {
+            final StringTokenizer st =
+                new StringTokenizer(mBuf.toString(), "\n\t");
+            mThrowableStrRep = new String[st.countTokens()];
+            if (mThrowableStrRep.length > 0) {
+                mThrowableStrRep[0] = st.nextToken();
+                for (int i = 1; i < mThrowableStrRep.length; i++) {
+                    mThrowableStrRep[i] = "\t" + st.nextToken();
+                }
+            }
         }
     }
 
@@ -112,22 +109,18 @@ class XMLFileHandler
                              String aQName,
                              Attributes aAtts)
     {
+        mBuf.setLength(0);
+
         if (TAG_EVENT.equals(aQName)) {
             mThreadName = aAtts.getValue("thread");
             mTimeStamp = Long.parseLong(aAtts.getValue("timestamp"));
-            mCategoryName = aAtts.getValue("category");
+            mCategoryName = aAtts.getValue("logger");
             mPriority = Priority.toPriority(aAtts.getValue("level"));
         } else if (TAG_LOCATION_INFO.equals(aQName)) {
             mLocationDetails = aAtts.getValue("class") + "."
                 + aAtts.getValue("method")
                 + "(" + aAtts.getValue("file") + ":" + aAtts.getValue("line")
                 + ")";
-        } else if (TAG_NDC.equals(aQName)) {
-            mCurrentElement = TAG_NDC;
-        } else if (TAG_MESSAGE.equals(aQName)) {
-            mCurrentElement = TAG_MESSAGE;
-        } else if (TAG_THROWABLE.equals(aQName)) {
-            mCurrentElement = TAG_THROWABLE;
         }
     }
 

Reply via email to