package com.hwlcn.security.authz.aop; import java.util.ArrayList; import java.util.Collection; import com.hwlcn.security.aop.MethodInvocation; import com.hwlcn.security.authz.AuthorizationException; public abstract class AnnotationsAuthorizingMethodInterceptor extends AuthorizingMethodInterceptor { protected Collection<AuthorizingAnnotationMethodInterceptor> methodInterceptors; public AnnotationsAuthorizingMethodInterceptor() { methodInterceptors = new ArrayList<AuthorizingAnnotationMethodInterceptor>(5); methodInterceptors.add(new RoleAnnotationMethodInterceptor()); methodInterceptors.add(new PermissionAnnotationMethodInterceptor()); methodInterceptors.add(new AuthenticatedAnnotationMethodInterceptor()); methodInterceptors.add(new UserAnnotationMethodInterceptor()); methodInterceptors.add(new GuestAnnotationMethodInterceptor()); } public Collection<AuthorizingAnnotationMethodInterceptor> getMethodInterceptors() { return methodInterceptors; } public void setMethodInterceptors(Collection<AuthorizingAnnotationMethodInterceptor> methodInterceptors) { this.methodInterceptors = methodInterceptors; } protected void assertAuthorized(MethodInvocation methodInvocation) throws AuthorizationException { Collection<AuthorizingAnnotationMethodInterceptor> aamis = getMethodInterceptors(); if (aamis != null && !aamis.isEmpty()) { for (AuthorizingAnnotationMethodInterceptor aami : aamis) { if (aami.supports(methodInvocation)) { aami.assertAuthorized(methodInvocation); } } } } }