You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shiro.apache.org by bd...@apache.org on 2017/05/01 02:16:04 UTC

[1/3] shiro git commit: SHIRO-618 - Autoconfiguration for Realm and ShiroFilterChainDefinition

Repository: shiro
Updated Branches:
  refs/heads/master 8acc82ab4 -> b12d70e60


SHIRO-618 - Autoconfiguration for Realm and ShiroFilterChainDefinition

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

Branch: refs/heads/master
Commit: 3ebfd9595e1bc03a320e49b8a8d2c6941acaf6cf
Parents: 8acc82a
Author: marcgiffing <ma...@web.de>
Authored: Sat Mar 25 16:14:40 2017 +0100
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:45 2017 -0400

----------------------------------------------------------------------
 .../ShiroNoRealmConfiguredFailureAnalyzer.java  | 14 ++++++++
 .../ShiroWebAutoConfiguration.java              | 38 +++++++++++++++++---
 .../NoRealmBeanConfiguredException.java         |  9 +++++
 .../main/resources/META-INF/spring.factories    |  2 ++
 4 files changed, 58 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
new file mode 100644
index 0000000..9a3f3c5
--- /dev/null
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
@@ -0,0 +1,14 @@
+package org.apache.shiro.spring.config.web.autoconfigure;
+
+import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
+import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
+import org.springframework.boot.diagnostics.FailureAnalysis;
+
+public class ShiroNoRealmConfiguredFailureAnalyzer extends AbstractFailureAnalyzer<NoRealmBeanConfiguredException> {
+ 
+ 	@Override
+ 	protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) {
+ 		return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type realm or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini) .", cause);
+ 	}
+ 
+ }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
index 953a63e..b458f67 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
@@ -18,24 +18,30 @@
  */
 package org.apache.shiro.spring.config.web.autoconfigure;
 
+import java.util.List;
+
 import org.apache.shiro.authc.Authenticator;
 import org.apache.shiro.authc.pam.AuthenticationStrategy;
 import org.apache.shiro.authz.Authorizer;
-import org.apache.shiro.mgt.*;
+import org.apache.shiro.config.Ini;
+import org.apache.shiro.mgt.RememberMeManager;
+import org.apache.shiro.mgt.SessionStorageEvaluator;
+import org.apache.shiro.mgt.SessionsSecurityManager;
+import org.apache.shiro.mgt.SubjectDAO;
+import org.apache.shiro.mgt.SubjectFactory;
 import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.text.IniRealm;
 import org.apache.shiro.session.mgt.SessionFactory;
 import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
 import org.apache.shiro.spring.web.config.AbstractShiroWebConfiguration;
 import org.apache.shiro.web.servlet.Cookie;
-import org.springframework.boot.autoconfigure.AutoConfigureOrder;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
-
-import java.util.List;
 
 /**
  * @since 1.4.0
@@ -134,5 +140,27 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
     protected SessionsSecurityManager securityManager(List<Realm> realms) {
         return super.securityManager(realms);
     }
+    
+    @Bean
+    @ConditionalOnResource(resources = "classpath:shiro.ini")
+    protected Realm iniClasspathRealm() {
+        Ini ini = Ini.fromResourcePath("classpath:shiro.ini");
+        IniRealm iniRealm = new IniRealm( ini );
+        return iniRealm;
+    }
+    
+    @Bean
+    @ConditionalOnResource(resources = "classpath:META-INF/shiro.ini")
+    protected Realm iniMetaInfClasspathRealm() {
+        Ini ini = Ini.fromResourcePath("classpath:META-INF/shiro.ini");
+        IniRealm iniRealm = new IniRealm( ini );
+        return iniRealm;
+    }
+    
+    @Bean
+    @ConditionalOnMissingBean(Realm.class)
+    protected Realm missingRealm() {
+        throw new NoRealmBeanConfiguredException();
+    }
 
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
new file mode 100644
index 0000000..29c7d07
--- /dev/null
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
@@ -0,0 +1,9 @@
+package org.apache.shiro.spring.config.web.autoconfigure.exception;
+
+/**
+ * This exception should be thrown if not bean of type {@link Realm} found.
+ *
+ */
+public class NoRealmBeanConfiguredException extends RuntimeException {
+
+}

