The following commit notification was rejected due to its large size. I am sending it manually for your info/reference.


ceki 2003/03/18 05:33:33

Modified: src/java/org/apache/log4j/plugins Plugin.java
PluginRegistry.java Receiver.java
PluginSkeleton.java
src/java/org/apache/log4j/test AsyncAppenderTest.java
ConfigurationFileParsing.java PatternTest.java
Shallow.java ShortSocketServer.java
src/java/org/apache/log4j/xml/test DOMTest.java
src/java/org/apache/log4j/spi LoggingEvent.java
src/java/org/apache/log4j Appender.java
AppenderSkeleton.java
src/java/org/apache/log4j/chainsaw MyTableModel.java
LoadXMLAction.java Main.java ChainsawAppender.java
Log4JConfigurationFinder.java ChainsawViewer.java
MyTableColumnModel.java PreferencesDialog.java
DetailPanel.java RecentFilesMenu.java Start.java
XMLFileHandler.java DefaultViewer.java
src/java/org/apache/log4j/net SocketNode.java
SMTPAppender.java
src/java/org/apache/log4j/net/test SMTPMin.java
src/java/org/apache/log4j/jmx LoggerDynamicMBean.java
Log:
Eliminated deprecated code. Performed some formatting with Jalopy. Cosmetic changes only.


Revision Changes Path
1.4 +47 -4 jakarta-log4j/src/java/org/apache/log4j/plugins/Plugin.java


Index: Plugin.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/plugins/Plugin.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Plugin.java 20 Feb 2003 07:18:32 -0000 1.3
+++ Plugin.java 18 Mar 2003 13:33:30 -0000 1.4
@@ -1,9 +1,52 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
+
package org.apache.log4j.plugins;


import org.apache.log4j.spi.LoggerRepository;



1.5 +47 -4 jakarta-log4j/src/java/org/apache/log4j/plugins/PluginRegistry.java

Index: PluginRegistry.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/plugins/PluginRegistry.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PluginRegistry.java 20 Feb 2003 07:18:32 -0000 1.4
+++ PluginRegistry.java 18 Mar 2003 13:33:30 -0000 1.5
@@ -1,9 +1,52 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
+
package org.apache.log4j.plugins;


import org.apache.log4j.LogManager;



1.4 +49 -6 jakarta-log4j/src/java/org/apache/log4j/plugins/Receiver.java

