boa tarde, não consigo criar uma nova oferta, refiz a aula e na hora de criar nova oferta ele retorna um erro 500. Segue abaixo o erro e códigos:
Erro
2021-01-27 16:04:41.623 ERROR 17674 --- [nio-8080-exec-7] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException: text] with root cause
java.lang.NullPointerException: text
at java.base/java.util.Objects.requireNonNull(Objects.java:247) ~[na:na]
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1948) ~[na:na]
at java.base/java.time.LocalDate.parse(LocalDate.java:428) ~[na:na]
at br.com.alura.mvc.mudi.dto.RequisicaoNovaOferta.toOferta(RequisicaoNovaOferta.java:59) ~[classes/:na]
at br.com.alura.mvc.mudi.api.OfertasRest.criarOferta(OfertasRest.java:32) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
oferta/home
<script>
function onload() {
var app = new Vue(
{
el : '#ofertas',
data : {
pedidos : []
},
mounted () {
axios
.get('http://localhost:8080/api/pedidos/aguardando')
.then(response => (this.pedidos = response.data))
},
methods:{
enviarOferta: function(pedido){
axios
.post('http://localhost:8080/api/ofertas', {
pedidoId: pedido.id,
valor: pedido.valorNegociado,
dataDaEntrega: pedido.dataDaEntrega,
comentario: pedido.comentario
})
.then(response => console.log(reponse));
}
}
});
}
</script>
OfertaRest
package br.com.alura.mvc.mudi.api;
import java.util.Optional;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import br.com.alura.mvc.mudi.dto.RequisicaoNovaOferta;
import br.com.alura.mvc.mudi.model.Oferta;
import br.com.alura.mvc.mudi.model.Pedido;
import br.com.alura.mvc.mudi.repository.PedidoRepository;
@RestController
@RequestMapping("/api/ofertas")
public class OfertasRest {
@Autowired
private PedidoRepository pedidoRepository;
@PostMapping
public Oferta criarOferta(@RequestBody RequisicaoNovaOferta requisicao) {
Optional<Pedido> pedidoBuscado = pedidoRepository.findById(requisicao.getPedidoId());
if(!pedidoBuscado.isPresent()) {
return null;
}
Pedido pedido = pedidoBuscado.get();
Oferta nova = requisicao.toOferta();
nova.setPedido(pedido);
pedido.getOfertas().add(nova);
pedidoRepository.save(pedido);
return nova;
}
RequisicaoNovaOferta
package br.com.alura.mvc.mudi.dto;
import java.math.BigDecimal;
import java.text.DateFormat;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import br.com.alura.mvc.mudi.model.Oferta;
public class RequisicaoNovaOferta {
private static final DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
private Long pedidoId;
private String valor;
private String dataDeEntrega;
private String comentario;
public Long getPedidoId() {
return pedidoId;
}
public void setPedidoId(Long pedidoId) {
this.pedidoId = pedidoId;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
public String getDataDeEntrega() {
return dataDeEntrega;
}
public void setDataDeEntrega(String dataDeEntrega) {
this.dataDeEntrega = dataDeEntrega;
}
public String getComentario() {
return comentario;
}
public void setComentario(String comentario) {
this.comentario = comentario;
}
public Oferta toOferta() {
Oferta oferta = new Oferta();
oferta.setComentario(this.comentario);
oferta.setDataDeEntrega(LocalDate.parse(this.dataDeEntrega, formatter ));
oferta.setValor(new BigDecimal(this.valor));
return oferta;
}
}