SHIRO-435: Fix the double SecurityManager singleton. Also prevent the same 
issue on Environment. Update test cases of ShiroWebModule accordingly. (Patch 
from https://issues.apache.org/jira/browse/SHIRO-435)

Fixes #16


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

Branch: refs/heads/1.3.x
Commit: dff6cc689440a954a64335df52d390f4bbe98ef2
Parents: 3015cd0
Author: Johannes Schnatterer <[email protected]>
Authored: Wed May 25 14:29:41 2016 +0200
Committer: Brian Demers <[email protected]>
Committed: Wed Jun 29 14:59:59 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/shiro/guice/web/ShiroWebModule.java     | 4 ++--
 .../java/org/apache/shiro/guice/web/ShiroWebModuleTest.java | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/dff6cc68/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
----------------------------------------------------------------------
diff --git 
a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java 
b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
index 316958e..45bc916 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/web/ShiroWebModule.java
@@ -179,7 +179,7 @@ public abstract class ShiroWebModule extends ShiroModule {
     @SuppressWarnings({"unchecked"})
     @Override
     protected final void bindSecurityManager(AnnotatedBindingBuilder<? super 
SecurityManager> bind) {
-        bindWebSecurityManager(bind);
+        bind.to(WebSecurityManager.class); // SHIRO-435
     }
 
     /**
@@ -211,7 +211,7 @@ public abstract class ShiroWebModule extends ShiroModule {
 
     @Override
     protected final void bindEnvironment(AnnotatedBindingBuilder<Environment> 
bind) {
-        bindWebEnvironment(bind);
+        bind.to(WebEnvironment.class); // SHIRO-435
     }
 
     protected void bindWebEnvironment(AnnotatedBindingBuilder<? super 
WebEnvironment> bind) {

http://git-wip-us.apache.org/repos/asf/shiro/blob/dff6cc68/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
----------------------------------------------------------------------
diff --git 
a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
 
b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
index 908f322..a3a3f76 100644
--- 
a/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
+++ 
b/support/guice/src/test/java/org/apache/shiro/guice/web/ShiroWebModuleTest.java
@@ -100,7 +100,7 @@ public class ShiroWebModuleTest {
 
             @Override
             protected void bindWebSecurityManager(AnnotatedBindingBuilder<? 
super WebSecurityManager> bind) {
-                bind.to(MyDefaultWebSecurityManager.class);
+                bind.to(MyDefaultWebSecurityManager.class).asEagerSingleton();
             }
         });
         SecurityManager securityManager = 
injector.getInstance(SecurityManager.class);
@@ -109,7 +109,8 @@ public class ShiroWebModuleTest {
         WebSecurityManager webSecurityManager = 
injector.getInstance(WebSecurityManager.class);
         assertNotNull(webSecurityManager);
         assertTrue(webSecurityManager instanceof MyDefaultWebSecurityManager);
-
+        // SHIRO-435: Check both keys SecurityManager and WebSecurityManager 
are bound to the same instance
+        assertTrue( securityManager == webSecurityManager );
     }
 
     @Test
@@ -132,7 +133,7 @@ public class ShiroWebModuleTest {
 
             @Override
             protected void bindWebEnvironment(AnnotatedBindingBuilder<? super 
WebEnvironment> bind) {
-                bind.to(MyWebEnvironment.class);
+                bind.to(MyWebEnvironment.class).asEagerSingleton();
             }
         });
         Environment environment = injector.getInstance(Environment.class);
@@ -141,6 +142,8 @@ public class ShiroWebModuleTest {
         WebEnvironment webEnvironment = 
injector.getInstance(WebEnvironment.class);
         assertNotNull(webEnvironment);
         assertTrue(webEnvironment instanceof MyWebEnvironment);
+        // SHIRO-435: Check both keys Environment and WebEnvironment are bound 
to the same instance
+        assertTrue( environment == webEnvironment );
     }
 
     public static class MyDefaultWebSecurityManager extends 
DefaultWebSecurityManager {

Reply via email to