Interface UserPermissionService<P extends UserPermission>

    • Method Detail

      • findById

        Optional<P> findById​(String id)
        Finds and returns the entity with the given ID.
        Parameters:
        id - the id of the entity to find
        Returns:
        an Optional containing the entity if found, Optional.empty() otherwise
      • findAllByNameContainingAndNotArchived

        org.springframework.data.domain.Page<P> findAllByNameContainingAndNotArchived​(@Nullable
                                                                                      String name,
                                                                                      org.springframework.data.domain.Pageable page)
        Finds and returns all entities that are not UserPermission.archived whose name contains the given value.
        Parameters:
        name - the name value to match with
        page - information about which page of results to return from the database
        Returns:
        all entities that are not archived whose name matches the given value
      • createPermission

        P createPermission​(P payload)
        Creates a new permission in the data store.
        Parameters:
        payload - the permission to create
        Returns:
        the final permission after creation
        Throws:
        com.broadleafcommerce.common.error.validation.ValidationException - if the given payload failed validation for creation
      • delete

        void delete​(String id)
        Hard-deletes the given record.

        In all but exceptional cases, archive(String) should be preferred to this operation.

        Parameters:
        id - the id of the entity to delete
        Throws:
        com.broadleafcommerce.data.tracking.core.exception.EntityMissingException - if the entity to delete was not found
        See Also:
        archive(String)
      • archive

        void archive​(String id)
        Soft-deletes a record by setting its UserPermission.archived to true.
        Parameters:
        id - the id of the entity to archive
        Throws:
        com.broadleafcommerce.data.tracking.core.exception.EntityMissingException - if the entity to archive was not found
        See Also:
        delete(String)
      • replacePermission

        P replacePermission​(String id,
                            P payload)
        Replaces the permission in the data store with the given id with payload.
        Parameters:
        id - the ID of the permission to replace
        payload - the replacement permission
        Returns:
        the final permission after replacement
        Throws:
        com.broadleafcommerce.common.error.validation.ValidationException - if the payload failed validation for replacement
        com.broadleafcommerce.data.tracking.core.exception.EntityMissingException - if the permission to replace was not found or was UserPermission.archived
      • createOnlyIfDoesNotExist

        @Nullable
        P createOnlyIfDoesNotExist​(P permission,
                                   Instant lastUpdated)
        A specialized create operation for creating an entity with a pre-defined id with the minimum guarantee that concurrent requests to this method for the same entity ID will fail.

        This is intended to be used in concurrent scenarios where only one operation should succeed.

        Parameters:
        permission - the permission to create. Must have a non-null id present.
        lastUpdated - the UserPermission.lastUpdated to set on the permission
        Returns:
        the permission if successfully created, or null if creation failed due to the entity already existing.
      • replaceOnlyIfLastUpdatedBefore

        @Nullable
        P replaceOnlyIfLastUpdatedBefore​(String entityId,
                                         P permission,
                                         Instant lastUpdated)
        A specialized replace operation that does not invoke the "save" create-or-update behavior. This operation should directly attempt an atomic update that the data store will reject if the entity is not found or has a lastUpdated ahead of the current change.

        This is intended to be used in concurrent scenarios where only one operation should succeed.

        Parameters:
        entityId - the id of the entity to replace
        permission - the replacement entity
        lastUpdated - the timestamp of the current change. This will be compared to the lastUpdated on the existing entity for determination of whether the replacement should occur. Furthermore, the replacement will have its UserPermission.lastUpdated set to this value.
        Returns:
        the permission after replacement if successfully replaced, or null if the entity was not found or could not be updated due to its lastUpdated value.