Class ConcurrentHashMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity,M>
- java.lang.Object
-
- org.keycloak.models.map.storage.chm.ConcurrentHashMapKeycloakTransaction<K,V,M>
-
- All Implemented Interfaces:
KeycloakTransaction,HasRealmId,MapKeycloakTransaction<V,M>
- Direct Known Subclasses:
FileMapKeycloakTransaction,HotRodUserSessionTransaction,SingleUseObjectKeycloakTransaction
public class ConcurrentHashMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity,M> extends Object implements MapKeycloakTransaction<V,M>, HasRealmId
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected classConcurrentHashMapKeycloakTransaction.MapTaskWithValue
-
Field Summary
Fields Modifier and Type Field Description protected booleanactiveprotected DeepClonerclonerprotected Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V,M>>fieldPredicatesprotected StringKeyConverter<K>keyConverterprotected ConcurrentHashMapCrudOperations<V,M>mapprotected EntityField<V>realmIdEntityFieldprotected booleanrollbackprotected Map<String,ConcurrentHashMapKeycloakTransaction.MapTaskWithValue>tasks
-
Constructor Summary
Constructors Constructor Description ConcurrentHashMapKeycloakTransaction(ConcurrentHashMapCrudOperations<V,M> map, StringKeyConverter<K> keyConverter, DeepCloner cloner, Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V,M>> fieldPredicates)ConcurrentHashMapKeycloakTransaction(ConcurrentHashMapCrudOperations<V,M> map, StringKeyConverter<K> keyConverter, DeepCloner cloner, Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V,M>> fieldPredicates, EntityField<V> realmIdEntityField)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidaddTask(String key, ConcurrentHashMapKeycloakTransaction.MapTaskWithValue task)Adds a given task if not exists for the given keyvoidbegin()voidcommit()Vcreate(V value)Instructs this transaction to add a new value into the underlying store on commit.booleandelete(String key)Instructs this transaction to delete a value associated with the identifierkeyfrom the underlying store on commit.longdelete(QueryParameters<M> queryParameters)Instructs this transaction to remove values (identified bymcbfilter) from the underlying store on commit.booleanexists(String key)Returnstrueif the object with the givenkeyexists in the underlying storage with respect to changes done in current transaction.longgetCount(QueryParameters<M> queryParameters)Returns a number of values present in the underlying storage that fulfill the given criteria with respect to changes done in the current transaction.StringgetRealmId()Returns realm ID of the entity.booleangetRollbackOnly()booleanisActive()Vread(String sKey)Provides possibility to lookup for values by akeyin the underlying store with respect to changes done in current transaction.Stream<V>read(QueryParameters<M> queryParameters)Returns the stream of records that match given criteria and includes changes made in this transaction, i.e.VregisterEntityForChanges(V origEntity)Returns a deep clone of an entity.voidrollback()voidsetRealmId(String realmId)Sets the realm ID of this object.voidsetRollbackOnly()VupdateIfChanged(V value, Predicate<V> shouldPut)-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.keycloak.models.map.storage.MapKeycloakTransaction
exists
-
-
-
-
Field Detail
-
active
protected boolean active
-
rollback
protected boolean rollback
-
tasks
protected final Map<String,ConcurrentHashMapKeycloakTransaction.MapTaskWithValue> tasks
-
map
protected final ConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M> map
-
keyConverter
protected final StringKeyConverter<K> keyConverter
-
cloner
protected final DeepCloner cloner
-
fieldPredicates
protected final Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V extends AbstractEntity & UpdatableEntity,M>> fieldPredicates
-
realmIdEntityField
protected final EntityField<V extends AbstractEntity & UpdatableEntity> realmIdEntityField
-
-
Constructor Detail
-
ConcurrentHashMapKeycloakTransaction
public ConcurrentHashMapKeycloakTransaction(ConcurrentHashMapCrudOperations<V,M> map, StringKeyConverter<K> keyConverter, DeepCloner cloner, Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V,M>> fieldPredicates)
-
ConcurrentHashMapKeycloakTransaction
public ConcurrentHashMapKeycloakTransaction(ConcurrentHashMapCrudOperations<V,M> map, StringKeyConverter<K> keyConverter, DeepCloner cloner, Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<K,V,M>> fieldPredicates, EntityField<V> realmIdEntityField)
-
-
Method Detail
-
begin
public void begin()
- Specified by:
beginin interfaceKeycloakTransaction
-
commit
public void commit()
- Specified by:
commitin interfaceKeycloakTransaction
-
rollback
public void rollback()
- Specified by:
rollbackin interfaceKeycloakTransaction
-
setRollbackOnly
public void setRollbackOnly()
- Specified by:
setRollbackOnlyin interfaceKeycloakTransaction
-
getRollbackOnly
public boolean getRollbackOnly()
- Specified by:
getRollbackOnlyin interfaceKeycloakTransaction
-
isActive
public boolean isActive()
- Specified by:
isActivein interfaceKeycloakTransaction
-
addTask
protected void addTask(String key, ConcurrentHashMapKeycloakTransaction.MapTaskWithValue task)
Adds a given task if not exists for the given key
-
registerEntityForChanges
public V registerEntityForChanges(V origEntity)
Returns a deep clone of an entity. If the clone is already in the transaction, returns this one.Usually used before giving an entity from a source back to the caller, to prevent changing it directly in the data store, but to keep transactional properties.
- Parameters:
origEntity- Original entity- Returns:
-
read
public V read(String sKey)
Description copied from interface:MapKeycloakTransactionProvides possibility to lookup for values by akeyin the underlying store with respect to changes done in current transaction. Updates to the returned instance would be visible in the current transaction and will propagate into the underlying store upon commit. IfVimplementsExpirableEntitythis method should not return entities that are expired. SeeExpirableEntityJavaDoc for more details.- Specified by:
readin interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
sKey- identifier of a value- Returns:
- a value associated with the given
key
-
read
public Stream<V> read(QueryParameters<M> queryParameters)
Returns the stream of records that match given criteria and includes changes made in this transaction, i.e. the result contains updates and excludes records that have been deleted in this transaction.- Specified by:
readin interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
queryParameters-- Returns:
-
getCount
public long getCount(QueryParameters<M> queryParameters)
Description copied from interface:MapKeycloakTransactionReturns a number of values present in the underlying storage that fulfill the given criteria with respect to changes done in the current transaction.- Specified by:
getCountin interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- number of values present in the storage that fulfill the given criteria
-
create
public V create(V value)
Description copied from interface:MapKeycloakTransactionInstructs this transaction to add a new value into the underlying store on commit.Updates to the returned instances of
Vwould be visible in the current transaction and will propagate into the underlying store upon commit. The ID of the entity passed in the parameter might change to a different value in the returned value if the underlying storage decided this was necessary. If the ID of the entity was null before, it will be set on the returned value.- Specified by:
createin interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
value- the value- Returns:
- Entity representing the
valuein the store. It may or may not be the same instance asvalue.
-
delete
public boolean delete(String key)
Description copied from interface:MapKeycloakTransactionInstructs this transaction to delete a value associated with the identifierkeyfrom the underlying store on commit.- Specified by:
deletein interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
key- identifier of a value- Returns:
- Returns
trueif the object has been deleted or result cannot be determined,falseotherwise.
-
delete
public long delete(QueryParameters<M> queryParameters)
Description copied from interface:MapKeycloakTransactionInstructs this transaction to remove values (identified bymcbfilter) from the underlying store on commit.- Specified by:
deletein interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- number of removed objects (might return
-1if not supported)
-
exists
public boolean exists(String key)
Description copied from interface:MapKeycloakTransactionReturnstrueif the object with the givenkeyexists in the underlying storage with respect to changes done in current transaction.falseotherwise.- Specified by:
existsin interfaceMapKeycloakTransaction<K,V extends AbstractEntity & UpdatableEntity>- Parameters:
key- Key of the object. Must not benull.- Returns:
- See description
-
getRealmId
public String getRealmId()
Description copied from interface:HasRealmIdReturns realm ID of the entity.- Specified by:
getRealmIdin interfaceHasRealmId- Returns:
- See description
-
setRealmId
public void setRealmId(String realmId)
Description copied from interface:HasRealmIdSets the realm ID of this object.- Specified by:
setRealmIdin interfaceHasRealmId- Parameters:
realmId- Realm ID.
-
-