Class AutoSaveEnabledManager

  • All Implemented Interfaces:
    UserManager

    public class AutoSaveEnabledManager
    extends java.lang.Object
    implements UserManager
    Implementation of the user management that allows to set the autosave flag. Since OAK does no longer support the auto-save flag out of the box and this part of the user management is targeted for deprecation, this UserManager implementation should only be used for those cases where strict backwards compatibility is really required.

    In general any consumer of the Jackrabbit user management API should stick to the API contract and verify that the autosave flag is enabled before relying on the implementation to have it turned on:

         JackrabbitSession session = ...;
         UserManager userManager = session.getUserManager();
    
         // modify some user related content
    
         if (!userManager#isAutosave()) {
             session.save();
         }
     
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void autoSave​(boolean enable)
      Changes the auto save behavior of this UserManager.
      @NotNull Group createGroup​(@NotNull java.lang.String groupId)
      Creates a Group for the given groupID, which must not be null.
      @NotNull Group createGroup​(@NotNull java.lang.String groupID, @NotNull java.security.Principal principal, @Nullable java.lang.String intermediatePath)
      Creates a new Group that is based on the given id, principal and the specified intermediatePath hint.
      @NotNull Group createGroup​(@NotNull java.security.Principal principal)
      Creates a new Group that is based on the given principal.
      @NotNull Group createGroup​(@NotNull java.security.Principal principal, @Nullable java.lang.String intermediatePath)
      Same as UserManager.createGroup(String, Principal, String) where the name of the specified principal is used to create the group's ID.
      @NotNull User createSystemUser​(@NotNull java.lang.String userID, @Nullable java.lang.String intermediatePath)
      Create a new system user for the specified userID.
      @NotNull User createUser​(@NotNull java.lang.String userID, @Nullable java.lang.String password)
      Creates an User for the given userID / password pair; neither of the specified parameters can be null.
      Same as UserManager.createUser(String,String,Principal,String) where the specified userID is equal to the principal name and the intermediate path is null.
      @NotNull User createUser​(@NotNull java.lang.String userID, @Nullable java.lang.String password, @NotNull java.security.Principal principal, @Nullable java.lang.String intermediatePath)
      Creates an User for the given parameters.
      @NotNull java.util.Iterator<Authorizable> findAuthorizables​(@NotNull java.lang.String relPath, @Nullable java.lang.String value)
      Returns all Authorizables that have a property with the given relative path (or name) that matches the specified value.
      @NotNull java.util.Iterator<Authorizable> findAuthorizables​(@NotNull java.lang.String relPath, @Nullable java.lang.String value, int searchType)
      Returns all Authorizables that have a property with the given relative path (or name) that matches the specified value.
      @NotNull java.util.Iterator<Authorizable> findAuthorizables​(@NotNull Query query)
      Return Authorizables that match a specific Query.
      @Nullable Authorizable getAuthorizable​(@NotNull java.lang.String id)
      Get the Authorizable by its id.
      <T extends Authorizable>
      T
      getAuthorizable​(@NotNull java.lang.String id, @NotNull java.lang.Class<T> authorizableClass)
      Get the Authorizable of a specific type by its id.
      @Nullable Authorizable getAuthorizable​(@NotNull java.security.Principal principal)
      Get the Authorizable by its Principal.
      @Nullable Authorizable getAuthorizableByPath​(@NotNull java.lang.String path)
      In accordance to Authorizable.getPath() this method allows to retrieve an given authorizable by it's path.
      boolean isAutoSave()
      If any write operations executed through the User API are automatically persisted this method returns true.
      UserManager unwrap()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AutoSaveEnabledManager

        public AutoSaveEnabledManager​(UserManager dlg,
                                      Root root)
    • Method Detail

      • getAuthorizable

        @Nullable
        public <T extends Authorizable> T getAuthorizable​(@NotNull
                                                          @NotNull java.lang.String id,
                                                          @NotNull
                                                          @NotNull java.lang.Class<T> authorizableClass)
                                                   throws RepositoryException
        Description copied from interface: UserManager
        Get the Authorizable of a specific type by its id.
        Specified by:
        getAuthorizable in interface UserManager
        Type Parameters:
        T - the required Authorizable type.
        Parameters:
        id - the user or group id.
        authorizableClass - the class of the type of Authorizable required; must not be null.
        Returns:
        Authorizable or null, if not present.
        Throws:
        AuthorizableTypeException - If an authorizable exists but is not of the requested type.
        RepositoryException - If an error occurs
      • getAuthorizable

        @Nullable
        public @Nullable Authorizable getAuthorizable​(@NotNull
                                                      @NotNull java.security.Principal principal)
                                               throws RepositoryException
        Description copied from interface: UserManager
        Get the Authorizable by its Principal.
        Specified by:
        getAuthorizable in interface UserManager
        Parameters:
        principal - The principal of the authorizable to retrieve.
        Returns:
        Authorizable or null, if not present.
        Throws:
        RepositoryException - If an error occurs.
      • findAuthorizables

        @NotNull
        public @NotNull java.util.Iterator<Authorizable> findAuthorizables​(@NotNull
                                                                           @NotNull java.lang.String relPath,
                                                                           @Nullable
                                                                           @Nullable java.lang.String value)
                                                                    throws RepositoryException
        Description copied from interface: UserManager
        Returns all Authorizables that have a property with the given relative path (or name) that matches the specified value.

        If a relative path with more than one segment is specified only properties exactly matching that patch will be returned. If, however, a name is specified all properties that may be retrieved using Authorizable.getProperty(String) will be searched for a match.

        Specified by:
        findAuthorizables in interface UserManager
        Parameters:
        relPath - A relative property path or name.
        value - A string value to match.
        Returns:
        All Authorizables that have a property with the given name exactly matching the given value.
        Throws:
        RepositoryException - If an error occurs.
        See Also:
        Authorizable.getProperty(String)
      • createUser

        @NotNull
        public @NotNull User createUser​(@NotNull
                                        @NotNull java.lang.String userID,
                                        @Nullable
                                        @Nullable java.lang.String password)
                                 throws RepositoryException
        Description copied from interface: UserManager
        Creates an User for the given userID / password pair; neither of the specified parameters can be null.
        Same as UserManager.createUser(String,String,Principal,String) where the specified userID is equal to the principal name and the intermediate path is null.
        Specified by:
        createUser in interface UserManager
        Parameters:
        userID - The ID of the new user.
        password - The initial password of this user.
        Returns:
        The new User.
        Throws:
        AuthorizableExistsException - in case the given userID is already in use or another Authorizable with the same principal name exists.
        RepositoryException - If another error occurs.
      • createUser

        @NotNull
        public @NotNull User createUser​(@NotNull
                                        @NotNull java.lang.String userID,
                                        @Nullable
                                        @Nullable java.lang.String password,
                                        @NotNull
                                        @NotNull java.security.Principal principal,
                                        @Nullable
                                        @Nullable java.lang.String intermediatePath)
                                 throws RepositoryException
        Description copied from interface: UserManager
        Creates an User for the given parameters. If the implementation is not able to deal with the intermediatePath that parameter should be ignored. Except for the intermediatePath, neither of the specified parameters can be null.
        Specified by:
        createUser in interface UserManager
        Parameters:
        userID - The ID of the new user.
        password - The initial password of the new user.
        principal - The principal of the new user.
        intermediatePath - An optional intermediate path used to create the new user. If the intermediate path is null an internal, implementation specific structure will be used.
        Returns:
        The new User.
        Throws:
        AuthorizableExistsException - in case the given userID is already in use or another Authorizable with the same principal name exists.
        RepositoryException - If the current Session is not allowed to create users or some another error occurs.
      • createSystemUser

        @NotNull
        public @NotNull User createSystemUser​(@NotNull
                                              @NotNull java.lang.String userID,
                                              @Nullable
                                              @Nullable java.lang.String intermediatePath)
                                       throws RepositoryException
        Description copied from interface: UserManager
        Create a new system user for the specified userID. The new authorizable is required to have the following characteristics:
        • User.isSystemUser() returns true.
        • The system user doesn't have a password set and doesn't allow change the password.
        • The principal name is generated by the system; it may be the same as userID.
        • A given implementation may choose to keep system users in a dedicated location and thus may impose restrictions on the intermediatePath.
        Specified by:
        createSystemUser in interface UserManager
        Parameters:
        userID - A valid userID.
        intermediatePath - An optional intermediate path to create the new system user. The implemenation may decide to reject intermediate paths if they violate an implementation specific requirement with respect to the location where systems users are being held. If the intermediate path is null an internal implementation specific structure will be used.
        Returns:
        The new system user.
        Throws:
        AuthorizableExistsException - if an Authorizable with this id already exists.
        RepositoryException - If another error occurs.
      • createGroup

        @NotNull
        public @NotNull Group createGroup​(@NotNull
                                          @NotNull java.security.Principal principal)
                                   throws RepositoryException
        Description copied from interface: UserManager
        Creates a new Group that is based on the given principal. Note that the group's ID is implementation specific. The implementation may take the principal name as ID hint but must in any case assert that it is unique among the IDs known to this manager.
        Specified by:
        createGroup in interface UserManager
        Parameters:
        principal - A non-null Principal
        Returns:
        The new Group.
        Throws:
        AuthorizableExistsException - in case the given principal is already in use with another Authorizable.
        RepositoryException - If another error occurs.
      • createGroup

        @NotNull
        public @NotNull Group createGroup​(@NotNull
                                          @NotNull java.security.Principal principal,
                                          @Nullable
                                          @Nullable java.lang.String intermediatePath)
                                   throws RepositoryException
        Description copied from interface: UserManager
        Same as UserManager.createGroup(String, Principal, String) where the name of the specified principal is used to create the group's ID.
        Specified by:
        createGroup in interface UserManager
        Parameters:
        principal - The principal associated with the new group.
        intermediatePath - An optional intermediate path used to create the new group. If the intermediate path is null an internal, implementation specific structure will be used.
        Returns:
        The new Group.
        Throws:
        AuthorizableExistsException - in case the given principal is already in use with another Authorizable.
        RepositoryException - If another error occurs.
      • createGroup

        @NotNull
        public @NotNull Group createGroup​(@NotNull
                                          @NotNull java.lang.String groupID,
                                          @NotNull
                                          @NotNull java.security.Principal principal,
                                          @Nullable
                                          @Nullable java.lang.String intermediatePath)
                                   throws RepositoryException
        Description copied from interface: UserManager
        Creates a new Group that is based on the given id, principal and the specified intermediatePath hint. If the implementation is not able to deal with the intermediatePath this parameter should be ignored.
        Specified by:
        createGroup in interface UserManager
        Parameters:
        groupID - The ID of the new group.
        principal - The principal of the new group.
        intermediatePath - An optional intermediate path used to create the new group. If the intermediate path is null an internal, implementation specific structure will be used.
        Returns:
        The new Group.
        Throws:
        AuthorizableExistsException - in case the given principal is already in use with another Authorizable.
        RepositoryException - If another error occurs.
      • isAutoSave

        public boolean isAutoSave()
        Description copied from interface: UserManager
        If any write operations executed through the User API are automatically persisted this method returns true. In this case there are no pending transient changes left and there is no need to explicitly call Session.save(). If this method returns false any changes must be completed by an extra save call on the Session associated with this UserManager.
        Specified by:
        isAutoSave in interface UserManager
        Returns:
        true if changes are automatically persisted; false if changes made through this API (including method calls on Authorizable and subclasses are only transient and must be persisted using Session.save().
        See Also:
        UserManager.autoSave(boolean)
      • autoSave

        public void autoSave​(boolean enable)
        Description copied from interface: UserManager
        Changes the auto save behavior of this UserManager.

        Note, that this shouldn't be allowed in cases where the associated session is different from the original session accessing the user manager.

        Specified by:
        autoSave in interface UserManager
        Parameters:
        enable - If true changes made through this API will be automatically saved; otherwise an explicit call to Session.save() is required in order to persist changes.