CompositePointcut.java

package sprout.aop.advisor;

import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;

public class CompositePointcut implements Pointcut {
    private final List<Pointcut> pointcuts;

    public CompositePointcut(Pointcut... pointcuts) {
        this.pointcuts = Arrays.asList(pointcuts);
    }

    public CompositePointcut(List<Pointcut> pointcuts) {
        this.pointcuts = pointcuts;
    }

    @Override
    public boolean matches(Class<?> targetClass, Method method) {
        for (Pointcut pointcut : pointcuts) {
            if (pointcut.matches(targetClass, method)) {
                return true;
            }
        }
        return false;
    }
}