@@ -89,52 +89,68 @@ Create a new `Swapi` Java class in `src/main/java` in the `com.redhat.developers
8989----
9090package com.redhat.developers;
9191
92- import java.util.List;
92+ public class Swapi {
9393
94- import com.fasterxml.jackson.annotation.JsonProperty;
94+ private String title;
95+ private int episode_id;
96+ private String opening_crawl;
97+ private String director;
98+ private String producer;
9599
96- public class Swapi {
97-
98- private List<Results> results;
99100
100- public Swapi(@JsonProperty("results") List<Results> results) {
101- this.results = results;
101+ public Swapi() {
102102 }
103103
104- public List<Results> getResults() {
105- return results;
104+ public Swapi(String title, int episode_id, String opening_crawl, String director, String producer) {
105+ this.title = title;
106+ this.episode_id = episode_id;
107+ this.opening_crawl = opening_crawl;
108+ this.director = director;
109+ this.producer = producer;
106110 }
107-
108- public static class Results {
109- private int episodeId;
110- private String producer;
111- private String director;
112- private String opening_crawl;
113-
114- public Results(int episodeId, String producer, String director, String opening_crawl) {
115- this.episodeId = episodeId;
116- this.producer = producer;
117- this.director = director;
118- this.opening_crawl = opening_crawl;
119- }
120111
121- public int getEpisodeId() {
122- return episodeId;
123- }
124112
125- public String getProducer () {
126- return producer ;
127- }
113+ public String getTitle () {
114+ return title ;
115+ }
128116
129- public String getDirector( ) {
130- return director ;
131- }
117+ public void setTitle(String title ) {
118+ this.title = title ;
119+ }
132120
133- public String getOpening_crawl() {
134- return opening_crawl;
135- }
121+ public int getEpisode_id() {
122+ return episode_id;
123+ }
124+
125+ public void setEpisode_id(int episode_id) {
126+ this.episode_id = episode_id;
127+ }
128+
129+ public String getOpening_crawl() {
130+ return opening_crawl;
131+ }
132+
133+ public void setOpening_crawl(String opening_crawl) {
134+ this.opening_crawl = opening_crawl;
135+ }
136+
137+ public String getDirector() {
138+ return director;
139+ }
140+
141+ public void setDirector(String director) {
142+ this.director = director;
143+ }
144+
145+ public String getProducer() {
146+ return producer;
147+ }
148+
149+ public void setProducer(String producer) {
150+ this.producer = producer;
136151 }
137152}
153+
138154----
139155
140156=== Create SwapiService
@@ -148,25 +164,23 @@ Create a new `SwapiService` Java interface in `src/main/java` in the `com.redhat
148164----
149165package com.redhat.developers;
150166
151- import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
152167
153168import jakarta.ws.rs.GET;
154169import jakarta.ws.rs.Path;
170+ import jakarta.ws.rs.PathParam;
155171import jakarta.ws.rs.Produces;
156- import jakarta.ws.rs.QueryParam;
157172import jakarta.ws.rs.core.MediaType;
173+ import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
158174
159- import com.redhat.developers.Swapi.Results;
160-
161- @Path("/api")
162175@RegisterRestClient
163176public interface SwapiService {
177+
164178 @GET
165- @Path("/films")
166179 @Produces(MediaType.APPLICATION_JSON)
167- Swapi getMovieByTitle(@QueryParam("search") String title);
168-
180+ @Path("/films/{id}")
181+ public Swapi getFilmById(@PathParam("id") String id);
169182}
183+
170184----
171185
172186== Configure REST Client properties
@@ -176,7 +190,7 @@ Add the following properties to your `application.properties` in `src/main/resou
176190[.console-input]
177191[source,properties]
178192----
179- quarkus.rest-client."com.redhat.developers.SwapiService".url=https://swapi.dev
193+ quarkus.rest-client."com.redhat.developers.SwapiService".url=https://swapi.info/api
180194----
181195
182196== Create MovieDTO
@@ -191,65 +205,88 @@ Create a new `MovieDTO` Java class in `src/main/java` in the `com.redhat.develop
191205package com.redhat.developers;
192206
193207import java.sql.Date;
194- import java.util.List;
195-
196- import com.redhat.developers.Swapi.Results;
197208
198209public class MovieDTO {
210+
199211 private String title;
200212 private Date releaseDate;
201- private int episodeId;
202- private String producer;
203- private String director;
213+ private int episode_id;
204214 private String opening_crawl;
215+ private String director;
216+ private String producer;
205217
206- private MovieDTO(String title, Date releaseDate, int episodeId, String producer, String director, String opening_crawl) {
218+ public MovieDTO() {
219+ }
220+
221+ private MovieDTO(String title, Date releaseDate, int episode_id, String opening_crawl, String director, String producer) {
207222 this.title = title;
208223 this.releaseDate = releaseDate;
209- this.episodeId = episodeId;
210- this.producer = producer;
211- this.director = director;
224+ this.episode_id = episode_id;
212225 this.opening_crawl = opening_crawl;
226+ this.director = director;
227+ this.producer = producer;
213228 }
214229
215- public static MovieDTO of(Movie movie, Swapi swapi){
216- List<Results> results = swapi.getResults();
217- Results result = results.get(0);
218-
230+ public static MovieDTO of(Movie movie, Swapi swapi) {
219231 return new MovieDTO(
220- movie.title,
221- movie.releaseDate,
222- result.getEpisodeId (),
223- result.getProducer (),
224- result .getDirector(),
225- result.getOpening_crawl ()
232+ movie.title,
233+ movie.releaseDate,
234+ swapi.getEpisode_id (),
235+ swapi.getOpening_crawl (),
236+ swapi .getDirector(),
237+ swapi.getProducer ()
226238 );
227239 }
228240
229241 public String getTitle() {
230242 return title;
231243 }
232244
245+ public void setTitle(String title) {
246+ this.title = title;
247+ }
248+
233249 public Date getReleaseDate() {
234250 return releaseDate;
235251 }
236252
237- public int getEpisodeId( ) {
238- return episodeId ;
253+ public void setReleaseDate(Date releaseDate ) {
254+ this.releaseDate = releaseDate ;
239255 }
240256
241- public String getProducer () {
242- return producer ;
257+ public int getEpisode_id () {
258+ return episode_id ;
243259 }
244260
245- public String getDirector( ) {
246- return director ;
261+ public void setEpisode_id(int episode_id ) {
262+ this.episode_id = episode_id ;
247263 }
248264
249265 public String getOpening_crawl() {
250266 return opening_crawl;
251267 }
268+
269+ public void setOpening_crawl(String opening_crawl) {
270+ this.opening_crawl = opening_crawl;
271+ }
272+
273+ public String getDirector() {
274+ return director;
275+ }
276+
277+ public void setDirector(String director) {
278+ this.director = director;
279+ }
280+
281+ public String getProducer() {
282+ return producer;
283+ }
284+
285+ public void setProducer(String producer) {
286+ this.producer = producer;
287+ }
252288}
289+
253290----
254291
255292== Change MovieResource to use SwapiService
@@ -263,41 +300,35 @@ Change the `MovieResource` Java class in `src/main/java` in the `com.redhat.deve
263300----
264301package com.redhat.developers;
265302
266- import java.util.List;
267- import java.util.stream.Collectors;
268-
269- import org.eclipse.microprofile.rest.client.inject.RestClient;
270-
271- import jakarta.inject.Inject;
272303import jakarta.transaction.Transactional;
273- import jakarta.ws.rs.Consumes;
274- import jakarta.ws.rs.GET;
275- import jakarta.ws.rs.POST;
276- import jakarta.ws.rs.Path;
277- import jakarta.ws.rs.Produces;
278- import jakarta.ws.rs.QueryParam;
304+ import jakarta.ws.rs.*;
279305import jakarta.ws.rs.core.MediaType;
280306import jakarta.ws.rs.core.Response;
281- import jakarta.ws.rs.core.Response.Status ;
307+ import org.eclipse.microprofile.rest.client.inject.RestClient ;
282308
283- @Path("/movie")
309+ import java.util.List;
310+ import java.util.stream.Collectors;
311+
312+ @Path("movie")
313+ @Produces(MediaType.APPLICATION_JSON)
284314public class MovieResource {
285315
286316 @RestClient
287- @Inject
288317 SwapiService swapiService;
289318
290319 @GET
291- @Produces(MediaType.APPLICATION_JSON)
292- public List<MovieDTO> movies(@QueryParam("year") String year) {
320+ public List<MovieDTO> getMovie(@QueryParam("year") String year) {
321+
293322 if (year != null) {
294- return Movie.findByYear(Integer.parseInt(year)).stream()
295- .map(movie -> MovieDTO.of(movie, swapiService.getMovieByTitle(movie.title)))
296- .collect(Collectors.toList());
323+ return Movie.<Movie>findByYear(Integer.parseInt(year)).stream()
324+ .map(movie -> MovieDTO.of(movie, swapiService.getFilmById(String.valueOf(movie.id))))
325+ .collect(Collectors.toList());
326+ } else{
327+ return Movie.<Movie>listAll().stream()
328+ .map(movie -> MovieDTO.of(movie, swapiService.getFilmById(String.valueOf(movie.id))))
329+ .collect(Collectors.toList());
297330 }
298- return Movie.<Movie>listAll().stream()
299- .map(movie -> MovieDTO.of(movie, swapiService.getMovieByTitle(movie.title)))
300- .collect(Collectors.toList());
331+
301332 }
302333
303334 @Transactional
@@ -307,9 +338,10 @@ public class MovieResource {
307338 public Response newMovie(Movie movie) {
308339 movie.id = null;
309340 movie.persist();
310- return Response.status(Status.CREATED).entity(movie).build();
341+ return Response.status(Response. Status.CREATED).entity(movie).build();
311342 }
312343}
344+
313345----
314346
315347== Invoke the endpoint
0 commit comments