Package com.commercetools.sync.services
Interface CustomerService
-
- All Known Implementing Classes:
CustomerServiceImpl
public interface CustomerService
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description java.util.concurrent.CompletionStage<java.util.Map<java.lang.String,java.lang.String>>
cacheKeysToIds(java.util.Set<java.lang.String> keysToCache)
Given a set of keys this method caches in-memory a mapping of key -> id only for those keys which are not already cached.java.util.concurrent.CompletionStage<java.util.Optional<com.commercetools.api.models.customer.Customer>>
createCustomer(com.commercetools.api.models.customer.CustomerDraft customerDraft)
Given a resource draft of typeCustomerDraft
, this method attempts to create a resourceCustomer
based on the draft, in the CTP project defined by the sync options.java.util.concurrent.CompletionStage<java.util.Optional<java.lang.String>>
fetchCachedCustomerId(java.lang.String key)
Given akey
, if it is blank (null/empty), a completed future with an empty optional is returned.java.util.concurrent.CompletionStage<java.util.Optional<com.commercetools.api.models.customer.Customer>>
fetchCustomerByKey(java.lang.String key)
Given a customer key, this method fetches a customer that matches this given key in the CTP project defined in a potentially injectedProjectApiRoot
.java.util.concurrent.CompletionStage<java.util.Set<com.commercetools.api.models.customer.Customer>>
fetchMatchingCustomersByKeys(java.util.Set<java.lang.String> customerKeys)
Given aSet
of customer keys, this method fetches a set of all the customers, matching the given set of keys in the CTP project, defined in an injectedProjectApiRoot
.java.util.concurrent.CompletionStage<com.commercetools.api.models.customer.Customer>
updateCustomer(com.commercetools.api.models.customer.Customer customer, java.util.List<com.commercetools.api.models.customer.CustomerUpdateAction> updateActions)
Given aCustomer
and aList
<CustomerUpdateAction
<Customer
>>, this method issues an update request with these update actions on thisCustomer
in the CTP project defined in a potentially injectedProjectApiRoot
.
-
-
-
Method Detail
-
cacheKeysToIds
@Nonnull java.util.concurrent.CompletionStage<java.util.Map<java.lang.String,java.lang.String>> cacheKeysToIds(@Nonnull java.util.Set<java.lang.String> keysToCache)
Given a set of keys this method caches in-memory a mapping of key -> id only for those keys which are not already cached.- Parameters:
keysToCache
- a set of keys to cache.- Returns:
- a map of key to ids of the requested keys.
-
fetchMatchingCustomersByKeys
@Nonnull java.util.concurrent.CompletionStage<java.util.Set<com.commercetools.api.models.customer.Customer>> fetchMatchingCustomersByKeys(@Nonnull java.util.Set<java.lang.String> customerKeys)
Given aSet
of customer keys, this method fetches a set of all the customers, matching the given set of keys in the CTP project, defined in an injectedProjectApiRoot
. A mapping of the key to the id of the fetched customers is persisted in an in-memory map.- Parameters:
customerKeys
- set of customer keys to fetch matching resources by.- Returns:
CompletionStage
<Set
<Customer
>> in which the result of it's completion contains aSet
of all matching customers.
-
fetchCustomerByKey
@Nonnull java.util.concurrent.CompletionStage<java.util.Optional<com.commercetools.api.models.customer.Customer>> fetchCustomerByKey(@Nullable java.lang.String key)
Given a customer key, this method fetches a customer that matches this given key in the CTP project defined in a potentially injectedProjectApiRoot
. If there is no matching resource an emptyOptional
will be returned in the returned future. A mapping of the key to the id of the fetched customer is persisted in an in -memory map.- Parameters:
key
- the key of the resource to fetch- Returns:
CompletionStage
<Optional
> in which the result of it's completion contains anOptional
that contains the matchingCustomer
if exists, otherwise empty.
-
fetchCachedCustomerId
@Nonnull java.util.concurrent.CompletionStage<java.util.Optional<java.lang.String>> fetchCachedCustomerId(@Nonnull java.lang.String key)
Given akey
, if it is blank (null/empty), a completed future with an empty optional is returned. Otherwise this method checks if the cached map of resource keys -> ids contains the given key. If it does, an optional containing the matching id is returned. If the cache doesn't contain the key; this method attempts to fetch the id of the key from the CTP project, caches it and returns aCompletionStage
<Optional
<String
>> in which the result of it's completion could contain anOptional
holding the id or an emptyOptional
if no customer was found in the CTP project with this key.- Parameters:
key
- the key by which a customer id should be fetched from the CTP project.- Returns:
CompletionStage
<Optional
<String
>> in which the result of it's completion could contain anOptional
holding the id or an emptyOptional
if no customer was found in the CTP project with this key.
-
createCustomer
@Nonnull java.util.concurrent.CompletionStage<java.util.Optional<com.commercetools.api.models.customer.Customer>> createCustomer(@Nonnull com.commercetools.api.models.customer.CustomerDraft customerDraft)
Given a resource draft of typeCustomerDraft
, this method attempts to create a resourceCustomer
based on the draft, in the CTP project defined by the sync options.A completion stage containing an empty option and the error callback will be triggered in those cases:
- the draft has a blank key
- the create request fails on CTP
On the other hand, if the resource gets created successfully on CTP, the created resource's id and key are cached and the method returns a
CompletionStage
in which the result of it's completion contains an instanceOptional
of the resource which was created.- Parameters:
customerDraft
- the resource draft to create a resource based off of.- Returns:
- a
CompletionStage
containing an optional with the created resource if successful otherwise an empty optional.
-
updateCustomer
@Nonnull java.util.concurrent.CompletionStage<com.commercetools.api.models.customer.Customer> updateCustomer(@Nonnull com.commercetools.api.models.customer.Customer customer, @Nonnull java.util.List<com.commercetools.api.models.customer.CustomerUpdateAction> updateActions)
Given aCustomer
and aList
<CustomerUpdateAction
<Customer
>>, this method issues an update request with these update actions on thisCustomer
in the CTP project defined in a potentially injectedProjectApiRoot
. This method returnsCompletionStage
<Customer
> in which the result of it's completion contains an instance of theCustomer
which was updated in the CTP project.- Parameters:
customer
- theCustomer
to update.updateActions
- the update actions to update theCustomer
with.- Returns:
CompletionStage
<Customer
> containing as a result of it's completion an instance of theCustomer
which was updated in the CTP project or aCompletionException
.
-
-