Package org.nuxeo.ecm.core.storage.sql
Class SoftRefCachingMapper
- java.lang.Object
-
- org.nuxeo.ecm.core.storage.sql.SoftRefCachingRowMapper
-
- org.nuxeo.ecm.core.storage.sql.SoftRefCachingMapper
-
- All Implemented Interfaces:
CachingMapper
,Mapper
,RowMapper
public class SoftRefCachingMapper extends SoftRefCachingRowMapper implements CachingMapper
AMapper
that uses aSoftRefCachingRowMapper
for row-related operation, and delegates to theMapper
for others.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.nuxeo.ecm.core.storage.sql.Mapper
Mapper.Identification
-
Nested classes/interfaces inherited from interface org.nuxeo.ecm.core.storage.sql.RowMapper
RowMapper.CopyResult, RowMapper.IdWithTypes, RowMapper.NodeInfo, RowMapper.RowBatch, RowMapper.RowUpdate
-
-
Field Summary
Fields Modifier and Type Field Description Mapper
mapper
TheMapper
to which operations are delegated.-
Fields inherited from class org.nuxeo.ecm.core.storage.sql.SoftRefCachingRowMapper
cacheGetTimer, cacheHitCount, cacheQueue, registry, sorGetTimer, sorRows
-
Fields inherited from interface org.nuxeo.ecm.core.storage.sql.Mapper
CLOSE, GET_IDENTIFICATION
-
-
Constructor Summary
Constructors Constructor Description SoftRefCachingMapper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
cleanupDeletedRows(int max, Calendar beforeTime)
Cleans up (hard-delete) any rows that have been soft-deleted in the database.void
close()
void
createClusterNode(Serializable nodeId)
Informs the cluster that this node exists.Set<Serializable>
getAncestorsIds(Collection<Serializable> ids)
Gets the ids for all the ancestors of the given row ids.VCSInvalidations
getClusterInvalidations(Serializable nodeId)
Gets the invalidations from other cluster nodes.int
getClusterNodeIdType()
Mapper.Identification
getIdentification()
Returns the repository id and mapper id assigned.Serializable
getRootId(String repositoryId)
Gets the root id for a given repository, if registered.int
getTableSize(String tableName)
void
initialize(String repositoryName, Model model, Mapper mapper, VCSInvalidationsPropagator cachePropagator, Map<String,String> properties)
Initialize the caching mapper instancevoid
insertClusterInvalidations(Serializable nodeId, VCSInvalidations invalidations)
Inserts the invalidation rows for the other cluster nodes.void
markReferencedBlobs(BiConsumer<String,String> markerCallback)
Marks the blobs in use by passing them to the provided callback (taking the blob key and the repository name).PartialList<Serializable>
query(String query, String queryType, QueryFilter queryFilter, boolean countTotal)
Makes a NXQL query to the database.PartialList<Serializable>
query(String query, String queryType, QueryFilter queryFilter, long countUpTo)
Makes a NXQL query to the database.IterableQueryResult
queryAndFetch(String query, String queryType, QueryFilter queryFilter, boolean distinctDocuments, Object... params)
Makes a query to the database and returns an iterable (which must be closed when done).PartialList<Map<String,Serializable>>
queryProjection(String query, String queryType, QueryFilter queryFilter, boolean distinctDocuments, long countUpTo, Object... params)
Makes a query to the database.void
rebuildReadAcls()
void
removeClusterNode(Serializable nodeId)
Removes this node from the cluster.ScrollResult
scroll(String scrollId)
Get the next batch of results containing id of documents, thescrollId
is part of the previousScrollResult
response.ScrollResult
scroll(String query, int batchSize, int keepAliveSeconds)
Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within thekeepAliveSeconds
delay.ScrollResult
scroll(String query, QueryFilter queryFilter, int batchSize, int keepAliveSeconds)
Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within thekeepAliveSeconds
delay.void
setRootId(Serializable repositoryId, Serializable id)
Records the newly generated root id for a given repository.void
updateReadAcls()
-
Methods inherited from class org.nuxeo.ecm.core.storage.sql.SoftRefCachingRowMapper
cacheGet, cachePut, cachePutAbsent, cachePutAbsentIfNull, cachePutAbsentIfRowId, cacheRemove, clearCache, copy, generateNewId, getBinaryFulltext, getCacheSize, getDescendantsInfo, initialize, isAbsent, read, readCollectionRowArray, readSelectionRows, readSelectionsIds, readSimpleRow, receiveInvalidations, remove, rollback, sendInvalidations, setMetrics, sortACLRows, write
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.nuxeo.ecm.core.storage.sql.RowMapper
clearCache, copy, copy, generateNewId, getBinaryFulltext, getCacheSize, getDescendantsInfo, read, readCollectionRowArray, readSelectionRows, readSelectionsIds, readSimpleRow, receiveInvalidations, remove, rollback, sendInvalidations, write
-
-
-
-
Method Detail
-
initialize
public void initialize(String repositoryName, Model model, Mapper mapper, VCSInvalidationsPropagator cachePropagator, Map<String,String> properties)
Description copied from interface:CachingMapper
Initialize the caching mapper instance- Specified by:
initialize
in interfaceCachingMapper
-
scroll
public ScrollResult scroll(String query, int batchSize, int keepAliveSeconds)
Description copied from interface:Mapper
Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within thekeepAliveSeconds
delay.
-
scroll
public ScrollResult scroll(String query, QueryFilter queryFilter, int batchSize, int keepAliveSeconds)
Description copied from interface:Mapper
Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within thekeepAliveSeconds
delay.
-
scroll
public ScrollResult scroll(String scrollId)
Description copied from interface:Mapper
Get the next batch of results containing id of documents, thescrollId
is part of the previousScrollResult
response.
-
getIdentification
public Mapper.Identification getIdentification()
Description copied from interface:Mapper
Returns the repository id and mapper id assigned.This is used in remote stateless mode to be able to identify to which mapper an incoming connection is targeted, and from which repository instance.
- Specified by:
getIdentification
in interfaceMapper
- Returns:
- the repository and mapper identification
-
close
public void close()
- Specified by:
close
in interfaceMapper
- Overrides:
close
in classSoftRefCachingRowMapper
-
getTableSize
public int getTableSize(String tableName)
- Specified by:
getTableSize
in interfaceMapper
-
getRootId
public Serializable getRootId(String repositoryId)
Description copied from interface:Mapper
Gets the root id for a given repository, if registered.
-
setRootId
public void setRootId(Serializable repositoryId, Serializable id)
Description copied from interface:Mapper
Records the newly generated root id for a given repository.
-
query
public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter, boolean countTotal)
Description copied from interface:Mapper
Makes a NXQL query to the database.
-
query
public PartialList<Serializable> query(String query, String queryType, QueryFilter queryFilter, long countUpTo)
Description copied from interface:Mapper
Makes a NXQL query to the database.- Specified by:
query
in interfaceMapper
- Parameters:
query
- the queryqueryType
- the query typequeryFilter
- the query filtercountUpTo
- if-1
, count the total size without offset/limit.
If0
, don't count the total size.
Ifn
, count the total number if there are less than n documents otherwise set the size to-1
.- Returns:
- the list of matching document ids
-
queryAndFetch
public IterableQueryResult queryAndFetch(String query, String queryType, QueryFilter queryFilter, boolean distinctDocuments, Object... params)
Description copied from interface:Mapper
Makes a query to the database and returns an iterable (which must be closed when done).- Specified by:
queryAndFetch
in interfaceMapper
- Parameters:
query
- the queryqueryType
- the query typequeryFilter
- the query filterdistinctDocuments
- iftrue
then a maximum of one row per document will be returnedparams
- optional query-type-dependent parameters- Returns:
- an iterable, which must be closed when done
-
queryProjection
public PartialList<Map<String,Serializable>> queryProjection(String query, String queryType, QueryFilter queryFilter, boolean distinctDocuments, long countUpTo, Object... params)
Description copied from interface:Mapper
Makes a query to the database.- Specified by:
queryProjection
in interfaceMapper
- Parameters:
query
- the queryqueryType
- the query typequeryFilter
- the query filterdistinctDocuments
- iftrue
then a maximum of one row per document will be returnedcountUpTo
- if-1
, also count the total size without offset/limit.
If0
, don't count the total size.
Ifn
, count the total number if there are less than n documents otherwise set the size to-1
.params
- optional query-type-dependent parameters- Returns:
- a projection
-
getAncestorsIds
public Set<Serializable> getAncestorsIds(Collection<Serializable> ids)
Description copied from interface:Mapper
Gets the ids for all the ancestors of the given row ids.- Specified by:
getAncestorsIds
in interfaceMapper
- Parameters:
ids
- the ids- Returns:
- the set of ancestor ids
-
updateReadAcls
public void updateReadAcls()
- Specified by:
updateReadAcls
in interfaceMapper
-
rebuildReadAcls
public void rebuildReadAcls()
- Specified by:
rebuildReadAcls
in interfaceMapper
-
getClusterNodeIdType
public int getClusterNodeIdType()
- Specified by:
getClusterNodeIdType
in interfaceMapper
-
createClusterNode
public void createClusterNode(Serializable nodeId)
Description copied from interface:Mapper
Informs the cluster that this node exists.- Specified by:
createClusterNode
in interfaceMapper
-
removeClusterNode
public void removeClusterNode(Serializable nodeId)
Description copied from interface:Mapper
Removes this node from the cluster.- Specified by:
removeClusterNode
in interfaceMapper
-
insertClusterInvalidations
public void insertClusterInvalidations(Serializable nodeId, VCSInvalidations invalidations)
Description copied from interface:Mapper
Inserts the invalidation rows for the other cluster nodes.- Specified by:
insertClusterInvalidations
in interfaceMapper
-
getClusterInvalidations
public VCSInvalidations getClusterInvalidations(Serializable nodeId)
Description copied from interface:Mapper
Gets the invalidations from other cluster nodes.- Specified by:
getClusterInvalidations
in interfaceMapper
-
markReferencedBlobs
public void markReferencedBlobs(BiConsumer<String,String> markerCallback)
Description copied from interface:Mapper
Marks the blobs in use by passing them to the provided callback (taking the blob key and the repository name).- Specified by:
markReferencedBlobs
in interfaceMapper
-
cleanupDeletedRows
public int cleanupDeletedRows(int max, Calendar beforeTime)
Description copied from interface:Mapper
Cleans up (hard-delete) any rows that have been soft-deleted in the database.- Specified by:
cleanupDeletedRows
in interfaceMapper
- Parameters:
max
- the maximum number of rows to delete at a timebeforeTime
- the maximum deletion time of the rows to delete- Returns:
- the number of rows deleted
-
-