mwomack 2003/02/19 23:18:32 Modified: src/java/org/apache/log4j/plugins Receiver.java PluginSkeleton.java PluginRegistry.java Plugin.java Log: Jalopy-ized and checkstyle-d versions of the plugin files. Revision Changes Path 1.3 +24 -23 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Receiver.java 3 Feb 2003 07:50:08 -0000 1.2 +++ Receiver.java 20 Feb 2003 07:18:32 -0000 1.3 @@ -4,41 +4,41 @@ * 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. */ - package org.apache.log4j.plugins; import org.apache.log4j.Logger; import org.apache.log4j.spi.LoggingEvent; + /** Defines the base class for Receiver plugins. - + <p>Just as Appenders send logging events outside of the log4j environment (to files, to smtp, to sockets, etc), Receivers bring logging events inside the log4j environment. - + <p>Receivers are meant to support the receiving of - remote logging events from another process. For example, - SocketAppender "appends" a logging event to a socket, configured - for a specific host and port number. On the receiving side of - the socket can be a SocketReceiver object. The SocketReceiver + remote logging events from another process. For example, + SocketAppender "appends" a logging event to a socket, configured + for a specific host and port number. On the receiving side of + the socket can be a SocketReceiver object. The SocketReceiver object receives the logging event, and then "posts" it to the - log4j environment (LoggerRepository) on the receiving machine, to - be handled by the configured appenders, etc. The various - settings in this environment (Logger levels, Appender filters & + log4j environment (LoggerRepository) on the receiving machine, to + be handled by the configured appenders, etc. The various + settings in this environment (Logger levels, Appender filters & thresholds) are applied to the received logging event. - + <p>Receivers can also be used to "import" log messages from other logging packages into the log4j environment. - + <p>Receivers can be configured to post events to a given LoggerRepository. - + <p>Subclasses of Receiver must implement the isActive(), activateOptions(), and shutdown() methods. The doPost() method is provided to standardize the "import" of remote events into the repository. - + @author Mark Womack @author Ceki Gülcü @since 1.3 @@ -46,19 +46,20 @@ 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 // configured repository. - Logger localLogger = + Logger localLogger = getLoggerRepository().getLogger(event.getLoggerName()); - - // if the logger level is greater or equal to the level - // of the event, use the logger to append the event. - if(event.getLevel().isGreaterOrEqual(localLogger.getEffectiveLevel())) { + + // if the logger level is greater or equal to the level + // of the event, use the logger to append the event. + if (event.getLevel().isGreaterOrEqual(localLogger.getEffectiveLevel())) { // call the loggers appenders to process the event - localLogger.callAppenders(event); - } + localLogger.callAppenders(event); + } } } - 1.4 +26 -17 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PluginSkeleton.java 3 Feb 2003 07:50:08 -0000 1.3 +++ PluginSkeleton.java 20 Feb 2003 07:18:32 -0000 1.4 @@ -4,55 +4,64 @@ * 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. */ - package org.apache.log4j.plugins; -import org.apache.log4j.LogManager; import org.apache.log4j.spi.LoggerRepository; + /** A convienent abstract class for plugin subclasses that implements the basic methods of the Plugin interface. Subclasses are required to implement the isActive(), activateOptions(), and shutdown() methods. - + <p>Developers are not required to subclass PluginSkeleton to develop their own plugins (they are only required to implement the Plugin interface), but it provides a convienent base class to start from. - + Contributors: Nicko Cadell - + @author Mark Womack @since 1.3 */ public abstract class PluginSkeleton implements Plugin { + /** Name of this plugin. */ protected String name = ""; - protected LoggerRepository repository; + /** 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. */ - public void setName(String _name) { - name = _name; + 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; } /** Sets the logger repository used by this plugin. This - repository will be used by the plugin functionality. */ - public void setLoggerRepository(LoggerRepository _repository) { - repository = _repository; + 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.4 +59 -58 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PluginRegistry.java 3 Feb 2003 07:50:08 -0000 1.3 +++ PluginRegistry.java 20 Feb 2003 07:18:32 -0000 1.4 @@ -4,69 +4,67 @@ * 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. */ - package org.apache.log4j.plugins; -import java.util.HashMap; -import java.util.Iterator; import org.apache.log4j.LogManager; import org.apache.log4j.spi.LoggerRepository; import org.apache.log4j.spi.LoggerRepositoryEventListener; +import java.util.HashMap; +import java.util.Iterator; + + /** - This is a registry for Plugin instances. It provides methods to + This is a registry for Plugin instances. It provides methods to start and stop plugin objects individually and to stop all plugins for a repository. - + @author Mark Womack @since 1.3 */ public class PluginRegistry { /** stores the map of plugins for each repository. */ private static HashMap repositoryMap = new HashMap(); - + /** the listener used to listen for repository events. */ private static RepositoryListener listener = new RepositoryListener(); - + /** - Starts a Plugin with default logger repository. - - @param plugin the plugin to start. + Starts a Plugin with default logger repository. + + @param plugin the plugin to start. @return Plugin the plugin parameter or a plugin that was already active and was equal to the original plugin. */ public static Plugin startPlugin(Plugin plugin) { // if repository already set in plugin, use it LoggerRepository repository = plugin.getLoggerRepository(); - + // else use the default one if (repository == null) { repository = LogManager.getLoggerRepository(); } - + return startPlugin(plugin, repository); } /** - Starts a plugin with a given logger repository. - + Starts a plugin with a given logger repository. + @param plugin the plugin to start. @param repository the logger repository to attach the plugin to. @return Plugin the plugin parameter or a plugin that was already active and was equal to the original plugin. */ - public static Plugin startPlugin(Plugin plugin, - LoggerRepository repository) - { - + public static Plugin startPlugin(Plugin plugin, LoggerRepository repository) { // if the plugin is already active, just return it if (plugin.isActive()) { return plugin; } - + // put plugin into the repository's reciever map synchronized (repositoryMap) { // get plugin map for repository HashMap pluginMap = (HashMap) repositoryMap.get(repository); - + String name = plugin.getName(); // make sure the plugin has reference to repository @@ -79,9 +77,10 @@ repository.addLoggerRepositoryEventListener(listener); } else { Plugin existingPlugin = (Plugin) pluginMap.get(name); + if (existingPlugin != null) { boolean isEqual = existingPlugin.equals(plugin); - + // if the plugins are equivalent and the existing one // is still active, just return the existing one now if (isEqual && existingPlugin.isActive()) { @@ -91,30 +90,30 @@ } } } - + // put the new plugin into the map pluginMap.put(name, plugin); - + // start the new plugin plugin.activateOptions(); - + return plugin; } } - + /** - Stops a plugin by plugin object. - + Stops a plugin by plugin object. + @param plugin the plugin to stop. @return Plugin the plugin parameter, if stopped, or null if the the plugin was not found in the registry. */ public static Plugin stopPlugin(Plugin plugin) { return stopPlugin(plugin.getName(), plugin.getLoggerRepository()); } - + /** Stops a plugin by plugin name using default repository. - + @param pluginName name of the plugin to stop. @return Plugin the plugin, if stopped, or null if the the plugin was not found in the registry. */ @@ -123,15 +122,14 @@ } /** - Stops a plugin by plugin name and repository. - + Stops a plugin by plugin name and repository. + @param pluginName the name of the plugin to stop. @param repository the repository the plugin should be attached to. @return Plugin the plugin, if stopped, or null if the the plugin was not found in the registry. */ - public static Plugin stopPlugin(String pluginName, - LoggerRepository repository) - { + public static Plugin stopPlugin( + String pluginName, LoggerRepository repository) { // if a null repository, exit now if (repository == null) { return null; @@ -139,91 +137,94 @@ synchronized (repositoryMap) { HashMap pluginMap = (HashMap) repositoryMap.get(repository); + if (pluginMap == null) { return null; } - + Plugin plugin = (Plugin) pluginMap.get(pluginName); + if (plugin == null) { return null; } - + // shutdown the plugin plugin.shutdown(); - + // remove it from the plugin map pluginMap.remove(pluginName); - + // if no more plugins, remove the plugin map from // repository map if (pluginMap.isEmpty()) { repository.removeLoggerRepositoryEventListener(listener); repositoryMap.remove(repository); } - + // return it for future use return plugin; } } - + /** Stops all plugins in the default logger repository. */ public static void stopAllPlugins() { stopAllPlugins(LogManager.getLoggerRepository()); } - + /** - Stops all plugins in the given logger repository. - + Stops all plugins in the given logger repository. + @param repository the logger repository to stop all plugins for. */ - public static void stopAllPlugins(LoggerRepository repository) { + public static void stopAllPlugins(LoggerRepository repository) { synchronized (repositoryMap) { HashMap pluginMap = (HashMap) repositoryMap.get(repository); + if (pluginMap == null) { return; } - + // remove the listener for this repository repository.removeLoggerRepositoryEventListener(listener); Iterator iter = pluginMap.values().iterator(); + while (iter.hasNext()) { ((Plugin) iter.next()).shutdown(); } - + // since no more plugins, remove plugin map from // the repository repositoryMap.remove(repository); } } - + /** Internal class used to handle listener events from repositories. */ private static class RepositoryListener - implements LoggerRepositoryEventListener - { + implements LoggerRepositoryEventListener { /** - Stops all plugins associated with the repository being reset. - + Stops all plugins associated with the repository being reset. + @param repository the repository that was reset. */ public void configurationResetEvent(LoggerRepository repository) { PluginRegistry.stopAllPlugins(repository); } - + /** - Called when the repository configuration is changed. - + Called when the repository configuration is changed. + @param repository the repository that was changed. */ public void configurationChangedEvent(LoggerRepository repository) { // do nothing with this event } - + /** - Stops all plugins associated with the repository being shutdown. - + Stops all plugins associated with the repository being shutdown. + @param repository the repository being shutdown. */ public void shutdownEvent(LoggerRepository repository) { PluginRegistry.stopAllPlugins(repository); } } -} \ No newline at end of file +} 1.3 +19 -20 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- Plugin.java 3 Feb 2003 07:50:08 -0000 1.2 +++ Plugin.java 20 Feb 2003 07:18:32 -0000 1.3 @@ -4,65 +4,64 @@ * 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. */ - package org.apache.log4j.plugins; import org.apache.log4j.spi.LoggerRepository; import org.apache.log4j.spi.OptionHandler; + /** Defines the required interface for all Plugin objects. - + <p>A plugin implements some specific functionality to extend the log4j framework. Each plugin is associated with a specific LoggerRepository, which it then uses/acts upon. The functionality of the plugin is up to the developer. - + <p>Examples of plugins are Receiver and Watchdog. Receiver plugins allow for remote logging events to be received and processed by a repository as if the event was sent locally. Watchdog plugins allow for a repository to be reconfigured when some "watched" configuration data changes. - + @author Mark Womack @author Nicko Cadell @since 1.3 */ public interface Plugin extends OptionHandler { - /** - Gets the name of the plugin. - + Gets the name of the plugin. + @return String the name of the plugin. */ public String getName(); - + /** - Sets the name of the plugin. - + Sets the name of the plugin. + @param name the name of the plugin. */ public void setName(String name); - + /** - Gets the logger repository for this plugin. - + Gets the logger repository for this plugin. + @return LoggerRepository the logger repository this plugin is attached to. */ public LoggerRepository getLoggerRepository(); /** 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 to attach this plugin to. */ public void setLoggerRepository(LoggerRepository repository); - + /** - True if the plugin is active and running. - + True if the plugin is active and running. + @return boolean true if the plugin is currently active. */ public boolean isActive(); - + /** Call when the plugin should be stopped. */ public void shutdown(); -} \ No newline at end of file +}
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]