From 3d2bb5173ae1742ba709f9849d874f52c903806e Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 1 Jul 2008 20:36:08 +0000 Subject: [PATCH] SecurityEndpointInterceptor no longer uses a temporary version of the EndpointInterceptor. --- .../endpoint/SecurityEndpointInterceptor.java | 45 +++++++++---------- .../temp/endpoint/EndpointInterceptor.java | 28 ------------ .../SecurityEndpointInterceptorTests.java | 5 +-- 3 files changed, 23 insertions(+), 55 deletions(-) delete mode 100644 org.springframework.integration.security/src/main/java/org/springframework/temp/endpoint/EndpointInterceptor.java diff --git a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptor.java b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptor.java index 51ed14c9a4..74c524454c 100644 --- a/org.springframework.integration.security/src/main/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptor.java +++ b/org.springframework.integration.security/src/main/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptor.java @@ -17,20 +17,25 @@ package org.springframework.integration.security.endpoint; import org.aopalliance.intercept.MethodInvocation; + +import org.springframework.integration.endpoint.interceptor.EndpointInterceptorAdapter; import org.springframework.integration.message.Message; import org.springframework.integration.security.SecurityContextUtils; import org.springframework.security.AccessDecisionManager; import org.springframework.security.ConfigAttributeDefinition; import org.springframework.security.context.SecurityContext; import org.springframework.security.context.SecurityContextHolder; -import org.springframework.temp.endpoint.EndpointInterceptor; -public class SecurityEndpointInterceptor implements EndpointInterceptor { +/** + * @author Jonas Partner + */ +public class SecurityEndpointInterceptor extends EndpointInterceptorAdapter { private final ConfigAttributeDefinition targetSecurityAttributes; private final AccessDecisionManager accessDecisionManager; + public SecurityEndpointInterceptor(ConfigAttributeDefinition endpointSecurityAttributes, AccessDecisionManager accessDecisionManager) { super(); @@ -38,38 +43,30 @@ public class SecurityEndpointInterceptor implements EndpointInterceptor { this.accessDecisionManager = accessDecisionManager; } - public void aroundInvoke(MethodInvocation invocation) throws Throwable { + + @Override + public boolean aroundInvoke(MethodInvocation invocation) throws Throwable { Message message = (Message) invocation.getArguments()[0]; - - SecurityContext securityCtx = null; - - if(message != null){ - securityCtx = SecurityContextUtils.getSecurityContextFromHeader(message); + SecurityContext securityContext = null; + if (message != null) { + securityContext = SecurityContextUtils.getSecurityContextFromHeader(message); } - if (securityCtx != null) { + if (securityContext != null) { try { - SecurityContextHolder.setContext(securityCtx); - accessDecisionManager.decide(SecurityContextHolder.getContext().getAuthentication(), invocation - .getThis(), targetSecurityAttributes); - invocation.proceed(); + SecurityContextHolder.setContext(securityContext); + this.accessDecisionManager.decide(SecurityContextHolder.getContext().getAuthentication(), + invocation.getThis(), this.targetSecurityAttributes); + return (Boolean) invocation.proceed(); } finally { SecurityContextHolder.clearContext(); } } else { - accessDecisionManager.decide(SecurityContextHolder.getContext().getAuthentication(), invocation.getThis(), - targetSecurityAttributes); - invocation.proceed(); + this.accessDecisionManager.decide(SecurityContextHolder.getContext().getAuthentication(), + invocation.getThis(), this.targetSecurityAttributes); + return (Boolean) invocation.proceed(); } } - public void postInvoke(Message message) { - - } - - public void preInvoke(Message message) { - - } - } diff --git a/org.springframework.integration.security/src/main/java/org/springframework/temp/endpoint/EndpointInterceptor.java b/org.springframework.integration.security/src/main/java/org/springframework/temp/endpoint/EndpointInterceptor.java deleted file mode 100644 index 06f5ae039c..0000000000 --- a/org.springframework.integration.security/src/main/java/org/springframework/temp/endpoint/EndpointInterceptor.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2002-2008 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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.springframework.temp.endpoint; - -import org.aopalliance.intercept.MethodInvocation; -import org.springframework.integration.message.Message; - -public interface EndpointInterceptor { - - void preInvoke(Message message); - - void aroundInvoke(MethodInvocation invocation) throws Throwable; - - void postInvoke(Message message); -} diff --git a/org.springframework.integration.security/src/test/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptorTests.java b/org.springframework.integration.security/src/test/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptorTests.java index a0a6d8527e..ec495602ca 100644 --- a/org.springframework.integration.security/src/test/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptorTests.java +++ b/org.springframework.integration.security/src/test/java/org/springframework/integration/security/endpoint/SecurityEndpointInterceptorTests.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertNull; import org.aopalliance.intercept.MethodInvocation; import org.junit.Test; + import org.springframework.integration.message.Message; import org.springframework.integration.message.StringMessage; import org.springframework.integration.security.SecurityContextUtils; @@ -32,9 +33,7 @@ import org.springframework.security.context.SecurityContext; import org.springframework.security.context.SecurityContextHolder; /** - * * @author Jonas Partner - * */ public class SecurityEndpointInterceptorTests { @@ -93,7 +92,7 @@ public class SecurityEndpointInterceptorTests { SecurityContext context = SecurityTestUtil.createContext("bob", "bobspassword", new String[] { "ROLE_ADMIN" }); MethodInvocation invocation = createTestMethodInvocation(target, context); - expect(invocation.proceed()).andReturn(null); + expect(invocation.proceed()).andReturn(Boolean.TRUE); replay(invocation); ConfigAttributeDefinition attDefintion = new ConfigAttributeDefinition("ROLE_ADMIN");