Class ShoppingListReferenceResolver

    • Constructor Detail

      • ShoppingListReferenceResolver

        public ShoppingListReferenceResolver​(@Nonnull
                                             ShoppingListSyncOptions shoppingListSyncOptions,
                                             @Nonnull
                                             CustomerService customerService,
                                             @Nonnull
                                             TypeService typeService)
        Takes a ShoppingListSyncOptions instance, a CustomerService and TypeService to instantiate a ShoppingListReferenceResolver instance that could be used to resolve the shopping list drafts in the CTP project specified in the injected ShoppingListSyncOptions instance.
        Parameters:
        shoppingListSyncOptions - the container of all the options of the sync process including the CTP project client and/or configuration and other sync-specific options.
        customerService - the service to fetch the customers for reference resolution.
        typeService - the service to fetch the types for reference resolution.
    • Method Detail

      • resolveReferences

        @Nonnull
        public java.util.concurrent.CompletionStage<io.sphere.sdk.shoppinglists.ShoppingListDraft> resolveReferences​(@Nonnull
                                                                                                                     io.sphere.sdk.shoppinglists.ShoppingListDraft shoppingListDraft)
        Given a ShoppingListDraft this method attempts to resolve the customer and custom type references to return a CompletionStage which contains a new instance of the draft with the resolved references.
        Specified by:
        resolveReferences in class BaseReferenceResolver<io.sphere.sdk.shoppinglists.ShoppingListDraft,​ShoppingListSyncOptions>
        Parameters:
        shoppingListDraft - the shoppingListDraft to resolve its references.
        Returns:
        a CompletionStage that contains as a result a new shoppingListDraft instance with resolved references or, in case an error occurs during reference resolution, a ReferenceResolutionException.
      • resolveCustomerReference

        @Nonnull
        protected java.util.concurrent.CompletionStage<io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder> resolveCustomerReference​(@Nonnull
                                                                                                                                      io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder draftBuilder)
      • resolveCustomTypeReference

        @Nonnull
        protected java.util.concurrent.CompletionStage<io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder> resolveCustomTypeReference​(@Nonnull
                                                                                                                                        io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder draftBuilder)
        Description copied from class: CustomReferenceResolver
        Given a draft of D (e.g. CategoryDraft) this method attempts to resolve it's custom type reference to return CompletionStage which contains a new instance of the draft with the resolved custom type reference.

        The method then tries to fetch the key of the custom type, optimistically from a cache. If the key is is not found, the resultant draft would remain exactly the same as the passed draft (without a custom type reference resolution).

        Specified by:
        resolveCustomTypeReference in class CustomReferenceResolver<io.sphere.sdk.shoppinglists.ShoppingListDraft,​io.sphere.sdk.shoppinglists.ShoppingListDraftBuilder,​ShoppingListSyncOptions>
        Parameters:
        draftBuilder - the draft builder to resolve it's references.
        Returns:
        a CompletionStage that contains as a result a new draft instance with resolved custom type references or, in case an error occurs during reference resolution, a ReferenceResolutionException.
      • populateKeyToIdCachesForReferencedKeys

        @Nonnull
        public java.util.concurrent.CompletableFuture<java.util.List<java.util.Map<java.lang.String,​java.lang.String>>> populateKeyToIdCachesForReferencedKeys​(@Nonnull
                                                                                                                                                                     ShoppingListBatchValidator.ReferencedKeys referencedKeys)
        Calls the cacheKeysToIds service methods to fetch all the referenced keys (i.e custom type, customer) from the CTP to populate caches for the reference resolution.

        Note: This method is only to be used internally by the library to improve performance.

        Parameters:
        referencedKeys - a wrapper for the custom type and customer references to fetch the keys, and store the corresponding keys -> ids into cached maps.
        Returns:
        CompletionStage<Map<String>String>> in which the results of its completions contains a map of requested references keys -> ids of customer references.