From 7a16548f50fdba8a59ed7fa5112078431da4976c Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Mon, 15 Nov 2010 18:19:57 -0500 Subject: [PATCH] updating names to match refactoring: securityMetadataSource instead of objectDefinitionSource --- .../security/channel/ChannelAccessPolicy.java | 5 ++++- .../channel/ChannelSecurityInterceptor.java | 12 ++++++------ ...rce.java => ChannelSecurityMetadataSource.java} | 9 ++++----- .../channel/DefaultChannelAccessPolicy.java | 13 +++++++------ ...hannelSecurityInterceptorBeanPostProcessor.java | 12 +++++++----- .../IntegrationSecurityNamespaceHandler.java | 2 +- .../security/config/SecuredChannelsParser.java | 8 ++++---- ...lSecurityInterceptorBeanPostProcessorTests.java | 14 +++++++------- .../channel/ChannelSecurityInterceptorTests.java | 6 +++--- 9 files changed, 43 insertions(+), 38 deletions(-) rename spring-integration-security/src/main/java/org/springframework/integration/security/channel/{ChannelInvocationDefinitionSource.java => ChannelSecurityMetadataSource.java} (94%) diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelAccessPolicy.java b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelAccessPolicy.java index 2f1c7e1014..6299d06d8d 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelAccessPolicy.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelAccessPolicy.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.integration.security.channel; import java.util.Collection; @@ -27,7 +28,9 @@ import org.springframework.security.access.ConfigAttribute; * @since 2.0 */ public interface ChannelAccessPolicy { + public Collection getConfigAttributesForSend(); public Collection getConfigAttributesForReceive(); -} \ No newline at end of file + +} diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityInterceptor.java b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityInterceptor.java index 79a3862067..235a9b626a 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityInterceptor.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityInterceptor.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,12 +33,12 @@ import org.springframework.util.Assert; */ public class ChannelSecurityInterceptor extends AbstractSecurityInterceptor implements MethodInterceptor { - private final ChannelInvocationDefinitionSource objectDefinitionSource; + private final ChannelSecurityMetadataSource securityMetadataSource; - public ChannelSecurityInterceptor(ChannelInvocationDefinitionSource objectDefinitionSource) { - Assert.notNull(objectDefinitionSource, "objectDefinitionSource must not be null"); - this.objectDefinitionSource = objectDefinitionSource; + public ChannelSecurityInterceptor(ChannelSecurityMetadataSource securityMetadataSource) { + Assert.notNull(securityMetadataSource, "securityMetadataSource must not be null"); + this.securityMetadataSource = securityMetadataSource; } @@ -71,7 +71,7 @@ public class ChannelSecurityInterceptor extends AbstractSecurityInterceptor impl @Override public SecurityMetadataSource obtainSecurityMetadataSource() { - return this.objectDefinitionSource; + return this.securityMetadataSource; } } diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelInvocationDefinitionSource.java b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityMetadataSource.java similarity index 94% rename from spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelInvocationDefinitionSource.java rename to spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityMetadataSource.java index 70a3a5cda7..19dce5b64a 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelInvocationDefinitionSource.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/ChannelSecurityMetadataSource.java @@ -37,16 +37,16 @@ import org.springframework.util.Assert; * @author Mark Fisher * @author Oleg Zhurakousky */ -public class ChannelInvocationDefinitionSource implements SecurityMetadataSource { +public class ChannelSecurityMetadataSource implements SecurityMetadataSource { private final Map patternMappings; - public ChannelInvocationDefinitionSource() { + public ChannelSecurityMetadataSource() { this(null); } - public ChannelInvocationDefinitionSource(Map patternMappings) { + public ChannelSecurityMetadataSource(Map patternMappings) { this.patternMappings = (patternMappings != null) ? patternMappings : new LinkedHashMap(); } @@ -90,18 +90,17 @@ public class ChannelInvocationDefinitionSource implements SecurityMetadataSource public Collection getAllConfigAttributes() { Set allAttributes = new HashSet(); - for (ChannelAccessPolicy policy : patternMappings.values()) { Collection receiveAttributes = policy.getConfigAttributesForReceive(); allAttributes.addAll(receiveAttributes); Collection sendAttributes = policy.getConfigAttributesForSend(); allAttributes.addAll(sendAttributes); } - return allAttributes; } public boolean supports(Class clazz) { return ChannelInvocation.class.isAssignableFrom(clazz); } + } diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/DefaultChannelAccessPolicy.java b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/DefaultChannelAccessPolicy.java index 1237788b25..dcef1f619e 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/channel/DefaultChannelAccessPolicy.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/channel/DefaultChannelAccessPolicy.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,23 +51,24 @@ public class DefaultChannelAccessPolicy implements ChannelAccessPolicy { boolean recieveAccessDefined = StringUtils.hasText(receiveAccess); Assert.isTrue(sendAccessDefined || recieveAccessDefined, "At least one of 'sendAccess' and 'receiveAccess' must not be null."); - - if (sendAccessDefined){ + if (sendAccessDefined) { String[] sendAccessValues = StringUtils.commaDelimitedListToStringArray(sendAccess); configAttributeDefinitionForSend = new HashSet(); for (String sendAccessValue : sendAccessValues) { configAttributeDefinitionForSend.add(new SecurityConfig(StringUtils.trimAllWhitespace(sendAccessValue))); } - } else { + } + else { configAttributeDefinitionForSend = Collections.EMPTY_SET; } - if (recieveAccessDefined){ + if (recieveAccessDefined) { String[] receiveAccessValues = StringUtils.commaDelimitedListToStringArray(receiveAccess); configAttributeDefinitionForReceive = new HashSet(); for (String receiveAccessValue : receiveAccessValues) { configAttributeDefinitionForReceive.add(new SecurityConfig(StringUtils.trimAllWhitespace(receiveAccessValue))); } - } else { + } + else { configAttributeDefinitionForReceive = Collections.EMPTY_SET; } } diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/config/ChannelSecurityInterceptorBeanPostProcessor.java b/spring-integration-security/src/main/java/org/springframework/integration/security/config/ChannelSecurityInterceptorBeanPostProcessor.java index 84acb31813..530cd73df1 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/config/ChannelSecurityInterceptorBeanPostProcessor.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/config/ChannelSecurityInterceptorBeanPostProcessor.java @@ -24,7 +24,7 @@ import org.springframework.aop.support.DefaultPointcutAdvisor; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.integration.MessageChannel; -import org.springframework.integration.security.channel.ChannelInvocationDefinitionSource; +import org.springframework.integration.security.channel.ChannelSecurityMetadataSource; import org.springframework.integration.security.channel.ChannelSecurityInterceptor; import org.springframework.util.Assert; @@ -50,8 +50,10 @@ public class ChannelSecurityInterceptorBeanPostProcessor implements BeanPostProc } public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { - if (bean instanceof MessageChannel && shouldProxy(beanName, (MessageChannel) bean, - (ChannelInvocationDefinitionSource) this.interceptor.obtainSecurityMetadataSource())) { + ChannelSecurityMetadataSource channelSecurityMetadataSource = + (ChannelSecurityMetadataSource) this.interceptor.obtainSecurityMetadataSource(); + if (bean instanceof MessageChannel && + shouldProxy(beanName, (MessageChannel) bean, channelSecurityMetadataSource)) { ProxyFactory proxyFactory = new ProxyFactory(bean); proxyFactory.addAdvisor(new DefaultPointcutAdvisor(this.interceptor)); return proxyFactory.getProxy(); @@ -59,8 +61,8 @@ public class ChannelSecurityInterceptorBeanPostProcessor implements BeanPostProc return bean; } - private boolean shouldProxy(String beanName, MessageChannel channel, ChannelInvocationDefinitionSource definitionSource) { - Set patterns = ((ChannelInvocationDefinitionSource) this.interceptor.obtainSecurityMetadataSource()).getPatterns(); + private boolean shouldProxy(String beanName, MessageChannel channel, ChannelSecurityMetadataSource channelSecurityMetadataSource) { + Set patterns = channelSecurityMetadataSource.getPatterns(); for (Pattern pattern : patterns) { if (pattern.matcher(beanName).matches()) { return true; diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/config/IntegrationSecurityNamespaceHandler.java b/spring-integration-security/src/main/java/org/springframework/integration/security/config/IntegrationSecurityNamespaceHandler.java index d68671bf0e..519d188173 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/config/IntegrationSecurityNamespaceHandler.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/config/IntegrationSecurityNamespaceHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-integration-security/src/main/java/org/springframework/integration/security/config/SecuredChannelsParser.java b/spring-integration-security/src/main/java/org/springframework/integration/security/config/SecuredChannelsParser.java index 6f8272d0ad..c70fae7bca 100644 --- a/spring-integration-security/src/main/java/org/springframework/integration/security/config/SecuredChannelsParser.java +++ b/spring-integration-security/src/main/java/org/springframework/integration/security/config/SecuredChannelsParser.java @@ -57,10 +57,10 @@ public class SecuredChannelsParser extends AbstractSingleBeanDefinitionParser { @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - String objectDefinitionSourceBeanName = this.parseObjectDefinitionSource(element, parserContext); + String securityMetadataSourceBeanName = this.parseSecurityMetadataSource(element, parserContext); BeanDefinitionBuilder interceptorBuilder = BeanDefinitionBuilder.genericBeanDefinition( BASE_PACKAGE_NAME + ".channel.ChannelSecurityInterceptor"); - interceptorBuilder.addConstructorArgReference(objectDefinitionSourceBeanName); + interceptorBuilder.addConstructorArgReference(securityMetadataSourceBeanName); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(interceptorBuilder, element, "authentication-manager"); IntegrationNamespaceUtils.setReferenceIfAttributeDefined(interceptorBuilder, element, "access-decision-manager"); String interceptorBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName( @@ -69,9 +69,9 @@ public class SecuredChannelsParser extends AbstractSingleBeanDefinitionParser { } @SuppressWarnings({ "unchecked", "rawtypes" }) - private String parseObjectDefinitionSource(Element element, ParserContext parserContext) { + private String parseSecurityMetadataSource(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition( - BASE_PACKAGE_NAME + ".channel.ChannelInvocationDefinitionSource"); + BASE_PACKAGE_NAME + ".channel.ChannelSecurityMetadataSource"); List accessPolicyElements = DomUtils.getChildElementsByTagName(element, "access-policy"); ManagedMap patternMappings = new ManagedMap(); for (Element accessPolicyElement : accessPolicyElements) { diff --git a/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorBeanPostProcessorTests.java b/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorBeanPostProcessorTests.java index 0c42d0943a..5d12d46d15 100644 --- a/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorBeanPostProcessorTests.java +++ b/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorBeanPostProcessorTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2008 the original author or authors. + * Copyright 2002-2010 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,9 +35,9 @@ public class ChannelSecurityInterceptorBeanPostProcessorTests { @Test public void securedChannelIsProxied() { - ChannelInvocationDefinitionSource objectDefinitionSource = new ChannelInvocationDefinitionSource(); - objectDefinitionSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy("ROLE_ADMIN", null)); - ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(objectDefinitionSource); + ChannelSecurityMetadataSource securityMetadataSource = new ChannelSecurityMetadataSource(); + securityMetadataSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy("ROLE_ADMIN", null)); + ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(securityMetadataSource); ChannelSecurityInterceptorBeanPostProcessor postProcessor = new ChannelSecurityInterceptorBeanPostProcessor(interceptor); QueueChannel securedChannel = new QueueChannel(); securedChannel.setBeanName("securedChannel"); @@ -47,9 +47,9 @@ public class ChannelSecurityInterceptorBeanPostProcessorTests { @Test public void nonsecuredChannelIsNotProxied() { - ChannelInvocationDefinitionSource objectDefinitionSource = new ChannelInvocationDefinitionSource(); - objectDefinitionSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy("ROLE_ADMIN", null)); - ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(objectDefinitionSource); + ChannelSecurityMetadataSource securityMetadataSource = new ChannelSecurityMetadataSource(); + securityMetadataSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy("ROLE_ADMIN", null)); + ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(securityMetadataSource); ChannelSecurityInterceptorBeanPostProcessor postProcessor = new ChannelSecurityInterceptorBeanPostProcessor(interceptor); QueueChannel channel = new QueueChannel(); channel.setBeanName("testChannel"); diff --git a/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorTests.java b/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorTests.java index 1a245ba125..31f4665911 100644 --- a/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorTests.java +++ b/spring-integration-security/src/test/java/org/springframework/integration/security/channel/ChannelSecurityInterceptorTests.java @@ -79,9 +79,9 @@ public class ChannelSecurityInterceptorTests { } private static ChannelSecurityInterceptor createInterceptor(String role) throws Exception { - ChannelInvocationDefinitionSource objectDefinitionSource = new ChannelInvocationDefinitionSource(); - objectDefinitionSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy(role, null)); - ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(objectDefinitionSource); + ChannelSecurityMetadataSource securityMetadataSource = new ChannelSecurityMetadataSource(); + securityMetadataSource.addPatternMapping(Pattern.compile("secured.*"), new DefaultChannelAccessPolicy(role, null)); + ChannelSecurityInterceptor interceptor = new ChannelSecurityInterceptor(securityMetadataSource); AffirmativeBased accessDecisionManager = new AffirmativeBased(); accessDecisionManager.setDecisionVoters(Collections.singletonList((AccessDecisionVoter)new RoleVoter()));