Class BaseSession
- All Implemented Interfaces:
AutoCloseable
,EntrySource
,Session
- Direct Known Subclasses:
CoreDirectorySession
,LDAPSession
,MemoryDirectorySession
,MongoDBSession
,MultiDirectorySession
,SQLSession
- Since:
- 5.2M4
- Author:
- Anahide Tchertchian
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
Visitor for a query to check if it contains a reference to a given field. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
protected boolean
protected final Directory
protected String
protected static final String
protected String
protected PermissionDescriptor[]
protected static final String
protected boolean
protected static final String
Deprecated, for removal: This API element is subject to removal in a future version.protected String
protected static final String
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
BaseSession
(Directory directory, Class<? extends Reference> referenceClass) -
Method Summary
Modifier and TypeMethodDescriptionprotected QueryBuilder
addTenantId
(QueryBuilder queryBuilder) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, not useful anymore since introduction ofcreateQueryBuilderWithConfiguredFiltering(QueryBuilder)
<T> List<T>
applyQueryLimits
(List<T> list, int limit, int offset) Applies offset and limit to a List.applyQueryLimits
(DocumentModelList results, int limit, int offset) Applies offset and limit to a DocumentModelListprotected boolean
canDeleteMultiTenantEntry
(String entryId) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, unusedprotected boolean
void
checkDeleteConstraints
(String entryId) Checks that there are no constraints for deleting the given entry id.void
checkPermission
(String permission) Checks the current user rights for the given permission against the read-only flag and the permission descriptor.static String
computeMultiTenantDirectoryId
(String tenantId, String id) Compute a multi tenant directory id based on the giventenantId
.createEntry
(Map<String, Object> fieldMap) Creates an entry in a directory.createEntry
(DocumentModel documentModel) Creates an entry in a directory.static DocumentModel
createEntryModel
(String schema) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel()
insteadstatic DocumentModel
Deprecated.since 11.1, sessionId is unusedstatic DocumentModel
createEntryModel
(String sessionId, String schema, String id, Map<String, Object> values, boolean readOnly) Deprecated.since 11.1, sessionId is unusedstatic DocumentModel
Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel(String, Map)
insteadstatic DocumentModel
Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel(String, Map)
insteadcreateEntryModel
(String id, Map<String, Object> values) Returns a bare document model suitable for directory implementations.protected DocumentModel
createEntryWithoutReferences
(Map<String, Object> fieldMap) Creates an entry to the directory without creating its references.protected DirectoryQueryBuilder
createQueryBuilderForIds
(String id, String... ids) Creates aDirectoryQueryBuilder
that filter in entry having givenid
orids
as directory entry id of any kind.protected DirectoryQueryBuilder
createQueryBuilderWithConfiguredFiltering
(QueryBuilder queryBuilder) Turns the givenQueryBuilder
to aDirectoryQueryBuilder
to ease some access to directories specificities, such asDirectoryQueryBuilder.fetchReferences()
.protected DirectoryQueryBuilder
createQueryBuilderWithConfiguredFiltering
(QueryBuilder queryBuilder, boolean includeNoTenant) Turns the givenQueryBuilder
to aDirectoryQueryBuilder
to ease some access to directories specificities, such asDirectoryQueryBuilder.fetchReferences()
.void
deleteEntry
(String idOrSysId) Deletes a directory entry by id.void
deleteEntry
(DocumentModel docModel) Deletes a directory entry.protected void
deleteEntryWithoutReferences
(String entryId) Deletes an entry from the directory without deleting its references.protected DocumentModel
doCreateEntryWithoutReferences
(Map<String, Object> fieldMap) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractprotected void
doDeleteEntryWithoutReferences
(String entryId) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractprotected DocumentModelList
doQuery
(DirectoryQueryBuilder queryBuilder) Deprecated.since 2021.x, the method will remain on deprecation cleanupdoQueryIds
(DirectoryQueryBuilder queryBuilder) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractdoUpdateEntryWithoutReferences
(DocumentModel docModel) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractprotected String
Returns the tenant id of the logged user if any,null
otherwise.abstract Directory
To be implemented with a more specific return type.Retrieves a directory entry using its id.getEntryFromSource
(String idOrSysId, boolean fetchReferences) The Id field is the name of the field that is used a primary key: unique and not null value in the whole directory.protected String
getPrefixedFieldName
(String fieldName) Get the prefixed version of the given fieldName.protected String
getProjection
(Map<String, Serializable> filter, String columnName) Executes a query using filter and return only the column columnName.getProjection
(Map<String, Serializable> filter, Set<String> fulltext, String columnName) boolean
Returns true if session has an entry with given id.boolean
hasPermission
(String permission) Checks the current user rights for the given permission against the read-only flag and the permission descriptor.protected boolean
hasPermission
(String permission, String username, List<String> groups) boolean
Tells whether the directory implementation can be used as an authenticating backend for the UserManager (based on login / password check).protected boolean
Returnstrue
if this directory supports multi tenancy,false
otherwise.boolean
static boolean
isReadOnlyEntry
(DocumentModel entry) Test whether entry comes from a read-only back-end directory.query
(Map<String, Serializable> filter) Executes a simple query.Executes a simple query.Executes a simple query.query
(Map<String, Serializable> filter, Set<String> fulltext, Map<String, String> orderBy, boolean fetchReferences) Executes a query with the possibility to fetch referencesquery
(QueryBuilder queryBuilder) Deprecated.since 2021.x,BaseSession
is providing a generic implementation, you should implementdoQuery(DirectoryQueryBuilder)
insteadquery
(QueryBuilder queryBuilder, boolean fetchReferences) Executes a query with the possibility to fetch a subset of the results.queryIds
(QueryBuilder queryBuilder) Deprecated.since 2021.x,BaseSession
is providing a generic implementation, you should implementdoQueryIds(DirectoryQueryBuilder)
insteadvoid
setReadAllColumns
(boolean readAllColumns) For test framework.static void
setReadOnlyEntry
(DocumentModel entry) Set the read-only flag of a directory entry.static void
setReadWriteEntry
(DocumentModel entry) Unset the read-only flag of a directory entry.toStringList
(Object value) void
updateEntry
(DocumentModel docModel) Updates a directory entry.updateEntryWithoutReferences
(DocumentModel docModel) Updates an entry to the directory without updating its references.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.directory.Session
authenticate, close, createEntryModel, getEntry, query
-
Field Details
-
POWER_USERS_GROUP
- See Also:
-
READONLY_ENTRY_FLAG
Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectoryConstants.READONLY_ENTRY_FLAG
instead- See Also:
-
MULTI_TENANT_ID_FORMAT
- See Also:
-
TENANT_ID_FIELD
- See Also:
-
directory
-
permissions
-
readAllColumns
protected boolean readAllColumns -
schemaName
-
directoryName
-
substringMatchType
-
referenceClass
-
passwordHashAlgorithm
-
autoincrementId
protected boolean autoincrementId -
computeMultiTenantId
protected boolean computeMultiTenantId
-
-
Constructor Details
-
BaseSession
-
-
Method Details
-
getDirectory
To be implemented with a more specific return type. -
setReadAllColumns
public void setReadAllColumns(boolean readAllColumns) Description copied from interface:Session
For test framework. Changes the read/query methods to return all of the entries, including the password field.- Specified by:
setReadAllColumns
in interfaceSession
- Parameters:
readAllColumns
- whether to read all columns
-
getIdField
Description copied from interface:Session
The Id field is the name of the field that is used a primary key: unique and not null value in the whole directory. This field is also used as login field if the directory is authenticating.- Specified by:
getIdField
in interfaceSession
- Returns:
- the name of the id field
-
getPrefixedIdField
-
getPasswordField
- Specified by:
getPasswordField
in interfaceSession
- Returns:
- the name of the field to store the password if the directory is authenticating (can be null)
-
isAuthenticating
public boolean isAuthenticating()Description copied from interface:Session
Tells whether the directory implementation can be used as an authenticating backend for the UserManager (based on login / password check).- Specified by:
isAuthenticating
in interfaceSession
- Returns:
- true is the directory is authentication aware
-
isReadOnly
public boolean isReadOnly()- Specified by:
isReadOnly
in interfaceSession
-
getPrefixedFieldName
Get the prefixed version of the given fieldName.- Since:
- 2025.9
-
checkPermission
Checks the current user rights for the given permission against the read-only flag and the permission descriptor.Throws
DirectorySecurityException
if the user does not have adequate privileges.- Throws:
DirectorySecurityException
- if access is denied- Since:
- 8.3
-
checkDeleteConstraints
Checks that there are no constraints for deleting the given entry id.- Since:
- 8.4
-
hasPermission
Checks the current user rights for the given permission against the read-only flag and the permission descriptor.Returns
false
if the user does not have adequate privileges.- Returns:
false
if access is denied- Since:
- 8.3
-
hasPermission
-
createEntryModel
@Deprecated public static DocumentModel createEntryModel(String sessionId, String schema, String id, Map<String, Object> values) throws PropertyExceptionDeprecated.since 11.1, sessionId is unusedReturns a bare document model suitable for directory implementations.Can be used for creation screen.
- Throws:
PropertyException
- Since:
- 5.2M4
-
createEntryModel
@Deprecated(since="2025.9", forRemoval=true) public static DocumentModel createEntryModel(String schema) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel()
insteadReturns a bare document model suitable for directory implementations.- Parameters:
schema
- the directory schema- Returns:
- the directory entry
- Since:
- 11.1
-
createEntryModel
@Deprecated(since="2025.9", forRemoval=true) public static DocumentModel createEntryModel(String schema, String id, Map<String, Object> values) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel(String, Map)
insteadReturns a bare document model suitable for directory implementations.- Parameters:
schema
- the directory schemaid
- the entry idvalues
- the entry values, ornull
- Returns:
- the directory entry
- Since:
- 11.1
-
createEntryModel
@Deprecated public static DocumentModel createEntryModel(String sessionId, String schema, String id, Map<String, Object> values, boolean readOnly) throws PropertyExceptionDeprecated.since 11.1, sessionId is unusedReturns a bare document model suitable for directory implementations.Allow setting the readonly entry flag to
Boolean.TRUE
. SeeSession#isReadOnlyEntry(DocumentModel)
- Throws:
PropertyException
- Since:
- 5.3.1
-
createEntryModel
@Deprecated(since="2025.9", forRemoval=true) public static DocumentModel createEntryModel(String schema, String id, Map<String, Object> values, boolean readOnly) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, useDirectory.createBareDocumentModel(String, Map)
insteadReturns a bare document model suitable for directory implementations.Allow setting the readonly entry flag to
Boolean.TRUE
. SeeSession#isReadOnlyEntry(DocumentModel)
- Parameters:
schema
- the directory schemaid
- the entry idvalues
- the entry values, ornull
readOnly
- the readonly flag- Returns:
- the directory entry
- Since:
- 11.1
-
createEntryModel
Description copied from interface:Session
Returns a bare document model suitable for directory implementations.- Specified by:
createEntryModel
in interfaceSession
- Parameters:
id
- the entry id, ornull
values
- the entry values, ornull
- Returns:
- the directory entry
-
isReadOnlyEntry
Test whether entry comes from a read-only back-end directory.- Since:
- 5.3.1
-
setReadOnlyEntry
Set the read-only flag of a directory entry. To be used by EntryAdaptor implementations for instance.- Since:
- 5.3.2
-
setReadWriteEntry
Unset the read-only flag of a directory entry. To be used by EntryAdaptor implementations for instance.- Since:
- 5.3.2
-
computeMultiTenantDirectoryId
Compute a multi tenant directory id based on the giventenantId
.- Returns:
- the computed directory id
- Since:
- 5.6
-
getEntry
Description copied from interface:Session
Retrieves a directory entry using its id. -
getEntryFromSource
- Specified by:
getEntryFromSource
in interfaceEntrySource
-
hasEntry
Description copied from interface:Session
Returns true if session has an entry with given id. -
createEntry
Description copied from interface:Session
Creates an entry in a directory.- Specified by:
createEntry
in interfaceSession
- Parameters:
documentModel
- the document model representing the entry to create- Returns:
- The new entry created in the directory
-
createEntry
Description copied from interface:Session
Creates an entry in a directory.- Specified by:
createEntry
in interfaceSession
- Parameters:
fieldMap
- A map with (prefixed) keys and values that should be stored in a directoryNote: The values in the map should be of type String
- Returns:
- The new entry created in the directory
-
createEntryWithoutReferences
Creates an entry to the directory without creating its references.- Since:
- 2025.9
- Implementation Note:
- it was abstract before 2025.9
-
updateEntry
Description copied from interface:Session
Updates a directory entry.- Specified by:
updateEntry
in interfaceSession
- Parameters:
docModel
- The entry to update
-
updateEntryWithoutReferences
Updates an entry to the directory without updating its references.- Since:
- 2025.9
- Implementation Note:
- it was abstract before 2025.9
-
toStringList
-
deleteEntry
Description copied from interface:Session
Deletes a directory entry.- Specified by:
deleteEntry
in interfaceSession
- Parameters:
docModel
- The entry to delete
-
deleteEntry
Description copied from interface:Session
Deletes a directory entry by id.- Specified by:
deleteEntry
in interfaceSession
- Parameters:
idOrSysId
- the id of the entry to delete
-
deleteEntryWithoutReferences
Deletes an entry from the directory without deleting its references.- Since:
- 2025.9
- Implementation Note:
- it was abstract before 2025.9
-
canDeleteMultiTenantEntry
@Deprecated(since="2025.9", forRemoval=true) protected boolean canDeleteMultiTenantEntry(String entryId) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, unused -
canDeleteMultiTenantEntry
- Since:
- 2025.9
-
applyQueryLimits
Applies offset and limit to a DocumentModelList- Parameters:
results
- the query results without limit and offetlimit
- maximum number of results ignored if less than 1offset
- number of rows skipped before starting, will be 0 if less than 0.- Returns:
- the result with applied limit and offset
- Since:
- 10.1
- See Also:
-
applyQueryLimits
Applies offset and limit to a List.- Parameters:
list
- the original listlimit
- maximum number of results, ignored if less than 1offset
- number of rows skipped before starting, will be 0 if less than 0- Returns:
- the result with applied limit and offset
- Since:
- 10.3
-
query
Description copied from interface:Session
Executes a simple query. The conditions will be 'AND'-ed. Search is done with exact match.Does not fetch reference fields.
If the remote server issues a size limit exceeded error while sending partial results up to that limit, the methodDocumentModelList#totalsize
on the returned list will return -2 as a special marker for truncated results. -
query
Description copied from interface:Session
Executes a simple query. The conditions will be 'AND'-ed.fieldNames present in the fulltext set are treated as a fulltext match. Does not fetch reference fields.
If the remote server issues a size limit exceeded error while sending partial results up to that limit, the methodDocumentModelList#totalsize
on the returned list will return -2 as a special marker for truncated results. -
query
public DocumentModelList query(Map<String, Serializable> filter, Set<String> fulltext, Map<String, String> orderBy) Description copied from interface:Session
Executes a simple query. The conditions will be 'AND'-ed and the result will be sorted by the orderBy criteria list.fieldNames present in the fulltext set are treated as a fulltext match. Does not fetch reference fields.
If the remote server issues a size limit exceeded error while sending partial results up to that limit, the methodDocumentModelList#totalsize
on the returned list will return -2 as a special marker for truncated results.- Specified by:
query
in interfaceSession
- Parameters:
filter
- a filter to apply to entries in directoryfulltext
- a set of field that should be treated as a fulltext searchorderBy
- a LinkedHashMap with the 'order by' criterias.The key of an entry of this map represents the column name and the value of the same entry represent the column order,which may be 'asc' or 'desc'.- Returns:
- a list of document models containing the entries matched by the query
-
query
public DocumentModelList query(Map<String, Serializable> filter, Set<String> fulltext, Map<String, String> orderBy, boolean fetchReferences) Description copied from interface:Session
Executes a query with the possibility to fetch references -
query
Description copied from interface:Session
Executes a query with the possibility to fetch a subset of the results. -
query
Deprecated.since 2021.x,BaseSession
is providing a generic implementation, you should implementdoQuery(DirectoryQueryBuilder)
insteadDescription copied from interface:Session
Executes a query with the possibility to fetch a subset of the results.You can use this API with
DirectoryQueryBuilder
to fetch references.- Specified by:
query
in interfaceSession
- Parameters:
queryBuilder
- the query to use, including limit, offset, ordering and countTotal- Returns:
- the list of documents, where the total size may be present if countTotal was true
- Since:
- 2025.9
- See Also:
- Implementation Note:
- on deprecation removal, remove the annotations and deprecated javadoc
-
queryIds
Deprecated.since 2021.x,BaseSession
is providing a generic implementation, you should implementdoQueryIds(DirectoryQueryBuilder)
insteadDescription copied from interface:Session
Executes a query with the possibility to fetch a subset of the results. Returns the matching ids. -
createQueryBuilderForIds
protected DirectoryQueryBuilder createQueryBuilderForIds(@Nullable String id, @Nullable String... ids) Creates aDirectoryQueryBuilder
that filter in entry having givenid
orids
as directory entry id of any kind.- Since:
- 2025.9
-
createQueryBuilderWithConfiguredFiltering
protected DirectoryQueryBuilder createQueryBuilderWithConfiguredFiltering(QueryBuilder queryBuilder) Turns the givenQueryBuilder
to aDirectoryQueryBuilder
to ease some access to directories specificities, such asDirectoryQueryBuilder.fetchReferences()
.Also, adds additional filters based on directory setup, such as
tenantId
.- Since:
- 2025.9
-
createQueryBuilderWithConfiguredFiltering
protected DirectoryQueryBuilder createQueryBuilderWithConfiguredFiltering(QueryBuilder queryBuilder, boolean includeNoTenant) Turns the givenQueryBuilder
to aDirectoryQueryBuilder
to ease some access to directories specificities, such asDirectoryQueryBuilder.fetchReferences()
.Also, adds additional filters based on directory setup, such as
tenantId
.- Parameters:
includeNoTenant
- whether the entry without tenant should be included in response- Since:
- 2025.9
-
getProjection
Description copied from interface:Session
Executes a query using filter and return only the column columnName.- Specified by:
getProjection
in interfaceSession
- Parameters:
filter
- the filter for the querycolumnName
- the column whose content should be returned- Returns:
- the list with the values of columnName for the entries matching filter
-
getProjection
public List<String> getProjection(Map<String, Serializable> filter, Set<String> fulltext, String columnName) - Specified by:
getProjection
in interfaceSession
-
isMultiTenant
protected boolean isMultiTenant()Returnstrue
if this directory supports multi tenancy,false
otherwise. -
addTenantId
@Deprecated(since="2025.9", forRemoval=true) protected QueryBuilder addTenantId(QueryBuilder queryBuilder) Deprecated, for removal: This API element is subject to removal in a future version.since 2025.9, not useful anymore since introduction ofcreateQueryBuilderWithConfiguredFiltering(QueryBuilder)
Adds the tenant id to the query if needed.- Since:
- 10.3
-
getCurrentTenantId
Returns the tenant id of the logged user if any,null
otherwise. -
doCreateEntryWithoutReferences
@Deprecated(since="2021.x") protected DocumentModel doCreateEntryWithoutReferences(Map<String, Object> fieldMap) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractTo be implemented for specific creation. -
doUpdateEntryWithoutReferences
@Deprecated(since="2021.x") protected List<String> doUpdateEntryWithoutReferences(DocumentModel docModel) Deprecated.since 2021.x, the method remains for use, but it will be turned abstractTo be implemented for specific update. -
doDeleteEntryWithoutReferences
Deprecated.since 2021.x, the method remains for use, but it will be turned abstractTo be implemented for specific deletion. -
doQuery
Deprecated.since 2021.x, the method will remain on deprecation cleanupTo be implemented for specific querying.- See Also:
- Implementation Note:
- on deprecation removal, turn this method abstract, remove the annotations and the deprecated javadoc
-
doQueryIds
Deprecated.since 2021.x, the method remains for use, but it will be turned abstractTo be implemented for specific querying.- See Also:
- Implementation Note:
- on deprecation removal, turn this method abstract, remove the annotations and the deprecated javadoc
-
DirectoryConstants.READONLY_ENTRY_FLAG
instead