Skip to content

Commit f213cc5

Browse files
committed
SEC-1257: APIs using List<ConfigAttribute> should use a Collection instead. Converted.
1 parent 5d486a5 commit f213cc5

File tree

53 files changed

+181
-175
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+181
-175
lines changed

acl/src/main/java/org/springframework/security/acls/AclEntryVoter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.lang.reflect.InvocationTargetException;
1818
import java.lang.reflect.Method;
1919
import java.util.Arrays;
20+
import java.util.Collection;
2021
import java.util.List;
2122

2223
import org.apache.commons.logging.Log;
@@ -152,7 +153,7 @@ public boolean supports(ConfigAttribute attribute) {
152153
}
153154
}
154155

155-
public int vote(Authentication authentication, Object object, List<ConfigAttribute> attributes) {
156+
public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes) {
156157

157158
for(ConfigAttribute attr : attributes) {
158159

acl/src/main/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationCollectionFilteringProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public AclEntryAfterInvocationCollectionFilteringProvider(AclService aclService,
7373
//~ Methods ========================================================================================================
7474

7575
@SuppressWarnings("unchecked")
76-
public Object decide(Authentication authentication, Object object, List<ConfigAttribute> config,
76+
public Object decide(Authentication authentication, Object object, Collection<ConfigAttribute> config,
7777
Object returnedObject) throws AccessDeniedException {
7878

7979
if (returnedObject == null) {

acl/src/main/java/org/springframework/security/acls/afterinvocation/AclEntryAfterInvocationProvider.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
*/
1515
package org.springframework.security.acls.afterinvocation;
1616

17+
import java.util.Collection;
1718
import java.util.List;
1819

1920
import org.apache.commons.logging.Log;
@@ -75,7 +76,7 @@ public AclEntryAfterInvocationProvider(AclService aclService, String processConf
7576

7677
//~ Methods ========================================================================================================
7778

78-
public Object decide(Authentication authentication, Object object, List<ConfigAttribute> config,
79+
public Object decide(Authentication authentication, Object object, Collection<ConfigAttribute> config,
7980
Object returnedObject) throws AccessDeniedException {
8081

8182
if (returnedObject == null) {

config/src/main/java/org/springframework/security/config/http/HttpConfigurationBuilder.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import java.util.Collections;
88
import java.util.List;
99

10-
import org.apache.commons.logging.Log;
11-
import org.apache.commons.logging.LogFactory;
1210
import org.springframework.beans.BeanMetadataElement;
1311
import org.springframework.beans.factory.config.BeanDefinition;
1412
import org.springframework.beans.factory.config.BeanReference;
@@ -59,8 +57,6 @@
5957
* @since 3.0
6058
*/
6159
class HttpConfigurationBuilder {
62-
private final Log logger = LogFactory.getLog(getClass());
63-
6460
private static final String ATT_CREATE_SESSION = "create-session";
6561
private static final String OPT_CREATE_SESSION_NEVER = "never";
6662
private static final String DEF_CREATE_SESSION_IF_REQUIRED = "ifRequired";

config/src/test/java/org/springframework/security/config/MockAfterInvocationProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.springframework.security.config;
22

3-
import java.util.List;
3+
import java.util.Collection;
44

55
import org.springframework.security.access.AccessDeniedException;
66
import org.springframework.security.access.AfterInvocationProvider;
@@ -9,7 +9,7 @@
99

1010
public class MockAfterInvocationProvider implements AfterInvocationProvider {
1111

12-
public Object decide(Authentication authentication, Object object, List<ConfigAttribute> config, Object returnedObject)
12+
public Object decide(Authentication authentication, Object object, Collection<ConfigAttribute> config, Object returnedObject)
1313
throws AccessDeniedException {
1414
return returnedObject;
1515
}

config/src/test/java/org/springframework/security/config/http/FilterSecurityMetadataSourceBeanDefinitionParserTests.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import static org.junit.Assert.*;
44

5-
import java.util.List;
5+
import java.util.Collection;
66

77
import org.junit.After;
88
import org.junit.Test;
@@ -47,7 +47,7 @@ public void parsingMinimalConfigurationIsSuccessful() {
4747
" <intercept-url pattern='/**' access='ROLE_A'/>" +
4848
"</filter-security-metadata-source>");
4949
DefaultFilterInvocationSecurityMetadataSource fids = (DefaultFilterInvocationSecurityMetadataSource) appContext.getBean("fids");
50-
List<? extends ConfigAttribute> cad = fids.getAttributes(createFilterInvocation("/anything", "GET"));
50+
Collection<ConfigAttribute> cad = fids.getAttributes(createFilterInvocation("/anything", "GET"));
5151
assertNotNull(cad);
5252
assertTrue(cad.contains(new SecurityConfig("ROLE_A")));
5353
}
@@ -61,9 +61,9 @@ public void expressionsAreSupported() {
6161

6262
ExpressionBasedFilterInvocationSecurityMetadataSource fids =
6363
(ExpressionBasedFilterInvocationSecurityMetadataSource) appContext.getBean("fids");
64-
List<? extends ConfigAttribute> cad = fids.getAttributes(createFilterInvocation("/anything", "GET"));
65-
assertEquals(1, cad.size());
66-
assertEquals("hasRole('ROLE_A')", cad.get(0).toString());
64+
ConfigAttribute[] cad = fids.getAttributes(createFilterInvocation("/anything", "GET")).toArray(new ConfigAttribute[0]);
65+
assertEquals(1, cad.length);
66+
assertEquals("hasRole('ROLE_A')", cad[0].toString());
6767
}
6868

6969
// SEC-1201
@@ -77,10 +77,10 @@ public void interceptUrlsSupportPropertyPlaceholders() {
7777
" <intercept-url pattern='${secure.url}' access='${secure.role}'/>" +
7878
"</filter-security-metadata-source>");
7979
DefaultFilterInvocationSecurityMetadataSource fids = (DefaultFilterInvocationSecurityMetadataSource) appContext.getBean("fids");
80-
List<ConfigAttribute> cad = fids.getAttributes(createFilterInvocation("/secure", "GET"));
80+
Collection<ConfigAttribute> cad = fids.getAttributes(createFilterInvocation("/secure", "GET"));
8181
assertNotNull(cad);
8282
assertEquals(1, cad.size());
83-
assertEquals("ROLE_A", cad.get(0).getAttribute());
83+
assertTrue(cad.contains(new SecurityConfig("ROLE_A")));
8484
}
8585

8686
@Test

config/src/test/java/org/springframework/security/config/http/HttpSecurityBeanDefinitionParserTests.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import java.lang.reflect.Method;
99
import java.util.ArrayList;
10+
import java.util.Collection;
1011
import java.util.Iterator;
1112
import java.util.List;
1213
import java.util.Map;
@@ -286,7 +287,7 @@ public void lowerCaseComparisonIsRespectedBySecurityFilterInvocationDefinitionSo
286287
FilterSecurityInterceptor fis = (FilterSecurityInterceptor) getFilter(FilterSecurityInterceptor.class);
287288

288289
FilterInvocationSecurityMetadataSource fids = fis.getSecurityMetadataSource();
289-
List<ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/Secure", null));
290+
Collection<ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/Secure", null));
290291
assertEquals(2, attrDef.size());
291292
assertTrue(attrDef.contains(new SecurityConfig("ROLE_A")));
292293
assertTrue(attrDef.contains(new SecurityConfig("ROLE_B")));
@@ -314,10 +315,10 @@ public void interceptUrlsAndFormLoginSupportPropertyPlaceholders() throws Except
314315
// Check the security attribute
315316
FilterSecurityInterceptor fis = (FilterSecurityInterceptor) getFilter(FilterSecurityInterceptor.class);
316317
FilterInvocationSecurityMetadataSource fids = fis.getSecurityMetadataSource();
317-
List<ConfigAttribute> attrs = fids.getAttributes(createFilterinvocation("/secure", null));
318+
Collection<ConfigAttribute> attrs = fids.getAttributes(createFilterinvocation("/secure", null));
318319
assertNotNull(attrs);
319320
assertEquals(1, attrs.size());
320-
assertEquals("ROLE_A",attrs.get(0).getAttribute());
321+
assertTrue(attrs.contains(new SecurityConfig("ROLE_A")));
321322

322323
// Check the form login properties are set
323324
UsernamePasswordAuthenticationFilter apf = (UsernamePasswordAuthenticationFilter)
@@ -340,7 +341,7 @@ public void httpMethodMatchIsSupported() throws Exception {
340341

341342
FilterSecurityInterceptor fis = (FilterSecurityInterceptor) getFilter(FilterSecurityInterceptor.class);
342343
FilterInvocationSecurityMetadataSource fids = fis.getSecurityMetadataSource();
343-
List<? extends ConfigAttribute> attrs = fids.getAttributes(createFilterinvocation("/secure", "POST"));
344+
Collection<ConfigAttribute> attrs = fids.getAttributes(createFilterinvocation("/secure", "POST"));
344345
assertEquals(2, attrs.size());
345346
assertTrue(attrs.contains(new SecurityConfig("ROLE_A")));
346347
assertTrue(attrs.contains(new SecurityConfig("ROLE_B")));
@@ -904,7 +905,7 @@ public void supportsTwoIdenticalInterceptUrls() throws Exception {
904905
FilterSecurityInterceptor fis = (FilterSecurityInterceptor) getFilter(FilterSecurityInterceptor.class);
905906

906907
FilterInvocationSecurityMetadataSource fids = fis.getSecurityMetadataSource();
907-
List<? extends ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/someurl", null));
908+
Collection<ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/someurl", null));
908909
assertEquals(1, attrDef.size());
909910
assertTrue(attrDef.contains(new SecurityConfig("ROLE_B")));
910911
}
@@ -942,7 +943,7 @@ public void expressionBasedAccessAllowsAndDeniesAccessAsExpected() throws Except
942943
FilterSecurityInterceptor fis = (FilterSecurityInterceptor) getFilter(FilterSecurityInterceptor.class);
943944

944945
FilterInvocationSecurityMetadataSource fids = fis.getSecurityMetadataSource();
945-
List<? extends ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/secure", null));
946+
Collection<ConfigAttribute> attrDef = fids.getAttributes(createFilterinvocation("/secure", null));
946947
assertEquals(1, attrDef.size());
947948

948949
// Try an unprotected invocation

core/src/main/java/org/springframework/security/access/AccessDecisionManager.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
package org.springframework.security.access;
1717

18-
import java.util.List;
18+
import java.util.Collection;
1919

2020
import org.springframework.security.authentication.InsufficientAuthenticationException;
2121
import org.springframework.security.core.Authentication;
@@ -41,7 +41,7 @@ public interface AccessDecisionManager {
4141
* @throws InsufficientAuthenticationException if access is denied as the authentication does not provide a
4242
* sufficient level of trust
4343
*/
44-
void decide(Authentication authentication, Object object, List<ConfigAttribute> configAttributes)
44+
void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes)
4545
throws AccessDeniedException, InsufficientAuthenticationException;
4646

4747
/**

core/src/main/java/org/springframework/security/access/AccessDecisionVoter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
package org.springframework.security.access;
1717

18-
import java.util.List;
18+
import java.util.Collection;
1919

2020
import org.springframework.security.core.Authentication;
2121

@@ -87,5 +87,5 @@ public interface AccessDecisionVoter {
8787
*
8888
* @return either {@link #ACCESS_GRANTED}, {@link #ACCESS_ABSTAIN} or {@link #ACCESS_DENIED}
8989
*/
90-
int vote(Authentication authentication, Object object, List<ConfigAttribute> attributes);
90+
int vote(Authentication authentication, Object object, Collection<ConfigAttribute> attributes);
9191
}

core/src/main/java/org/springframework/security/access/AfterInvocationProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
package org.springframework.security.access;
1717

18-
import java.util.List;
18+
import java.util.Collection;
1919

2020
import org.springframework.security.access.intercept.AfterInvocationProviderManager;
2121
import org.springframework.security.core.Authentication;
@@ -30,7 +30,7 @@
3030
public interface AfterInvocationProvider {
3131
//~ Methods ========================================================================================================
3232

33-
Object decide(Authentication authentication, Object object, List<ConfigAttribute> config,
33+
Object decide(Authentication authentication, Object object, Collection<ConfigAttribute> attributes,
3434
Object returnedObject) throws AccessDeniedException;
3535

3636
/**

core/src/main/java/org/springframework/security/access/SecurityMetadataSource.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package org.springframework.security.access;
1717

1818
import java.util.Collection;
19-
import java.util.List;
2019

2120
import org.springframework.aop.framework.AopInfrastructureBean;
2221
import org.springframework.security.access.intercept.AbstractSecurityInterceptor;
@@ -44,7 +43,7 @@ public interface SecurityMetadataSource extends AopInfrastructureBean {
4443
* @throws IllegalArgumentException if the passed object is not of a type supported by the
4544
* <code>SecurityMetadataSource</code> implementation
4645
*/
47-
List<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException;
46+
Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException;
4847

4948
/**
5049
* If available, returns all of the <code>ConfigAttribute</code>s defined by the implementing class.

core/src/main/java/org/springframework/security/access/annotation/Jsr250Voter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.springframework.security.access.annotation;
22

3-
import java.util.List;
3+
import java.util.Collection;
44

55
import org.springframework.security.access.AccessDecisionVoter;
66
import org.springframework.security.access.ConfigAttribute;
@@ -43,7 +43,7 @@ public boolean supports(Class<?> clazz) {
4343
* @param definition The configuration definition.
4444
* @return The vote.
4545
*/
46-
public int vote(Authentication authentication, Object object, List<ConfigAttribute> definition) {
46+
public int vote(Authentication authentication, Object object, Collection<ConfigAttribute> definition) {
4747
for (ConfigAttribute attribute : definition) {
4848
if (Jsr250SecurityConfig.PERMIT_ALL_ATTRIBUTE.equals(attribute)) {
4949
return ACCESS_GRANTED;

core/src/main/java/org/springframework/security/access/event/AuthenticationCredentialsNotFoundEvent.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
package org.springframework.security.access.event;
1717

18-
import java.util.List;
18+
import java.util.Collection;
1919

2020
import org.springframework.security.access.ConfigAttribute;
2121
import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
@@ -32,33 +32,33 @@ public class AuthenticationCredentialsNotFoundEvent extends AbstractAuthorizatio
3232
//~ Instance fields ================================================================================================
3333

3434
private AuthenticationCredentialsNotFoundException credentialsNotFoundException;
35-
private List<ConfigAttribute> configAttribs;
35+
private Collection<ConfigAttribute> configAttribs;
3636

3737
//~ Constructors ===================================================================================================
3838

3939
/**
4040
* Construct the event.
4141
*
4242
* @param secureObject the secure object
43-
* @param configAttribs that apply to the secure object
43+
* @param attributes that apply to the secure object
4444
* @param credentialsNotFoundException exception returned to the caller (contains reason)
4545
*
4646
*/
47-
public AuthenticationCredentialsNotFoundEvent(Object secureObject, List<ConfigAttribute> configAttribs,
47+
public AuthenticationCredentialsNotFoundEvent(Object secureObject, Collection<ConfigAttribute> attributes,
4848
AuthenticationCredentialsNotFoundException credentialsNotFoundException) {
4949
super(secureObject);
5050

51-
if ((configAttribs == null) || (credentialsNotFoundException == null)) {
51+
if ((attributes == null) || (credentialsNotFoundException == null)) {
5252
throw new IllegalArgumentException("All parameters are required and cannot be null");
5353
}
5454

55-
this.configAttribs = configAttribs;
55+
this.configAttribs = attributes;
5656
this.credentialsNotFoundException = credentialsNotFoundException;
5757
}
5858

5959
//~ Methods ========================================================================================================
6060

61-
public List<ConfigAttribute> getConfigAttributes() {
61+
public Collection<ConfigAttribute> getConfigAttributes() {
6262
return configAttribs;
6363
}
6464

core/src/main/java/org/springframework/security/access/event/AuthorizationFailureEvent.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
package org.springframework.security.access.event;
1717

18-
import java.util.List;
18+
import java.util.Collection;
1919

2020
import org.springframework.security.access.AccessDeniedException;
2121
import org.springframework.security.access.ConfigAttribute;
@@ -38,30 +38,30 @@ public class AuthorizationFailureEvent extends AbstractAuthorizationEvent {
3838

3939
private AccessDeniedException accessDeniedException;
4040
private Authentication authentication;
41-
private List<ConfigAttribute> configAttributeDefinition;
41+
private Collection<ConfigAttribute> configAttributes;
4242

4343
//~ Constructors ===================================================================================================
4444

4545
/**
4646
* Construct the event.
4747
*
4848
* @param secureObject the secure object
49-
* @param configAttribs that apply to the secure object
49+
* @param attributes that apply to the secure object
5050
* @param authentication that was found in the <code>SecurityContextHolder</code>
5151
* @param accessDeniedException that was returned by the
5252
* <code>AccessDecisionManager</code>
5353
*
5454
* @throws IllegalArgumentException if any null arguments are presented.
5555
*/
56-
public AuthorizationFailureEvent(Object secureObject, List<ConfigAttribute> configAttribs,
56+
public AuthorizationFailureEvent(Object secureObject, Collection<ConfigAttribute> attributes,
5757
Authentication authentication, AccessDeniedException accessDeniedException) {
5858
super(secureObject);
5959

60-
if ((configAttribs == null) || (authentication == null) || (accessDeniedException == null)) {
60+
if ((attributes == null) || (authentication == null) || (accessDeniedException == null)) {
6161
throw new IllegalArgumentException("All parameters are required and cannot be null");
6262
}
6363

64-
this.configAttributeDefinition = configAttribs;
64+
this.configAttributes = attributes;
6565
this.authentication = authentication;
6666
this.accessDeniedException = accessDeniedException;
6767
}
@@ -76,7 +76,7 @@ public Authentication getAuthentication() {
7676
return authentication;
7777
}
7878

79-
public List<ConfigAttribute> getConfigAttributes() {
80-
return configAttributeDefinition;
79+
public Collection<ConfigAttribute> getConfigAttributes() {
80+
return configAttributes;
8181
}
8282
}

0 commit comments

Comments
 (0)