package br.com.caelum.guj;
import javax.servlet.http.HttpSession;
import net.jforum.SessionFacade;
import net.jforum.entities.UserSession;
import net.jforum.util.preferences.ConfigKeys;
import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
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.resource.ResourceMethod;
@Intercepts
public class AgregatorsInterceptor implements Interceptor {
private final Agregators agregators;
private final Result result;
private final HttpSession session;
public AgregatorsInterceptor(Agregators agregators, Result result, HttpSession session) {
this.agregators = agregators;
this.result = result;
this.session = session;
}
@Override
public boolean accepts(ResourceMethod method) {
return true;
}
@Override
public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
agregators.addAggregators(result);
boolean isLogged = "1".equals(session.getAttribute(ConfigKeys.LOGGED));
result.include("logged", isLogged);
if (isLogged) {
UserSession userSession = SessionFacade.getUserSession(session.getId());
result.include("userSession", userSession);
}
stack.next(method, instance);
}
}