http://git-wip-us.apache.org/repos/asf/shiro/blob/3ebfd959/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
index 397c6e4..f056770 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
+++ b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
@@ -1 +1,3 @@
 org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.apache.shiro.spring.config.web.autoconfigure.ShiroBeanAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
+
+org.springframework.boot.diagnostics.FailureAnalyzer=org.apache.shiro.spring.config.web.autoconfigure.ShiroNoRealmConfiguredFailureAnalyzer
\ No newline at end of file


[2/3] shiro git commit: SHIRO-618 Remove Spring duplicate auto config classes

Posted by bd...@apache.org.
SHIRO-618 Remove Spring duplicate auto config classes

Including shiro-spring-boot-starter as a shiro-spring-boot-web-starter dependency


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

Branch: refs/heads/master
Commit: 66e6b96ee3e5ce675654ff70a4a58b623e6ba87e
Parents: 3ebfd95
Author: Brian Demers <bd...@apache.org>
Authored: Sun Apr 30 21:57:00 2017 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:46 2017 -0400

----------------------------------------------------------------------
 .../autoconfigure/ShiroAutoConfiguration.java   | 29 ++++++++-
 .../ShiroNoRealmConfiguredFailureAnalyzer.java  | 14 ++++
 .../NoRealmBeanConfiguredException.java         |  9 +++
 .../main/resources/META-INF/spring.factories    |  8 ++-
 .../spring-boot/spring-boot-web-starter/pom.xml |  2 +-
 ...iroAnnotationProcessorAutoConfiguration.java | 53 ---------------
 .../ShiroBeanAutoConfiguration.java             | 57 ----------------
 .../ShiroNoRealmConfiguredFailureAnalyzer.java  | 14 ----
 .../ShiroWebAutoConfiguration.java              | 68 ++++++++------------
 .../NoRealmBeanConfiguredException.java         |  9 ---
 .../main/resources/META-INF/spring.factories    |  6 +-
 .../config/AbstractShiroConfiguration.java      |  7 ++
 .../config/AbstractShiroWebConfiguration.java   |  8 +++
 .../web/config/ShiroWebConfiguration.java       |  5 ++
 14 files changed, 107 insertions(+), 182 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
index e013a4b..58cf898 100644
--- a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroAutoConfiguration.java
@@ -29,13 +29,13 @@ import org.apache.shiro.realm.Realm;
 import org.apache.shiro.session.mgt.SessionFactory;
 import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
+import org.apache.shiro.spring.boot.autoconfigure.exception.NoRealmBeanConfiguredException;
 import org.apache.shiro.spring.config.AbstractShiroConfiguration;
-import org.apache.shiro.spring.config.ShiroBeanConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.Import;
 
 import java.util.List;
 
