Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Código 500 ao buscar um tópico adicionado.

Bom dia, Rodrigo.

Estava modificando a parte de cache do curso para utilizar o Redis, fiz a modificações necessárias e criei um imagem do Redis no Docker para testar a API. porém durante os teste reparei que se eu crio um tópico qualquer e depois tento buscar ele acaba me dando "Internal Server Erro", pois o campo do autor está nulo. Como poderia resolver isso?

("java.lang.NullPointerException: Cannot invoke "br.com.alura.forum.modelo.Usuario.getNome()" because the return value of "br.com.alura.forum.modelo.Topico.getAutor()" is null\r\n\tat br.com.alura.forum.controller.dto.DetalheTopicoDto.)

Grato.

4 respostas

Oi Jéferson,

Lá na sua classe DetalheTopicoDto você deve fazer um if para verificar se o autor não está nulo. Posta aqui o código dessa sua classe.

solução!

A principio da forma que você comentou deu certo, porém eu vou ver para pegar e salvar o usuário logado no momento que cria o tópico para ele não deixar nulo. isso também daria, correto?

Assim ficou o código com a sua sugestão.

    public DetalheTopicoDto(Topico topico) {
        this.id = topico.getId();
        this.titulo = topico.getTitulo();
        this.mensagem = topico.getMensagem();
        this.dataCriação = topico.getDataCriacao();
        this.nomeAutor = (topico.getAutor() == null) ? "Aluno" : topico.getAutor().getNome();
        this.status = topico.getStatus();
        this.respostas = new ArrayList<>();
        this.respostas.addAll(topico.getRespostas()
                .stream()
                .map(RespostaDto::new)
                .collect(Collectors.toList())
        );
    }

Show! era isso mesmo.

Sim, o ideal é pega o usuário logado para setar como autor.

Valeu, Rodrigo.

Vou ver como implementar esta etapa então.

Abraços.