Problemas em projeto baseado na loja caelum (VRaptor + Hibernate) [RESOLVIDO]

Olá amigos estou com um problema em um projeto que estou fazendo que é baseado na loja caelum.

Estou fazendo uma aplicação (helpdesk) e quando tento acessar qualquer outra lógica, por exemplo, um cadastro simples que usaria apenas o formulario.ok dá um erro assim:

24/04/2008 11:19:26 org.apache.catalina.core.ApplicationContext log
INFO: 

The server side component of the HTTP Monitor has detected a java.lang.StackOverflowError.
This happens when there is an infinite loop in the web module.
Correct the cause of the infinite loop before running the web module again.


24/04/2008 11:19:26 org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet vraptor2 threw exception
java.lang.StackOverflowError
        at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
        at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:906)

Segui o exemplo da apostila… Então colocarei abaixo minhas classes, iniciando pela classe MeusInteressesLogic que possi a primeira lógica que minha a aplicação roda (é direcionada para cá pelo index.jsp):

INDEX.JSP

<jsp:forward page="interesse.lista.logic" />
@Component("interesse")
@InterceptedBy({AutorizadorInterceptor.class,
                DaoInterceptor.class})
public class MeusInteressesLogic {
    @In(scope=ScopeType.SESSION)
    private Usuario usuario;
    private final DaoFactory daoFactory;

    
    public MeusInteressesLogic(DaoFactory daoFactory) {
        this.daoFactory = daoFactory;
    }
    
    public void lista() {
    }   
}
public class AutorizadorInterceptor implements Interceptor {
    @In(scope=ScopeType.SESSION, required=false)
    private Usuario usuario;

    public void intercept(LogicFlow flow) throws LogicException, ViewException {
        if (this.usuario == null) {
            try {
                flow.getLogicRequest().getResponse().sendRedirect("account.login.logic");
            } catch (IOException e) {
                throw new LogicException(e);
            }
        } else {
            flow.execute();
        }
    }
}
@Component("account")
@InterceptedBy(DaoInterceptor.class)
public class LoginLogic {
    private final DaoFactory daoFactory;
    private Usuario usuario;

    public LoginLogic(DaoFactory daoFactory) {
        this.daoFactory = daoFactory;
    }
   
    public void login() {
    }

    public String efetuaLogin(Usuario usuario) {
        UsuarioDao dao = (UsuarioDao) this.daoFactory.getUsuarioDao();
        this.usuario = dao.existeUnico(usuario);
        if (this.usuario != null) {           
            return "ok";
        } else {
            return "invalid";
        }
    }
    
    public void logout() {
        this.usuario = null;
    }
    
    @Out(scope=ScopeType.SESSION)
    public Usuario getUsuario() {
        return this.usuario;
    }
}
public class DaoInterceptor implements Interceptor {
    private final DaoFactory factory = new DaoFactory();

    public void intercept(LogicFlow flow) throws LogicException, ViewException {
        //Executa a lógica
        flow.execute();
    
        //Se sobrou transação sem comitar, faz rollback
        if (this.factory.hasTransaction())
            this.factory.rollback();
        this.factory.close();
    }
    
    @Out(key="br.com.vconline.helpdesk.dao.DaoFactory")
    public DaoFactory getFactory() {
        return this.factory;
    }
}

web/interesse/lista.ok.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
    <h2>Seja bem vindo <c:out value="${usuario.nome}" /></h2>
    <a href="setor.formulario.logic">Setor</a>
</body>
</html>

web/setor/formulario.ok.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="iso-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
    <form action="setor.salvar.logic" method="post">
        <div id="form_campos">
            <input type="hidden" name="setor.id" value="${setor.id}" />
            <input type="hidden" name="setor.estab" value="${usuario.estab}" />
            Descrição:<input type="text" name="setor.descricao" value="${setor.descricao}" />
        </div>
        <div id="form_botao">
            <input type="submit" />
        </div>
    </form>
</body>
</html>

Aonde que está o erro disso ??? Eu tentei debbugar pra ver se encontrava algum problema, e percebi que o programa fica “preso” entre o DaoInterceptor e o AutorizadorInterceptor. Ele valida o usuário no AutorizadorInterceptor (if (this.usuario == null) {), caí no else que tem um flow.execute(), este manda denovo para o DaoFactory, no método intercept que tem um outro flow.execute() que manda novamente para o AutorizadorInterceptor. E desta forma ele fica em loop.

Como é que posso resolver este problema ??

Abraços

Olá amigos, o problema foi resolvido! Estava com uma entrada errado no meu views.properties. Havia colocado um

setor.formulario.ok=setor.formulario.logic

E desta forma eu botei o cachorro correr atraz do rabo…

=)

Valeu pelas dicas…