Fiz o código conforme as aulas, e ao realizar a requisição POST na URL "/compras" é apresentado o seguinte erro:
java.lang.NullPointerException: Cannot invoke "br.com.alura.microservice.loja.controller.dto.InfoFornecedorDTO.getEndereco()" because the return value of "org.springframework.http.ResponseEntity.getBody()" is null
PS: eu refiz todas as aulas passo a passo (assistindo no 0.5x), mas não rolou. Depois, copiei os arquivos disponibilizados para download para a minha pasta dos projetos e permaneceu ocorrendo.
Talvez eu esteja muito próximo do problema, talvez por isso não consigo encontrar o erro. Alguém poderia dar uma luz quanto a isso?
Obrigado! :')
Print da requisição:
A seguir, os códigos das respectivas classes envolvidas no POST.
Classe CompraDTO:
package br.com.alura.microservice.loja.controller.dto;
import java.util.List;
public class CompraDTO {
private List<ItemDaCompraDTO> itens;
private EnderecoDTO endereco;
public List<ItemDaCompraDTO> getItens() {
return itens;
}
public void setItens(List<ItemDaCompraDTO> itens) {
this.itens = itens;
}
public EnderecoDTO getEndereco() {
return endereco;
}
public void setEndereco(EnderecoDTO endereco) {
this.endereco = endereco;
}
}
Classe InfoFornecedorDTO:
package br.com.alura.microservice.loja.controller.dto;
public class InfoFornecedorDTO {
private String endereco;
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
}
Classe CompraService:
package br.com.alura.microservice.loja.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import br.com.alura.microservice.loja.controller.dto.CompraDTO;
import br.com.alura.microservice.loja.controller.dto.InfoFornecedorDTO;
@Service
public class CompraService {
@Autowired
private RestTemplate client;
public void realizaCompra(CompraDTO compra) {
ResponseEntity<InfoFornecedorDTO> exchange =
client.exchange("http://fornecedor/info/"+compra.getEndereco().getEstado(),
HttpMethod.GET, null, InfoFornecedorDTO.class);
// Aqui que o bicho pega
System.out.println(exchange.getBody().getEndereco());
}
}