Seguidos todos los pasos del video, al ejecutar mi aplicación se muestra el siguiente error cuando presiono ENTER despues de haber elegido el nombre de la serie "game of thrones"
2024-11-15T08:01:06.868-06:00 INFO 7024 --- [screenmatch] [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2024-11-15T08:01:06.880-06:00 ERROR 7024 --- [screenmatch] [ main] o.s.boot.SpringApplication : Application run failed
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "com.aluracursos.screenmatch.model.DatosSerie.totalDeTemporadas()" is null
Adjunto el código del RECORD DatosSerie
package com.aluracursos.screenmatch.model;
import com.fasterxml.jackson.annotation.JsonAlias; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown = true) public record DatosSerie( @JsonAlias("Title") String titulo, @JsonAlias("totalSeasons") Integer totalDeTemporadas, @JsonAlias("imdbRating") String evaluacion ) { }
Adjunto código de CLASE Principal
package com.aluracursos.screenmatch.principal;
import com.aluracursos.screenmatch.model.DatosSerie; import com.aluracursos.screenmatch.model.DatosTemporadas; import com.aluracursos.screenmatch.service.ConsumoAPI; import com.aluracursos.screenmatch.service.ConvierteDatos; import java.util.ArrayList; import java.util.List; import java.util.Scanner;
public class Principal {
private Scanner teclado = new Scanner(System.in);
private ConsumoAPI consumoAPI = new ConsumoAPI();
private final String URL_BASE = "http://www.omdbapi.com/?t=";
private final String API_KEY = "apikey=XXXXXXX";
private ConvierteDatos conversor = new ConvierteDatos();
public void muestraElMenu(){
System.out.println("Por favor escribe el nombre de la serie que deseas buscar");
//Busca los datos generales de la series
var nombreSerie = teclado.nextLine();
var json = consumoAPI.obtenerDatos(URL_BASE + nombreSerie.replace(" ","+") + API_KEY);
var datos = conversor.obtenerDatos(json, DatosSerie.class);
//Busca los datos de todas las temporadas
List<DatosTemporadas> temporadas = new ArrayList<>();
for (int i = 1; i <= datos.totalDeTemporadas(); i++) {
json = consumoAPI.obtenerDatos( URL_BASE + nombreSerie.replace(" ","+") + "&Season=" + i + API_KEY);
var datosTemporadas = conversor.obtenerDatos(json, DatosTemporadas.class);
temporadas.add(datosTemporadas);
}
temporadas.forEach(System.out::println);
}
}