Class FileMapStorage.Crud<V extends AbstractEntity & UpdatableEntity,M>
- java.lang.Object
-
- org.keycloak.models.map.storage.file.FileMapStorage.Crud<V,M>
-
- All Implemented Interfaces:
HasRealmId,ConcurrentHashMapCrudOperations<V,M>
- Enclosing class:
- FileMapStorage<V extends AbstractEntity & UpdatableEntity,M>
public abstract static class FileMapStorage.Crud<V extends AbstractEntity & UpdatableEntity,M> extends Object implements ConcurrentHashMapCrudOperations<V,M>, HasRealmId
-
-
Constructor Summary
Constructors Constructor Description Crud(Class<V> entityClass, Function<String,Path> dataDirectoryFunc, Function<V,String[]> suggestedPath, boolean isExpirableEntity, Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<String,V,M>> fieldPredicates)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description Vcreate(V value)Creates an object in the store.MapModelCriteriaBuilder<String,V,M>createCriteriaBuilder()booleandelete(String key)Deletes object with the givenkeyfrom the storage, if exists, no-op otherwise.longdelete(QueryParameters<M> queryParameters)Deletes objects that match the given criteria.StringdetermineKeyFromValue(V value, boolean forCreate)Returns escaped ID - relative file name in the file system with path separatorID_COMPONENT_SEPARATOR.longgetCount(QueryParameters<M> queryParameters)Returns the number of objects satisfying givencriteriafrom the storage.protected PathgetPathForEscapedId(String escapedId)protected PathgetPathForEscapedId(String[] escapedIdPathArray)StringgetRealmId()Returns realm ID of the entity.protected abstract StringgetTxId()protected Vparse(Path fileName)Vread(String key)Returns object with the givenkeyfrom the storage ornullif object does not exist.Stream<V>read(QueryParameters<M> queryParameters)Returns stream of objects satisfying givencriteriafrom the storage.protected abstract voidregisterRenameOnCommit(Path tempSp, Path sp)protected abstract booleanremoveIfExists(Path sp)voidsetRealmId(String realmId)Sets the realm ID of this object.protected abstract voidtouch(Path sp)Vupdate(V value)Updates the object with the key of thevalue's ID in the storage if it already exists.-
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.chm.ConcurrentHashMapCrudOperations
exists, exists
-
-
-
-
Method Detail
-
create
public V create(V value)
Description copied from interface:ConcurrentHashMapCrudOperationsCreates an object in the store. ID of thevaluemay be prescribed in id of thevalue. If the id isnullor its format is not matching the store internal format for ID, then thevalue's ID will be generated and returned in the id of the return value.- Specified by:
createin interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
value- Entity to create in the store- Returns:
- Entity representing the
valuein the store. It may or may not be the same instance asvalue - See Also:
AbstractEntity.getId()
-
determineKeyFromValue
public String determineKeyFromValue(V value, boolean forCreate)
Returns escaped ID - relative file name in the file system with path separatorID_COMPONENT_SEPARATOR.- Specified by:
determineKeyFromValuein interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
value- ObjectforCreate- Whether this is for create operation (true) or- Returns:
-
read
public V read(String key)
Description copied from interface:ConcurrentHashMapCrudOperationsReturns object with the givenkeyfrom the storage ornullif object does not exist.
IfVimplementsExpirableEntitythis method should not return entities that are expired. SeeExpirableEntityJavaDoc for more details. TODO: Consider returningOptional<V>instead.- Specified by:
readin interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
key- Key of the object. Must not benull.- Returns:
- See description
-
createCriteriaBuilder
public MapModelCriteriaBuilder<String,V,M> createCriteriaBuilder()
-
read
public Stream<V> read(QueryParameters<M> queryParameters)
Description copied from interface:ConcurrentHashMapCrudOperationsReturns stream of objects satisfying givencriteriafrom the storage. The criteria are specified in the given criteria builder based on model properties. IfVimplementsExpirableEntitythis method should not return entities that are expired. SeeExpirableEntityJavaDoc for more details.- Specified by:
readin interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- Stream of objects. Never returns
null.
-
update
public V update(V value)
Description copied from interface:ConcurrentHashMapCrudOperationsUpdates the object with the key of thevalue's ID in the storage if it already exists.- Specified by:
updatein interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
value- Updated value- Returns:
- the previous value associated with the specified key, or null if there was no mapping for the key. (A null return can also indicate that the map previously associated null with the key, if the implementation supports null values.)
- See Also:
AbstractEntity.getId()
-
delete
public boolean delete(String key)
Description copied from interface:ConcurrentHashMapCrudOperationsDeletes object with the givenkeyfrom the storage, if exists, no-op otherwise.- Specified by:
deletein interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- 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:ConcurrentHashMapCrudOperationsDeletes objects that match the given criteria.- Specified by:
deletein interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- Number of removed objects (might return
-1if not supported)
-
getCount
public long getCount(QueryParameters<M> queryParameters)
Description copied from interface:ConcurrentHashMapCrudOperationsReturns the number of objects satisfying givencriteriafrom the storage. The criteria are specified in the given criteria builder based on model properties.- Specified by:
getCountin interfaceConcurrentHashMapCrudOperations<V extends AbstractEntity & UpdatableEntity,M>- Parameters:
queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.- Returns:
- Number of objects. Never returns
null.
-
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.
-
touch
protected abstract void touch(Path sp) throws IOException
- Throws:
IOException
-
removeIfExists
protected abstract boolean removeIfExists(Path sp)
-
getTxId
protected abstract String getTxId()
-
-