From 2fd7b3378bc3b6ad80d731d7276569160cdb913c Mon Sep 17 00:00:00 2001 From: Trisha Anand Date: Fri, 3 Apr 2020 22:59:38 +0530 Subject: [PATCH] This change handles the new DTO received from Marketplace Service over the network. The new DTO contains list of providers and total count of providers in the given category. If no category is mentioned, Business Software is assumed to be the category being fetched. --- .../server/controllers/MarketplaceController.java | 3 ++- .../appsmith/server/dtos/ProviderPaginatedDTO.java | 14 ++++++++++++++ .../server/services/MarketplaceService.java | 4 ++-- .../server/services/MarketplaceServiceImpl.java | 10 +++++----- 4 files changed, 23 insertions(+), 8 deletions(-) create mode 100644 app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ProviderPaginatedDTO.java diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/MarketplaceController.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/MarketplaceController.java index 02621536ea..ba2dd13d62 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/MarketplaceController.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/controllers/MarketplaceController.java @@ -11,6 +11,7 @@ import com.appsmith.external.models.Statistics; import com.appsmith.server.constants.Url; import com.appsmith.server.domains.Action; import com.appsmith.server.domains.Datasource; +import com.appsmith.server.dtos.ProviderPaginatedDTO; import com.appsmith.server.dtos.ResponseDTO; import com.appsmith.server.dtos.SearchResponseDTO; import com.appsmith.server.services.MarketplaceService; @@ -127,7 +128,7 @@ public class MarketplaceController { } @GetMapping("/providers") - public Mono>> getAllProvidersFromMarketplace(@RequestParam MultiValueMap params) { + public Mono> getAllProvidersFromMarketplace(@RequestParam MultiValueMap params) { log.debug("Going to get all providers from Marketplace"); return marketplaceService.getProviders(params) .map(resources -> new ResponseDTO<>(HttpStatus.OK.value(), resources, null)); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ProviderPaginatedDTO.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ProviderPaginatedDTO.java new file mode 100644 index 0000000000..cd1310ee6f --- /dev/null +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/dtos/ProviderPaginatedDTO.java @@ -0,0 +1,14 @@ +package com.appsmith.server.dtos; + +import com.appsmith.external.models.Provider; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class ProviderPaginatedDTO { + List providers; + Long total; +} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java index e173d3fdfd..3a0c067703 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceService.java @@ -1,14 +1,14 @@ package com.appsmith.server.services; import com.appsmith.external.models.ApiTemplate; -import com.appsmith.external.models.Provider; +import com.appsmith.server.dtos.ProviderPaginatedDTO; import org.springframework.util.MultiValueMap; import reactor.core.publisher.Mono; import java.util.List; public interface MarketplaceService { - Mono> getProviders(MultiValueMap params); + Mono getProviders(MultiValueMap params); Mono> getTemplates(MultiValueMap params); Mono> getCategories(); Mono subscribeAndUpdateStatisticsOfProvider(String providerId); diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java index 283003aae0..9b9f63d80d 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/MarketplaceServiceImpl.java @@ -1,8 +1,8 @@ package com.appsmith.server.services; import com.appsmith.external.models.ApiTemplate; -import com.appsmith.external.models.Provider; import com.appsmith.server.configurations.MarketplaceConfig; +import com.appsmith.server.dtos.ProviderPaginatedDTO; import com.appsmith.server.exceptions.AppsmithError; import com.appsmith.server.exceptions.AppsmithException; import com.fasterxml.jackson.core.JsonProcessingException; @@ -58,7 +58,7 @@ public class MarketplaceServiceImpl implements MarketplaceService { } @Override - public Mono> getProviders(MultiValueMap params) { + public Mono getProviders(MultiValueMap params) { URI uri = buildFullURI(params, PROVIDER_PATH); return webClient @@ -67,13 +67,13 @@ public class MarketplaceServiceImpl implements MarketplaceService { .retrieve() .bodyToMono(String.class) .flatMap(stringBody -> { - List providerList = null; + ProviderPaginatedDTO providersPaginated = null; try { - providerList = objectMapper.readValue(stringBody, ArrayList.class); + providersPaginated = objectMapper.readValue(stringBody, ProviderPaginatedDTO.class); } catch (JsonProcessingException e) { return Mono.error(new AppsmithException(AppsmithError.JSON_PROCESSING_ERROR, e)); } - return Mono.just(providerList); + return Mono.just(providersPaginated); }) .timeout(Duration.ofMillis(timeoutInMillis)) .doOnError(error -> Mono.error(new AppsmithException(AppsmithError.MARKETPLACE_TIMEOUT)));