Move authors to pom.xml.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/logging/trunk@1432663 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
33
pom.xml
33
pom.xml
@@ -98,7 +98,7 @@ under the License.
|
|||||||
<developer>
|
<developer>
|
||||||
<id>baliuka</id>
|
<id>baliuka</id>
|
||||||
<name>Juozas Baliuka</name>
|
<name>Juozas Baliuka</name>
|
||||||
<email>baliuka@apache.org</email>
|
<email>baliuka at apache dot org</email>
|
||||||
<roles>
|
<roles>
|
||||||
<role>Java Developer</role>
|
<role>Java Developer</role>
|
||||||
</roles>
|
</roles>
|
||||||
@@ -106,13 +106,13 @@ under the License.
|
|||||||
<developer>
|
<developer>
|
||||||
<id>skitching</id>
|
<id>skitching</id>
|
||||||
<name>Simon Kitching</name>
|
<name>Simon Kitching</name>
|
||||||
<email>skitching@apache.org</email>
|
<email>skitching at apache dot org</email>
|
||||||
<organization>Apache Software Foundation</organization>
|
<organization>Apache Software Foundation</organization>
|
||||||
</developer>
|
</developer>
|
||||||
<developer>
|
<developer>
|
||||||
<id>dennisl</id>
|
<id>dennisl</id>
|
||||||
<name>Dennis Lundberg</name>
|
<name>Dennis Lundberg</name>
|
||||||
<email>dennisl@apache.org</email>
|
<email>dennisl at apache dot org</email>
|
||||||
<organization>Apache Software Foundation</organization>
|
<organization>Apache Software Foundation</organization>
|
||||||
</developer>
|
</developer>
|
||||||
<developer>
|
<developer>
|
||||||
@@ -120,7 +120,32 @@ under the License.
|
|||||||
<name>Brian Stansberry</name>
|
<name>Brian Stansberry</name>
|
||||||
</developer>
|
</developer>
|
||||||
</developers>
|
</developers>
|
||||||
|
<contributors>
|
||||||
|
<contributor>
|
||||||
|
<name>Vince Eagen</name>
|
||||||
|
<email>vince256 at comcast dot net</email>
|
||||||
|
<roles>
|
||||||
|
<role>Lumberjack logging abstraction</role>
|
||||||
|
</roles>
|
||||||
|
</contributor>
|
||||||
|
<contributor>
|
||||||
|
<name>Berin Loritsch</name>
|
||||||
|
<email>bloritsch at apache dot org</email>
|
||||||
|
<roles>
|
||||||
|
<role>Lumberjack logging abstraction</role>
|
||||||
|
<role>JDK 1.4 logging abstraction</role>
|
||||||
|
</roles>
|
||||||
|
</contributor>
|
||||||
|
<contributor>
|
||||||
|
<name>Neeme Praks</name>
|
||||||
|
<email>neeme at apache dot org</email>
|
||||||
|
<roles>
|
||||||
|
<role>Avalon logging abstraction</role>
|
||||||
|
</roles>
|
||||||
|
</contributor>
|
||||||
|
|
||||||
|
</contributors>
|
||||||
|
|
||||||
<scm>
|
<scm>
|
||||||
<connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/logging/trunk</connection>
|
<connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/logging/trunk</connection>
|
||||||
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/logging/trunk</developerConnection>
|
<developerConnection>scm:svn:https://svn.apache.org/repos/asf/commons/proper/logging/trunk</developerConnection>
|
||||||
|
|||||||
@@ -54,8 +54,6 @@ package org.apache.commons.logging;
|
|||||||
* external to the Logging APIs, through whatever mechanism is supported by
|
* external to the Logging APIs, through whatever mechanism is supported by
|
||||||
* that system.
|
* that system.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public interface Log {
|
public interface Log {
|
||||||
@@ -205,7 +203,6 @@ public interface Log {
|
|||||||
*/
|
*/
|
||||||
public void error(Object message, Throwable t);
|
public void error(Object message, Throwable t);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log a message with fatal log level.
|
* Log a message with fatal log level.
|
||||||
*
|
*
|
||||||
@@ -213,7 +210,6 @@ public interface Log {
|
|||||||
*/
|
*/
|
||||||
public void fatal(Object message);
|
public void fatal(Object message);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Log an error with fatal log level.
|
* Log an error with fatal log level.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ package org.apache.commons.logging;
|
|||||||
* or <code>Log</code> instance cannot be created by the corresponding
|
* or <code>Log</code> instance cannot be created by the corresponding
|
||||||
* factory methods.
|
* factory methods.
|
||||||
*
|
*
|
||||||
* @author Craig R. McClanahan
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class LogConfigurationException extends RuntimeException {
|
public class LogConfigurationException extends RuntimeException {
|
||||||
|
|||||||
@@ -42,9 +42,6 @@ import java.util.Properties;
|
|||||||
* based on the SAXParserFactory and DocumentBuilderFactory implementations
|
* based on the SAXParserFactory and DocumentBuilderFactory implementations
|
||||||
* (corresponding to the JAXP pluggability APIs) found in Apache Xerces.
|
* (corresponding to the JAXP pluggability APIs) found in Apache Xerces.
|
||||||
*
|
*
|
||||||
* @author Craig R. McClanahan
|
|
||||||
* @author Costin Manolache
|
|
||||||
* @author Richard A. Sitze
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public abstract class LogFactory {
|
public abstract class LogFactory {
|
||||||
|
|||||||
@@ -50,7 +50,6 @@ import org.apache.commons.logging.impl.NoOpLog;
|
|||||||
* @deprecated Use {@link LogFactory} instead - The default factory
|
* @deprecated Use {@link LogFactory} instead - The default factory
|
||||||
* implementation performs exactly the same algorithm as this class did
|
* implementation performs exactly the same algorithm as this class did
|
||||||
*
|
*
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class LogSource {
|
public class LogSource {
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ import org.apache.commons.logging.Log;
|
|||||||
* be thrown as soon as the deserialized object was used), so removing this marker
|
* be thrown as soon as the deserialized object was used), so removing this marker
|
||||||
* is not considered to be an incompatible change.
|
* is not considered to be an incompatible change.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:neeme@apache.org">Neeme Praks</a>
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class AvalonLogger implements Log {
|
public class AvalonLogger implements Log {
|
||||||
|
|||||||
@@ -28,14 +28,10 @@ import java.io.StringWriter;
|
|||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Implementation of the <code>org.apache.commons.logging.Log</code>
|
* Implementation of the <code>org.apache.commons.logging.Log</code>
|
||||||
* interface that wraps the standard JDK logging mechanisms that are
|
* interface that wraps the standard JDK logging mechanisms that are
|
||||||
* available in SourceForge's Lumberjack for JDKs prior to 1.4.</p>
|
* available in SourceForge's Lumberjack for JDKs prior to 1.4.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
|
|
||||||
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
|
|
||||||
* @author <a href="mailto:vince256@comcast.net">Vince Eagen</a>
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
* @since 1.1
|
* @since 1.1
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -28,9 +28,6 @@ import org.apache.commons.logging.Log;
|
|||||||
* interface that wraps the standard JDK logging mechanisms that were
|
* interface that wraps the standard JDK logging mechanisms that were
|
||||||
* introduced in the Merlin release (JDK 1.4).
|
* introduced in the Merlin release (JDK 1.4).
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author <a href="mailto:bloritsch@apache.org">Berin Loritsch</a>
|
|
||||||
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class Jdk14Logger implements Log, Serializable {
|
public class Jdk14Logger implements Log, Serializable {
|
||||||
|
|||||||
@@ -40,9 +40,6 @@ import org.apache.log4j.Level;
|
|||||||
* a non-binary-compatible change. The class generated by compiling this code against
|
* a non-binary-compatible change. The class generated by compiling this code against
|
||||||
* log4j 1.2 will therefore not run against log4j 1.3.
|
* log4j 1.2 will therefore not run against log4j 1.3.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @author Robert Burrell Donkin
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class Log4JLogger implements Log, Serializable {
|
public class Log4JLogger implements Log, Serializable {
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ import org.apache.commons.logging.LogConfigurationException;
|
|||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Concrete subclass of {@link LogFactory} that implements the
|
* Concrete subclass of {@link LogFactory} that implements the
|
||||||
* following algorithm to dynamically select a logging implementation
|
* following algorithm to dynamically select a logging implementation
|
||||||
* class to instantiate a wrapper for.</p>
|
* class to instantiate a wrapper for:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li>Use a factory configuration attribute named
|
* <li>Use a factory configuration attribute named
|
||||||
* <code>org.apache.commons.logging.Log</code> to identify the
|
* <code>org.apache.commons.logging.Log</code> to identify the
|
||||||
@@ -46,21 +46,17 @@ import org.apache.commons.logging.LogFactory;
|
|||||||
* <li>Otherwise, return an instance of
|
* <li>Otherwise, return an instance of
|
||||||
* <code>org.apache.commons.logging.impl.SimpleLog</code>.</li>
|
* <code>org.apache.commons.logging.impl.SimpleLog</code>.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
* <p>
|
||||||
* <p>If the selected {@link Log} implementation class has a
|
* If the selected {@link Log} implementation class has a
|
||||||
* <code>setLogFactory()</code> method that accepts a {@link LogFactory}
|
* <code>setLogFactory()</code> method that accepts a {@link LogFactory}
|
||||||
* parameter, this method will be called on each newly created instance
|
* parameter, this method will be called on each newly created instance
|
||||||
* to identify the associated factory. This makes factory configuration
|
* to identify the associated factory. This makes factory configuration
|
||||||
* attributes available to the Log instance, if it so desires.</p>
|
* attributes available to the Log instance, if it so desires.
|
||||||
*
|
* <p>
|
||||||
* <p>This factory will remember previously created <code>Log</code> instances
|
* This factory will remember previously created <code>Log</code> instances
|
||||||
* for the same name, and will return them on repeated requests to the
|
* for the same name, and will return them on repeated requests to the
|
||||||
* <code>getInstance()</code> method.</p>
|
* <code>getInstance()</code> method.
|
||||||
*
|
*
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @author Craig R. McClanahan
|
|
||||||
* @author Richard A. Sitze
|
|
||||||
* @author Brian Stansberry
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class LogFactoryImpl extends LogFactory {
|
public class LogFactoryImpl extends LogFactory {
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ import org.apache.commons.logging.Log;
|
|||||||
* Therefore, this implementation converts object messages into strings
|
* Therefore, this implementation converts object messages into strings
|
||||||
* by called their <code>toString()</code> method before logging them.
|
* by called their <code>toString()</code> method before logging them.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author Robert Burrell Donkin
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class LogKitLogger implements Log, Serializable {
|
public class LogKitLogger implements Log, Serializable {
|
||||||
|
|||||||
@@ -24,8 +24,6 @@ import org.apache.commons.logging.Log;
|
|||||||
* Trivial implementation of Log that throws away all messages. No
|
* Trivial implementation of Log that throws away all messages. No
|
||||||
* configurable system properties are supported.
|
* configurable system properties are supported.
|
||||||
*
|
*
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class NoOpLog implements Log, Serializable {
|
public class NoOpLog implements Log, Serializable {
|
||||||
|
|||||||
@@ -32,9 +32,9 @@ import org.apache.commons.logging.Log;
|
|||||||
import org.apache.commons.logging.LogConfigurationException;
|
import org.apache.commons.logging.LogConfigurationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Simple implementation of Log that sends all enabled log messages,
|
* Simple implementation of Log that sends all enabled log messages,
|
||||||
* for all defined loggers, to System.err. The following system properties
|
* for all defined loggers, to System.err. The following system properties
|
||||||
* are supported to configure the behavior of this logger:</p>
|
* are supported to configure the behavior of this logger:
|
||||||
* <ul>
|
* <ul>
|
||||||
* <li><code>org.apache.commons.logging.simplelog.defaultlog</code> -
|
* <li><code>org.apache.commons.logging.simplelog.defaultlog</code> -
|
||||||
* Default logging detail level for all instances of SimpleLog.
|
* Default logging detail level for all instances of SimpleLog.
|
||||||
@@ -60,15 +60,11 @@ import org.apache.commons.logging.LogConfigurationException;
|
|||||||
* specified or is invalid, the default format is used.
|
* specified or is invalid, the default format is used.
|
||||||
* The default format is <code>yyyy/MM/dd HH:mm:ss:SSS zzz</code>.</li>
|
* The default format is <code>yyyy/MM/dd HH:mm:ss:SSS zzz</code>.</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
*
|
* <p>
|
||||||
* <p>In addition to looking for system properties with the names specified
|
* In addition to looking for system properties with the names specified
|
||||||
* above, this implementation also checks for a class loader resource named
|
* above, this implementation also checks for a class loader resource named
|
||||||
* <code>"simplelog.properties"</code>, and includes any matching definitions
|
* <code>"simplelog.properties"</code>, and includes any matching definitions
|
||||||
* from this resource (if it exists).</p>
|
* from this resource (if it exists).
|
||||||
*
|
|
||||||
* @author <a href="mailto:sanders@apache.org">Scott Sanders</a>
|
|
||||||
* @author Rod Waldhoff
|
|
||||||
* @author Robert Burrell Donkin
|
|
||||||
*
|
*
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -28,29 +28,27 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Implementation of <code>Hashtable</code> that uses <code>WeakReference</code>'s
|
* Implementation of <code>Hashtable</code> that uses <code>WeakReference</code>'s
|
||||||
* to hold its keys thus allowing them to be reclaimed by the garbage collector.
|
* to hold its keys thus allowing them to be reclaimed by the garbage collector.
|
||||||
* The associated values are retained using strong references.</p>
|
* The associated values are retained using strong references.
|
||||||
*
|
* <p>
|
||||||
* <p>This class follows the semantics of <code>Hashtable</code> as closely as
|
* This class follows the semantics of <code>Hashtable</code> as closely as
|
||||||
* possible. It therefore does not accept null values or keys.</p>
|
* possible. It therefore does not accept null values or keys.
|
||||||
*
|
* <p>
|
||||||
* <p><strong>Note:</strong>
|
* <strong>Note:</strong>
|
||||||
* This is <em>not</em> intended to be a general purpose hash table replacement.
|
* This is <em>not</em> intended to be a general purpose hash table replacement.
|
||||||
* This implementation is also tuned towards a particular purpose: for use as a replacement
|
* This implementation is also tuned towards a particular purpose: for use as a replacement
|
||||||
* for <code>Hashtable</code> in <code>LogFactory</code>. This application requires
|
* for <code>Hashtable</code> in <code>LogFactory</code>. This application requires
|
||||||
* good liveliness for <code>get</code> and <code>put</code>. Various tradeoffs
|
* good liveliness for <code>get</code> and <code>put</code>. Various tradeoffs
|
||||||
* have been made with this in mind.
|
* have been made with this in mind.
|
||||||
* </p>
|
|
||||||
* <p>
|
* <p>
|
||||||
* <strong>Usage:</strong> typical use case is as a drop-in replacement
|
* <strong>Usage:</strong> typical use case is as a drop-in replacement
|
||||||
* for the <code>Hashtable</code> used in <code>LogFactory</code> for J2EE environments
|
* for the <code>Hashtable</code> used in <code>LogFactory</code> for J2EE environments
|
||||||
* running 1.3+ JVMs. Use of this class <i>in most cases</i> (see below) will
|
* running 1.3+ JVMs. Use of this class <i>in most cases</i> (see below) will
|
||||||
* allow classloaders to be collected by the garbage collector without the need
|
* allow classloaders to be collected by the garbage collector without the need
|
||||||
* to call {@link org.apache.commons.logging.LogFactory#release(ClassLoader) LogFactory.release(ClassLoader)}.
|
* to call {@link org.apache.commons.logging.LogFactory#release(ClassLoader) LogFactory.release(ClassLoader)}.
|
||||||
* </p>
|
* <p>
|
||||||
*
|
* <code>org.apache.commons.logging.LogFactory</code> checks whether this class
|
||||||
* <p><code>org.apache.commons.logging.LogFactory</code> checks whether this class
|
|
||||||
* can be supported by the current JVM, and if so then uses it to store
|
* can be supported by the current JVM, and if so then uses it to store
|
||||||
* references to the <code>LogFactory</code> implementation it loads
|
* references to the <code>LogFactory</code> implementation it loads
|
||||||
* (rather than using a standard Hashtable instance).
|
* (rather than using a standard Hashtable instance).
|
||||||
@@ -60,9 +58,9 @@ import java.util.Set;
|
|||||||
* of <code>java.lang.ref.WeakReference</code> and associates).
|
* of <code>java.lang.ref.WeakReference</code> and associates).
|
||||||
* And by the way, this extends <code>Hashtable</code> rather than <code>HashMap</code>
|
* And by the way, this extends <code>Hashtable</code> rather than <code>HashMap</code>
|
||||||
* for backwards compatibility reasons. See the documentation
|
* for backwards compatibility reasons. See the documentation
|
||||||
* for method <code>LogFactory.createFactoryStore</code> for more details.</p>
|
* for method <code>LogFactory.createFactoryStore</code> for more details.
|
||||||
*
|
* <p>
|
||||||
* <p>The reason all this is necessary is due to a issue which
|
* The reason all this is necessary is due to a issue which
|
||||||
* arises during hot deploy in a J2EE-like containers.
|
* arises during hot deploy in a J2EE-like containers.
|
||||||
* Each component running in the container owns one or more classloaders; when
|
* Each component running in the container owns one or more classloaders; when
|
||||||
* the component loads a LogFactory instance via the component classloader
|
* the component loads a LogFactory instance via the component classloader
|
||||||
@@ -77,16 +75,14 @@ import java.util.Set;
|
|||||||
* garbage collected; this <i>should</i> be done by any container that
|
* garbage collected; this <i>should</i> be done by any container that
|
||||||
* bundles commons-logging by default. However, holding the classloader
|
* bundles commons-logging by default. However, holding the classloader
|
||||||
* references weakly ensures that the classloader will be garbage collected
|
* references weakly ensures that the classloader will be garbage collected
|
||||||
* without the container performing this step. </p>
|
* without the container performing this step.
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* <strong>Limitations:</strong>
|
* <strong>Limitations:</strong>
|
||||||
* There is still one (unusual) scenario in which a component will not
|
* There is still one (unusual) scenario in which a component will not
|
||||||
* be correctly unloaded without an explicit release. Though weak references
|
* be correctly unloaded without an explicit release. Though weak references
|
||||||
* are used for its keys, it is necessary to use strong references for its values.
|
* are used for its keys, it is necessary to use strong references for its values.
|
||||||
* </p>
|
* <p>
|
||||||
*
|
* If the abstract class <code>LogFactory</code> is
|
||||||
* <p> If the abstract class <code>LogFactory</code> is
|
|
||||||
* loaded by the container classloader but a subclass of
|
* loaded by the container classloader but a subclass of
|
||||||
* <code>LogFactory</code> [LogFactory1] is loaded by the component's
|
* <code>LogFactory</code> [LogFactory1] is loaded by the component's
|
||||||
* classloader and an instance stored in the static map associated with the
|
* classloader and an instance stored in the static map associated with the
|
||||||
@@ -94,22 +90,18 @@ import java.util.Set;
|
|||||||
* class to the LogFactory1 instance (as normal) and a strong reference from
|
* class to the LogFactory1 instance (as normal) and a strong reference from
|
||||||
* the LogFactory1 instance to the component classloader via
|
* the LogFactory1 instance to the component classloader via
|
||||||
* <code>getClass().getClassLoader()</code>. This chain of references will prevent
|
* <code>getClass().getClassLoader()</code>. This chain of references will prevent
|
||||||
* collection of the child classloader.</p>
|
* collection of the child classloader.
|
||||||
*
|
|
||||||
* <p>
|
* <p>
|
||||||
* Such a situation occurs when the commons-logging.jar is
|
* Such a situation occurs when the commons-logging.jar is
|
||||||
* loaded by a parent classloader (e.g. a server level classloader in a
|
* loaded by a parent classloader (e.g. a server level classloader in a
|
||||||
* servlet container) and a custom <code>LogFactory</code> implementation is
|
* servlet container) and a custom <code>LogFactory</code> implementation is
|
||||||
* loaded by a child classloader (e.g. a web app classloader).</p>
|
* loaded by a child classloader (e.g. a web app classloader).
|
||||||
*
|
* <p>
|
||||||
* <p>To avoid this scenario, ensure
|
* To avoid this scenario, ensure
|
||||||
* that any custom LogFactory subclass is loaded by the same classloader as
|
* that any custom LogFactory subclass is loaded by the same classloader as
|
||||||
* the base <code>LogFactory</code>. Creating custom LogFactory subclasses is,
|
* the base <code>LogFactory</code>. Creating custom LogFactory subclasses is,
|
||||||
* however, rare. The standard LogFactoryImpl class should be sufficient
|
* however, rare. The standard LogFactoryImpl class should be sufficient
|
||||||
* for most or all users.</p>
|
* for most or all users.
|
||||||
*
|
|
||||||
*
|
|
||||||
* @author Brian Stansberry
|
|
||||||
*
|
*
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
* @since 1.1
|
* @since 1.1
|
||||||
@@ -363,8 +355,7 @@ public final class WeakHashtable extends Hashtable {
|
|||||||
Map.Entry entry = (Map.Entry) o;
|
Map.Entry entry = (Map.Entry) o;
|
||||||
result = (getKey()==null ?
|
result = (getKey()==null ?
|
||||||
entry.getKey() == null :
|
entry.getKey() == null :
|
||||||
getKey().equals(entry.getKey()))
|
getKey().equals(entry.getKey())) &&
|
||||||
&&
|
|
||||||
(getValue()==null ?
|
(getValue()==null ?
|
||||||
entry.getValue() == null :
|
entry.getValue() == null :
|
||||||
getValue().equals(entry.getValue()));
|
getValue().equals(entry.getValue()));
|
||||||
@@ -373,7 +364,6 @@ public final class WeakHashtable extends Hashtable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
|
|
||||||
return (getKey()==null ? 0 : getKey().hashCode()) ^
|
return (getKey()==null ? 0 : getKey().hashCode()) ^
|
||||||
(getValue()==null ? 0 : getValue().hashCode());
|
(getValue()==null ? 0 : getValue().hashCode());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user