Logica errada na validação de Login?

Boa Noite pessoal…
Bem sou novo aqui e talvez o erro seja até ridículo para vocês, ,mas já vi e revi o código e não estou sabendo o que está acontecendo de errado.

Tenho uma janela de login que chama uma classe service para fazer a validação do login, na classe service chamo o DAO da classe usuario que por sua vez retorna o objeto usuario do banco. A classe service deve retornar a String “valido” se a senha bater com o digitado pelo usuario, porem não importa a senha que coloque que o service retorna como “valido”.

Ação do botão na tela de login…

String retorno = new LoginService().isValidLogin(txtLogin.getText(),new String(txtSenha.getPassword())); if (retorno.equals("valido")) { TelaLogin.this.setVisible(false); new TelaPrincipal().setVisible(true); } else{ JOptionPane.showMessageDialog(null, retorno); }

Classe service…

[code]public String isValidLogin(String login, String pSenha){
Usuario usuario = null;
try{
usuario = new UsuarioDAO().obterPeloID(login);
}
catch(Exception e){
JOptionPane.showMessageDialog(null, “Erro:”+ e.getMessage());
}

	if(usuario==null){
		return "Este login não existe no banco!";
	}

	else if(usuario.getSenha().equals(pSenha));
	{
		JOptionPane.showMessageDialog(null, "Senha:"+usuario.getSenha() +"/n"+"Parametro:"+pSenha);
		return "valido";
	}
}[/code]

Obrigado desde já…

Amigo, não sei se estou falando bobeira, mas não é aquele new?

usuario =  new UsuarioDAO().obterPeloID(login);  

eu faria somente:

usuario =  UsuarioDAO().obterPeloID(login);  

Só testando para ter certeza, estou sem Eclipse agora.
Se não, coloca um break point ali e debugga, veja o valor de usuario antes daquele if que verifica a senha.

É meu amigo, não tem a ver mesmo. O objeto esta sendo retornado certo, eu já fiz o Debug dos valores do login e senha do objeto e do parâmetro senha que passo na função e estão vindo corretos. O que eu quero saber é por que ele cai no return “valido” se a senha do parâmetro esta diferente da do objeto. Isso que eu nao entendo.
Mas obrigado de qualquer forma.

else if(usuario.getSenha().equals(pSenha)); 

Tira o “;” que ele vai limitar o escopo do bloco para o if, do jeito que está o bloco do retorno está sendo sempre executado.

Putz, que mole! Juro que não vi a virgula, olhei milhares de vezes o código e nada. Como ela foi parar ali ? rsrsrs
Brigadão cara!