Olá pessoal,
Estou estudando pela apostila da Caelum e estou preso a uma parte, pois não consigo completar o exercício de interceptadores com o Vraptor.
O objetivo do exercício é interceptar uma requisição para verificar se o usuário está logado no sistema.
Tentei achar a solução na documentação do vraptor, porém não obtive sucesso.
Quero aprender mais sobre interceptadores, mas não acho um bom material.
Eis o código do controller:
@Controller
public class LoginController {
private UserDAO dao;
private UserLogado userLogado;
private Result result;
public LoginController(UserDAO dao, UserLogado userLogado, Result result){
this.dao = dao;
this.userLogado = userLogado;
this.result = result;
}
public void autentica(User user){
User autenticado = dao.buscaUsuarioPorLoginESenha(user);
if(autenticado != null){
userLogado.login(autenticado);
result.redirectTo(ProdutoController.class).lista();
return;
}
result.use(Results.logic()).redirectTo(LoginController.class).formLogin();
}
public void formLogin(){
}
}
Eis o código do interceptador:
@Intercepts
public class LoginInterceptor implements Interceptor {
private UserLogado userLogado;
private Result result;
public LoginInterceptor(UserLogado userLogado, Result result) {
this.userLogado = userLogado;
this.result = result;
}
public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
if(userLogado.getUserLogado() != null) {
stack.next(method, instance);
}
else {
try{
result.use(Results.logic()).redirectTo(LoginController.class).formLogin();
}
catch(InterceptionException e){
e.printStackTrace();
}
}
}
public boolean accepts(ResourceMethod method) {
ResourceClass resource = method.getResource();
return !resource.getType().isAssignableFrom(LoginController.class);
}
}
Eis a exceção:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
br.com.caelum.vraptor.http.route.RouteNotFoundException: The selected route is invalid for redirection: controller.LoginController.formLogin
br.com.caelum.vraptor.http.route.DefaultRouter.urlFor(DefaultRouter.java:155)
br.com.caelum.vraptor.view.DefaultLogicResult$2.intercept(DefaultLogicResult.java:116)
br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:38)
controller.LoginController$$EnhancerByCGLIB$$34e40d1f.formLogin(<generated>)
intercept.LoginInterceptor.intercept(LoginInterceptor.java:30)
br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
Abraço a todos e agradeço desde já a colaboração dos membros