Index: Receiver.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/plugins/Receiver.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Receiver.java 20 Feb 2003 07:18:32 -0000 1.3
+++ Receiver.java 18 Mar 2003 13:33:30 -0000 1.4
@@ -1,9 +1,52 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
+
package org.apache.log4j.plugins;


   import org.apache.log4j.Logger;
  @@ -46,8 +89,8 @@
   public abstract class Receiver extends PluginSkeleton {
     /**
       Posts the logging event to a logger in the configured logger
  -    repository.
  -
  +    repository.
  +
       @param event the log event to post to the local log4j environment. */
     public void doPost(LoggingEvent event) {
       // get the "local" logger for this event from the



1.5 +56 -13 jakarta-log4j/src/java/org/apache/log4j/plugins/PluginSkeleton.java

Index: PluginSkeleton.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/plugins/PluginSkeleton.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PluginSkeleton.java 20 Feb 2003 07:18:32 -0000 1.4
+++ PluginSkeleton.java 18 Mar 2003 13:33:30 -0000 1.5
@@ -1,9 +1,52 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */
+
package org.apache.log4j.plugins;


   import org.apache.log4j.spi.LoggerRepository;
  @@ -28,29 +71,29 @@
   public abstract class PluginSkeleton implements Plugin {
     /** Name of this plugin. */
     protected String name = "";
  -
  +
     /** Repository this plugin is attached to. */
     protected LoggerRepository repository;

     /**
  -    Gets the name of the plugin.
  -
  +    Gets the name of the plugin.
  +
       @return String the name of the plugin. */
     public String getName() {
       return name;
     }

     /**
  -    Sets the name of the plugin.
  -
  +    Sets the name of the plugin.
  +
       @param name the name of the plugin to set. */
     public void setName(String name) {
       this.name = name;
     }

/**
- Gets the logger repository for this plugin.
-
+ Gets the logger repository for this plugin.
+
@return LoggerRepository the logger repository this plugin will affect. */
public LoggerRepository getLoggerRepository() {
return repository;
@@ -58,8 +101,8 @@


/**
Sets the logger repository used by this plugin. This
- repository will be used by the plugin functionality.
-
+ repository will be used by the plugin functionality.
+
@param repository the logger repository that this plugin should affect. */
public void setLoggerRepository(LoggerRepository repository) {
this.repository = repository;




1.3 +77 -35 jakarta-log4j/src/java/org/apache/log4j/test/AsyncAppenderTest.java

Index: AsyncAppenderTest.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/AsyncAppenderTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AsyncAppenderTest.java 9 Oct 2002 22:50:06 -0000 1.2
+++ AsyncAppenderTest.java 18 Mar 2003 13:33:30 -0000 1.3
@@ -1,66 +1,108 @@
-/* Copyright (C) The Apache Software Foundation. All rights reserved.
+/*
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */


package org.apache.log4j.test;

   import org.apache.log4j.Category;
  +import org.apache.log4j.LogManager;
   import org.apache.log4j.xml.DOMConfigurator;

  +
   /**
  -   Test the coordination of the AsyncAppender with its Dispatcher.
  -   @author  Ceki G&uuml;lc&uuml;
  -*/
  + * Test the coordination of the AsyncAppender with its Dispatcher.
  + *
  + * @author Ceki G&uuml;lc&uuml;
  + */
   public class AsyncAppenderTest {
  -
     static Category cat = Category.getInstance(AsyncAppenderTest.class);
     static int delayBeforeClose;
  -
  -
  -  public
  -  static
  -  void main(String argv[]) {

  -    if(argv.length == 2)
  +  public static void main(String[] argv) {
  +    if (argv.length == 2) {
         init(argv[0], argv[1]);
  -    else
  +    } else {
         usage("Wrong number of arguments.");
  +    }
  +
       test();
     }

  -
  -  static
  -  void usage(String msg) {
  +  static void usage(String msg) {
       System.err.println(msg);
  -    System.err.println( "Usage: java "+ Shallow.class.getName() +
  -                     "configFile");
  +    System.err.println(
  +      "Usage: java " + Shallow.class.getName() + "configFile");
       System.exit(1);
     }

  -  static
  -  void init(String configFile, String delayBeforeCloseStr) {
  +  static void init(String configFile, String delayBeforeCloseStr) {
       DOMConfigurator.configure(configFile);
  +
       try {
  -      delayBeforeClose   = Integer.parseInt(delayBeforeCloseStr);
  -    } catch(java.lang.NumberFormatException e) {
  +      delayBeforeClose = Integer.parseInt(delayBeforeCloseStr);
  +    } catch (java.lang.NumberFormatException e) {
         e.printStackTrace();
  -      usage("Could not convert ["+delayBeforeCloseStr+"] to Integer.");
  -    }
  +      usage("Could not convert [" + delayBeforeCloseStr + "] to Integer.");
  +    }
     }

  +  static void test() {
  +    Category root = Category.getRoot();

  -  static
  -  void test() {
  -    Category root = Category.getRoot();
  -    for(int i = 0; i < 100; i++) {
  -      root.debug("Message " + i);
  +    for (int i = 0; i < 100; i++) {
  +      root.debug("Message " + i);
       }

- try{Thread.currentThread().sleep(delayBeforeClose);}catch(Exception e){}
- Category.shutdown();
- }
+ try {
+ Thread.currentThread().sleep(delayBeforeClose);
+ } catch (Exception e) {
+ }


  -
  +    LogManager.shutdown();
  +  }
   }



1.6 +59 -23 jakarta-log4j/src/java/org/apache/log4j/test/ConfigurationFileParsing.java

Index: ConfigurationFileParsing.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/ConfigurationFileParsing.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ConfigurationFileParsing.java 9 Oct 2002 22:50:06 -0000 1.5
+++ ConfigurationFileParsing.java 18 Mar 2003 13:33:30 -0000 1.6
@@ -1,44 +1,80 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */


  -package org.apache.log4j.test;
  +package org.apache.log4j.test;

  -import org.apache.log4j.PropertyConfigurator;
   import org.apache.log4j.Category;
  +import org.apache.log4j.LogManager;
   import org.apache.log4j.NDC;
  +import org.apache.log4j.PropertyConfigurator;

  -public class ConfigurationFileParsing {
  -
  -  public
  -  static
  -  void main(String argv[]) {

  -    if(argv.length == 1) {
  +public class ConfigurationFileParsing {
  +  public static void main(String[] argv) {
  +    if (argv.length == 1) {
         NDC.push("testing");
         PropertyConfigurator.configure(argv[0]);
  +
         Category root = Category.getRoot();
         root.debug("Message 1");
  -      root.debug("Message 2");
  +      root.debug("Message 2");
         NDC.pop();
  -      Category.shutdown();
  -    }
  -    else {
  +      LogManager.shutdown();
  +    } else {
         Usage("Wrong number of arguments.");
       }
  -
     }

- static
- void Usage(String msg) {
+ static void Usage(String msg) {
System.err.println(msg);
- System.err.println("Usage: java "+ConfigurationFileParsing.class.getName()
- + " fileName");
+ System.err.println(
+ "Usage: java " + ConfigurationFileParsing.class.getName() + " fileName");
System.exit(1);
}
-
-
}




1.5 +2 -1 jakarta-log4j/src/java/org/apache/log4j/test/PatternTest.java

Index: PatternTest.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/PatternTest.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PatternTest.java 13 Feb 2001 17:37:31 -0000 1.4
+++ PatternTest.java 18 Mar 2003 13:33:30 -0000 1.5
@@ -1,6 +1,7 @@


package org.apache.log4j.test;

  +import org.apache.log4j.LogManager;
   import org.apache.log4j.PropertyConfigurator;
   import org.apache.log4j.Category;
   import org.apache.log4j.Priority;
  @@ -73,6 +74,6 @@
       CAT.log(Priority.FATAL, "Message " + ++i, e);
       root.log(Priority.FATAL, "Message " + i, e);

  -    Category.shutdown();
  +    LogManager.shutdown();
     }
   }



1.9 +8 -7 jakarta-log4j/src/java/org/apache/log4j/test/Shallow.java

Index: Shallow.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/Shallow.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Shallow.java 24 Apr 2002 01:16:11 -0000 1.8
+++ Shallow.java 18 Mar 2003 13:33:30 -0000 1.9
@@ -9,8 +9,9 @@
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
import org.apache.log4j.Category;
+import org.apache.log4j.LogManager;
import org.apache.log4j.NDC;
-import org.apache.log4j.Priority;
+import org.apache.log4j.Level;
/**
This class is a shallow test of the various appenders and
layouts. It also tests their reading of the configuration file.
@@ -62,8 +63,8 @@
cat.error("Message " + ++i);
root.error("Message " + i);


  -    cat.log(Priority.FATAL, "Message " + ++i);
  -    root.log(Priority.FATAL, "Message " + i);
  +    cat.log(Level.FATAL, "Message " + ++i);
  +    root.log(Level.FATAL, "Message " + i);

       Exception e = new Exception("Just testing");
       cat.debug("Message " + ++i, e);
  @@ -78,14 +79,14 @@
       cat.error("Message " + ++i, e);
       root.error("Message " + i, e);

  -    cat.log(Priority.FATAL, "Message " + ++i, e);
  -    root.log(Priority.FATAL, "Message " + i, e);
  +    cat.log(Level.FATAL, "Message " + ++i, e);
  +    root.log(Level.FATAL, "Message " + i, e);

  -    root.setPriority(Priority.FATAL);
  +    root.setLevel(Level.FATAL);

       // It is always a good idea to call this method when exiting an
       // application.
  -    Category.shutdown();
  +    LogManager.shutdown();
     }





1.9 +2 -1 jakarta-log4j/src/java/org/apache/log4j/test/ShortSocketServer.java

Index: ShortSocketServer.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/ShortSocketServer.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- ShortSocketServer.java 24 Apr 2002 01:16:11 -0000 1.8
+++ ShortSocketServer.java 18 Mar 2003 13:33:30 -0000 1.9
@@ -6,6 +6,7 @@
import java.net.ServerSocket;


import org.apache.log4j.Category;
+import org.apache.log4j.LogManager;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.helpers.LogLog;
import org.apache.log4j.net.SocketNode;
@@ -35,7 +36,7 @@
Socket socket = serverSocket.accept();
LogLog.debug("Connected to client at " + socket.getInetAddress());
LogLog.debug("Starting new socket node.");
- SocketNode sn = new SocketNode(socket, Category.getDefaultHierarchy());
+ SocketNode sn = new SocketNode(socket, LogManager.getLoggerRepository());
Thread t = new Thread(sn);
t.start();
t.join();




1.6 +74 -35 jakarta-log4j/src/java/org/apache/log4j/xml/test/DOMTest.java

Index: DOMTest.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/xml/test/DOMTest.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- DOMTest.java 27 Jun 2001 21:34:41 -0000 1.5
+++ DOMTest.java 18 Mar 2003 13:33:31 -0000 1.6
@@ -1,79 +1,118 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.APL file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */


package org.apache.log4j.xml.test;

  -import org.apache.log4j.xml.DOMConfigurator;
   import org.apache.log4j.Category;
  +import org.apache.log4j.LogManager;
   import org.apache.log4j.Priority;
  +import org.apache.log4j.xml.DOMConfigurator;
  +
  +
   //import org.apache.log4j.xml.examples.ReportParserError;
   //import org.apache.xerces.parsers.DOMParser;
   //import java.io.FileInputStream;
   //import org.xml.sax.InputSource;

   /**
  -   @author Ceki G&uuml;lc&uuml;
  -*/
  + * @author Ceki G&uuml;lc&uuml;
  + */
   public class DOMTest {
     static Category cat = Category.getInstance(DOMTest.class.getName());

  -
  -  public
  -  static
  -  void main(String argv[]) {
  -
  -    if(argv.length == 1)
  +  public static void main(String[] argv) {
  +    if (argv.length == 1) {
         init(argv[0]);
  -    else
  +    } else {
         Usage("Wrong number of arguments.");
  +    }

       test();
     }

  -  static
  -  void Usage(String msg) {
  +  static void Usage(String msg) {
       System.err.println(msg);
  -    System.err.println( "Usage: java " + DOMTest.class.getName() +
  -                     " configFile");
  +    System.err.println(
  +      "Usage: java " + DOMTest.class.getName() + " configFile");
       System.exit(1);
     }
  -
  -  static
  -  void init(String configFile) {
  +
  +  static void init(String configFile) {
       DOMConfigurator.configure(configFile);
     }

  -  static
  -  void test() {
  +  static void test() {
       int i = -1;
       Category root = Category.getRoot();
  -
  +
       cat.debug("Message " + ++i);
  -    root.debug("Message " + i);
  +    root.debug("Message " + i);

  -    cat.info ("Message " + ++i);
  -    root.info("Message " + i);
  +    cat.info("Message " + ++i);
  +    root.info("Message " + i);

  -    cat.warn ("Message " + ++i);
  -    root.warn("Message " + i);
  +    cat.warn("Message " + ++i);
  +    root.warn("Message " + i);

       cat.error("Message " + ++i);
       root.error("Message " + i);
  -
  +
       cat.log(Priority.FATAL, "Message " + ++i);
  -    root.log(Priority.FATAL, "Message " + i);
  -
  +    root.log(Priority.FATAL, "Message " + i);
  +
       Exception e = new Exception("Just testing");
       cat.debug("Message " + ++i, e);
       root.debug("Message " + i, e);
  -
  +
       cat.error("Message " + ++i, e);
  -    root.error("Message " + i, e);
  +    root.error("Message " + i, e);

  -    Category.shutdown();
  +    LogManager.shutdown();
     }
   }



1.36 +280 -175 jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java

Index: LoggingEvent.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -r1.35 -r1.36
--- LoggingEvent.java 18 Feb 2003 19:58:09 -0000 1.35
+++ LoggingEvent.java 18 Mar 2003 13:33:31 -0000 1.36
@@ -1,181 +1,260 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */


package org.apache.log4j.spi;

   import org.apache.log4j.*;
  -
  -import org.apache.log4j.helpers.LogLog;
   import org.apache.log4j.helpers.Loader;
  -import java.lang.reflect.Method;
  -import java.io.ObjectOutputStream;
  +import org.apache.log4j.helpers.LogLog;
  +
   import java.io.ObjectInputStream;
  +import java.io.ObjectOutputStream;
  +
  +import java.lang.reflect.Method;
  +
   import java.util.Hashtable;

  +
   // Contributors:   Nelson Minar <[EMAIL PROTECTED]>
   //                 Wolf Siberski
   //                 Anders Kristensen <[EMAIL PROTECTED]>

/**
- The internal representation of logging events. When an affirmative
- decision is made to log then a <code>LoggingEvent</code> instance
- is created. This instance is passed around to the different log4j
- components.
-
- <p>This class is of concern to those wishing to extend log4j.
-
- @author Ceki G&uuml;lc&uuml;
- @author James P. Cakalic
-
- @since 0.8.2 */
+ * The internal representation of logging events. When an affirmative decision
+ * is made to log then a <code>LoggingEvent</code> instance is created. This
+ * instance is passed around to the different log4j components.
+ *
+ * <p>
+ * This class is of concern to those wishing to extend log4j.
+ * </p>
+ *
+ * @author Ceki G&uuml;lc&uuml;
+ * @author James P. Cakalic
+ *
+ * @since 0.8.2
+ */
public class LoggingEvent implements java.io.Serializable {
-
private static long startTime = System.currentTimeMillis();


- /** Fully qualified name of the calling category class. */
- transient public final String fqnOfCategoryClass;
+ // Serialization
+ static final long serialVersionUID = -868428216207166145L;
+ static final Integer[] PARAM_ARRAY = new Integer[1];
+ static final String TO_LEVEL = "toLevel";
+ static final Class[] TO_LEVEL_PARAMS = new Class[] { int.class };
+ static final Hashtable methodCache = new Hashtable(3); // use a tiny table


- /**
- * The category of the logging event. This field is not serialized
- * for performance reasons.
- *
- * <p>It is set by the LoggingEvent constructor or set by a remote
- * entity after deserialization.
+ /**
+ * Fully qualified name of the calling category class.
+ */
+ public final transient String fqnOfCategoryClass;
+
+ /**
+ * The category of the logging event. This field is not serialized for
+ * performance reasons.
*
- * @deprecated This field will be marked as private or be completely
- * removed in future releases. Please do not use it.
- * */
- transient private Category logger;
-
- /**
- * <p>The category (logger) name.
- *
- * @deprecated This field will be marked as private in future
- * releases. Please do not access it directly. Use the [EMAIL PROTECTED]
- * #getLoggerName} method instead.
-
- * */
- final public String categoryName;
-
- /**
- * Level of logging event. Level cannot be serializable because it
- * is a flyweight. Due to its special seralization it cannot be
- * declared final either.
- *
- * <p> This field should not be accessed directly. You shoud use the
- * [EMAIL PROTECTED] #getLevel} method instead.
+ * <p>
+ * It is set by the LoggingEvent constructor or set by a remote entity after
+ * deserialization.
+ * </p>
*
- * @deprecated This field will be marked as private in future
- * releases. Please do not access it directly. Use the [EMAIL PROTECTED]
+ * @deprecated This field will be marked as private or be completely removed
+ * in future releases. Please do not use it.
+ */
+ private transient Category logger;
+
+ /**
+ * <p>
+ * The category (logger) name.
+ * </p>
+ *
+ * @deprecated This field will be marked as private in future releases.
+ * Please do not access it directly. Use the [EMAIL PROTECTED]
+ * #getLoggerName} method instead.
+ */
+ public final String categoryName;
+
+ /**
+ * Level of logging event. Level cannot be serializable because it is a
+ * flyweight. Due to its special seralization it cannot be declared final
+ * either.
+ *
+ * <p>
+ * This field should not be accessed directly. You shoud use the [EMAIL PROTECTED]
* #getLevel} method instead.
- * */
- transient public Priority level;
+ * </p>
+ *
+ * @deprecated This field will be marked as private in future releases.
+ * Please do not access it directly. Use the [EMAIL PROTECTED] #getLevel}
+ * method instead.
+ */
+ public transient Priority level;


  -  /** The nested diagnostic context (NDC) of logging event. */
  +  /**
  +   * The nested diagnostic context (NDC) of logging event.
  +   */
     private String ndc;

  -  /** The mapped diagnostic context (MDC) of logging event. */
  +  /**
  +   * The mapped diagnostic context (MDC) of logging event.
  +   */
     private Hashtable mdcCopy;

  -  /** A map of String keys and String values.
  -      @since 1.3
  +  /**
  +   * A map of String keys and String values.
  +   *
  +   * @since 1.3
      */
     private Hashtable properties;

- /** Have we tried to do an NDC lookup? If we did, there is no need
- * to do it again. Note that its value is always false when
- * serialized. Thus, a receiving SocketNode will never use it's own
- * (incorrect) NDC. See also writeObject method. */
+ /**
+ * Have we tried to do an NDC lookup? If we did, there is no need to do it
+ * again. Note that its value is always false when serialized. Thus, a
+ * receiving SocketNode will never use it's own (incorrect) NDC. See also
+ * writeObject method.
+ */
private boolean ndcLookupRequired = true;


- /** Have we tried to do an MDC lookup? If we did, there is no need
- * to do it again. Note that its value is always false when
- * serialized. See also the getMDC and getMDCCopy methods. */
+ /**
+ * Have we tried to do an MDC lookup? If we did, there is no need to do it
+ * again. Note that its value is always false when serialized. See also
+ * the getMDC and getMDCCopy methods.
+ */
private boolean mdcCopyLookupRequired = true;


  -  /** The application supplied message of logging event. */
  -  transient private Object message;
  +  /**
  +   * The application supplied message of logging event.
  +   */
  +  private transient Object message;

  -  /** The application supplied message rendered through the log4j
  -      objet rendering mechanism.*/
  +  /**
  +   * The application supplied message rendered through the log4j objet
  +   * rendering mechanism.
  +   */
     private String renderedMessage;

  -  /** The name of thread in which this logging event was generated. */
  +  /**
  +   * The name of thread in which this logging event was generated.
  +   */
     private String threadName;

  -  /** This
  -      variable contains information about this event's throwable
  -  */
  +  /**
  +   * This variable contains information about this event's throwable
  +   */
     private ThrowableInformation throwableInfo;

- /** The number of milliseconds elapsed from 1/1/1970 until logging event
- was created. */
+ /**
+ * The number of milliseconds elapsed from 1/1/1970 until logging event was
+ * created.
+ */
public final long timeStamp;
- /** Location information for the caller. */
- private LocationInfo locationInfo;
-
- // Serialization
- static final long serialVersionUID = -868428216207166145L;


- static final Integer[] PARAM_ARRAY = new Integer[1];
- static final String TO_LEVEL = "toLevel";
- static final Class[] TO_LEVEL_PARAMS = new Class[] { int.class };
- static final Hashtable methodCache = new Hashtable(3); // use a tiny table
+ /**
+ * Location information for the caller.
+ */
+ private LocationInfo locationInfo;


     /**
  -     Instantiate a LoggingEvent from the supplied parameters.
  -
  -     <p>Except [EMAIL PROTECTED] #timeStamp} all the other fields of
  -     <code>LoggingEvent</code> are filled when actually needed.
  -     <p>
  -     @param category The category of this event.
  -     @param level The level of this event.
  -     @param message  The message of this event.
  -     @param throwable The throwable of this event.  */
  +   * Instantiate a LoggingEvent from the supplied parameters.
  +   *
  +   * <p>
  +   * Except [EMAIL PROTECTED] #timeStamp} all the other fields of
  +   * <code>LoggingEvent</code> are filled when actually needed.
  +   * </p>
  +   *
  +   * <p></p>
  +   *
  +   * @param category The category of this event.
  +   * @param level The level of this event.
  +   * @param message The message of this event.
  +   * @param throwable The throwable of this event.
  +   */
     public LoggingEvent(
  -    String fqnOfCategoryClass,
  -    Category logger,
  -    Priority priority,
  -    Object message,
  -    Throwable throwable) {
  +    String fqnOfCategoryClass, Category logger, Priority priority,
  +    Object message, Throwable throwable) {
       this.fqnOfCategoryClass = fqnOfCategoryClass;
       this.logger = logger;
       this.categoryName = logger.getName();
       this.level = priority;
       this.message = message;
  +
       if (throwable != null) {
         this.throwableInfo = new ThrowableInformation(throwable);
       }
  +
       timeStamp = System.currentTimeMillis();
     }

     /**
  -     Instantiate a LoggingEvent from the supplied parameters.
  -
  -     <p>Except [EMAIL PROTECTED] #timeStamp} all the other fields of
  -     <code>LoggingEvent</code> are filled when actually needed.
  -     <p>
  -     @param category The category of this event.
  -     @param timeStamp the timestamp of this logging event
  -     @param level The level of this event.
  -     @param message  The message of this event.
  -     @param throwable The throwable of this event.  */
  +   * Instantiate a LoggingEvent from the supplied parameters.
  +   *
  +   * <p>
  +   * Except [EMAIL PROTECTED] #timeStamp} all the other fields of
  +   * <code>LoggingEvent</code> are filled when actually needed.
  +   * </p>
  +   *
  +   * <p></p>
  +   *
  +   * @param category The category of this event.
  +   * @param timeStamp the timestamp of this logging event
  +   * @param level The level of this event.
  +   * @param message The message of this event.
  +   * @param throwable The throwable of this event.
  +   */
     public LoggingEvent(
  -    String fqnOfCategoryClass,
  -    Category logger,
  -    long timeStamp,
  -    Priority priority,
  -    Object message,
  -    Throwable throwable) {
  +    String fqnOfCategoryClass, Category logger, long timeStamp,
  +    Priority priority, Object message, Throwable throwable) {
       this.fqnOfCategoryClass = fqnOfCategoryClass;
       this.logger = logger;
       this.categoryName = logger.getName();
       this.level = priority;
       this.message = message;
  +
       if (throwable != null) {
         this.throwableInfo = new ThrowableInformation(throwable);
       }
  @@ -184,40 +263,45 @@
     }

     /**
  -     Set the location information for this logging event. The collected
  -     information is cached for future use.
  +   * Set the location information for this logging event. The collected
  +   * information is cached for future use.
      */
     public LocationInfo getLocationInformation() {
       if (locationInfo == null) {
         locationInfo = new LocationInfo(new Throwable(), fqnOfCategoryClass);
       }
  +
       return locationInfo;
     }

     /**
      * Return the level of this event. Use this form instead of directly
  -   * accessing the <code>level</code> field.  */
  +   * accessing the <code>level</code> field.
  +   */
     public Level getLevel() {
       return (Level) level;
     }

     /**
      * Return the name of the logger. Use this form instead of directly
  -   * accessing the <code>categoryName</code> field.
  +   * accessing the <code>categoryName</code> field.
      */
     public String getLoggerName() {
       return categoryName;
     }

     /**
  -     Return the message for this logging event.
  -
  -     <p>Before serialization, the returned object is the message
  -     passed by the user to generate the logging event. After
  -     serialization, the returned value equals the String form of the
  -     message possibly after object rendering.
  -
  -     @since 1.1 */
  +   * Return the message for this logging event.
  +   *
  +   * <p>
  +   * Before serialization, the returned object is the message passed by the
  +   * user to generate the logging event. After serialization, the returned
  +   * value equals the String form of the message possibly after object
  +   * rendering.
  +   * </p>
  +   *
  +   * @since 1.1
  +   */
     public Object getMessage() {
       if (message != null) {
         return message;
  @@ -227,76 +311,86 @@
     }

/**
- * This method returns the NDC for this event. It will return the
- * correct content even if the event was generated in a different
- * thread or even on a different machine. The [EMAIL PROTECTED] NDC#get} method
- * should <em>never</em> be called directly. */
+ * This method returns the NDC for this event. It will return the correct
+ * content even if the event was generated in a different thread or even on
+ * a different machine. The [EMAIL PROTECTED] NDC#get} method should <em>never</em> be
+ * called directly.
+ */
public String getNDC() {
if (ndcLookupRequired) {
ndcLookupRequired = false;
ndc = NDC.get();
}
+
return ndc;
}


/**
- Returns the the context corresponding to the <code>key</code>
- parameter. If there is a local MDC copy, possibly because we are
- in a logging server or running inside AsyncAppender, then we
- search for the key in MDC copy, if a value is found it is
- returned. Otherwise, if the search in MDC copy returns a null
- result, then the current thread's <code>MDC</code> is used.
-
- <p>Note that <em>both</em> the local MDC copy and the current
- thread's MDC are searched.
-
- */
+ * Returns the the context corresponding to the <code>key</code> parameter.
+ * If there is a local MDC copy, possibly because we are in a logging
+ * server or running inside AsyncAppender, then we search for the key in
+ * MDC copy, if a value is found it is returned. Otherwise, if the search
+ * in MDC copy returns a null result, then the current thread's
+ * <code>MDC</code> is used.
+ *
+ * <p>
+ * Note that <em>both</em> the local MDC copy and the current thread's MDC
+ * are searched.
+ * </p>
+ */
public Object getMDC(String key) {
Object r;
+
// Note the mdcCopy is used if it exists. Otherwise we use the MDC
// that is associated with the thread.
if (mdcCopy != null) {
r = mdcCopy.get(key);
+
if (r != null) {
return r;
}
}
+
return MDC.get(key);
}


/**
- Obtain a copy of this thread's MDC prior to serialization or
- asynchronous logging.
- */
+ * Obtain a copy of this thread's MDC prior to serialization or asynchronous
+ * logging.
+ */
public void getMDCCopy() {
if (mdcCopyLookupRequired) {
mdcCopyLookupRequired = false;
+
// the clone call is required for asynchronous logging.
// See also bug #5932.
Hashtable t = (Hashtable) MDC.getContext();
+
if (t != null) {
mdcCopy = (Hashtable) t.clone();
}
}
}
-
+
/**
* Return a previously set property. The return value can be null.
+ *
* @since 1.3
- * */
+ */
public String getProperty(String key) {
- if(properties == null)
+ if (properties == null) {
return null;
- else
+ } else {
return (String) properties.get(key);
+ }
}


     public String getRenderedMessage() {
  -    if (renderedMessage == null && message != null) {
  -      if (message instanceof String)
  +    if ((renderedMessage == null) && (message != null)) {
  +      if (message instanceof String) {
           renderedMessage = (String) message;
  -      else {
  -        LoggerRepository repository = logger.getHierarchy();
  +      } else {
  +        LoggerRepository repository = logger.getLoggerRepository();

           if (repository instanceof RendererSupport) {
             RendererSupport rs = (RendererSupport) repository;
  @@ -306,57 +400,67 @@
           }
         }
       }
  +
       return renderedMessage;
     }

     /**
  -     Returns the time when the application started, in milliseconds
  -     elapsed since 01.01.1970.  */
  +   * Returns the time when the application started, in milliseconds elapsed
  +   * since 01.01.1970.
  +   */
     public static long getStartTime() {
       return startTime;
     }

     public String getThreadName() {
  -    if (threadName == null)
  +    if (threadName == null) {
         threadName = (Thread.currentThread()).getName();
  +    }
  +
       return threadName;
     }

     /**
  -     Returns the throwable information contained within this
  -     event. May be <code>null</code> if there is no such information.
  -
  -     <p>Note that the [EMAIL PROTECTED] Throwable} object contained within a
  -     [EMAIL PROTECTED] ThrowableInformation} does not survive serialization.
  -
  -     @since 1.1 */
  +   * Returns the throwable information contained within this event. May be
  +   * <code>null</code> if there is no such information.
  +   *
  +   * <p>
  +   * Note that the [EMAIL PROTECTED] Throwable} object contained within a [EMAIL 
PROTECTED]
  +   * ThrowableInformation} does not survive serialization.
  +   * </p>
  +   *
  +   * @since 1.1
  +   */
     public ThrowableInformation getThrowableInformation() {
       return throwableInfo;
     }

     /**
  -     Return this event's throwable's string[] representaion.
  -  */
  +   * Return this event's throwable's string[] representaion.
  +   */
     public String[] getThrowableStrRep() {
  -
  -    if (throwableInfo == null)
  +    if (throwableInfo == null) {
         return null;
  -    else
  +    } else {
         return throwableInfo.getThrowableStrRep();
  +    }
     }

     private void readLevel(ObjectInputStream ois)
       throws java.io.IOException, ClassNotFoundException {
  -
       int p = ois.readInt();
  +
       try {
         String className = (String) ois.readObject();
  +
         if (className == null) {
           level = Level.toLevel(p);
         } else {
           Method m = (Method) methodCache.get(className);
  +
           if (m == null) {
             Class clazz = Loader.loadClass(className);
  +
             // Note that we use Class.getDeclaredMethod instead of
             // Class.getMethod. This assumes that the Level subclass
             // implements the toLevel(int) method which is a
  @@ -366,6 +470,7 @@
             m = clazz.getDeclaredMethod(TO_LEVEL, TO_LEVEL_PARAMS);
             methodCache.put(className, m);
           }
  +
           PARAM_ARRAY[0] = new Integer(p);
           level = (Level) m.invoke(null, PARAM_ARRAY);
         }
  @@ -381,19 +486,20 @@
       readLevel(ois);

       // Make sure that no location info is available to Layouts
  -    if (locationInfo == null)
  +    if (locationInfo == null) {
         locationInfo = new LocationInfo(null, null);
  +    }
     }

     /**
  -   * Set a string property using a key and a string value.
  -   * since 1.3
  +   * Set a string property using a key and a string value.  since 1.3
      */
     public void setProperty(String key, String value) {
  -    if(properties == null) {
  +    if (properties == null) {
         properties = new Hashtable(5); // create a small hashtable
       }
  -    properties.put(key, value);
  +
  +    properties.put(key, value);
     }

private void writeObject(ObjectOutputStream oos) throws java.io.IOException {
@@ -422,10 +528,10 @@
}


private void writeLevel(ObjectOutputStream oos) throws java.io.IOException {
-
oos.writeInt(level.toInt());


       Class clazz = level.getClass();
  +
       if (clazz == Level.class) {
         oos.writeObject(null);
       } else {
  @@ -435,5 +541,4 @@
         oos.writeObject(clazz.getName());
       }
     }
  -
   }



1.9 +127 -93 jakarta-log4j/src/java/org/apache/log4j/Appender.java

Index: Appender.java
===================================================================
RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/Appender.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Appender.java 28 Sep 2001 13:37:48 -0000 1.8
+++ Appender.java 18 Mar 2003 13:33:31 -0000 1.9
@@ -1,132 +1,166 @@
/*
- * Copyright (C) The Apache Software Foundation. All rights reserved.
+ * ============================================================================
+ * The Apache Software License, Version 1.1
+ * ============================================================================
*
- * This software is published under the terms of the Apache Software
- * License version 1.1, a copy of which has been included with this
- * distribution in the LICENSE.txt file. */
+ * Copyright (C) 1999 The Apache Software Foundation. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modifica-
+ * tion, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. The end-user documentation included with the redistribution, if any, must
+ * include the following acknowledgment: "This product includes software
+ * developed by the Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself, if
+ * and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "log4j" and "Apache Software Foundation" must not be used to
+ * endorse or promote products derived from this software without prior
+ * written permission. For written permission, please contact
+ * [EMAIL PROTECTED]
+ *
+ * 5. Products derived from this software may not be called "Apache", nor may
+ * "Apache" appear in their name, without prior written permission of the
+ * Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLU-
+ * DING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * This software consists of voluntary contributions made by many individuals
+ * on behalf of the Apache Software Foundation. For more information on the
+ * Apache Software Foundation, please see <http://www.apache.org/>.
+ *
+ */


package org.apache.log4j;

  -import org.apache.log4j.spi.Filter;
   import org.apache.log4j.spi.ErrorHandler;
  +import org.apache.log4j.spi.Filter;
   import org.apache.log4j.spi.LoggingEvent;

  -/**
  -   Implement this interface for your own strategies for outputting log
  -   statements.

  -   @author Ceki G&uuml;lc&uuml;
  -*/
  +/**
  + * Implement this interface for your own strategies for outputting log
  + * statements.
  + *
  + * @author Ceki G&uuml;lc&uuml;
  + */
   public interface Appender {
  -
     /**
  -     Add a filter to the end of the filter list.
  -
  -     @since 0.9.0
  +   * Add a filter to the end of the filter list.
  +   *
  +   * @since 0.9.0
      */
     void addFilter(Filter newFilter);

/**
- Returns the head Filter. The Filters are organized in a linked list
- and so all Filters on this Appender are available through the result.
-
- @return the head Filter or null, if no Filters are present
- @since 1.1
- */
- public
- Filter getFilter();
+ * Returns the head Filter. The Filters are organized in a linked list and
+ * so all Filters on this Appender are available through the result.
+ *
+ * @return the head Filter or null, if no Filters are present
+ *
+ * @since 1.1
+ */
+ public Filter getFilter();


     /**
  -     Clear the list of filters by removing all the filters in it.
  -
  -     @since 0.9.0
  +   * Clear the list of filters by removing all the filters in it.
  +   *
  +   * @since 0.9.0
      */
  -  public
  -  void clearFilters();
  +  public void clearFilters();

/**
- Release any resources allocated within the appender such as file
- handles, network connections, etc.
-
- <p>It is a programming error to append to a closed appender.
+ * Release any resources allocated within the appender such as file handles,
+ * network connections, etc.
+ *
+ * <p>
+ * It is a programming error to append to a closed appender.
+ * </p>
+ *
+ * @since 0.8.4
+ */
+ public void close();


- @since 0.8.4
- */
- public
- void close();
-
/**
- Log in <code>Appender</code> specific way. When appropriate,
- Loggers will call the <code>doAppend</code> method of appender
- implementations in order to log. */
- public
- void doAppend(LoggingEvent event);
-
+ * Log in <code>Appender</code> specific way. When appropriate, Loggers will
+ * call the <code>doAppend</code> method of appender implementations in
+ * order to log.
+ */
+ public void doAppend(LoggingEvent event);


/**
- Get the name of this appender. The name uniquely identifies the
- appender. */
- public
- String getName();
-
+ * Get the name of this appender. The name uniquely identifies the appender.
+ */
+ public String getName();


     /**
  -     Set the [EMAIL PROTECTED] ErrorHandler} for this appender.
  -
  -     @ since 0.9.0
  +   * Set the [EMAIL PROTECTED] ErrorHandler} for this appender.
  +   *
  +   * @since 0.9.0
      */
  -  public
  -  void setErrorHandler(ErrorHandler errorHandler);
  +  public void setErrorHandler(ErrorHandler errorHandler);

     /**
  -     Returns the [EMAIL PROTECTED] ErrorHandler} for this appender.
  -
  -     @since 1.1
  +   * Returns the [EMAIL PROTECTED] ErrorHandler} for this appender.
  +   *
  +   * @since 1.1
      */
  -  public
  -  ErrorHandler getErrorHandler();
  +  public ErrorHandler getErrorHandler();

     /**
  -     Set the [EMAIL PROTECTED] Layout} for this appender.
  -
  -     @since 0.8.1
  -  */
  -  public
  -  void setLayout(Layout layout);
  +   * Set the [EMAIL PROTECTED] Layout} for this appender.
  +   *
  +   * @since 0.8.1
  +   */
  +  public void setLayout(Layout layout);

     /**
  -     Returns this appenders layout.
  -
  -     @since 1.1
  -  */
  -  public
  -  Layout getLayout();
  -
  +   * Returns this appenders layout.
  +   *
  +   * @since 1.1
  +   */
  +  public Layout getLayout();

     /**
  -     Set the name of this appender. The name is used by other
  -     components to identify this appender.
  -
  -     @since 0.8.1
  -  */
  -  public
  -  void setName(String name);
  +   * Set the name of this appender. The name is used by other components to
  +   * identify this appender.
  +   *
  +   * @since 0.8.1
  +   */
  +  public void setName(String name);

/**
- Configurators call this method to determine if the appender
- requires a layout. If this method returns <code>true</code>,
- meaning that layout is required, then the configurator will
- configure an layout using the configuration information at its
- disposal. If this method returns <code>false</code>, meaning that
- a layout is not required, then layout configuration will be
- skipped even if there is available layout configuration
- information at the disposal of the configurator..
-
- <p>In the rather exceptional case, where the appender
- implementation admits a layout but can also work without it, then
- the appender should return <code>true</code>.
-
- @since 0.8.4 */
- public
- boolean requiresLayout();
+ * Configurators call this method to determine if the appender requires a
+ * layout. If this method returns <code>true</code>, meaning that layout is
+ * required, then the configurator will configure an layout using the
+ * configuration information at its disposal. If this method returns
+ * <code>false</code>, meaning that a layout is not required, then layout
+ * configuration will be skipped even if there is available layout
+ * configuration information at the disposal of the configurator..
+ *
+ * <p>
+ * In the rather exceptional case, where the appender implementation admits
+ * a layout but can also work without it, then the appender should return
+ * <code>true</code>.
+ * </p>
+ *
+ * @since 0.8.4
+ */
+ public boolean requiresLayout();
}


[cut to fit the 100 KB limit]


--
Ceki



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to