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
Modifier and TypeClassDescriptionstatic class
Visitor for a query to check if it contains a reference to a given field. -
Field Summary
Modifier 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
protected String
protected static final String
-
Constructor Summary
ModifierConstructorDescriptionprotected
BaseSession
(Directory directory, Class<? extends Reference> referenceClass) -
Method Summary
Modifier and TypeMethodDescriptionprotected QueryBuilder
addTenantId
(QueryBuilder queryBuilder) Adds the tenant id to the query if needed.<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) 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) Returns a bare document model suitable for directory implementations.static 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
Returns a bare document model suitable for directory implementations.static DocumentModel
Returns a bare document model suitable for directory implementations.protected abstract DocumentModel
createEntryWithoutReferences
(Map<String, Object> fieldMap) To be implemented for specific creation.void
deleteEntry
(String id) Deletes a directory entry by id.void
deleteEntry
(DocumentModel docModel) Deletes a directory entry.protected abstract void
To be implemented for specific deletion.protected 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.Retrieves a directory entry using its id.getEntryFromSource
(String id, 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.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
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 referencesvoid
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) To be implemented for specific update.
-
Field Details
-
POWER_USERS_GROUP
- See Also:
-
READONLY_ENTRY_FLAG
- 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
-
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
-
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
Returns a bare document model suitable for directory implementations.- Parameters:
schema
- the directory schema- Returns:
- the directory entry
- Since:
- 11.1
-
createEntryModel
Returns 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
public static DocumentModel createEntryModel(String schema, String id, Map<String, Object> values, boolean readOnly) Returns 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
-
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.TODO what happens when the entry is not found? return null if not found?
-
getEntry
Description copied from interface:Session
Retrieves a directory entry using its id. -
getEntryFromSource
- Specified by:
getEntryFromSource
in interfaceEntrySource
-
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 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
-
updateEntry
Description copied from interface:Session
Updates a directory entry.- Specified by:
updateEntry
in interfaceSession
- Parameters:
docModel
- The entry to update
-
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:
id
- the id of the entry to delete
-
canDeleteMultiTenantEntry
-
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 -
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
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. -
createEntryWithoutReferences
To be implemented for specific creation. -
updateEntryWithoutReferences
To be implemented for specific update. -
deleteEntryWithoutReferences
To be implemented for specific deletion.
-