if (method.isAnnotationPresent(Before.class)) { if (method.getParameterTypes().length == 0 && !Modifier.isAbstract(mods)) { Before annotation = method.getAnnotation(Before.class); filterMethods.addBeforeMethod(annotation.value(), method);
if (!method.isAccessible()) { try { method.setAccessible(true); } catch (SecurityException se) { log.warn("Method '", beanClass.getName(), ".", method.getName(), "' is ", "annotated with @Before or @After but is not public and  ", "calling setAccessible(true) on it threw a SecurityException. ", "Please either declare the method as public, or change your ", "JVM security policy to allow Stripes code to call ", "Method.setAccessible() on your code base."); continue; }
	protected FilterMethods getFilterMethods(Class<? extends ActionBean> beanClass) {		FilterMethods filterMethods = filterMethodsCache.get(beanClass);		if (filterMethods == null) {			filterMethods = new FilterMethods();			filterMethodsCache.put(beanClass, filterMethods);					// Look for @Before and @After annotations on the methods in the ActionBean class			Method[] methods = beanClass.getMethods();            for (Method method : methods) {                int mods = method.getModifiers();                if (method.isAnnotationPresent(Before.class)) {                    if (method.getParameterTypes().length == 0 && !Modifier.isAbstract(mods)) {                        Before annotation = method.getAnnotation(Before.class);                        filterMethods.addBeforeMethod(annotation.value(), method);                    }                    else {                        log.warn("Method '", beanClass.getName(), ".", method.getName(), "' is ",                                 "annotated with @Before but has an incompatible signature. ",                                 "@Before methods must be non-abstract zero-argument methods.");                    }                }                if (method.isAnnotationPresent(After.class)) {                    if (method.getParameterTypes().length == 0 && !Modifier.isAbstract(mods)) {                        After annotation = method.getAnnotation(After.class);                        filterMethods.addAfterMethod(annotation.value(), method);                    }                    else {                        log.warn("Method '", beanClass.getName(), ".", method.getName(), "' is ",                                 "annotated with @After but has an incompatible signature. ",                                 "@After methods must be non-abstract zero-argument methods.");                    }                }            }		}		return filterMethods;	}