From ee93cdf089edc69ea0d32ecdd8fd6284b3aceccb Mon Sep 17 00:00:00 2001 From: Navneet Khanuja Date: Wed, 11 Sep 2024 09:39:23 -0400 Subject: [PATCH] Added support for webclient --- .../service/StarWarsApiService.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java b/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java index 3e767a5..67285e5 100644 --- a/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java +++ b/src/main/java/org/misoenergy/hackday/kessel_run/service/StarWarsApiService.java @@ -3,8 +3,10 @@ package org.misoenergy.hackday.kessel_run.service; import lombok.extern.slf4j.Slf4j; import org.misoenergy.hackday.kessel_run.model.StarWarsPojo; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; import java.io.File; import java.util.Arrays; @@ -24,28 +26,38 @@ public class StarWarsApiService { public List getClassData () { - return getClassDataRestTemplate(); - - //return getClassDataWebClient(); + //return getClassDataRestTemplate(); + return getClassDataWebClient(); } - private List getClassDataRestTemplate() { StarWarsPojo[] response = restTemplate.getForObject(url, StarWarsPojo[].class); List starWarsPojoList = Arrays.stream(response).toList(); - log.info("size of response is: {}", starWarsPojoList.size()); + log.info("Using rest template: size of response is: {}", starWarsPojoList.size()); return starWarsPojoList; } - /*private List getClassDataWebClient () { + private List getClassDataWebClient () { - return WebClient.builder().build().get().uri(url).retrieve().bodyToMono(StarWarsPojo::class.java) + StarWarsPojo[] response = WebClient.builder() + .build() + .get() + .uri(url) + .accept(MediaType.APPLICATION_JSON) + .retrieve() + .bodyToMono(StarWarsPojo[].class) + .block(); - }*/ + List starWarsPojoList = Arrays.stream(response).toList(); + + log.info("Using webclient: size of response is: {}", starWarsPojoList.size()); + + return starWarsPojoList; + } public void generatePojoFromJSON() {