You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Ceki Gülcü <ce...@qos.ch> on 2003/10/19 16:25:29 UTC

Re: Patch fix for Bug 23705 (Parser gets confused when using external entities.)

Is Tiger available for testing?

At 01:20 AM 10/17/2003 -0700, you wrote:
>I have modified DOMConfigurator and
>Log4jEntityResolver, and added a new testcase to
>demonstrate that the problem is fixed.
>
>Hope this is useful,
>Tim
>
>__________________________________
>Do you Yahoo!?
>The New Yahoo! Shopping - with improved product search
>http://shopping.yahoo.com
>Index: src/java/org/apache/log4j/Category.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/Category.java,v
>retrieving revision 1.77
>diff -u -r1.77 Category.java
>--- src/java/org/apache/log4j/Category.java     23 Aug 2003 16:00:52 
>-0000      1.77
>+++ src/java/org/apache/log4j/Category.java     17 Oct 2003 07:39:23 -0000
>@@ -272,15 +272,11 @@
>     * @since 1.0
>     */
>    void closeNestedAppenders() {
>-    Enumeration enum = this.getAllAppenders();
>-
>-    if (enum != null) {
>-      while (enum.hasMoreElements()) {
>-        Appender a = (Appender) enum.nextElement();
>-
>-        if (a instanceof AppenderAttachable) {
>-          a.close();
>-        }
>+    for (Enumeration e = this.getAllAppenders();
>+        (e != null) && (e.hasMoreElements()); ) {
>+      Appender a = (Appender) e.nextElement();
>+      if (a instanceof AppenderAttachable) {
>+        a.close();
>        }
>      }
>    }
>Index: src/java/org/apache/log4j/NDC.java
>===================================================================
>RCS file: /home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/NDC.java,v
>retrieving revision 1.16
>diff -u -r1.16 NDC.java
>--- src/java/org/apache/log4j/NDC.java  23 Aug 2003 16:00:52 -0000      1.16
>+++ src/java/org/apache/log4j/NDC.java  17 Oct 2003 07:39:24 -0000
>@@ -265,15 +265,13 @@
>        int misses = 0;
>        v = new Vector();
>
>-      Enumeration enum = ht.keys();
>-
>        // We give up after 4 straigt missses. That is 4 consecutive
>        // inspected threads in 'ht' that turn out to be alive.
>        // The higher the proportion on dead threads in ht, the higher the
>        // chances of removal.
>-      while (enum.hasMoreElements() && (misses <= 4)) {
>-        Thread t = (Thread) enum.nextElement();
>-
>+      for (Enumeration e = ht.keys();
>+          e.hasMoreElements() && (misses <= 4); )  {
>+        Thread t = (Thread) e.nextElement();
>          if (t.isAlive()) {
>            misses++;
>          } else {
>Index: src/java/org/apache/log4j/PropertyConfigurator.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/PropertyConfigurator.java,v
>retrieving revision 1.60
>diff -u -r1.60 PropertyConfigurator.java
>--- src/java/org/apache/log4j/PropertyConfigurator.java 17 Sep 2003 
>16:03:02 -0000      1.60
>+++ src/java/org/apache/log4j/PropertyConfigurator.java 17 Oct 2003 
>07:39:24 -0000
>@@ -541,10 +541,9 @@
>    */
>    protected void parseCatsAndRenderers(
>      Properties props, LoggerRepository hierarchy) {
>-    Enumeration enum = props.propertyNames();
>
>-    while (enum.hasMoreElements()) {
>-      String key = (String) enum.nextElement();
>+    for (Enumeration e = props.propertyNames(); e.hasMoreElements();) {
>+      String key = (String) e.nextElement();
>
>        if (key.startsWith(CATEGORY_PREFIX) || 
> key.startsWith(LOGGER_PREFIX)) {
>          String loggerName = null;
>Index: src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java,v
>retrieving revision 1.3
>diff -u -r1.3 LoggerDynamicMBean.java
>--- src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java       18 Mar 
>2003 13:33:33 -0000      1.3
>+++ src/java/org/apache/log4j/jmx/LoggerDynamicMBean.java       17 Oct 
>2003 07:39:25 -0000
>@@ -228,9 +228,9 @@
>    }
>
>    void appenderMBeanRegistration() {
>-    Enumeration enum = logger.getAllAppenders();
>-    while(enum.hasMoreElements()) {
>-      Appender appender = (Appender) enum.nextElement();
>+    for (Enumeration e = logger.getAllAppenders();
>+           e != null && e.hasMoreElements(); ) {
>+      Appender appender = (Appender) e.nextElement();
>        registerAppenderMBean(appender);
>      }
>    }
>Index: 
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java,v
>retrieving revision 1.1
>diff -u -r1.1 CategoryNodeEditor.java
>--- 
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java 
>26 Apr 2002 15:48:43 -0000      1.1
>+++ 
>src/java/org/apache/log4j/lf5/viewer/categoryexplorer/CategoryNodeEditor.java 
>17 Oct 2003 07:39:26 -0000
>@@ -241,9 +241,10 @@
>    protected int removeUnusedNodes() {
>      int count = 0;
>      CategoryNode root = _categoryModel.getRootCategoryNode();
>-    Enumeration enum = root.depthFirstEnumeration();
>-    while (enum.hasMoreElements()) {
>-      CategoryNode node = (CategoryNode) enum.nextElement();
>+
>+    for (Enumeration e = root.depthFirstEnumeration();
>+        e.hasMoreElements(); ) {
>+      CategoryNode node = (CategoryNode) e.nextElement();
>        if (node.isLeaf() && node.getNumberOfContainedRecords() == 0
>            && node.getParent() != null) {
>          _categoryModel.removeNodeFromParent(node);
>Index: src/java/org/apache/log4j/net/SocketReceiver.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/net/SocketReceiver.java,v
>retrieving revision 1.5
>diff -u -r1.5 SocketReceiver.java
>--- src/java/org/apache/log4j/net/SocketReceiver.java   24 Jun 2003 
>08:21:52 -0000      1.5
>+++ src/java/org/apache/log4j/net/SocketReceiver.java   17 Oct 2003 
>07:39:26 -0000
>@@ -305,8 +305,8 @@
>    public Vector getConnectedSocketDetails() {
>      Vector details = new Vector(socketList.size());
>
>-    for (Enumeration enum = socketList.elements(); enum.hasMoreElements();) {
>-      Socket socket = (Socket) enum.nextElement();
>+    for (Enumeration e = socketList.elements(); e.hasMoreElements();) {
>+      Socket socket = (Socket) e.nextElement();
>        details.add(
>          new SocketDetail(socket, (SocketNode) socketMap.get(socket)));
>      }
>Index: src/java/org/apache/log4j/test/Finalize.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/test/Finalize.java,v
>retrieving revision 1.4
>diff -u -r1.4 Finalize.java
>--- src/java/org/apache/log4j/test/Finalize.java        5 May 2003 
>20:42:58 -0000       1.4
>+++ src/java/org/apache/log4j/test/Finalize.java        17 Oct 2003 
>07:39:27 -0000
>@@ -69,9 +69,9 @@
>
>    static
>    void foo(Category cat) {
>-    Enumeration enum = cat.getAllAppenders();
>-    while(enum != null && enum.hasMoreElements()) {
>-      ((org.apache.log4j.Appender) enum.nextElement()).close();
>+    for (Enumeration e = cat.getAllAppenders();
>+        e != null && e.hasMoreElements();) {
>+      ((org.apache.log4j.Appender) e.nextElement()).close();
>      }
>    }
>
>Index: src/java/org/apache/log4j/xml/DOMConfigurator.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/xml/DOMConfigurator.java,v
>retrieving revision 1.59
>diff -u -r1.59 DOMConfigurator.java
>--- src/java/org/apache/log4j/xml/DOMConfigurator.java  17 Sep 2003 
>17:02:52 -0000      1.59
>+++ src/java/org/apache/log4j/xml/DOMConfigurator.java  17 Oct 2003 
>07:39:28 -0000
>@@ -61,13 +61,13 @@
>
>  import org.xml.sax.InputSource;
>
>-import java.io.FileInputStream;
>-import java.io.IOException;
>+import java.io.File;
>  import java.io.InputStream;
>  import java.io.Reader;
>
>  import java.lang.reflect.Method;
>
>+import java.net.MalformedURLException;
>  import java.net.URL;
>
>  import java.util.*;
>@@ -102,6 +102,7 @@
>     @author Christopher Taylor
>     @author Ceki G&uuml;lc&uuml;
>     @author Anders Kristensen
>+   @author Timothy Emiola
>
>     @since 0.8.3 */
>  public class DOMConfigurator implements Configurator {
>@@ -138,6 +139,7 @@
>    static final String EMPTY_STR = "";
>    static final Class[] ONE_STRING_PARAM = new Class[] { String.class };
>    static final String dbfKey = "javax.xml.parsers.DocumentBuilderFactory";
>+
>
>    // key: appenderName, value: appender
>    Hashtable appenderBag;
>@@ -714,30 +716,15 @@
>    }
>
>    public void doConfigure(String filename, LoggerRepository repository) {
>-    FileInputStream fis = null;
>-
>-    try {
>-      fis = new FileInputStream(filename);
>-      doConfigure(fis, repository);
>-    } catch (IOException e) {
>-      LogLog.error("Could not open [" + filename + "].", e);
>-    } finally {
>-      if (fis != null) {
>-        try {
>-          fis.close();
>-        } catch (java.io.IOException e) {
>-          LogLog.error("Could not close [" + filename + "].", e);
>-        }
>-      }
>-    }
>+       try {
>+               doConfigure(new File(filename).toURL(), 
>repository);
>+       } catch (MalformedURLException e) {
>+               LogLog.error("Could not open [" + filename + "].", 
>e);
>+       }
>    }
>
>    public void doConfigure(URL url, LoggerRepository repository) {
>-    try {
>-      doConfigure(url.openStream(), repository);
>-    } catch (IOException e) {
>-      LogLog.error("Could not open [" + url + "].", e);
>-    }
>+      doConfigure(new InputSource(url.getPath()), repository);
>    }
>
>    /**
>@@ -791,15 +778,18 @@
>        DocumentBuilder docBuilder = dbf.newDocumentBuilder();
>        docBuilder.setErrorHandler(new SAXErrorHandler());
>        docBuilder.setEntityResolver(new Log4jEntityResolver());
>-
>-      // we change the system ID to a valid URI so that Crimson won't
>-      // complain. Indeed, "log4j.dtd" alone is not a valid URI which
>-      // causes Crimson to barf. The Log4jEntityResolver only cares
>-      // about the "log4j.dtd" ending.
>-      inputSource.setSystemId("dummy://log4j.dtd");
>-
>+
>+      // Use the Log4J XML DTD SystemId if none is provided
>+      if (null == inputSource.getSystemId())
>+      {
>+       LogLog.warn(
>+            "No systemId found for the XML source, using "
>+            + Log4jEntityResolver.DTD_URL);
>+       inputSource.setSystemId(Log4jEntityResolver.DTD_URL.toString());
>+      }
>        Document doc = docBuilder.parse(inputSource);
>        parse(doc.getDocumentElement());
>+
>      } catch (Exception e) {
>        // I know this is miserable...
>        LogLog.error("Could not parse input source [" + inputSource + 
> "].", e);
>Index: src/java/org/apache/log4j/xml/Log4jEntityResolver.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/src/java/org/apache/log4j/xml/Log4jEntityResolver.java,v
>retrieving revision 1.3
>diff -u -r1.3 Log4jEntityResolver.java
>--- src/java/org/apache/log4j/xml/Log4jEntityResolver.java      5 May 2003 
>20:42:58 -0000       1.3
>+++ src/java/org/apache/log4j/xml/Log4jEntityResolver.java      17 Oct 
>2003 07:39:28 -0000
>@@ -7,7 +7,8 @@
>
>  package org.apache.log4j.xml;
>
>-import java.io.InputStream;
>+import java.net.URL;
>+
>  import org.xml.sax.EntityResolver;
>  import org.xml.sax.InputSource;
>
>@@ -19,24 +20,28 @@
>   * file.
>   *
>   * @author Paul Austin
>- * */
>+ * @author Timothy Emiola
>+ */
>  public class Log4jEntityResolver implements EntityResolver {
>
>    public InputSource resolveEntity (String publicId, String systemId) {
>-    System.err.println("piblicID: ["+publicId+"]");
>-    System.err.println("systemId: ["+systemId+"]");
>-    if (systemId.endsWith("log4j.dtd")) {
>-      Class clazz = getClass();
>-      InputStream in = 
>clazz.getResourceAsStream("/org/apache/log4j/xml/log4j.dtd");
>-      if (in == null) {
>-       LogLog.error("Could not find [log4j.dtd]. Used [" + 
>clazz.getClassLoader()
>-                    + "] class loader in the search.");
>-       return null;
>+    LogLog.debug("publicID: [" + publicId + "]");
>+       LogLog.debug("systemId: [" + systemId + "]");
>+       LogLog.debug("DTD URL " + DTD_URL);
>+    if (systemId.endsWith(DTD_NAME)) {
>+      if (null == DTD_URL) {
>+           LogLog.error("Could not find [" + DTD_NAME + "]. Used [" + 
>this.getClass().getClassLoader()
>+                      + "] class loader in the search.");
>+           return null;
>        } else {
>-       return new InputSource(in);
>+           return new InputSource(DTD_URL.toString());
>        }
>      } else {
>        return null;
>      }
>    }
>+
>+  static final String DTD_NAME = "log4j.dtd";
>+  static final URL DTD_URL = Log4jEntityResolver.class.getResource(DTD_NAME);
>+
>  }
>Index: tests/input/xml/ExternalEntityTestCase.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCase.xml
>diff -N tests/input/xml/ExternalEntityTestCase.xml
>--- /dev/null   1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCase.xml  17 Oct 2003 07:39:29 -0000
>@@ -0,0 +1,23 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" [
>+<!ENTITY fragment1 SYSTEM "ExternalEntityTestCaseFragment1.xml">
>+<!ENTITY fragment2 SYSTEM "ExternalEntityTestCaseFragment2.xml">
>+]>
>+
>+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
>+
>+  &fragment1;
>+  &fragment2;
>+
>+  <logger name="org.apache.log4j.xml">
>+    <level value="debug" />
>+    <appender-ref ref="A1" />
>+  </logger>
>+
>+  <root>
>+    <priority value ="debug" />
>+    <appender-ref ref="A1" />
>+    <appender-ref ref="A2" />
>+  </root>
>+
>+</log4j:configuration>
>Index: tests/input/xml/ExternalEntityTestCaseFragment1.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCaseFragment1.xml
>diff -N tests/input/xml/ExternalEntityTestCaseFragment1.xml
>--- /dev/null   1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCaseFragment1.xml 17 Oct 2003 
>07:39:29 -0000
>@@ -0,0 +1,12 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+
>+  <appender name="A1" class="org.apache.log4j.FileAppender">
>+
>+    <param name="File"   value="output/temp.A1" />
>+    <param name="Append" value="false" />
>+
>+    <layout class="org.apache.log4j.PatternLayout">
>+      <param name="ConversionPattern" value="%-5p %c{2} - %m%n"/>
>+    </layout>
>+  </appender>
>+
>Index: tests/input/xml/ExternalEntityTestCaseFragment2.xml
>===================================================================
>RCS file: tests/input/xml/ExternalEntityTestCaseFragment2.xml
>diff -N tests/input/xml/ExternalEntityTestCaseFragment2.xml
>--- /dev/null   1 Jan 1970 00:00:00 -0000
>+++ tests/input/xml/ExternalEntityTestCaseFragment2.xml 17 Oct 2003 
>07:39:29 -0000
>@@ -0,0 +1,10 @@
>+<?xml version="1.0" encoding="UTF-8" ?>
>+
>+  <appender name="A2" class="org.apache.log4j.FileAppender">
>+    <param name="File" value="output/temp.A2" />
>+    <param name="Append" value="false" />
>+    <layout class="org.apache.log4j.TTCCLayout">
>+      <param name="DateFormat" value="ISO8601" />
>+    </layout>
>+  </appender>
>+
>Index: tests/src/java/org/apache/log4j/xml/DOMTestCase.java
>===================================================================
>RCS file: 
>/home/cvspublic/jakarta-log4j/tests/src/java/org/apache/log4j/xml/DOMTestCase.java,v
>retrieving revision 1.8
>diff -u -r1.8 DOMTestCase.java
>--- tests/src/java/org/apache/log4j/xml/DOMTestCase.java        17 Sep 
>2003 17:02:52 -0000      1.8
>+++ tests/src/java/org/apache/log4j/xml/DOMTestCase.java        17 Oct 
>2003 07:39:29 -0000
>@@ -50,8 +50,9 @@
>      logger = Logger.getLogger(DOMTestCase.class);
>    }
>
>-  public void tearDown() {
>+  public void tearDown() {
>      root.getLoggerRepository().resetConfiguration();
>+       root.getLoggerRepository().shutdown();
>    }
>
>    public void test1() throws Exception {
>@@ -74,6 +75,28 @@
>      assertTrue(Compare.compare(FILTERED_A1, "witness/dom.A1.1"));
>      assertTrue(Compare.compare(FILTERED_A2, "witness/dom.A2.1"));
>    }
>+
>+  public void testExternalEntitys() throws Exception {
>+       DOMConfigurator.configure("input/xml/ExternalEntityTestCase.xml");
>+       common();
>+
>+       ControlFilter cf1 = new ControlFilter(new String[]{TEST1_1A_PAT, 
>TEST1_1B_PAT,
>+                                                  EXCEPTION1, EXCEPTION2, 
>EXCEPTION3});
>+
>+       ControlFilter cf2 = new ControlFilter(new String[]{TEST1_2_PAT,
>+                                                  EXCEPTION1, EXCEPTION2, 
>EXCEPTION3});
>+
>+       Transformer.transform(TEMP_A1, FILTERED_A1, new Filter[] {cf1,
>+                                                       new 
>LineNumberFilter(), new SunReflectFilter(), new JunitTestRunnerFilter()});
>+
>+       Transformer.transform(TEMP_A2, FILTERED_A2, new Filter[] {cf2,
>+ 
>new LineNumberFilter(), new ISO8601Filter(),
>+ 
>new SunReflectFilter(), new JunitTestRunnerFilter()});
>+
>+       assertTrue(Compare.compare(FILTERED_A1, "witness/ent.A1.1"));
>+       assertTrue(Compare.compare(FILTERED_A2, "witness/ent.A2.1"));
>+  }
>+
>
>    void common() {
>      int i = -1;
>@@ -105,6 +128,7 @@
>    public static Test suite() {
>      TestSuite suite = new TestSuite();
>      suite.addTest(new DOMTestCase("test1"));
>+       suite.addTest(new DOMTestCase("testExternalEntitys"));
>      return suite;
>    }
>
>Index: tests/witness/ent.A1.1
>===================================================================
>RCS file: tests/witness/ent.A1.1
>diff -N tests/witness/ent.A1.1
>--- /dev/null   1 Jan 1970 00:00:00 -0000
>+++ tests/witness/ent.A1.1      17 Oct 2003 07:39:29 -0000
>@@ -0,0 +1,93 @@
>+DEBUG xml.DOMTestCase - Message 0
>+DEBUG xml.DOMTestCase - Message 0
>+DEBUG root - Message 0
>+INFO  xml.DOMTestCase - Message 1
>+INFO  xml.DOMTestCase - Message 1
>+INFO  root - Message 1
>+WARN  xml.DOMTestCase - Message 2
>+WARN  xml.DOMTestCase - Message 2
>+WARN  root - Message 2
>+ERROR xml.DOMTestCase - Message 3
>+ERROR xml.DOMTestCase - Message 3
>+ERROR root - Message 3
>+FATAL xml.DOMTestCase - Message 4
>+FATAL xml.DOMTestCase - Message 4
>+FATAL root - Message 4
>+DEBUG xml.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+DEBUG xml.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+DEBUG root - Message 5
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ERROR xml.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ERROR xml.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ERROR root - Message 6
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>Index: tests/witness/ent.A2.1
>===================================================================
>RCS file: tests/witness/ent.A2.1
>diff -N tests/witness/ent.A2.1
>--- /dev/null   1 Jan 1970 00:00:00 -0000
>+++ tests/witness/ent.A2.1      17 Oct 2003 07:39:30 -0000
>@@ -0,0 +1,62 @@
>+ [main] DEBUG org.apache.log4j.xml.DOMTestCase - Message 0
>+ [main] DEBUG root - Message 0
>+ [main] INFO org.apache.log4j.xml.DOMTestCase - Message 1
>+ [main] INFO root - Message 1
>+ [main] WARN org.apache.log4j.xml.DOMTestCase - Message 2
>+ [main] WARN root - Message 2
>+ [main] ERROR org.apache.log4j.xml.DOMTestCase - Message 3
>+ [main] ERROR root - Message 3
>+ [main] FATAL org.apache.log4j.xml.DOMTestCase - Message 4
>+ [main] FATAL root - Message 4
>+ [main] DEBUG org.apache.log4j.xml.DOMTestCase - Message 5
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ [main] DEBUG root - Message 5
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ [main] ERROR org.apache.log4j.xml.DOMTestCase - Message 6
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>+ [main] ERROR root - Message 6
>+java.lang.Exception: Just testing
>+       at org.apache.log4j.xml.DOMTestCase.common(X)
>+       at org.apache.log4j.xml.DOMTestCase.testExternalEntitys(X)
>+       at java.lang.reflect.Method.invoke(X)
>+       at junit.framework.TestCase.runTest(X)
>+       at junit.framework.TestCase.runBare(X)
>+       at junit.framework.TestResult$1.protect(X)
>+       at junit.framework.TestResult.runProtected(X)
>+       at junit.framework.TestResult.run(X)
>+       at junit.framework.TestCase.run(X)
>+       at junit.framework.TestSuite.runTest(X)
>+       at junit.framework.TestSuite.run(X)
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: log4j-dev-help@jakarta.apache.org

-- 
Ceki Gülcü

      For log4j documentation consider "The complete log4j manual"
      ISBN: 2970036908 http://www.qos.ch/shop/products/clm_t.jsp

      import org.apache.Facetime;
      ApacheCon US 2003, 18-21 November http://apachecon.com/



---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: log4j-dev-help@jakarta.apache.org