K
- Type of the primary key. Various storages canV
- Type of the stored values that contains all the data stripped of session state. In other words, in the entities
there are only IDs and mostly primitive types / String
, never references to *Model
instances.
See the Abstract*Entity
classes in this module.M
- Type of the *Model
corresponding to the stored value, e.g. UserModel
. This is used for
filtering via model fields in ModelCriteriaBuilder
which is necessary to abstract from physical
layout and thus to support no-downtime upgrade.public interface MapStorage<K,V extends AbstractEntity<K>,M>
read(org.keycloak.models.map.storage.ModelCriteriaBuilder)
and bulk delete(org.keycloak.models.map.storage.ModelCriteriaBuilder)
operations,
and operation for determining the number of the objects satisfying given criteria
(getCount(org.keycloak.models.map.storage.ModelCriteriaBuilder)
).Modifier and Type | Method and Description |
---|---|
V |
create(K key,
V value)
Creates an object in the store identified by given
key . |
ModelCriteriaBuilder<M> |
createCriteriaBuilder()
Returns criteria builder for the storage engine.
|
MapKeycloakTransaction<K,V,M> |
createTransaction(KeycloakSession session)
Creates a
MapKeycloakTransaction object that tracks a new transaction related to this storage. |
boolean |
delete(K key)
Deletes object with the given
key from the storage, if exists, no-op otherwise. |
long |
delete(ModelCriteriaBuilder<M> criteria)
Deletes objects that match the given criteria.
|
long |
getCount(ModelCriteriaBuilder<M> criteria)
Returns the number of objects satisfying given
criteria from the storage. |
StringKeyConvertor<K> |
getKeyConvertor()
Returns a
StringKeyConvertor that is used to convert primary keys
from String to internal representation and vice versa. |
V |
read(K key)
Returns object with the given
key from the storage or null if object does not exist. |
Stream<V> |
read(ModelCriteriaBuilder<M> criteria)
Returns stream of objects satisfying given
criteria from the storage. |
V |
update(K key,
V value)
Updates the object with the given
id in the storage if it already exists. |
V create(K key, V value)
key
.key
- Key of the object as seen in the logical levelvalue
- EntityNullPointerException
- if object or its key
is null
V read(K key)
key
from the storage or null
if object does not exist.
Optional<V>
instead.key
- Key of the object. Must not be null
.NullPointerException
- if the key
is null
Stream<V> read(ModelCriteriaBuilder<M> criteria)
criteria
from the storage.
The criteria are specified in the given criteria builder based on model properties.criteria
- Criteria filtering out the object, originally obtained
from createCriteriaBuilder()
method of this object.
If null
, it returns an empty stream.null
.IllegalStateException
- If criteria
is not compatible, i.e. has not been originally created
by the createCriteriaBuilder()
method of this object.long getCount(ModelCriteriaBuilder<M> criteria)
criteria
from the storage.
The criteria are specified in the given criteria builder based on model properties.criteria
- null
.IllegalStateException
- If criteria
is not compatible, i.e. has not been originally created
by the createCriteriaBuilder()
method of this object.V update(K key, V value)
id
in the storage if it already exists.key
- Primary key of the object to updatevalue
- Updated valueNullPointerException
- if object or its id
is null
boolean delete(K key)
key
from the storage, if exists, no-op otherwise.key
- true
if the object has been deleted or result cannot be determined, false
otherwise.long delete(ModelCriteriaBuilder<M> criteria)
criteria
- -1
if not supported)IllegalStateException
- If criteria
is not compatible, i.e. has not been originally created
by the createCriteriaBuilder()
method of this object.ModelCriteriaBuilder<M> createCriteriaBuilder()
null
MapKeycloakTransaction<K,V,M> createTransaction(KeycloakSession session)
MapKeycloakTransaction
object that tracks a new transaction related to this storage.
In case of JPA or similar, the transaction object might be supplied by the container (via JTA) or
shared same across storages accessing the same database within the same session; in other cases
(e.g. plain map) a separate transaction handler might be created per each storage.null
StringKeyConvertor<K> getKeyConvertor()
StringKeyConvertor
that is used to convert primary keys
from String
to internal representation and vice versa.null
.Copyright © 2021 JBoss by Red Hat. All rights reserved.