package br.com.caelum.calopsita.infra.interceptor; import java.util.Set; import javax.servlet.http.HttpServletRequest; import br.com.caelum.calopsita.model.Menu; import br.com.caelum.calopsita.model.Parameters; import br.com.caelum.calopsita.model.PluginConfig; import br.com.caelum.calopsita.plugins.DefaultMenus; import br.com.caelum.vraptor.InterceptionException; import br.com.caelum.vraptor.Result; import br.com.caelum.vraptor.core.InterceptorStack; import br.com.caelum.vraptor.interceptor.Interceptor; import br.com.caelum.vraptor.ioc.Component; import br.com.caelum.vraptor.resource.ResourceMethod; @Component public class MenuInterceptor implements Interceptor { private final HttpServletRequest request; private final Parameters parameters; private final Result result; private final Set<PluginConfig> plugins; public MenuInterceptor(Parameters parameters, Result result, HttpServletRequest request, Set<PluginConfig> plugins) { this.parameters = parameters; this.result = result; this.request = request; this.plugins = plugins; } public boolean accepts(ResourceMethod method) { return true; } public void intercept(InterceptorStack stack, ResourceMethod method, Object resourceInstance) throws InterceptionException { String path = request.getContextPath(); Menu menu = new Menu(path); new DefaultMenus().includeMenus(menu, parameters); for (PluginConfig config : plugins) { config.includeMenus(menu, parameters); } result.include("menu", menu); stack.next(method, resourceInstance); } }