Pessoal, boa tarde, já li o faq, já busquei no forúm e nada.
Mudei todo o meu código para utilizar DI porém agora que finalizei e fui testar, está dando StackOverFlow. Claro que estou fazendo alguma coisa errada, mas o que?
Tenho os seguintes pacotes:
model
dao
interface
action
Não tenho as classes services, porque neste momento estou fazendo na Action mesmo. ( Seria o próximo passo caso a mudança acima tivesse dado certo. )
Meu ApplicationManager
Code:
public void loadActions() {
filter(new AuthenticationFilter());
on(LOGIN, redir("/index.jsp"));
filter( new ConnectionFilter("conn", connHandler) );
filter( new IoCFilter() );
ioc("usuarioDao", UsuarioDao.class );
ioc("agenteCreditoDao", AgenteCreditoDao.class );
filter( new DIFilter() );
di("conn", Connection.class );
di("agenteCreditoDao", IAgenteCreditoDao.class );
di("usuarioDao", IUsuarioDao.class );
filter( new InjectionFilter() );
...
...
}
No momento do login, ele da o erro acima.
Meu LoginAction
Code:
public class LoginUser extends BaseLoginAction {
// instanciado via injecao de dependencia
private IUsuarioDao usuarioDao = null;
private IConfiguracaoDao configuracaoDao = null;
@SuppressWarnings("unchecked")
public String login() throws Exception {
Usuario usuario = usuarioDao.isValid(
input.getValue("usuario").toString().toUpperCase(),
input.getValue("senha").toString().toUpperCase(), true );
if ( usuario != null ){
setUserSession( usuario );
session.setAttribute("usuario", usuario );
HashMap configuracoes = configuracaoDao.getAll();
session.setAttribute( "configuracoes", configuracoes );
if ( usuario.getEagente().equals("S") )
return AGENTE;
else
return "success";
}else{
output.setValue("error", "Usuário ou senha inválidos!" );
return INICIO;
}
}
}
Meu UsuarioDao
Code:
public class UsuarioDao implements IUsuarioDao {
private Connection conn;
public void setConnection( Connection conn ){
this.conn = conn;
}
private IAgenteCreditoDao agenteCreditoDao = null;
public UsuarioDao() {
}
public UsuarioDao( Connection conn ){
this.conn = conn;
}
...
}
Esta classe recebe um IAgenteCreditoDao para validacoes. E tem um metodo para testar o login do usuario.
Meu AgenteCreditoDao
Code:
public class AgenteCreditoDao implements IAgenteCreditoDao {
private Connection conn;
public void setConnection( Connection conn ){
this.conn = conn;
}
private IUsuarioDao usuarioDao = null;
public AgenteCreditoDao() {}
public AgenteCreditoDao(Connection conn) {
this.conn = conn;
}
...
}
Esta classe tem um IUsuarioDao para rotinas durante o uso do sistema.
A aplicação sobe normalmente, porém quando envio o form de login ( que é a primeira acao ), acontece o erro.
como resolver?