Skip to content

Commit bb6e7d9

Browse files
authored
Merge pull request #172 from eldermoraes/master
Refactoring due to the new SWAPI
2 parents de0b8b8 + 87e5df7 commit bb6e7d9

File tree

1 file changed

+125
-93
lines changed

1 file changed

+125
-93
lines changed

documentation/modules/ROOT/pages/08_rest-client.adoc

Lines changed: 125 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -89,52 +89,68 @@ Create a new `Swapi` Java class in `src/main/java` in the `com.redhat.developers
8989
----
9090
package 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
----
149165
package com.redhat.developers;
150166
151-
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
152167
153168
import jakarta.ws.rs.GET;
154169
import jakarta.ws.rs.Path;
170+
import jakarta.ws.rs.PathParam;
155171
import jakarta.ws.rs.Produces;
156-
import jakarta.ws.rs.QueryParam;
157172
import 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
163176
public 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
191205
package com.redhat.developers;
192206
193207
import java.sql.Date;
194-
import java.util.List;
195-
196-
import com.redhat.developers.Swapi.Results;
197208
198209
public 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
----
264301
package 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;
272303
import 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.*;
279305
import jakarta.ws.rs.core.MediaType;
280306
import 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)
284314
public 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

Comments
 (0)