Não sei oq está faltando
Não sei oq está faltando
Oi por favor, mande o teu código completo pode ser em forma de repositório
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2023-11-28T08:57:19.935-03:00 ERROR 6500 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:774) ~[spring-boot-3.1.1.jar:3.1.1]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:755) ~[spring-boot-3.1.1.jar:3.1.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:319) ~[spring-boot-3.1.1.jar:3.1.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.1.jar:3.1.1]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.1.jar:3.1.1]
at br.com.alura.screenmatch.ScreenmatchApplication.main(ScreenmatchApplication.java:17) ~[classes/:na]
Caused by: java.lang.NullPointerException: Cannot invoke "java.util.List.stream()" because the return value of "br.com.alura.screenmatch.model.DadosTemporada.episodios()" is null
at br.com.alura.screenmatch.principal.Principal.lambda$buscarEpisodioPorSerie$2(Principal.java:108) ~[classes/:na]
at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:273) ~[na:na]
at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) ~[na:na]
at br.com.alura.screenmatch.principal.Principal.buscarEpisodioPorSerie(Principal.java:110) ~[classes/:na]
at br.com.alura.screenmatch.principal.Principal.exibeMenu(Principal.java:51) ~[classes/:na]
at br.com.alura.screenmatch.ScreenmatchApplication.run(ScreenmatchApplication.java:23) ~[classes/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:771) ~[spring-boot-3.1.1.jar:3.1.1]
... 5 common frames omitted
Esse é o erro que está ocorrendo.
achei o problema! era uma besteira. está assim:
var json = consumo.obterDados(ENDERECO + serieGet
.getTitulo().trim().toLowerCase().replace(" ","+") + "&" + i + API_KEY);
E corrigi para assim:
var json = consumo.obterDados(ENDERECO + serieGet
.getTitulo().trim().toLowerCase().replace(" ","+") + "&season=" + i + API_KEY);
Tinha esquecido como funcionava o link do site OMDB.
A parte do codigo por completo:
private void buscarEpisodioPorSerie(){
System.out.println("Todas as séries registradas:");
listarSeriesBuscadas();
System.out.print("Digite o nome da série: ");
var nomeSerie = leitura.nextLine();
Optional<Serie> serie = series.stream()
.filter(s -> s.getTitulo().toLowerCase().contains(nomeSerie.toLowerCase()))
.findFirst();
if(serie.isPresent()) {
var serieGet = serie.get();
List<DadosTemporada> temporadas = new ArrayList<>();
for (int i = 1; i <= serieGet.getTotalTemporadas(); i++) {
var json = consumo.obterDados(ENDERECO + serieGet
.getTitulo().trim().toLowerCase().replace(" ","+") + "&season=" + i + API_KEY);
DadosTemporada dadosTemporada = conversor.obterDados(json, DadosTemporada.class);
temporadas.add(dadosTemporada);
}
temporadas.forEach(System.out::println);
List<Episodio> episodios = temporadas.stream()
.flatMap(d -> d.episodios().stream()
.map(e -> new Episodio(d.numero(), e)))
.collect(Collectors.toList());
serieGet.setEpisodios(episodios);
repositorio.save(serieGet);
} else {
System.out.println("Série não encontrada.");
}
}