Estou fazendo um iterceptor simples para validar sessão, quando carrega a aplicação e o interceptor atua, gera uma exceção.
Pecebi que é na hora do redirecionamento. Tentei por lógica e por página, mas gera o mesmo erro.
podem me ajudar?
Exceção:
03/09/2009 14:15:57 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.view.ResultException: You must call goTo method in order to specify where to go
at br.com.caelum.vraptor.validator.DefaultValidator.validate(DefaultValidator.java:109)
at br.com.caelum.vraptor.validator.DefaultValidator.checking(DefaultValidator.java:73)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:80)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:57)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:54)
at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:51)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor.intercept(MultipartInterceptor.java:61)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:57)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:58)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:57)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.core.URLParameterExtractorInterceptor.intercept(URLParameterExtractorInterceptor.java:45)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:57)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:70)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:57)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:71)
at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:71)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:99)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:38)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:97)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:637)
Código do interceptor:
package br.eg.commons.util;
import java.io.IOException;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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.ioc.RequestScoped;
import br.com.caelum.vraptor.resource.ResourceMethod;
import br.com.caelum.vraptor.view.Results;
import br.eg.toolComponentFw.facade.ToolComponentFramework;
import br.eg.toolComponentFw.facade.ToolInstance;
import br.eg.tools.faq.FaqMgrController;
@RequestScoped
@Intercepts
public class AuthenticationInterceptor implements Interceptor {
private HttpServletRequest request;
private Result result;
private ToolComponentFramework toolComponentFramework;
private HttpSession session;
public AuthenticationInterceptor(HttpSession session, HttpServletRequest request, Result result, ToolComponentFramework toolComponentFramework) {
this.session = session;
this.request = request;
this.result = result;
this.toolComponentFramework = toolComponentFramework;
}
public boolean accepts(ResourceMethod method) {
return Arrays.asList(FaqMgrController.class).contains(method.getMethod().getDeclaringClass());
}
public void intercept(InterceptorStack stack, ResourceMethod method,Object resourceInstance) throws InterceptionException {
if (this.session.getAttribute("currentUser") == null) {
try {
ToolInstance mainToolInstance = toolComponentFramework.getMainTool();
result.use(Results.page()).redirect(request.getContextPath() + "/groupware-workbench/"+mainToolInstance.getId()+"/userMgr/login");
//response.sendRedirect(request.getContextPath() + "/groupware-workbench/"+mainToolInstance.getId()+"/userMgr/login");
} catch (IOException e) {
throw new InterceptionException(e);
} catch (Exception e) {
e.printStackTrace();
}
} else {
stack.next(method, resourceInstance);
}
}
}
código do userMgrController:
public UserMgrController(HttpSession session, HttpServletResponse response, HttpServletRequest request, Result result, ToolInstance toolInstance, Validator validator) throws Exception {
this.result = result;
this.toolInstance = toolInstance;
this.userMgr = (UserMgrInstance) toolInstance.getCollabComponentInstance(UserMgrInstance.class);
this.validator = validator;
this.session = session;
this.response = response;
this.request = request;
this.toolComponentFramework = (ToolComponentFramework)toolInstance.getToolComponent().getComponentFramework();
}
.
.
.
@Get
@Path("/groupware-workbench/{idToolInstance}/userMgr/login")
public void login() {
System.out.println("entrou login");
}
@Post
@Path("/groupware-workbench/{idToolInstance}/userMgr/doLogin")
public void doLogin(User user) throws Exception {
User userTmp = this.userMgr.findByLogin(user.getLogin());
if(userTmp != null){
session.setAttribute("currentUser", userTmp);
//response.sendRedirect(request.getContextPath() + "/groupware-workbench/"+toolInstance.getId()+"/");
result.use(Results.page()).redirect("../../../");
}else{
result.use(Results.page()).redirect("./login");
}
}
