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; } }
