package com.hwlcn.security.aop;
import java.lang.annotation.Annotation;
public abstract class AnnotationMethodInterceptor extends MethodInterceptorSupport {
private AnnotationHandler handler;
private AnnotationResolver resolver;
public AnnotationMethodInterceptor(AnnotationHandler handler) {
this(handler, new DefaultAnnotationResolver());
}
public AnnotationMethodInterceptor(AnnotationHandler handler, AnnotationResolver resolver) {
if (handler == null) {
throw new IllegalArgumentException("AnnotationHandler argument cannot be null.");
}
setHandler(handler);
setResolver(resolver != null ? resolver : new DefaultAnnotationResolver());
}
public AnnotationHandler getHandler() {
return handler;
}
public void setHandler(AnnotationHandler handler) {
this.handler = handler;
}
public AnnotationResolver getResolver() {
return resolver;
}
public void setResolver(AnnotationResolver resolver) {
this.resolver = resolver;
}
public boolean supports(MethodInvocation mi) {
return getAnnotation(mi) != null;
}
protected Annotation getAnnotation(MethodInvocation mi) {
return getResolver().getAnnotation(mi, getHandler().getAnnotationClass());
}
}