Skip to content

Commit f1cee95

Browse files
philwebbrwinch
authored andcommitted
Ensure classes are defined in their own files
Ensure that all classes are defined in their own files. Mostly classes have been changed to inner-types. Issue gh-8945
1 parent 053af72 commit f1cee95

15 files changed

Lines changed: 509 additions & 477 deletions

File tree

‎aspects/src/test/java/org/springframework/security/access/intercept/aspectj/aspect/AnnotationSecurityAspectTests.java‎

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -161,65 +161,65 @@ private void configureForElAnnotations() {
161161
this.interceptor.setAfterInvocationManager(aim);
162162
}
163163

164-
}
164+
interface SecuredInterface {
165165

166-
interface SecuredInterface {
166+
@Secured("ROLE_X")
167+
void securedMethod();
167168

168-
@Secured("ROLE_X")
169-
void securedMethod();
169+
}
170170

171-
}
171+
static class SecuredImpl implements SecuredInterface {
172172

173-
class SecuredImpl implements SecuredInterface {
173+
// Not really secured because AspectJ doesn't inherit annotations from interfaces
174+
@Override
175+
public void securedMethod() {
176+
}
174177

175-
// Not really secured because AspectJ doesn't inherit annotations from interfaces
176-
@Override
177-
public void securedMethod() {
178-
}
178+
@Secured("ROLE_A")
179+
public void securedClassMethod() {
180+
}
179181

180-
@Secured("ROLE_A")
181-
public void securedClassMethod() {
182-
}
182+
@Secured("ROLE_X")
183+
private void privateMethod() {
184+
}
183185

184-
@Secured("ROLE_X")
185-
private void privateMethod() {
186-
}
186+
@Secured("ROLE_X")
187+
protected void protectedMethod() {
188+
}
187189

188-
@Secured("ROLE_X")
189-
protected void protectedMethod() {
190-
}
190+
@Secured("ROLE_X")
191+
public void publicCallsPrivate() {
192+
privateMethod();
193+
}
191194

192-
@Secured("ROLE_X")
193-
public void publicCallsPrivate() {
194-
privateMethod();
195195
}
196196

197-
}
197+
static class SecuredImplSubclass extends SecuredImpl {
198198

199-
class SecuredImplSubclass extends SecuredImpl {
199+
@Override
200+
protected void protectedMethod() {
201+
}
200202

201-
@Override
202-
protected void protectedMethod() {
203-
}
203+
@Override
204+
public void publicCallsPrivate() {
205+
super.publicCallsPrivate();
206+
}
204207

205-
@Override
206-
public void publicCallsPrivate() {
207-
super.publicCallsPrivate();
208208
}
209209

210-
}
210+
static class PrePostSecured {
211211

212-
class PrePostSecured {
212+
@PreAuthorize("denyAll")
213+
public void denyAllMethod() {
214+
}
213215

214-
@PreAuthorize("denyAll")
215-
public void denyAllMethod() {
216-
}
216+
@PostFilter("filterObject.startsWith('a')")
217+
public List<String> postFilterMethod() {
218+
ArrayList<String> objects = new ArrayList<>();
219+
objects.addAll(Arrays.asList(new String[] { "apple", "banana", "aubergine", "orange" }));
220+
return objects;
221+
}
217222

218-
@PostFilter("filterObject.startsWith('a')")
219-
public List<String> postFilterMethod() {
220-
ArrayList<String> objects = new ArrayList<>();
221-
objects.addAll(Arrays.asList(new String[] { "apple", "banana", "aubergine", "orange" }));
222-
return objects;
223223
}
224224

225225
}

‎config/src/main/java/org/springframework/security/config/http/HttpSecurityBeanDefinitionParser.java‎

Lines changed: 49 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import org.springframework.beans.factory.xml.BeanDefinitionParser;
4343
import org.springframework.beans.factory.xml.ParserContext;
4444
import org.springframework.core.OrderComparator;
45-
import org.springframework.core.Ordered;
4645
import org.springframework.security.authentication.AuthenticationManager;
4746
import org.springframework.security.authentication.DefaultAuthenticationEventPublisher;
4847
import org.springframework.security.authentication.ProviderManager;
@@ -399,97 +398,70 @@ static void registerFilterChainProxyIfNecessary(ParserContext pc, Object source)
399398
registry.registerBeanDefinition(requestRejectedPostProcessorName, requestRejectedBean);
400399
}
401400

402-
}
403-
404-
class RequestRejectedHandlerPostProcessor implements BeanDefinitionRegistryPostProcessor {
401+
static class RequestRejectedHandlerPostProcessor implements BeanDefinitionRegistryPostProcessor {
405402

406-
private final String beanName;
403+
private final String beanName;
407404

408-
private final String targetBeanName;
405+
private final String targetBeanName;
409406

410-
private final String targetPropertyName;
407+
private final String targetPropertyName;
411408

412-
RequestRejectedHandlerPostProcessor(String beanName, String targetBeanName, String targetPropertyName) {
413-
this.beanName = beanName;
414-
this.targetBeanName = targetBeanName;
415-
this.targetPropertyName = targetPropertyName;
416-
}
417-
418-
@Override
419-
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
420-
if (registry.containsBeanDefinition(this.beanName)) {
421-
BeanDefinition beanDefinition = registry.getBeanDefinition(this.targetBeanName);
422-
beanDefinition.getPropertyValues().add(this.targetPropertyName, new RuntimeBeanReference(this.beanName));
409+
RequestRejectedHandlerPostProcessor(String beanName, String targetBeanName, String targetPropertyName) {
410+
this.beanName = beanName;
411+
this.targetBeanName = targetBeanName;
412+
this.targetPropertyName = targetPropertyName;
423413
}
424-
}
425-
426-
@Override
427-
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
428-
429-
}
430414

431-
}
432-
433-
class OrderDecorator implements Ordered {
434-
435-
final BeanMetadataElement bean;
436-
437-
final int order;
438-
439-
OrderDecorator(BeanMetadataElement bean, SecurityFilters filterOrder) {
440-
this.bean = bean;
441-
this.order = filterOrder.getOrder();
442-
}
415+
@Override
416+
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) throws BeansException {
417+
if (registry.containsBeanDefinition(this.beanName)) {
418+
BeanDefinition beanDefinition = registry.getBeanDefinition(this.targetBeanName);
419+
beanDefinition.getPropertyValues().add(this.targetPropertyName,
420+
new RuntimeBeanReference(this.beanName));
421+
}
422+
}
443423

444-
OrderDecorator(BeanMetadataElement bean, int order) {
445-
this.bean = bean;
446-
this.order = order;
447-
}
424+
@Override
425+
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
448426

449-
@Override
450-
public int getOrder() {
451-
return this.order;
452-
}
427+
}
453428

