Merge pull request #205 from apache/cache-to-all

Add shiro-cache to shiro-all package
diff --git a/core/src/main/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategy.java b/core/src/main/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategy.java
index 87cb5cc..3d332f1 100644
--- a/core/src/main/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategy.java
+++ b/core/src/main/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategy.java
@@ -64,7 +64,7 @@
      * otherwise.
      */
     public AuthenticationInfo beforeAttempt(Realm realm, AuthenticationToken token, AuthenticationInfo aggregate) throws AuthenticationException {
-        if (getStopAfterFirstSuccess() && aggregate != null && isEmpty(aggregate.getPrincipals())) {
+        if (getStopAfterFirstSuccess() && aggregate != null && !isEmpty(aggregate.getPrincipals())) {
             throw new ShortCircuitIterationException();
         }
         return aggregate;
diff --git a/core/src/test/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategyTest.java b/core/src/test/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategyTest.java
index 68fe395..5f06566 100644
--- a/core/src/test/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategyTest.java
+++ b/core/src/test/java/org/apache/shiro/authc/pam/FirstSuccessfulStrategyTest.java
@@ -98,10 +98,22 @@
         assertNull(strategy.beforeAttempt(null, null, null));
     }
 
-    @Test (expected=ShortCircuitIterationException.class)
-    public void testBeforeAttemptStopAfterFirstSuccess() {
+    @Test
+    public void testBeforeAttemptEmptyPrincipal() {
         AuthenticationInfo aggregate = new SimpleAuthenticationInfo();
-        strategy.beforeAttempt(null, null, aggregate);
+        assertEquals(strategy.beforeAttempt(null, null, aggregate), aggregate);
     }
 
+    @Test
+    public void testBeforeAttemptEmptyList() {
+        SimplePrincipalCollection principalCollection = new SimplePrincipalCollection();
+        AuthenticationInfo aggregate = new SimpleAuthenticationInfo(principalCollection, null);
+        assertEquals(strategy.beforeAttempt(null, null, aggregate), aggregate);
+    }
+
+    @Test (expected=ShortCircuitIterationException.class)
+    public void testBeforeAttemptStopAfterFirstSuccess() {
+        AuthenticationInfo aggregate = new SimpleAuthenticationInfo("principal", null, "a-realm-name");
+        strategy.beforeAttempt(null, null, aggregate);
+    }
 }
diff --git a/pom.xml b/pom.xml
index a64d4d4..a4280e1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,7 +82,7 @@
         <commons.beanutils.version>1.9.4</commons.beanutils.version>
         <commons.cli.version>1.4</commons.cli.version>
         <commons.codec.version>1.13</commons.codec.version>
-        <commons.configuration2.version>2.5</commons.configuration2.version>
+        <commons.configuration2.version>2.7</commons.configuration2.version>
         <commons.lang3.version>3.9</commons.lang3.version>
         <commons.logging.version>1.2</commons.logging.version>
         <!-- Don't change this version without also changing the shiro-ehcache and shiro-features