Class CustomObjectServiceImpl
- java.lang.Object
-
- com.commercetools.sync.services.impl.CustomObjectServiceImpl
-
- All Implemented Interfaces:
CustomObjectService
public class CustomObjectServiceImpl extends java.lang.Object implements CustomObjectService
Implementation of CustomObjectService interface.
-
-
Field Summary
Fields Modifier and Type Field Description protected com.github.benmanes.caffeine.cache.Cache<java.lang.String,java.lang.String>
keyToIdCache
protected static int
MAXIMUM_ALLOWED_UPDATE_ACTIONS
-
Constructor Summary
Constructors Constructor Description CustomObjectServiceImpl(CustomObjectSyncOptions syncOptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.concurrent.CompletionStage<java.util.Map<java.lang.String,java.lang.String>>
cacheKeysToIds(java.util.Set<CustomObjectCompositeIdentifier> identifiers)
Filters out the custom object identifiers which are already cached and fetches only the not-cached custom object identifiers from the CTP project defined in an injectedSphereClient
and stores a mapping for every custom object to id in the cached map of keys -> ids and returns this cached map.java.util.concurrent.CompletionStage<java.util.Optional<java.lang.String>>
fetchCachedCustomObjectId(CustomObjectCompositeIdentifier identifier)
Given anidentifier
, this method first checks ifidentifier#toString()
is contained in a cached map ofCustomObjectCompositeIdentifier.toString()
-> ids .java.util.concurrent.CompletionStage<java.util.Optional<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>>
fetchCustomObject(CustomObjectCompositeIdentifier identifier)
Given a CustomObjectCompositeIdentifier identify which includes key and container of CustomObject, this method fetches a CustomObject that matches this given identifier in the CTP project defined in an injectedSphereClient
.java.util.concurrent.CompletionStage<java.util.Set<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>>
fetchMatchingCustomObjects(java.util.Set<CustomObjectCompositeIdentifier> identifiers)
Given aSet
of CustomObjectCompositeIdentifier, this method fetches a set of all the CustomObjects, matching this given set of CustomObjectCompositeIdentifiers in the CTP project defined in an injectedSphereClient
.java.util.concurrent.CompletionStage<java.util.Optional<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>>
upsertCustomObject(io.sphere.sdk.customobjects.CustomObjectDraft<com.fasterxml.jackson.databind.JsonNode> customObjectDraft)
Given a resource draft of CustomObjectCustomObjectDraft
, this method attempts to create or update a resourceCustomObject
based on it in the CTP project defined by the sync options.
-
-
-
Field Detail
-
keyToIdCache
protected final com.github.benmanes.caffeine.cache.Cache<java.lang.String,java.lang.String> keyToIdCache
-
MAXIMUM_ALLOWED_UPDATE_ACTIONS
protected static final int MAXIMUM_ALLOWED_UPDATE_ACTIONS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CustomObjectServiceImpl
public CustomObjectServiceImpl(@Nonnull CustomObjectSyncOptions syncOptions)
-
-
Method Detail
-
cacheKeysToIds
@Nonnull public java.util.concurrent.CompletionStage<java.util.Map<java.lang.String,java.lang.String>> cacheKeysToIds(@Nonnull java.util.Set<CustomObjectCompositeIdentifier> identifiers)
Description copied from interface:CustomObjectService
Filters out the custom object identifiers which are already cached and fetches only the not-cached custom object identifiers from the CTP project defined in an injectedSphereClient
and stores a mapping for every custom object to id in the cached map of keys -> ids and returns this cached map.- Specified by:
cacheKeysToIds
in interfaceCustomObjectService
- Parameters:
identifiers
- - a set custom object identifiers to fetch and cache the ids for- Returns:
CompletionStage
<Map
> in which the result of it's completion contains a map of requested custom object identifiers -> ids
-
fetchCachedCustomObjectId
@Nonnull public java.util.concurrent.CompletionStage<java.util.Optional<java.lang.String>> fetchCachedCustomObjectId(@Nonnull CustomObjectCompositeIdentifier identifier)
Description copied from interface:CustomObjectService
Given anidentifier
, this method first checks ifidentifier#toString()
is contained in a cached map ofCustomObjectCompositeIdentifier.toString()
-> ids . If it contains, it returns aCompletionStage
<Optional
<String
>> in which String is what this identifier maps to in the cache. If the cache doesn't contain the identifier, this method attempts to fetch the id of the identifier from the CTP project, caches it and returns aCompletionStage
<Optional
<String
>> in which theOptional
could contain the id inside of it.- Specified by:
fetchCachedCustomObjectId
in interfaceCustomObjectService
- Parameters:
identifier
- the identifier object containing CustomObject key and container, by which aCustomObject
id should be fetched from the CTP project.- Returns:
CompletionStage
<Optional
<String
>> in which the result of its completion could contain anOptional
with the id inside of it or an emptyOptional
if noCustomObject
was found in the CTP project with this identifier.
-
fetchMatchingCustomObjects
@Nonnull public java.util.concurrent.CompletionStage<java.util.Set<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>> fetchMatchingCustomObjects(@Nonnull java.util.Set<CustomObjectCompositeIdentifier> identifiers)
Description copied from interface:CustomObjectService
Given aSet
of CustomObjectCompositeIdentifier, this method fetches a set of all the CustomObjects, matching this given set of CustomObjectCompositeIdentifiers in the CTP project defined in an injectedSphereClient
. A mapping of the CustomObjectCompositeIdentifier to the id of the fetched CustomObject is persisted in an in-memory map.- Specified by:
fetchMatchingCustomObjects
in interfaceCustomObjectService
- Parameters:
identifiers
- set of CustomObjectCompositeIdentifiers. Each identifier includes key and container to fetch matching CustomObject.- Returns:
CompletionStage
<Map
> in which the result of its completion contains aSet
of all matching CustomObjects.
-
fetchCustomObject
@Nonnull public java.util.concurrent.CompletionStage<java.util.Optional<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>> fetchCustomObject(@Nonnull CustomObjectCompositeIdentifier identifier)
Description copied from interface:CustomObjectService
Given a CustomObjectCompositeIdentifier identify which includes key and container of CustomObject, this method fetches a CustomObject that matches this given identifier in the CTP project defined in an injectedSphereClient
. If there is no matching CustomObject an emptyOptional
will be returned in the returned future.- Specified by:
fetchCustomObject
in interfaceCustomObjectService
- Parameters:
identifier
- the identifier of the CustomObject to fetch.- Returns:
CompletionStage
<Optional
> in which the result of its completion contains anOptional
that contains the matchingCustomObject
if exists, otherwise empty.
-
upsertCustomObject
@Nonnull public java.util.concurrent.CompletionStage<java.util.Optional<io.sphere.sdk.customobjects.CustomObject<com.fasterxml.jackson.databind.JsonNode>>> upsertCustomObject(@Nonnull io.sphere.sdk.customobjects.CustomObjectDraft<com.fasterxml.jackson.databind.JsonNode> customObjectDraft)
Description copied from interface:CustomObjectService
Given a resource draft of CustomObjectCustomObjectDraft
, this method attempts to create or update a resourceCustomObject
based on it in the CTP project defined by the sync options.A completion stage containing an empty optional 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 or updated successfully on CTP, then the created resource's id and key/container wrapped by
CustomObjectCompositeIdentifier
are cached and the method returns aCompletionStage
in which the result of its completion contains an instanceOptional
of the resource which was created or updated.If an object with the given container/key exists on CTP, the object will be replaced with the new value and the version is incremente.
- Specified by:
upsertCustomObject
in interfaceCustomObjectService
- Parameters:
customObjectDraft
- the resource draft to create or update a resource based off of.- Returns:
- a
CompletionStage
containing an optional with the created/updated resource if successful otherwise an empty optional.
-
-