Class DefaultUserPermissionService<P extends UserPermission,D extends com.broadleafcommerce.data.tracking.core.mapping.BusinessTypeAware & com.broadleafcommerce.data.tracking.core.mapping.ModelMapperMappable>
- java.lang.Object
-
- com.broadleafcommerce.auth.security.service.DefaultUserPermissionService<P,D>
-
- All Implemented Interfaces:
UserPermissionService<P>
public class DefaultUserPermissionService<P extends UserPermission,D extends com.broadleafcommerce.data.tracking.core.mapping.BusinessTypeAware & com.broadleafcommerce.data.tracking.core.mapping.ModelMapperMappable> extends Object implements UserPermissionService<P>
-
-
Constructor Summary
Constructors Constructor Description DefaultUserPermissionService(UserPermissionRepository<D> repository, SimplePayloadMapper mapper, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidapplyChangesForArchive(P permission)Modifies the given instance for archival.voidarchive(@NonNull String id)Soft-deletes a record by setting itsUserPermission.archivedtotrue.PcreateOnlyIfDoesNotExist(P permission, @NonNull 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.PcreatePermission(P payload)Creates a new permission in the data store.voiddelete(@NonNull String id)Hard-deletes the given record.org.springframework.data.domain.Page<P>findAllByNameContainingAndNotArchived(String name, org.springframework.data.domain.Pageable page)Finds and returns all entities that are notUserPermission.archivedwhose name contains the given value.Optional<P>findById(String id)Finds and returns the entity with the given ID.Optional<P>findByIdAndNotArchived(String id)Finds and returns the entity with the given ID if notUserPermission.archived.Set<UserPermission>findByIdsAndNotArchived(Collection<String> ids)protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManagergetValidator()PreplaceOnlyIfLastUpdatedBefore(@NonNull String entityId, P permission, @NonNull Instant lastUpdated)A specialized replace operation that does not invoke the "save" create-or-update behavior.PreplacePermission(String id, P payload)Replaces the permission in the data store with the givenidwithpayload.
-
-
-
Constructor Detail
-
DefaultUserPermissionService
public DefaultUserPermissionService(UserPermissionRepository<D> repository, SimplePayloadMapper mapper, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator)
-
-
Method Detail
-
findById
public Optional<P> findById(String id)
Description copied from interface:UserPermissionServiceFinds and returns the entity with the given ID.- Specified by:
findByIdin interfaceUserPermissionService<P extends UserPermission>- Parameters:
id- the id of the entity to find- Returns:
- an
Optionalcontaining the entity if found,Optional.empty()otherwise
-
findByIdAndNotArchived
public Optional<P> findByIdAndNotArchived(String id)
Description copied from interface:UserPermissionServiceFinds and returns the entity with the given ID if notUserPermission.archived.- Specified by:
findByIdAndNotArchivedin interfaceUserPermissionService<P extends UserPermission>- Parameters:
id- the id of the entity to find- Returns:
- an
Optionalcontaining the entity if found,Optional.empty()otherwise
-
findAllByNameContainingAndNotArchived
public org.springframework.data.domain.Page<P> findAllByNameContainingAndNotArchived(@Nullable String name, org.springframework.data.domain.Pageable page)
Description copied from interface:UserPermissionServiceFinds and returns all entities that are notUserPermission.archivedwhose name contains the given value.- Specified by:
findAllByNameContainingAndNotArchivedin interfaceUserPermissionService<P extends UserPermission>- Parameters:
name- the name value to match withpage- 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
public P createPermission(P payload)
Description copied from interface:UserPermissionServiceCreates a new permission in the data store.- Specified by:
createPermissionin interfaceUserPermissionService<P extends UserPermission>- Parameters:
payload- the permission to create- Returns:
- the final permission after creation
-
replacePermission
public P replacePermission(String id, P payload)
Description copied from interface:UserPermissionServiceReplaces the permission in the data store with the givenidwithpayload.- Specified by:
replacePermissionin interfaceUserPermissionService<P extends UserPermission>- Parameters:
id- the ID of the permission to replacepayload- the replacement permission- Returns:
- the final permission after replacement
-
delete
public void delete(@NonNull @NonNull String id)Description copied from interface:UserPermissionServiceHard-deletes the given record.In all but exceptional cases,
UserPermissionService.archive(String)should be preferred to this operation.- Specified by:
deletein interfaceUserPermissionService<P extends UserPermission>- Parameters:
id- the id of the entity to delete- See Also:
UserPermissionService.archive(String)
-
archive
public void archive(@NonNull @NonNull String id)Description copied from interface:UserPermissionServiceSoft-deletes a record by setting itsUserPermission.archivedtotrue.- Specified by:
archivein interfaceUserPermissionService<P extends UserPermission>- Parameters:
id- the id of the entity to archive- See Also:
UserPermissionService.delete(String)
-
applyChangesForArchive
protected void applyChangesForArchive(P permission)
Modifies the given instance for archival.- Parameters:
permission- the instance to modify
-
createOnlyIfDoesNotExist
@Nullable public P createOnlyIfDoesNotExist(@NonNull P permission, @NonNull @NonNull Instant lastUpdated)
Description copied from interface:UserPermissionServiceA 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.
- Specified by:
createOnlyIfDoesNotExistin interfaceUserPermissionService<P extends UserPermission>- Parameters:
permission- the permission to create. Must have a non-null id present.lastUpdated- theUserPermission.lastUpdatedto set on the permission- Returns:
- the permission if successfully created, or
nullif creation failed due to the entity already existing.
-
replaceOnlyIfLastUpdatedBefore
@Nullable public P replaceOnlyIfLastUpdatedBefore(@NonNull @NonNull String entityId, @NonNull P permission, @NonNull @NonNull Instant lastUpdated)
Description copied from interface:UserPermissionServiceA 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.
- Specified by:
replaceOnlyIfLastUpdatedBeforein interfaceUserPermissionService<P extends UserPermission>- Parameters:
entityId- the id of the entity to replacepermission- the replacement entitylastUpdated- 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 itsUserPermission.lastUpdatedset to this value.- Returns:
- the permission after replacement if successfully replaced, or
nullif the entity was not found or could not be updated due to its lastUpdated value.
-
findByIdsAndNotArchived
public Set<UserPermission> findByIdsAndNotArchived(Collection<String> ids)
- Specified by:
findByIdsAndNotArchivedin interfaceUserPermissionService<P extends UserPermission>
-
getValidator
@NonNull protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager getValidator()
-
-