Please remember to update changes.xml for each of the issues you fix or 
enhancements you add.

Ralph

On Mar 13, 2013, at 10:10 PM, [email protected] wrote:

> Author: sdeboy
> Date: Thu Mar 14 05:10:42 2013
> New Revision: 1456324
> 
> URL: http://svn.apache.org/r1456324
> Log:
> Implementing LOG4J2-175: Plugin cache should be reset when addPackages is 
> called
> - updated PluginManager#addPackage to reset the pluginTypeMap if a package 
> was added, causing calls to PluginManager#collectPlugins to retrieve plugins 
> instead of use the pluginTypeMap cache
> - updated BaseConfiguration - removed pluginManager member, changed 
> getPluginManager to construct a new 'Core' instance and call collectPlugins 
> on that instance prior to returning
> 
> Resolves the issue where a packages definition on the configuration would not 
> have any effect due to cached plugins and a cached pluginmanager in the 
> configuration
> 
> Modified:
>    
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
>    
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java
> 
> Modified: 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java?rev=1456324&r1=1456323&r2=1456324&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/BaseConfiguration.java
>  Thu Mar 14 05:10:42 2013
> @@ -69,11 +69,6 @@ public class BaseConfiguration extends A
>     protected Node rootNode;
> 
>     /**
> -     * The Plugin Manager.
> -     */
> -    protected PluginManager pluginManager;
> -
> -    /**
>      * Listeners for configuration changes.
>      */
>     protected final List<ConfigurationListener> listeners =
> @@ -109,7 +104,6 @@ public class BaseConfiguration extends A
>      * Constructor.
>      */
>     protected BaseConfiguration() {
> -        pluginManager = new PluginManager("Core");
>         rootNode = new Node();
>     }
> 
> @@ -121,7 +115,6 @@ public class BaseConfiguration extends A
>      * Initialize the configuration.
>      */
>     public void start() {
> -        pluginManager.collectPlugins();
>         setup();
>         doConfigure();
>         for (final LoggerConfig logger : loggers.values()) {
> @@ -243,7 +236,11 @@ public class BaseConfiguration extends A
>     }
> 
>     protected PluginManager getPluginManager() {
> -        return pluginManager;
> +        //don't cache a pluginmanager instance - packages may be updated, 
> requiring 
> +        // re-discovery of plugins
> +        PluginManager mgr = new PluginManager("Core");
> +        mgr.collectPlugins();
> +        return mgr;
>     }
> 
>     /**
> 
> Modified: 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java
> URL: 
> http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java?rev=1456324&r1=1456323&r2=1456324&view=diff
> ==============================================================================
> --- 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java
>  (original)
> +++ 
> logging/log4j/log4j2/trunk/core/src/main/java/org/apache/logging/log4j/core/config/plugins/PluginManager.java
>  Thu Mar 14 05:10:42 2013
> @@ -98,7 +98,11 @@ public class PluginManager {
>      * @param p The package name.
>      */
>     public static void addPackage(final String p) {
> -        PACKAGES.addIfAbsent(p);
> +        if (PACKAGES.addIfAbsent(p))
> +        {
> +            //set of available plugins could have changed, reset plugin 
> cache for newly-retrieved managers
> +            pluginTypeMap.clear();
> +        }
>     }
> 
>     /**
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to