Não sei oq está faltando
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.");
}
}