@SuppressWarnings({"unchecked"}) @Test void testExpand_nothing() { InterceptorsManager im = new InterceptorsManager(); Class<? extends ActionInterceptor>[] in = new Class[] { EchoInterceptor.class, ServletConfigInterceptor.class }; Class<? extends ActionInterceptor>[] out = im.expand(in); assertArrayEquals(new Class[] {EchoInterceptor.class, ServletConfigInterceptor.class}, out); }
/** * Configures an interceptor. */ @SuppressWarnings("unchecked") public <T extends ActionInterceptor> MadvocRouter interceptor(final Class<T> actionInterceptorClass) { interceptorsManager.resolve(actionInterceptorClass); return this; }
protected ActionInterceptor[] parseActionInterceptors(final Class<?> actionClass, final Method actionMethod, final ActionConfig actionConfig) { Class<? extends ActionInterceptor>[] interceptorClasses = readActionInterceptors(actionMethod); if (interceptorClasses == null) { interceptorClasses = readActionInterceptors(actionClass); } if (interceptorClasses == null) { interceptorClasses = actionConfig.getInterceptors(); } return interceptorsManager.resolveAll(interceptorClasses); }
/** * Resolves interceptors. Unregistered interceptors will be registered. Returned array may be * different size than size of provided array, due to {@link #expand(Class[]) expanding}. */ public ActionInterceptor[] resolveAll(Class<? extends ActionInterceptor>... interceptorClasses) { if (interceptorClasses == null) { return null; } interceptorClasses = expand(interceptorClasses); ActionInterceptor[] result = new ActionInterceptor[interceptorClasses.length]; for (int i = 0; i < interceptorClasses.length; i++) { result[i] = resolve(interceptorClasses[i]); } return result; }
@SuppressWarnings({"unchecked"}) @Test void testExpandStack2() { InterceptorsManager im = createInterceptorManager(); Class<? extends ActionInterceptor>[] in = new Class[]{ TestConfigurableStack2.class }; Class<? extends ActionInterceptor>[] out = im.expand(in); assertArrayEquals(new Class[] { EchoInterceptor.class, ServletConfigInterceptor.class, AnnotatedPropertyInterceptor.class, LogEchoInterceptor.class, }, out); }
/** * Resolves single interceptor. Creates new interceptor instance if not already registered. * Does not expand the interceptors. */ public ActionInterceptor resolve(Class<? extends ActionInterceptor> interceptorClass) { ActionInterceptor interceptor = lookup(interceptorClass); if (interceptor == null) { interceptor = createInterceptor(interceptorClass); interceptors.put(interceptorClass, interceptor); } return interceptor; }
/** * Collects all interceptors. */ protected void collectActionInterceptors() { final Collection<? extends ActionInterceptor> interceptorValues = interceptorsManager.getAllInterceptors(); interceptors = new ArrayList<>(); interceptors.addAll(interceptorValues); interceptors.sort(Comparator.comparing(a -> a.getClass().getSimpleName())); }
private InterceptorsManager createInterceptorManager() { PetiteContainer madpc = new PetiteContainer(); madpc.addSelf("madpc"); madpc.addBean("madvocEncoding", new MadvocEncoding()); InterceptorsManager im = new InterceptorsManager(); im.contextInjectorComponent = new ContextInjectorComponent(); im.contextInjectorComponent.madvocController = new MadvocController(); im.contextInjectorComponent.madvocController.servletContextProvider = new ServletContextProvider(null); im.contextInjectorComponent.scopeDataInspector = new ScopeDataInspector(); im.contextInjectorComponent.scopeResolver = new ScopeResolver(); im.contextInjectorComponent.scopeResolver.madpc = madpc; return im; }
protected void collectActionInterceptors() { Collection<ActionInterceptor> interceptorValues = interceptorsManager.getAllActionInterceptors().values(); interceptors = new ArrayList<ActionInterceptor>(); interceptors.addAll(interceptorValues); Collections.sort(interceptors, new Comparator<ActionInterceptor>() { public int compare(ActionInterceptor a1, ActionInterceptor a2) { return a1.getClass().getSimpleName().compareTo(a2.getClass().getSimpleName()); } }); }
@SuppressWarnings({"unchecked"}) @Test void testExpand_stacks() { InterceptorsManager im =createInterceptorManager(); Class<? extends ActionInterceptor>[] in = new Class[] { AnnotatedPropertyInterceptor.class, TestStack3.class, EchoInterceptor.class }; Class<? extends ActionInterceptor>[] out = im.expand(in); assertArrayEquals(new Class[] { AnnotatedPropertyInterceptor.class, EchoInterceptor.class, LogEchoInterceptor.class, ServletConfigInterceptor.class, EchoInterceptor.class, }, out); }
/** * Configures an interceptor. */ @SuppressWarnings("unchecked") public <T extends ActionInterceptor> MadvocRouter interceptor(final Class<T> actionInterceptorClass, final Consumer<T> interceptorConsumer) { T interceptor = (T) interceptorsManager.resolve(actionInterceptorClass); interceptorConsumer.accept(interceptor); return this; }
final ActionInterceptor[] actionInterceptorInstances = interceptorsManager.resolveAll(actionInterceptors);
@SuppressWarnings({"unchecked"}) @Test void testExpandStack() { InterceptorsManager im = createInterceptorManager(); Class<? extends ActionInterceptor>[] in = new Class[]{ TestStack.class, TestStack3.class, EchoInterceptor.class }; Class<? extends ActionInterceptor>[] out = im.expand(in); assertArrayEquals(new Class[] { AnnotatedPropertyInterceptor.class, LogEchoInterceptor.class, EchoInterceptor.class, LogEchoInterceptor.class, ServletConfigInterceptor.class, EchoInterceptor.class }, out); }
ActionInterceptorStack stack = (ActionInterceptorStack) resolve(interceptorClass); list.remove(i); Class<? extends ActionInterceptor>[] stackInterceptors = stack.getInterceptors();
/** * Initializes action configuration on first use. Resolves all interceptors and injects context parameters. */ protected void initializeActionConfig(ActionConfig cfg) { Class<? extends ActionInterceptor>[] interceptorClasses = cfg.interceptorClasses; if (interceptorClasses == null) { interceptorClasses = madvocConfig.getDefaultInterceptors(); } cfg.interceptors = interceptorsManager.resolveAll(interceptorClasses); for (ActionInterceptor interceptor : cfg.interceptors) { if (interceptor.isInitialized() == false) { initializeInterceptor(interceptor); } } cfg.initialized(); }