//método detalhar
@GetMapping("/{id}")
public DetalhesDoTopicoDto detalhar(@PathVariable Long id) {
Topico topico = topicoRepository.getOne(id);
return new DetalhesDoTopicoDto(topico);
}
//dto
package br.com.alura.forum.controller.dto;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import br.com.alura.forum.modelo.StatusTopico;
import br.com.alura.forum.modelo.Topico;
// no dto só devolvemos coisas primitivas (String, Enum, etc.)
public class DetalhesDoTopicoDto {
private Long id;
private String titulo;
private String mensagem;
private LocalDateTime dataCriacao;
private String nomeAutor;
private StatusTopico status;
private List<RespostaDto> respostas;
public DetalhesDoTopicoDto(Topico topico) {
this.id = topico.getId();
this.titulo = topico.getTitulo();
this.mensagem = topico.getMensagem();
this.dataCriacao = topico.getDataCriacao();
this.nomeAutor = topico.getAutor().getNome();
this.status = topico.getStatus();
this.respostas = topico.getRespostas().stream().map(RespostaDto::new).collect(Collectors.toList());
}
public Long getId() {
return id;
}
public String getTitulo() {
return titulo;
}
public String getMensagem() {
return mensagem;
}
public LocalDateTime getDataCriacao() {
return dataCriacao;
}
public String getNomeAutor() {
return nomeAutor;
}
public StatusTopico getStatus() {
return status;
}
public List<RespostaDto> getRespostas() {
return respostas;
}
}
"timestamp": "2020-09-23T18:42:40.240+0000",
"status": 500,
"error": "Internal Server Error",
"message": "No message available",
"trace": "java.lang.NullPointerException\r\n\tat br.com.alura.forum.controller.dto.DetalhesDoTopicoDto.<init>(DetalhesDoTopicoDto.java:26