Class FileCrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- java.lang.Object
- 
- org.keycloak.models.map.storage.file.FileCrudOperations<V,M>
 
- 
- All Implemented Interfaces:
- HasRealmId,- CrudOperations<V,M>
 
 public abstract class FileCrudOperations<V extends AbstractEntity & UpdatableEntity,M> extends Object implements CrudOperations<V,M>, HasRealmId 
- 
- 
Field SummaryFields Modifier and Type Field Description static org.snakeyaml.engine.v2.api.DumpSettingsDUMP_SETTINGSstatic StringFILE_SUFFIXstatic StringSEARCHABLE_FIELD_REALM_ID_FIELD_NAME
 - 
Method SummaryAll Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static booleancanParseFile(Path p)protected abstract voidcheckIsSafeToModify(Path path)Hook to validate that it is safe to modify the file identified by the suppliedPath.Vcreate(V value)Creates an object in the storage.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 abstract FileTimegetLastModifiedTime(Path path)Hook to obtain the last modified time of the file identified by the suppliedPath.protected PathgetPathForEscapedId(String escapedId)protected PathgetPathForEscapedId(String[] escapedIdPathArray)static <V extends AbstractEntity & UpdatableEntity,M>
 Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<String,V,M>>getPredicates(Class<V> entityClass)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.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface org.keycloak.models.map.storage.CrudOperationsexists, exists
 
- 
 
- 
- 
- 
Field Detail- 
SEARCHABLE_FIELD_REALM_ID_FIELD_NAMEpublic static final String SEARCHABLE_FIELD_REALM_ID_FIELD_NAME 
 - 
FILE_SUFFIXpublic static final String FILE_SUFFIX - See Also:
- Constant Field Values
 
 - 
DUMP_SETTINGSpublic static final org.snakeyaml.engine.v2.api.DumpSettings DUMP_SETTINGS 
 
- 
 - 
Method Detail- 
getPredicatespublic static <V extends AbstractEntity & UpdatableEntity,M> Map<SearchableModelField<? super M>,MapModelCriteriaBuilder.UpdatePredicatesFunc<String,V,M>> getPredicates(Class<V> entityClass) 
 - 
canParseFilepublic static boolean canParseFile(Path p) 
 - 
createpublic V create(V value) Description copied from interface:CrudOperationsCreates an object in the storage.
 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 interface- CrudOperations<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()
 
 - 
determineKeyFromValuepublic String determineKeyFromValue(V value, boolean forCreate) Returns escaped ID - relative file name in the file system with path separatorID_COMPONENT_SEPARATOR.- Specified by:
- determineKeyFromValuein interface- CrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- Parameters:
- value- Object
- forCreate- Whether this is for create operation (- true) or
- Returns:
 
 - 
readpublic V read(String key) Description copied from interface:CrudOperationsReturns 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 interface- CrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- Parameters:
- key- Key of the object. Must not be- null.
- Returns:
- See description
 
 - 
createCriteriaBuilderpublic MapModelCriteriaBuilder<String,V,M> createCriteriaBuilder() 
 - 
readpublic Stream<V> read(QueryParameters<M> queryParameters) Description copied from interface:CrudOperationsReturns 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 interface- CrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- Parameters:
- queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.
- Returns:
- Stream of objects. Never returns null.
 
 - 
updatepublic V update(V value) Description copied from interface:CrudOperationsUpdates the object with the key of thevalue's ID in the storage if it already exists.- Specified by:
- updatein interface- CrudOperations<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()
 
 - 
deletepublic boolean delete(String key) Description copied from interface:CrudOperationsDeletes object with the givenkeyfrom the storage, if exists, no-op otherwise.- Specified by:
- deletein interface- CrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- Returns:
- Returns trueif the object has been deleted or result cannot be determined,falseotherwise.
 
 - 
deletepublic long delete(QueryParameters<M> queryParameters) Description copied from interface:CrudOperationsDeletes objects that match the given criteria.- Specified by:
- deletein interface- CrudOperations<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)
 
 - 
getCountpublic long getCount(QueryParameters<M> queryParameters) Description copied from interface:CrudOperationsReturns the number of objects satisfying givencriteriafrom the storage. The criteria are specified in the given criteria builder based on model properties.- Specified by:
- getCountin interface- CrudOperations<V extends AbstractEntity & UpdatableEntity,M>
- Parameters:
- queryParameters- parameters for the query like firstResult, maxResult, requested ordering, etc.
- Returns:
- Number of objects. Never returns null.
 
 - 
getRealmIdpublic String getRealmId() Description copied from interface:HasRealmIdReturns realm ID of the entity.- Specified by:
- getRealmIdin interface- HasRealmId
- Returns:
- See description
 
 - 
setRealmIdpublic void setRealmId(String realmId) Description copied from interface:HasRealmIdSets the realm ID of this object.- Specified by:
- setRealmIdin interface- HasRealmId
- Parameters:
- realmId- Realm ID.
 
 - 
touchprotected abstract void touch(Path sp) throws IOException - Throws:
- IOException
 
 - 
removeIfExistsprotected abstract boolean removeIfExists(Path sp) 
 - 
getTxIdprotected abstract String getTxId() 
 - 
getLastModifiedTimeprotected abstract FileTime getLastModifiedTime(Path path) Hook to obtain the last modified time of the file identified by the suppliedPath.
 - 
checkIsSafeToModifyprotected abstract void checkIsSafeToModify(Path path) Hook to validate that it is safe to modify the file identified by the suppliedPath. The primary goal is to identify if other transactions have modified the file after it was read by the current transaction, preventing updates to a stale entity.- Parameters:
- path- the- Pathto the file that is to be modified.
 
 
- 
 
-