Class BaseSession

    • Method Detail

      • getDirectory

        public abstract Directory 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 interface Session
        Parameters:
        readAllColumns - whether to read all columns
      • getIdField

        public String 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 interface Session
        Returns:
        the name of the id field
      • getPasswordField

        public String getPasswordField()
        Specified by:
        getPasswordField in interface Session
        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 interface Session
        Returns:
        true is the directory is authentication aware
      • isReadOnly

        public boolean isReadOnly()
        Specified by:
        isReadOnly in interface Session
      • checkPermission

        public void checkPermission​(String permission)
        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

        public void checkDeleteConstraints​(String entryId)
        Checks that there are no constraints for deleting the given entry id.
        Since:
        8.4
      • hasPermission

        public boolean hasPermission​(String permission)
        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

        protected boolean hasPermission​(String permission,
                                        String username,
                                        List<String> groups)
      • createEntryModel

        public static DocumentModel createEntryModel​(String schema)
        Returns a bare document model suitable for directory implementations.
        Parameters:
        schema - the directory schema
        Returns:
        the directory entry
        Since:
        11.1
      • createEntryModel

        public static DocumentModel createEntryModel​(String schema,
                                                     String id,
                                                     Map<String,​Object> values)
        Returns a bare document model suitable for directory implementations.
        Parameters:
        schema - the directory schema
        id - the entry id
        values - the entry values, or null
        Returns:
        the directory entry
        Since:
        11.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. See Session#isReadOnlyEntry(DocumentModel)

        Parameters:
        schema - the directory schema
        id - the entry id
        values - the entry values, or null
        readOnly - the readonly flag
        Returns:
        the directory entry
        Since:
        11.1
      • isReadOnlyEntry

        public static boolean isReadOnlyEntry​(DocumentModel entry)
        Test whether entry comes from a read-only back-end directory.
        Since:
        5.3.1
      • setReadOnlyEntry

        public static void setReadOnlyEntry​(DocumentModel entry)
        Set the read-only flag of a directory entry. To be used by EntryAdaptor implementations for instance.
        Since:
        5.3.2
      • setReadWriteEntry

        public static void setReadWriteEntry​(DocumentModel entry)
        Unset the read-only flag of a directory entry. To be used by EntryAdaptor implementations for instance.
        Since:
        5.3.2
      • computeMultiTenantDirectoryId

        public static String computeMultiTenantDirectoryId​(String tenantId,
                                                           String id)
        Compute a multi tenant directory id based on the given tenantId.
        Returns:
        the computed directory id
        Since:
        5.6
      • getEntry

        public DocumentModel getEntry​(String id)
        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?

        Specified by:
        getEntry in interface Session
        Parameters:
        id - the entry id
        Returns:
        a DocumentModel representing the entry
      • getEntry

        public DocumentModel getEntry​(String id,
                                      boolean fetchReferences)
        Description copied from interface: Session
        Retrieves a directory entry using its id.
        Specified by:
        getEntry in interface Session
        Parameters:
        id - the entry id
        fetchReferences - boolean stating if references have to be fetched
        Returns:
        a DocumentModel representing the entry
      • getEntries

        public DocumentModelList getEntries()
        Description copied from interface: Session
        Retrieves all the entries in the directory. If the remote server issues a size limit exceeded error while sending partial results up to that limit, the method DocumentModelList#totalsize on the returned list will return -2 as a special marker for truncated results.
        Specified by:
        getEntries in interface Session
        Returns:
        a collection with all the entries in the directory
      • createEntry

        public DocumentModel createEntry​(DocumentModel documentModel)
        Description copied from interface: Session
        Creates an entry in a directory.
        Specified by:
        createEntry in interface Session
        Parameters:
        documentModel - the document model representing the entry to create
        Returns:
        The new entry created in the directory
      • createEntry

        public DocumentModel createEntry​(Map<String,​Object> fieldMap)
        Description copied from interface: Session
        Creates an entry in a directory.
        Specified by:
        createEntry in interface Session
        Parameters:
        fieldMap - A map with keys and values that should be stored in a directory

        Note: The values in the map should be of type String

        Returns:
        The new entry created in the directory
      • updateEntry

        public void updateEntry​(DocumentModel docModel)
        Description copied from interface: Session
        Updates a directory entry.
        Specified by:
        updateEntry in interface Session
        Parameters:
        docModel - The entry to update
      • deleteEntry

        public void deleteEntry​(DocumentModel docModel)
        Description copied from interface: Session
        Deletes a directory entry.
        Specified by:
        deleteEntry in interface Session
        Parameters:
        docModel - The entry to delete
      • deleteEntry

        @Deprecated
        public void deleteEntry​(String id,
                                Map<String,​String> map)
        Deprecated.
        Description copied from interface: Session
        Deletes a directory entry by id and secondary ids.

        This is used for hierarchical vocabularies, where the actual unique key is the couple (parent, id).

        Specified by:
        deleteEntry in interface Session
        Parameters:
        id - the id of the entry to delete.
        map - a map of secondary key values.
      • deleteEntry

        public void deleteEntry​(String id)
        Description copied from interface: Session
        Deletes a directory entry by id.
        Specified by:
        deleteEntry in interface Session
        Parameters:
        id - the id of the entry to delete
      • canDeleteMultiTenantEntry

        protected boolean canDeleteMultiTenantEntry​(String entryId)
      • applyQueryLimits

        public DocumentModelList applyQueryLimits​(DocumentModelList results,
                                                  int limit,
                                                  int offset)
        Applies offset and limit to a DocumentModelList
        Parameters:
        results - the query results without limit and offet
        limit - maximum number of results ignored if less than 1
        offset - 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:
        Session.query(Map, Set, Map, boolean, int, int)
      • applyQueryLimits

        public <T> List<T> applyQueryLimits​(List<T> list,
                                            int limit,
                                            int offset)
        Applies offset and limit to a List.
        Parameters:
        list - the original list
        limit - maximum number of results, ignored if less than 1
        offset - 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

        public DocumentModelList query​(Map<String,​Serializable> filter)
        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 method DocumentModelList#totalsize on the returned list will return -2 as a special marker for truncated results.
        Specified by:
        query in interface Session
        Parameters:
        filter - a filter to apply to entries in directory
        Returns:
        a list of document models containing the entries matched by the query
      • query

        public DocumentModelList query​(Map<String,​Serializable> filter,
                                       Set<String> fulltext)
        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 method DocumentModelList#totalsize on the returned list will return -2 as a special marker for truncated results.
        Specified by:
        query in interface Session
        Parameters:
        filter - a filter to apply to entries in directory
        fulltext - a set of field that should be treated as a fulltext search
        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)
        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 method DocumentModelList#totalsize on the returned list will return -2 as a special marker for truncated results.
        Specified by:
        query in interface Session
        Parameters:
        filter - a filter to apply to entries in directory
        fulltext - a set of field that should be treated as a fulltext search
        orderBy - 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
      • getProjection

        public List<String> getProjection​(Map<String,​Serializable> filter,
                                          String columnName)
        Description copied from interface: Session
        Executes a query using filter and return only the column columnName.
        Specified by:
        getProjection in interface Session
        Parameters:
        filter - the filter for the query
        columnName - the column whose content should be returned
        Returns:
        the list with the values of columnName for the entries matching filter
      • isMultiTenant

        protected boolean isMultiTenant()
        Returns true if this directory supports multi tenancy, false otherwise.
      • addTenantId

        protected QueryBuilder addTenantId​(QueryBuilder queryBuilder)
        Adds the tenant id to the query if needed.
        Since:
        10.3
      • getCurrentTenantId

        protected String getCurrentTenantId()
        Returns the tenant id of the logged user if any, null otherwise.
      • createEntryWithoutReferences

        protected abstract DocumentModel createEntryWithoutReferences​(Map<String,​Object> fieldMap)
        To be implemented for specific creation.
      • updateEntryWithoutReferences

        protected abstract List<String> updateEntryWithoutReferences​(DocumentModel docModel)
        To be implemented for specific update.
      • deleteEntryWithoutReferences

        protected abstract void deleteEntryWithoutReferences​(String id)
        To be implemented for specific deletion.