Class ExternalCatalogProvider<I extends CatalogItem>

  • All Implemented Interfaces:
    CatalogProvider<I>

    public class ExternalCatalogProvider<I extends CatalogItem>
    extends AbstractExternalProvider
    implements CatalogProvider<I>
    This particular implementation of CatalogProvider is designed to interact with a provider that will provide fully hydrated catalog entities, i.e., there is no need for additional calls to get a product's variants or item choices.
    Author:
    Chad Harchar (charchar), Nathan Moore (nathandmoore)
    • Constructor Detail

      • ExternalCatalogProvider

        public ExternalCatalogProvider​(org.springframework.web.reactive.function.client.WebClient webClient,
                                       com.fasterxml.jackson.databind.ObjectMapper objectMapper,
                                       com.broadleafcommerce.common.extension.TypeFactory typeFactory,
                                       ExternalCatalogProperties properties)
    • Method Detail

      • retrieveProduct

        public I retrieveProduct​(@NonNull
                                 @NonNull String productId,
                                 @Nullable
                                 com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CatalogProvider
        Retrieve the product for the context information provided. The product should be fully hydrated with all of its relationships including pricing (although not offers).
        Specified by:
        retrieveProduct in interface CatalogProvider<I extends CatalogItem>
        Parameters:
        productId - The id of the product to be retrieved.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The product for the id and application provided.
      • retrieveProducts

        public CatalogItemList<I> retrieveProducts​(@NonNull
                                                   @NonNull Collection<String> productIds,
                                                   @Nullable
                                                   com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CatalogProvider
        Retrieve the products for the context information provided. The products should be fully hydrated with all of their relationships including pricing (although not offers).
        Specified by:
        retrieveProducts in interface CatalogProvider<I extends CatalogItem>
        Parameters:
        productIds - The ids of the products to be retrieved.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The products for the ids and application provided.
      • retrieveCatalogItem

        public I retrieveCatalogItem​(@NonNull
                                     @NonNull CatalogItemRequest catalogItemRequest,
                                     @Nullable
                                     com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CatalogProvider
        Retrieve the catalog item for the context information provided. The item should be fully hydrated with all of its relationships including pricing (although not offers).

        The default implementation uses the product ID to fetch the catalog item.

        Specified by:
        retrieveCatalogItem in interface CatalogProvider<I extends CatalogItem>
        Parameters:
        catalogItemRequest - The information required to retrieve the catalog item.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The catalog item for the request and application provided.
      • retrieveCatalogItems

        public CatalogItemList<I> retrieveCatalogItems​(@NonNull
                                                       @NonNull Collection<CatalogItemRequest> catalogItemRequests,
                                                       @Nullable
                                                       com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
        Description copied from interface: CatalogProvider
        Retrieve the catalog items for the context information provided. The items should be fully hydrated with all of their relationships including pricing (although not offers).

        The default implementation uses the product IDs to fetch the list of catalog items.

        Specified by:
        retrieveCatalogItems in interface CatalogProvider<I extends CatalogItem>
        Parameters:
        catalogItemRequests - The information required to retrieve the catalog items.
        contextInfo - Context information around sandbox and multitenant state.
        Returns:
        The catalog items for the request and application provided.
      • getServiceClient

        protected String getServiceClient()
      • getAuthenticationParams

        protected org.springframework.util.MultiValueMap<String,​String> getAuthenticationParams()
        Builds a MultiValueMap that includes params related to the currently authenticated user that should be passed along to the backing service. This is needed because the authentication in that service will belong to the Cart Operations Client rather than the authenticated user.
        Returns:
        A MultiValueMap that includes params related to the currently authenticated user that should be passed along to the backing service
      • getCatalogItemListType

        protected org.springframework.core.ParameterizedTypeReference getCatalogItemListType()
        Gets the type reference for the list of catalog items.

        By default, this returns a CatalogItemList of items extending type Product.

        Returns:
        type reference for the list of catalog items
      • getAuthenticationUtils

        protected com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils getAuthenticationUtils()
      • setAuthenticationUtils

        @Autowired
        public void setAuthenticationUtils​(com.broadleafcommerce.resource.security.utils.service.AuthenticationUtils authenticationUtils)
      • setCartItemProductMappingProvider

        @Autowired
        public void setCartItemProductMappingProvider​(CartItemProductMappingProvider cartItemProductMappingProvider)