Add constructors to facilitate constructor-based injection for required/shared bean properties.
This commit is contained in:
@@ -50,6 +50,13 @@ public abstract class AbstractAccessDecisionManager implements AccessDecisionMan
|
||||
|
||||
private boolean allowIfAllAbstainDecisions = false;
|
||||
|
||||
protected AbstractAccessDecisionManager() {
|
||||
}
|
||||
|
||||
protected AbstractAccessDecisionManager(List<AccessDecisionVoter> decisionVoters) {
|
||||
this.decisionVoters = decisionVoters;
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
@@ -76,6 +83,10 @@ public abstract class AbstractAccessDecisionManager implements AccessDecisionMan
|
||||
this.allowIfAllAbstainDecisions = allowIfAllAbstainDecisions;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor
|
||||
*/
|
||||
@Deprecated
|
||||
public void setDecisionVoters(List<AccessDecisionVoter> newList) {
|
||||
Assert.notEmpty(newList);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
package org.springframework.security.access.vote;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
|
||||
import org.springframework.security.access.AccessDecisionVoter;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
@@ -28,6 +28,18 @@ import org.springframework.security.core.Authentication;
|
||||
* <code>AccessDecisionVoter</code> returns an affirmative response.
|
||||
*/
|
||||
public class AffirmativeBased extends AbstractAccessDecisionManager {
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor which takes voter list
|
||||
*/
|
||||
@Deprecated
|
||||
public AffirmativeBased() {
|
||||
}
|
||||
|
||||
public AffirmativeBased(List<AccessDecisionVoter> decisionVoters) {
|
||||
super(decisionVoters);
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
package org.springframework.security.access.vote;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.*;
|
||||
|
||||
import org.springframework.security.access.AccessDecisionVoter;
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
@@ -34,6 +34,17 @@ public class ConsensusBased extends AbstractAccessDecisionManager {
|
||||
|
||||
private boolean allowIfEqualGrantedDeniedDecisions = true;
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor which takes voter list
|
||||
*/
|
||||
@Deprecated
|
||||
public ConsensusBased() {
|
||||
}
|
||||
|
||||
public ConsensusBased(List<AccessDecisionVoter> decisionVoters) {
|
||||
super(decisionVoters);
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
/**
|
||||
|
||||
@@ -30,6 +30,18 @@ import org.springframework.security.core.Authentication;
|
||||
* voters to abstain or grant access.
|
||||
*/
|
||||
public class UnanimousBased extends AbstractAccessDecisionManager {
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor which takes voter list
|
||||
*/
|
||||
@Deprecated
|
||||
public UnanimousBased() {
|
||||
}
|
||||
|
||||
public UnanimousBased(List<AccessDecisionVoter> decisionVoters) {
|
||||
super(decisionVoters);
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
/**
|
||||
|
||||
@@ -40,11 +40,22 @@ public class AnonymousAuthenticationProvider implements AuthenticationProvider,
|
||||
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
|
||||
private String key;
|
||||
|
||||
/**
|
||||
*
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
public AnonymousAuthenticationProvider() {
|
||||
}
|
||||
|
||||
public AnonymousAuthenticationProvider(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
Assert.hasLength(key, "A Key is required");
|
||||
Assert.notNull(this.messages, "A message source must be set");
|
||||
}
|
||||
|
||||
public Authentication authenticate(Authentication authentication)
|
||||
@@ -65,11 +76,17 @@ public class AnonymousAuthenticationProvider implements AuthenticationProvider,
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public void setMessageSource(MessageSource messageSource) {
|
||||
Assert.notNull(messageSource, "messageSource cannot be null");
|
||||
this.messages = new MessageSourceAccessor(messageSource);
|
||||
}
|
||||
|
||||
|
||||
@@ -88,6 +88,22 @@ public class ProviderManager implements AuthenticationManager, MessageSourceAwar
|
||||
private boolean eraseCredentialsAfterAuthentication = true;
|
||||
private boolean clearExtraInformation = false;
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor which takes provider list
|
||||
*/
|
||||
@Deprecated
|
||||
public ProviderManager() {
|
||||
}
|
||||
|
||||
public ProviderManager(List<AuthenticationProvider> providers) {
|
||||
this(providers, null);
|
||||
}
|
||||
|
||||
public ProviderManager(List<AuthenticationProvider> providers, AuthenticationManager parent) {
|
||||
this.providers = providers;
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
@@ -212,6 +228,10 @@ public class ProviderManager implements AuthenticationManager, MessageSourceAwar
|
||||
this.messages = new MessageSourceAccessor(messageSource);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
public void setParent(AuthenticationManager parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
@@ -244,7 +264,9 @@ public class ProviderManager implements AuthenticationManager, MessageSourceAwar
|
||||
*
|
||||
* @throws IllegalArgumentException if the list is empty or null, or any of the elements in the list is not an
|
||||
* AuthenticationProvider instance.
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
@SuppressWarnings("unchecked")
|
||||
public void setProviders(List providers) {
|
||||
Assert.notNull(providers, "Providers list cannot be null");
|
||||
|
||||
@@ -37,6 +37,17 @@ public class RememberMeAuthenticationProvider implements AuthenticationProvider,
|
||||
protected MessageSourceAccessor messages = SpringSecurityMessageSource.getAccessor();
|
||||
private String key;
|
||||
|
||||
/**
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
public RememberMeAuthenticationProvider() {
|
||||
}
|
||||
|
||||
public RememberMeAuthenticationProvider(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
//~ Methods ========================================================================================================
|
||||
|
||||
public void afterPropertiesSet() throws Exception {
|
||||
@@ -61,6 +72,11 @@ public class RememberMeAuthenticationProvider implements AuthenticationProvider,
|
||||
return key;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @deprecated Use constructor injection
|
||||
*/
|
||||
@Deprecated
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
@@ -206,23 +206,19 @@ public class ProviderManagerTests {
|
||||
|
||||
@Test
|
||||
public void parentAuthenticationIsUsedIfProvidersDontAuthenticate() throws Exception {
|
||||
ProviderManager mgr = new ProviderManager();
|
||||
mgr.setProviders(Arrays.asList(mock(AuthenticationProvider.class)));
|
||||
Authentication authReq = mock(Authentication.class);
|
||||
AuthenticationManager parent = mock(AuthenticationManager.class);
|
||||
Authentication authReq = mock(Authentication.class);
|
||||
when(parent.authenticate(authReq)).thenReturn(authReq);
|
||||
mgr.setParent(parent);
|
||||
ProviderManager mgr = new ProviderManager(Arrays.asList(mock(AuthenticationProvider.class)), parent);
|
||||
assertSame(authReq, mgr.authenticate(authReq));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void parentIsNotCalledIfAccountStatusExceptionIsThrown() throws Exception {
|
||||
ProviderManager mgr = new ProviderManager();
|
||||
AuthenticationProvider iThrowAccountStatusException =
|
||||
createProviderWhichThrows(new AccountStatusException("", new Throwable()){});
|
||||
mgr.setProviders(Arrays.asList(iThrowAccountStatusException));
|
||||
AuthenticationManager parent = mock(AuthenticationManager.class);
|
||||
mgr.setParent(parent);
|
||||
ProviderManager mgr = new ProviderManager(Arrays.asList(iThrowAccountStatusException), parent);
|
||||
try {
|
||||
mgr.authenticate(mock(Authentication.class));
|
||||
fail("Expected exception");
|
||||
@@ -252,16 +248,15 @@ public class ProviderManagerTests {
|
||||
|
||||
@Test
|
||||
public void authenticationExceptionFromParentOverridesPreviousOnes() throws Exception {
|
||||
ProviderManager mgr = new ProviderManager();
|
||||
AuthenticationManager parent = mock(AuthenticationManager.class);
|
||||
ProviderManager mgr = new ProviderManager(
|
||||
Arrays.asList(createProviderWhichThrows(new BadCredentialsException(""))), parent);
|
||||
final Authentication authReq = mock(Authentication.class);
|
||||
AuthenticationEventPublisher publisher = mock(AuthenticationEventPublisher.class);
|
||||
mgr.setAuthenticationEventPublisher(publisher);
|
||||
// Set a provider that throws an exception - this is the exception we expect to be propagated
|
||||
final BadCredentialsException expected = new BadCredentialsException("I'm the one from the parent");
|
||||
mgr.setProviders(Arrays.asList(createProviderWhichThrows(new BadCredentialsException(""))));
|
||||
AuthenticationManager parent = mock(AuthenticationManager.class);
|
||||
when(parent.authenticate(authReq)).thenThrow(expected);
|
||||
mgr.setParent(parent);
|
||||
try {
|
||||
mgr.authenticate(authReq);
|
||||
fail("Expected exception");
|
||||
@@ -297,10 +292,7 @@ public class ProviderManagerTests {
|
||||
List<AuthenticationProvider> providers = new ArrayList<AuthenticationProvider>();
|
||||
providers.add(provider1);
|
||||
|
||||
ProviderManager mgr = new ProviderManager();
|
||||
mgr.setProviders(providers);
|
||||
|
||||
return mgr;
|
||||
return new ProviderManager(providers);
|
||||
}
|
||||
|
||||
//~ Inner Classes ==================================================================================================
|
||||
|
||||
Reference in New Issue
Block a user