| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.log4j.plugins; |
| |
| import org.apache.log4j.spi.LoggerRepository; |
| import org.apache.log4j.spi.OptionHandler; |
| |
| import java.beans.PropertyChangeListener; |
| |
| |
| /** |
| * Defines the required interface for all Plugin objects. |
| * <p/> |
| * <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/> |
| * <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 (mwomack@apache.org) |
| * @author Nicko Cadell |
| * @author Paul Smith (psmith@apache.org) |
| */ |
| public interface Plugin extends OptionHandler { |
| /** |
| * Gets the name of the plugin. |
| * |
| * @return String the name of the plugin. |
| */ |
| String getName(); |
| |
| /** |
| * Sets the name of the plugin. |
| * |
| * @param name the name of the plugin. |
| */ |
| void setName(String name); |
| |
| /** |
| * Gets the logger repository for this plugin. |
| * |
| * @return the logger repository to which this plugin is attached. |
| */ |
| LoggerRepository getLoggerRepository(); |
| |
| /** |
| * Sets the logger repository used by this plugin. This |
| * repository will be used by the plugin functionality. |
| * |
| * @param repository the logger repository to attach this plugin to. |
| */ |
| void setLoggerRepository(LoggerRepository repository); |
| |
| /** |
| * Adds a PropertyChangeListener to this instance which is |
| * notified only by changes of the property with name propertyName. |
| * |
| * @param propertyName |
| * the name of the property in standard JavaBean syntax |
| * (e.g. for setName(), property="name") |
| * @param l listener |
| */ |
| void addPropertyChangeListener( |
| String propertyName, PropertyChangeListener l); |
| |
| /** |
| * Adds a PropertyChangeListener that will be notified of all property |
| * changes. |
| * |
| * @param l The listener to add. |
| */ |
| void addPropertyChangeListener(PropertyChangeListener l); |
| |
| /** |
| * Removes a specific PropertyChangeListener from this instances |
| * registry that has been mapped to be notified of all property |
| * changes. |
| * |
| * @param l The listener to remove. |
| */ |
| void removePropertyChangeListener(PropertyChangeListener l); |
| |
| /** |
| * Removes a specific PropertyChangeListener from this instance's |
| * registry which has been previously registered to be notified |
| * of only a specific property change. |
| * |
| * @param propertyName property name, may not be null. |
| * @param l listener to be removed. |
| */ |
| void removePropertyChangeListener( |
| String propertyName, PropertyChangeListener l); |
| |
| /** |
| * True if the plugin is active and running. |
| * |
| * @return boolean true if the plugin is currently active. |
| */ |
| boolean isActive(); |
| |
| /** |
| * Returns true if the testPlugin is considered to be "equivalent" to the |
| * this plugin. The equivalency test is at the discretion of the plugin |
| * implementation. The PluginRegistry will use this method when starting |
| * new plugins to see if a given plugin is considered equivalent to an |
| * already running plugin with the same name. If they are considered to |
| * be equivalent, the currently running plugin will be left in place, and |
| * the new plugin will not be started. |
| * <p/> |
| * It is possible to override the equals() method, however this has |
| * more meaning than is required for this simple test and would also |
| * require the overriding of the hashCode() method as well. All of this |
| * is more work than is needed, so this simple method is used instead. |
| * |
| * @param testPlugin The plugin to test equivalency against. |
| * @return Returns true if testPlugin is considered to be equivelent. |
| */ |
| boolean isEquivalent(Plugin testPlugin); |
| |
| /** |
| * Call when the plugin should be stopped. |
| */ |
| void shutdown(); |
| } |