SHIRO-593 - Moved 'defaultBeans' to IniFactorySupport

Project: http://git-wip-us.apache.org/repos/asf/shiro/repo
Commit: http://git-wip-us.apache.org/repos/asf/shiro/commit/4af5e182
Tree: http://git-wip-us.apache.org/repos/asf/shiro/tree/4af5e182
Diff: http://git-wip-us.apache.org/repos/asf/shiro/diff/4af5e182

Branch: refs/heads/master
Commit: 4af5e182474ea0017c292a342fa70a525f4cb085
Parents: af75fb5
Author: Brian Demers <bdem...@apache.org>
Authored: Mon Sep 26 21:30:52 2016 -0400
Committer: Brian Demers <bdem...@apache.org>
Committed: Tue Oct 18 12:46:24 2016 -0400

----------------------------------------------------------------------
 .../apache/shiro/config/IniFactorySupport.java  | 25 ++++++++++++++++++++
 .../shiro/config/IniSecurityManagerFactory.java |  6 +++++
 .../config/IniFilterChainResolverFactory.java   |  9 ++++---
 3 files changed, 35 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/4af5e182/core/src/main/java/org/apache/shiro/config/IniFactorySupport.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/shiro/config/IniFactorySupport.java 
b/core/src/main/java/org/apache/shiro/config/IniFactorySupport.java
index aaa4ad1..17ebff0 100644
--- a/core/src/main/java/org/apache/shiro/config/IniFactorySupport.java
+++ b/core/src/main/java/org/apache/shiro/config/IniFactorySupport.java
@@ -25,6 +25,9 @@ import org.apache.shiro.util.Factory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.HashMap;
+import java.util.Map;
+
 /**
  * Base support class for {@link Factory} implementations that generate their 
instance(s) based on
  * {@link Ini} configuration.
@@ -41,6 +44,8 @@ public abstract class IniFactorySupport<T> extends 
AbstractFactory<T> {
 
     private Ini ini;
 
+    private Map<String, ?> defaultBeans;
+
     protected IniFactorySupport() {
     }
 
@@ -57,6 +62,26 @@ public abstract class IniFactorySupport<T> extends 
AbstractFactory<T> {
     }
 
     /**
+     * Returns a mapping of String to bean representing the default set of 
object used by the factory.
+     * These beans can be used by this factory in conjunction with objects 
parsed from the INI configuration.
+     * @return A Map of default objects, or <code>null</code>.
+     * @since 1.4
+     */
+    protected Map<String, ?> getDefaults() {
+        return defaultBeans;
+    }
+
+    /**
+     * Sets the default objects used by this factory. These defaults may be 
used in conjunction with the INI
+     * configuration.
+     * @param defaultBeans String to object mapping used for default 
configuration in this factory.
+     * @since 1.4
+     */
+    public void setDefaults(Map<String, ?> defaultBeans) {
+        this.defaultBeans = defaultBeans;
+    }
+
+    /**
      * Returns a new Ini instance created from the default {@code 
classpath:shiro.ini} file, or {@code null} if
      * the file does not exist.
      *

http://git-wip-us.apache.org/repos/asf/shiro/blob/4af5e182/core/src/main/java/org/apache/shiro/config/IniSecurityManagerFactory.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/shiro/config/IniSecurityManagerFactory.java 
b/core/src/main/java/org/apache/shiro/config/IniSecurityManagerFactory.java
index 2333220..628f0b5 100644
--- a/core/src/main/java/org/apache/shiro/config/IniSecurityManagerFactory.java
+++ b/core/src/main/java/org/apache/shiro/config/IniSecurityManagerFactory.java
@@ -161,6 +161,12 @@ public class IniSecurityManagerFactory extends 
IniFactorySupport<SecurityManager
             }
         }
 
+        // The values from 'getDefaults()' will override the above.
+        Map<String, ?> defaultBeans = getDefaults();
+        if (!CollectionUtils.isEmpty(defaultBeans)) {
+            defaults.putAll(defaultBeans);
+        }
+
         return defaults;
     }
 

http://git-wip-us.apache.org/repos/asf/shiro/blob/4af5e182/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
----------------------------------------------------------------------
diff --git 
a/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
 
b/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
index ad7e7f0..fb9f822 100644
--- 
a/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
+++ 
b/web/src/main/java/org/apache/shiro/web/config/IniFilterChainResolverFactory.java
@@ -49,8 +49,6 @@ public class IniFilterChainResolverFactory extends 
IniFactorySupport<FilterChain
 
     private FilterConfig filterConfig;
 
-    private Map<String, ?> defaultBeans;
-
     public IniFilterChainResolverFactory() {
         super();
     }
@@ -61,7 +59,7 @@ public class IniFilterChainResolverFactory extends 
IniFactorySupport<FilterChain
 
     public IniFilterChainResolverFactory(Ini ini, Map<String, ?> defaultBeans) 
{
         this(ini);
-        this.defaultBeans = defaultBeans;
+        this.setDefaults(defaultBeans);
     }
 
     public FilterConfig getFilterConfig() {
@@ -113,8 +111,9 @@ public class IniFilterChainResolverFactory extends 
IniFactorySupport<FilterChain
         }
         //User-provided objects must come _after_ the default filters - to 
allow the user-provided
         //ones to override the default filters if necessary.
-        if (!CollectionUtils.isEmpty(this.defaultBeans)) {
-            defaults.putAll(this.defaultBeans);
+        Map<String, ?> defaultBeans = getDefaults();
+        if (!CollectionUtils.isEmpty(defaultBeans)) {
+            defaults.putAll(defaultBeans);
         }
 
         Map<String, Filter> filters = getFilters(section, defaults);

Reply via email to