@@ -64,6 +64,13 @@ public class ShiroAutoConfiguration extends AbstractShiroConfiguration {
     @Bean
     @ConditionalOnMissingBean
     @Override
+    protected Authorizer authorizer() {
+        return super.authorizer();
+    }
+
+    @Bean
+    @ConditionalOnMissingBean
+    @Override
     protected SubjectDAO subjectDAO() {
         return super.subjectDAO();
     }
@@ -110,5 +117,23 @@ public class ShiroAutoConfiguration extends AbstractShiroConfiguration {
         return super.securityManager(realms);
     }
 
+    @Bean
+    @ConditionalOnResource(resources = "classpath:shiro.ini")
+    protected Realm iniClasspathRealm() {
+        return iniRealmFromLocation("classpath:shiro.ini");
+    }
+
+    @Bean
+    @ConditionalOnResource(resources = "classpath:META-INF/shiro.ini")
+    protected Realm iniMetaInfClasspathRealm() {
+        return iniRealmFromLocation("classpath:META-INF/shiro.ini");
+    }
+
+    @Bean
+    @ConditionalOnMissingBean(Realm.class)
+    protected Realm missingRealm() {
+        throw new NoRealmBeanConfiguredException();
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
new file mode 100644
index 0000000..d7d2753
--- /dev/null
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
@@ -0,0 +1,14 @@
+package org.apache.shiro.spring.boot.autoconfigure;
+
+import org.apache.shiro.spring.boot.autoconfigure.exception.NoRealmBeanConfiguredException;
+import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
+import org.springframework.boot.diagnostics.FailureAnalysis;
+
+public class ShiroNoRealmConfiguredFailureAnalyzer extends AbstractFailureAnalyzer<NoRealmBeanConfiguredException> {
+ 
+ 	@Override
+ 	protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) {
+ 		return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type 'Realm' or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini).", cause);
+ 	}
+ 
+ }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
new file mode 100644
index 0000000..bbc0e0a
--- /dev/null
+++ b/support/spring-boot/spring-boot-starter/src/main/java/org/apache/shiro/spring/boot/autoconfigure/exception/NoRealmBeanConfiguredException.java
@@ -0,0 +1,9 @@
+package org.apache.shiro.spring.boot.autoconfigure.exception;
+
+/**
+ * This exception should be thrown if not bean of type {@link org.apache.shiro.realm.Realm Realm} found.
+ *
+ */
+public class NoRealmBeanConfiguredException extends RuntimeException {
+
+}

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories b/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
index 6d6f529..ac5e856 100644
--- a/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
+++ b/support/spring-boot/spring-boot-starter/src/main/resources/META-INF/spring.factories
@@ -1 +1,7 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration,org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration,org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
\ No newline at end of file
+org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
+  org.apache.shiro.spring.boot.autoconfigure.ShiroBeanAutoConfiguration,\
+  org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration,\
+  org.apache.shiro.spring.boot.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
+
+org.springframework.boot.diagnostics.FailureAnalyzer = \
+  org.apache.shiro.spring.boot.autoconfigure.ShiroNoRealmConfiguredFailureAnalyzer
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/pom.xml
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/pom.xml b/support/spring-boot/spring-boot-web-starter/pom.xml
index 15d9d9a..6157b05 100644
--- a/support/spring-boot/spring-boot-web-starter/pom.xml
+++ b/support/spring-boot/spring-boot-web-starter/pom.xml
@@ -35,7 +35,7 @@
 
         <dependency>
             <groupId>org.apache.shiro</groupId>
-            <artifactId>shiro-spring</artifactId>
+            <artifactId>shiro-spring-boot-starter</artifactId>
         </dependency>
 
         <dependency>

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
deleted file mode 100644
index c740fcf..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroAnnotationProcessorAutoConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * 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.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.mgt.SecurityManager;
-import org.apache.shiro.spring.config.AbstractShiroAnnotationProcessorConfiguration;
-import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
-import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.DependsOn;
-
-/**
- * @since 1.4.0
- */
-@SuppressWarnings("SpringFacetCodeInspection")
-@Configuration
-@ConditionalOnProperty(name = "shiro.annotations.enabled", matchIfMissing = true)
-public class ShiroAnnotationProcessorAutoConfiguration extends AbstractShiroAnnotationProcessorConfiguration {
-
-    @Bean
-    @DependsOn("lifecycleBeanPostProcessor")
-    @ConditionalOnMissingBean
-    @Override
-    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
-        return super.defaultAdvisorAutoProxyCreator();
-    }
-
-    @Bean
-    @ConditionalOnMissingBean
-    @Override
-    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {
-        return super.authorizationAttributeSourceAdvisor(securityManager);
-    }
-}

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
deleted file mode 100644
index 24ff025..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroBeanAutoConfiguration.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * 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.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.event.EventBus;
-import org.apache.shiro.spring.LifecycleBeanPostProcessor;
-import org.apache.shiro.spring.config.AbstractShiroBeanConfiguration;
-import org.apache.shiro.spring.ShiroEventBusBeanPostProcessor;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * @since 1.4.0
- */
-@Configuration
-@ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true)
-public class ShiroBeanAutoConfiguration extends AbstractShiroBeanConfiguration {
-
-    @Bean
-    @ConditionalOnMissingBean
-    @Override
-    public LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
-        return super.lifecycleBeanPostProcessor();
-    }
-
-    @Bean
-    @ConditionalOnMissingBean
-    @Override
-    public EventBus eventBus() {
-        return super.eventBus();
-    }
-
-    @Bean
-    @ConditionalOnMissingBean
-    @Override
-    public ShiroEventBusBeanPostProcessor shiroEventBusAwareBeanPostProcessor() {
-        return super.shiroEventBusAwareBeanPostProcessor();
-    }
-}

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
deleted file mode 100644
index 9a3f3c5..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroNoRealmConfiguredFailureAnalyzer.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.apache.shiro.spring.config.web.autoconfigure;
-
-import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
-import org.springframework.boot.diagnostics.AbstractFailureAnalyzer;
-import org.springframework.boot.diagnostics.FailureAnalysis;
-
-public class ShiroNoRealmConfiguredFailureAnalyzer extends AbstractFailureAnalyzer<NoRealmBeanConfiguredException> {
- 
- 	@Override
- 	protected FailureAnalysis analyze(Throwable rootFailure, NoRealmBeanConfiguredException cause) {
- 		return new FailureAnalysis( "No bean of type 'org.apache.shiro.realm.Realm' found.", "Please create bean of type realm or add a shiro.ini in the root classpath (src/main/resources/shiro.ini) or in the META-INF folder (src/main/resources/META-INF/shiro.ini) .", cause);
- 	}
- 
- }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
index b458f67..4ab440c 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
+++ b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/ShiroWebAutoConfiguration.java
@@ -23,23 +23,22 @@ import java.util.List;
 import org.apache.shiro.authc.Authenticator;
 import org.apache.shiro.authc.pam.AuthenticationStrategy;
 import org.apache.shiro.authz.Authorizer;
