Class DefaultCatalogService

  • All Implemented Interfaces:
    CatalogService

    public class DefaultCatalogService
    extends Object
    implements CatalogService
    Default implementation to read products from the Catalog Service.
    • Constructor Detail

      • DefaultCatalogService

        public DefaultCatalogService​(org.springframework.web.reactive.function.client.WebClient webClient,
                                     String catalogEndpoint,
                                     String readProductIdsPath,
                                     String readProductsPath)
    • Method Detail

      • readBatchOfProductIds

        public List<String> readBatchOfProductIds​(@Nullable
                                                  String startId,
                                                  int batchSize)
                                           throws com.broadleafcommerce.search.api.SearchIndexException
        Description copied from interface: CatalogService
        Reads a batch of IDs to be placed in a queue for processing.
        Specified by:
        readBatchOfProductIds in interface CatalogService
        Parameters:
        startId - The starting ID
        batchSize - The size of the batch to read
        Returns:
        A list of product IDs.
        Throws:
        com.broadleafcommerce.search.api.SearchIndexException
      • buildReadBatchOfProductIdsUri

        protected String buildReadBatchOfProductIdsUri​(@Nullable
                                                       String startId,
                                                       int batchSize)
      • readBatchOfProducts

        public List<com.broadleafcommerce.search.catalog.core.domain.Product> readBatchOfProducts​(List<String> ids)
                                                                                           throws com.broadleafcommerce.search.api.SearchIndexException
        Description copied from interface: CatalogService
        Reads a batch of Products by their IDs.
        Specified by:
        readBatchOfProducts in interface CatalogService
        Parameters:
        ids - A list of product IDs.
        Returns:
        A list of products or an empty list.
        Throws:
        com.broadleafcommerce.search.api.SearchIndexException - if the service call fails for any reason.
      • readBatchOfProducts

        public List<com.broadleafcommerce.search.catalog.core.domain.Product> readBatchOfProducts​(String id)
                                                                                           throws com.broadleafcommerce.search.api.SearchIndexException
        Description copied from interface: CatalogService
        Reads a batch of Products by an id.
        Specified by:
        readBatchOfProducts in interface CatalogService
        Parameters:
        id - A product ID.
        Returns:
        A list of products or an empty list.
        Throws:
        com.broadleafcommerce.search.api.SearchIndexException - if the service call fails for any reason.
      • buildReadBatchOfProductsUri

        protected String buildReadBatchOfProductsUri​(List<String> ids)
        Builds a catalog fetch URI with a filter containing a range of IDs of products to retrieve from catalog.

        e.g. id=ge=1;id=le=10

        The List of ids passed into this method should be in ascending order.

        Parameters:
        ids - The list of ids
        Returns:
        A URI for retrieving a list of products from catalog.
      • addBatchProductIdFilter

        protected void addBatchProductIdFilter​(org.springframework.web.util.UriBuilder uriBuilder,
                                               List<String> ids)
      • getWebClient

        protected org.springframework.web.reactive.function.client.WebClient getWebClient()
      • getCatalogEndpoint

        protected String getCatalogEndpoint()
      • getReadProductIdsPath

        protected String getReadProductIdsPath()
      • getReadProductsPath

        protected String getReadProductsPath()
      • getServiceClient

        public String getServiceClient()
        The service client to use when calling catalog. Default is "indexerclient".
      • setServiceClient

        public void setServiceClient​(String serviceClient)
        The service client to use when calling catalog. Default is "indexerclient".