Não consegui fazer funcionar, está ocorrendo o erro:
Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: java.util.ArrayList[0]->br.com.mateusalxd.forum.controller.dto.TopicoDTO["id"])
org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: (was java.lang.NullPointerException); nested exception is com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: java.util.ArrayList[0]->br.com.mateusalxd.forum.controller.dto.TopicoDTO["id"])
.....
Meu DTO:
package br.com.mateusalxd.forum.controller.dto;
import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Collectors;
import br.com.mateusalxd.forum.model.Topico;
public class TopicoDTO {
private Long id;
private String titulo;
private String mensagem;
private LocalDateTime dataCriacao;
public TopicoDTO(Topico topico) {
// this.id = topico.getId() == null ? 0 : topico.getId();
this.id = topico.getId();
this.titulo = topico.getTitulo();
this.mensagem = topico.getMensagem();
this.dataCriacao = topico.getDataCriacao();
}
// Getters omitidos
public static List<TopicoDTO> converter(List<Topico> topicos) {
return topicos.stream().map(TopicoDTO::new).collect(Collectors.toList());
}
}
Meu controller:
package br.com.mateusalxd.forum.controller;
import java.util.Arrays;
import java.util.List;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import br.com.mateusalxd.forum.controller.dto.TopicoDTO;
import br.com.mateusalxd.forum.model.Curso;
import br.com.mateusalxd.forum.model.Topico;
@RestController
public class TopicosController {
//@RequestMapping(method = RequestMethod.GET)
@RequestMapping("/topicos")
public List<TopicoDTO> lista() {
Topico topico = new Topico("Uma duvida", "Por que é assim?", new Curso("Spring Boot", "Programação"));
return TopicoDTO.converter(Arrays.asList(topico, topico, topico));
}
}
A versão do Spring tentei com 2.1.4.RELEASE e 2.1.6.RELEASE, só consegui fazer funcionar com o projeto que está na aula seguinte ou colocando uma tratativa no TopicoDTO.id
quando vir nulo colocar 0 por exemplo.