454-
@Override
455-
public String toString() {
456-
return this.bean + ", order = " + this.order;
457429
}
458430

459-
}
431+
/**
432+
* Custom {@link MethodInvokingFactoryBean} that is specifically used for looking up
433+
* the child {@link ProviderManager} value for
434+
* {@link ProviderManager#setEraseCredentialsAfterAuthentication(boolean)} given the
435+
* parent {@link AuthenticationManager}. This is necessary because the parent
436+
* {@link AuthenticationManager} might not be a {@link ProviderManager}.
437+
*
438+
* @author Rob Winch
439+
*/
440+
static final class ClearCredentialsMethodInvokingFactoryBean extends MethodInvokingFactoryBean {
460441

461-
/**
462-
* Custom {@link MethodInvokingFactoryBean} that is specifically used for looking up the
463-
* child {@link ProviderManager} value for
464-
* {@link ProviderManager#setEraseCredentialsAfterAuthentication(boolean)} given the
465-
* parent {@link AuthenticationManager}. This is necessary because the parent
466-
* {@link AuthenticationManager} might not be a {@link ProviderManager}.
467-
*
468-
* @author Rob Winch
469-
*/
470-
final class ClearCredentialsMethodInvokingFactoryBean extends MethodInvokingFactoryBean {
442+
@Override
443+
public void afterPropertiesSet() throws Exception {
444+
boolean isTargetProviderManager = getTargetObject() instanceof ProviderManager;
445+
if (!isTargetProviderManager) {
446+
setTargetObject(this);
447+
}
448+
super.afterPropertiesSet();
449+
}
471450

472-
@Override
473-
public void afterPropertiesSet() throws Exception {
474-
boolean isTargetProviderManager = getTargetObject() instanceof ProviderManager;
475-
if (!isTargetProviderManager) {
476-
setTargetObject(this);
451+
/**
452+
* The default value if the target object is not a ProviderManager is false. We
453+
* use false because this feature is associated with {@link ProviderManager} not
454+
* {@link AuthenticationManager}. If the user wants to leverage
455+
* {@link ProviderManager#setEraseCredentialsAfterAuthentication(boolean)} their
456+
* original {@link AuthenticationManager} must be a {@link ProviderManager} (we
457+
* should not magically add this functionality to their implementation since we
458+
* cannot determine if it should be on or off).
459+
* @return
460+
*/
461+
public boolean isEraseCredentialsAfterAuthentication() {
462+
return false;
477463
}
478-
super.afterPropertiesSet();
479-
}
480464

481-
/**
482-
* The default value if the target object is not a ProviderManager is false. We use
483-
* false because this feature is associated with {@link ProviderManager} not
484-
* {@link AuthenticationManager}. If the user wants to leverage
485-
* {@link ProviderManager#setEraseCredentialsAfterAuthentication(boolean)} their
486-
* original {@link AuthenticationManager} must be a {@link ProviderManager} (we should
487-
* not magically add this functionality to their implementation since we cannot
488-
* determine if it should be on or off).
489-
* @return
490-
*/
491-
public boolean isEraseCredentialsAfterAuthentication() {
492-
return false;
493465
}
494466

495467
}

0 commit comments

Comments
 (0)