Olá,
Estou tendo um problema para logar na aplicação. Funcionava e agora não estou conseguindo encontrar o erro. Estou tomando um erro de NullPointer quando tento injetar na Classe UsuarioDAO o bean Banco anotado com @Singleton. Coloquei o Debug para facilitar e quando chego na linha this.banco.buscaPeloNome(login) do método buscaPeloLogin tomo NullPointer.
Segue meu código : OBS: o parâmetro login chega preenchido corretamente.
@Singleton
@Startup
public class Banco {
public static List<Livro> livros = new ArrayList<Livro>();
public static List<Autor> autores = new ArrayList<Autor>();
public static List<Usuario> usuarios = new ArrayList<Usuario>();
private static int chave = 1;
static {
System.out.println("###### ENTREI AQUI!!!");
inicializaBanco();
}
public void save(Livro livro) {
livro.setId(chave++);
livros.add(livro);
}
public List<Livro> listaLivros() {
return livros;
}
public void save(Autor autor) {
autor.setId(chave++);
autores.add(autor);
}
public List<Autor> listaAutores() {
return autores;
}
public Autor buscaPelaId(Integer autorId) {
for (Autor autor : autores) {
if(autor.getId().equals(autorId)) {
return autor;
}
}
return null;
}
public Usuario buscaPeloNome(String nome) {
for (Usuario usuario : usuarios) {
if(usuario.getLogin().equals(nome)) {
return usuario;
}
}
return null;
}
private static void inicializaBanco() {
Autor silveira = new Autor(chave++, "Paulo Silveira");
Autor cordeiro = new Autor(chave++, "Gilliard Cordeiro");
Autor coelho = new Autor(chave++, "Hébert Coelho ");
autores.add(silveira);
autores.add(cordeiro);
autores.add(coelho);
livros.add(new Livro("Java 8 prático",silveira));
livros.add(new Livro("Lógica de Programação",silveira));
livros.add(new Livro("CDI: Integre as dependências",cordeiro));
livros.add(new Livro("JSF e JPA",cordeiro));
livros.add(new Livro("JPA Efficaz",coelho));
livros.add(new Livro("JSF Efficaz",coelho));
usuarios.add(new Usuario("admin", "pass"));
}
}
@Stateless
public class UsuarioDao {
@Inject
private Banco banco;
public Usuario buscaPeloLogin(String login) {
return this.banco.buscaPeloNome(login);
}
}