package org.jboss.seam.security; import java.io.Serializable; import java.lang.reflect.Method; import javax.inject.Inject; import javax.interceptor.AroundInvoke; import javax.interceptor.Interceptor; import javax.interceptor.InvocationContext; import org.jboss.seam.security.SecurityExtension.Authorizer; /** * Provides authorization services for component invocations. * * @author Shane Bryzak * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> */ @SecurityInterceptorBinding @Interceptor public class SecurityInterceptor implements Serializable { private static final long serialVersionUID = -6567750187000766925L; @Inject SecurityExtension extension; @AroundInvoke public Object aroundInvoke(InvocationContext invocation) throws Exception { Method method = invocation.getMethod(); for (Authorizer authorizer : extension.lookupAuthorizerStack(method, invocation.getTarget().getClass())) { authorizer.authorize(invocation); } return invocation.proceed(); } }