-import org.apache.shiro.config.Ini;
 import org.apache.shiro.mgt.RememberMeManager;
 import org.apache.shiro.mgt.SessionStorageEvaluator;
 import org.apache.shiro.mgt.SessionsSecurityManager;
 import org.apache.shiro.mgt.SubjectDAO;
 import org.apache.shiro.mgt.SubjectFactory;
 import org.apache.shiro.realm.Realm;
-import org.apache.shiro.realm.text.IniRealm;
 import org.apache.shiro.session.mgt.SessionFactory;
 import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.session.mgt.eis.SessionDAO;
-import org.apache.shiro.spring.config.web.autoconfigure.exception.NoRealmBeanConfiguredException;
+import org.apache.shiro.spring.boot.autoconfigure.ShiroAutoConfiguration;
 import org.apache.shiro.spring.web.config.AbstractShiroWebConfiguration;
+import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition;
 import org.apache.shiro.web.servlet.Cookie;
+import org.springframework.boot.autoconfigure.AutoConfigureBefore;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnResource;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
@@ -47,6 +46,7 @@ import org.springframework.context.annotation.Configuration;
  * @since 1.4.0
  */
 @Configuration
+@AutoConfigureBefore(ShiroAutoConfiguration.class)
 @ConditionalOnProperty(name = "shiro.web.enabled", matchIfMissing = true)
 public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
 
@@ -88,6 +88,13 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
     @Bean
     @ConditionalOnMissingBean
     @Override
+    protected SubjectFactory subjectFactory() {
+        return super.subjectFactory();
+    }
+
+    @Bean
+    @ConditionalOnMissingBean
+    @Override
     protected SessionFactory sessionFactory() {
         return super.sessionFactory();
     }
@@ -100,67 +107,44 @@ public class ShiroWebAutoConfiguration extends AbstractShiroWebConfiguration {
     }
 
     @Bean
-    @ConditionalOnMissingBean(name = "sessionCookieTemplate")
+    @ConditionalOnMissingBean
     @Override
