Interface UserRoleService<P extends UserRole>

All Known Implementing Classes:
DefaultUserRoleService

public interface UserRoleService<P extends UserRole>
  • Method Details

    • 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
    • findByIdAndNotArchived

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

      @Deprecated org.springframework.data.domain.Page<P> findAllByNameContainingAndNotArchived(@Nullable String name, org.springframework.data.domain.Pageable page)
      Deprecated.
      Since 1.8.0. Use findAllByNameContainingAndNotArchived(String, boolean, Pageable) Passing "false" for the accountRole parameter is functionally equivalent to the behavior of this method pre-deprecation.
      Finds and returns all entities that are not UserRole.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
    • findAllByNameContainingAndNotArchived

      org.springframework.data.domain.Page<P> findAllByNameContainingAndNotArchived(@Nullable String name, boolean accountRole, org.springframework.data.domain.Pageable page)
      Finds and returns all entities that are not UserRole.archived whose name contains the given value. A null or empty value for name will return all results.
      Parameters:
      name - The name value to match with. A null or empty value will return all results.
      accountRole - Indicates if account roles should be returned.
      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
    • findAllStreamByIdInAndNotArchived

      Stream<P> findAllStreamByIdInAndNotArchived(Collection<String> ids)
      Finds and returns a stream of entities that are not UserRole.archived and whose id matches one of the given values.
      Parameters:
      ids - the ids of the entities to find
      Returns:
      a stream of the entities that were found
    • findAllByIdInAndNotArchived

      List<P> findAllByIdInAndNotArchived(Collection<String> ids)
      Finds and returns a list of entities that are not UserRole.archived and whose id matches one of the given values.
      Parameters:
      ids - the ids of the entities to find
      Returns:
      a list of the entities that were found
    • createRole

      P createRole(P payload)
      Creates a new role in the data store.
      Parameters:
      payload - the role to create
      Returns:
      the final role 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
      InvalidUserRoleDeleteException - if the role has children
      See Also:
    • archive

      void archive(String id)
      Soft-deletes a record by setting its UserRole.archived to true.

      As part of this operation, the UserRole.permissions collections should be cleared such that those relationships are deleted.

      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
      InvalidUserRoleDeleteException - if the role has children
      See Also:
    • replaceRole

      P replaceRole(String id, P payload)
      Replaces the role in the data store with the given id with payload.
      Parameters:
      id - the ID of the role to replace
      payload - the replacement role
      Returns:
      the final role 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 role to replace was not found or was UserRole.archived
    • createOnlyIfDoesNotExist

      @Nullable P createOnlyIfDoesNotExist(P role, 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 a message handler, a highly concurrent scenario where only one operation should succeed.

      Furthermore, this operation must not validate the request as createRole(UserRole) does, since we expect message handlers to receive out-of-order messages that may temporarily have invalid references.

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

      @Nullable P replaceOnlyIfLastUpdatedBefore(String entityId, P role, 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 a message handler, a highly concurrent scenario where only one operation should succeed.

      Furthermore, this operation must not validate the request as replaceRole(String, UserRole) does, since we expect message handlers to receive out-of-order messages that may temporarily have invalid references.

      Parameters:
      entityId - the id of the entity to replace
      role - 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 UserRole.lastUpdated set to this value.
      Returns:
      the role after replacement if successfully replaced, or null if the entity was not found or could not be updated due to its lastUpdated value.
      See Also:
    • findAllAccountRoles

      org.springframework.data.domain.Page<P> findAllAccountRoles(org.springframework.data.domain.Pageable page)
      Finds and returns all entities whose UserRole.accountRole flag is true and are not UserRole.archived.
      Parameters:
      page - information about which page of results to return from the database.
      Returns:
      UserRoles where accountRole is true.
    • getRepositoryDomain

      @NonNull String getRepositoryDomain()
    • findAllAccountRoles

      List<P> findAllAccountRoles()
      Finds and returns all entities whose UserRole.accountRole flag is true and are not UserRole.archived.
      Returns:
      UserRoles where accountRole is true.