-    protected Cookie sessionCookieTemplate() {
-        return super.sessionCookieTemplate();
+    protected SessionManager sessionManager() {
+        return super.sessionManager();
     }
 
     @Bean
     @ConditionalOnMissingBean
     @Override
-    protected RememberMeManager rememberMeManager() {
-        return super.rememberMeManager();
+    protected SessionsSecurityManager securityManager(List<Realm> realms) {
+        return super.securityManager(realms);
     }
 
     @Bean
-    @ConditionalOnMissingBean(name = "rememberMeCookieTemplate")
+    @ConditionalOnMissingBean(name = "sessionCookieTemplate")
     @Override
-    protected Cookie rememberMeCookieTemplate() {
-        return super.rememberMeCookieTemplate();
+    protected Cookie sessionCookieTemplate() {
+        return super.sessionCookieTemplate();
     }
 
     @Bean
     @ConditionalOnMissingBean
     @Override
-    protected SubjectFactory subjectFactory() {
-        return super.subjectFactory();
+    protected RememberMeManager rememberMeManager() {
+        return super.rememberMeManager();
     }
 
     @Bean
-    @ConditionalOnMissingBean
+    @ConditionalOnMissingBean(name = "rememberMeCookieTemplate")
     @Override
-    protected SessionManager sessionManager() {
-        return super.sessionManager();
+    protected Cookie rememberMeCookieTemplate() {
+        return super.rememberMeCookieTemplate();
     }
 
     @Bean
     @ConditionalOnMissingBean
     @Override
-    protected SessionsSecurityManager securityManager(List<Realm> realms) {
-        return super.securityManager(realms);
-    }
-    
-    @Bean
-    @ConditionalOnResource(resources = "classpath:shiro.ini")
-    protected Realm iniClasspathRealm() {
-        Ini ini = Ini.fromResourcePath("classpath:shiro.ini");
-        IniRealm iniRealm = new IniRealm( ini );
-        return iniRealm;
+    protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+        return super.shiroFilterChainDefinition();
     }
-    
-    @Bean
-    @ConditionalOnResource(resources = "classpath:META-INF/shiro.ini")
-    protected Realm iniMetaInfClasspathRealm() {
-        Ini ini = Ini.fromResourcePath("classpath:META-INF/shiro.ini");
-        IniRealm iniRealm = new IniRealm( ini );
-        return iniRealm;
-    }
-    
-    @Bean
-    @ConditionalOnMissingBean(Realm.class)
-    protected Realm missingRealm() {
-        throw new NoRealmBeanConfiguredException();
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java b/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
deleted file mode 100644
index 29c7d07..0000000
--- a/support/spring-boot/spring-boot-web-starter/src/main/java/org/apache/shiro/spring/config/web/autoconfigure/exception/NoRealmBeanConfiguredException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.shiro.spring.config.web.autoconfigure.exception;
-
-/**
- * This exception should be thrown if not bean of type {@link Realm} found.
- *
- */
-public class NoRealmBeanConfiguredException extends RuntimeException {
-
-}

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
index f056770..b69324a 100644
--- a/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
+++ b/support/spring-boot/spring-boot-web-starter/src/main/resources/META-INF/spring.factories
@@ -1,3 +1,3 @@
-org.springframework.boot.autoconfigure.EnableAutoConfiguration = org.apache.shiro.spring.config.web.autoconfigure.ShiroBeanAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration,org.apache.shiro.spring.config.web.autoconfigure.ShiroAnnotationProcessorAutoConfiguration
-
-org.springframework.boot.diagnostics.FailureAnalyzer=org.apache.shiro.spring.config.web.autoconfigure.ShiroNoRealmConfiguredFailureAnalyzer
\ No newline at end of file
+org.springframework.boot.autoconfigure.EnableAutoConfiguration = \
+  org.apache.shiro.spring.config.web.autoconfigure.ShiroWebAutoConfiguration,\
+  org.apache.shiro.spring.config.web.autoconfigure.ShiroWebFilterConfiguration

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
index 7f25178..0be5176 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/config/AbstractShiroConfiguration.java
@@ -27,9 +27,11 @@ import org.apache.shiro.authz.ModularRealmAuthorizer;
 import org.apache.shiro.authz.permission.PermissionResolver;
 import org.apache.shiro.authz.permission.RolePermissionResolver;
 import org.apache.shiro.cache.CacheManager;
+import org.apache.shiro.config.Ini;
 import org.apache.shiro.event.EventBus;
 import org.apache.shiro.mgt.*;
 import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.text.IniRealm;
 import org.apache.shiro.session.mgt.DefaultSessionManager;
 import org.apache.shiro.session.mgt.SessionFactory;
 import org.apache.shiro.session.mgt.SessionManager;
@@ -149,4 +151,9 @@ public class AbstractShiroConfiguration {
         authenticator.setAuthenticationStrategy(authenticationStrategy());
         return authenticator;
     }
+
+    protected Realm iniRealmFromLocation(String iniLocation) {
+        Ini ini = Ini.fromResourcePath(iniLocation);
+        return new IniRealm( ini );
+    }
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
index 6229283..6e2cad3 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/web/config/AbstractShiroWebConfiguration.java
@@ -18,10 +18,13 @@
  */
 package org.apache.shiro.spring.web.config;
 
+import org.apache.shiro.config.Ini;
 import org.apache.shiro.mgt.RememberMeManager;
 import org.apache.shiro.mgt.SessionStorageEvaluator;
 import org.apache.shiro.mgt.SessionsSecurityManager;
 import org.apache.shiro.mgt.SubjectFactory;
+import org.apache.shiro.realm.Realm;
+import org.apache.shiro.realm.text.IniRealm;
 import org.apache.shiro.session.mgt.SessionManager;
 import org.apache.shiro.spring.config.AbstractShiroConfiguration;
 import org.apache.shiro.web.mgt.CookieRememberMeManager;
@@ -161,4 +164,9 @@ public class AbstractShiroWebConfiguration extends AbstractShiroConfiguration {
         return securityManager;
     }
 
+    protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+        DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
+        chainDefinition.addPathDefinition("/**", "authc");
+        return chainDefinition;
+    }
 }

http://git-wip-us.apache.org/repos/asf/shiro/blob/66e6b96e/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
----------------------------------------------------------------------
diff --git a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
index e3bb516..dc57b22 100644
--- a/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
+++ b/support/spring/src/main/java/org/apache/shiro/spring/web/config/ShiroWebConfiguration.java
@@ -117,4 +117,9 @@ public class ShiroWebConfiguration extends AbstractShiroWebConfiguration {
         return super.securityManager(realms);
     }
 
+    @Bean
+    @Override
+    protected ShiroFilterChainDefinition shiroFilterChainDefinition() {
+        return super.shiroFilterChainDefinition();
+    }
 }


[3/3] shiro git commit: SHIRO-559 Remove checked exception on @PreDestroy in ShiroModule

Posted by bd...@apache.org.
SHIRO-559 Remove checked exception on @PreDestroy in ShiroModule

Required by Glassfish, possibly other containers per spec: https://docs.oracle.com/javaee/7/api/javax/annotation/PreDestroy.html


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

Branch: refs/heads/master
Commit: b12d70e60bcee29aa811f57525d21a787d42501c
Parents: 66e6b96
Author: Brian Demers <bd...@apache.org>
Authored: Sun Apr 30 22:08:59 2017 -0400
Committer: Brian Demers <bd...@apache.org>
Committed: Sun Apr 30 22:11:46 2017 -0400

----------------------------------------------------------------------
 .../java/org/apache/shiro/guice/ShiroModule.java    | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/shiro/blob/b12d70e6/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
----------------------------------------------------------------------
diff --git a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
index 2eac73d..3abbe95 100644
--- a/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
+++ b/support/guice/src/main/java/org/apache/shiro/guice/ShiroModule.java
@@ -29,7 +29,6 @@ import javax.annotation.PreDestroy;
 
 import com.google.inject.Provider;
 import com.google.inject.matcher.Matchers;
-import com.google.inject.name.Names;
 import com.google.inject.spi.InjectionListener;
 import com.google.inject.spi.TypeEncounter;
 import com.google.inject.spi.TypeListener;
@@ -54,6 +53,8 @@ import com.google.inject.binder.AnnotatedBindingBuilder;
 import com.google.inject.binder.LinkedBindingBuilder;
 import com.google.inject.multibindings.Multibinder;
 import com.google.inject.util.Types;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 
 /**
@@ -63,6 +64,8 @@ import com.google.inject.util.Types;
  */
 public abstract class ShiroModule extends PrivateModule implements Destroyable {
 
+    private final Logger log = LoggerFactory.getLogger(ShiroModule.class);
+
 	private Set<Destroyable> destroyables = Collections.newSetFromMap(new WeakHashMap<Destroyable, Boolean>());
     public void configure() {
         // setup security manager
@@ -79,7 +82,7 @@ public abstract class ShiroModule extends PrivateModule implements Destroyable {
             }
 
             @PreDestroy
-            public void destroy() throws Exception {
+            public void destroy() {
                 ShiroModule.this.destroy();
             }
         };
@@ -184,9 +187,14 @@ public abstract class ShiroModule extends PrivateModule implements Destroyable {
      *
      * @throws Exception
      */
-    public final void destroy() throws Exception {
+    public final void destroy() {
         for (Destroyable destroyable : destroyables) {
-            destroyable.destroy();
+            try {
+                destroyable.destroy();
+            }
+            catch(Exception e) {
+                log.warn("Error destroying component class: " + destroyable.getClass(), e);
+            }
         }
     }