Class DefaultAccountRoleService<P extends AccountRole>
- java.lang.Object
 - 
- com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P>
 - 
- com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
 - 
- com.broadleafcommerce.customer.service.DefaultAccountRoleService<P>
 
 
 
 
- 
- All Implemented Interfaces:
 AccountRoleService<P>,com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>,com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>
public class DefaultAccountRoleService<P extends AccountRole> extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P> implements AccountRoleService<P>
Default implementation of theAccountRoleService.- Author:
 - Samarth Dhruva (samarthd), Chris Kittrell (ckittrell)
 
 
- 
- 
Constructor Summary
Constructors Constructor Description DefaultAccountRoleService(AccountRoleRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, AccountPermissionHydrationService permissionHydrationService, AccountRoleContextValidator<P> accountRoleContextValidator, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator, com.broadleafcommerce.common.messaging.PersistenceProducer persistenceProducer, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper messageSerializationHelper, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper) 
- 
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected PconvertFromPersistentDomain(@NonNull Object persistedDomain, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Similar toMappableCrudEntityHelper.convertFromPersistentDomain(Object), except will invokeDomainMapperManager.fromRepositoryDomain(BusinessTypeAware, ContextInfo)with the givencontextargument instead of justnull.Pcreate(P role, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Creates the role.protected com.broadleafcommerce.data.tracking.core.TrackablecreateInternal(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Mostly copied fromMappableCrudEntityHelper.create(Object, CrudRepository), but overridden to support notifying on persistence events via#notifyPersistenceProducer(NotificationStateAware).voiddelete(@NonNull String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Deletes the given role.booleanexistsById(@NonNull String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reports whether there exists a role in the data store whoseAccountRole.getId()()} is equal to the givenid.booleanexistsByNameAndIdNot(@NonNull String name, String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reports whether there exists a role in the data store whoseAccountRole.getName()is equal to the givennameand whoseAccountRole.getId()is not equal to the givenid.protected AccountRoleContextValidator<P>getAccountRoleContextValidator()protected com.broadleafcommerce.common.messaging.notification.MessageSerializationHelpergetMessageSerializationHelper()protected com.broadleafcommerce.common.messaging.notification.NotificationManagergetNotificationManager()protected com.broadleafcommerce.common.messaging.notification.NotificationStateServicegetNotificationStateService()protected AccountPermissionHydrationServicegetPermissionHydrationService()protected com.broadleafcommerce.common.messaging.PersistenceProducergetPersistenceProducer()protected AccountRoleRepository<com.broadleafcommerce.data.tracking.core.Trackable>getRepository()protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManagergetValidator()org.springframework.data.domain.Page<P>readAllByName(@NonNull String name, org.springframework.data.domain.Pageable pageable, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Reads roles in the data store, filtering to those whose name contains the given value.Optional<P>readByIdOptional(@NonNull String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Read a single role by id.Preplace(@NonNull String id, P role, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Replaces the given role.protected com.broadleafcommerce.data.tracking.core.TrackablereplaceInternal(@NonNull String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Mostly copied fromMappableCrudEntityHelper.replace(String, Object, CrudRepository), but overridden to support notifying on persistence events via#notifyPersistenceProducer(NotificationStateAware).protected voidthrowIfErrors(@NonNull org.springframework.validation.Errors errors)protected voidvalidateNoChildrenOfRoleBeforeDeletion(@NonNull String roleToDeleteId)Given a role that is requested to be deleted, checks that it does not have any child roles in the data store.- 
Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService
getRsqlHelper, readAll, readAll, readAll, readAll 
- 
Methods inherited from class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService
convertFromPersistentDomain, convertToPersistentDomain, createAll, createAllAllowingPartialSuccess, getHelper, getSortPositionStrategy, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, setSortPositionStrategy, update, updateAll, updateAllAllowingPartialSuccess, updateSort 
- 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait 
- 
Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService
createAll, createAllAllowingPartialSuccess, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSort 
 - 
 
 - 
 
- 
- 
Constructor Detail
- 
DefaultAccountRoleService
public DefaultAccountRoleService(AccountRoleRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, AccountPermissionHydrationService permissionHydrationService, AccountRoleContextValidator<P> accountRoleContextValidator, com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager validator, com.broadleafcommerce.common.messaging.PersistenceProducer persistenceProducer, com.broadleafcommerce.common.messaging.notification.NotificationStateService notificationStateService, com.broadleafcommerce.common.messaging.notification.NotificationManager notificationManager, com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper messageSerializationHelper, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityHelper helper)
 
 - 
 
- 
Method Detail
- 
readByIdOptional
public Optional<P> readByIdOptional(@NonNull @NonNull String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:AccountRoleServiceRead a single role by id.Similar to
CrudEntityService.readByContextId(String, ContextInfo), but does not throw an exception if the entity is not found.- Specified by:
 readByIdOptionalin interfaceAccountRoleService<P extends AccountRole>- Parameters:
 id- the id of the role to find- Returns:
 - an 
Optionalcontaining the role if found, otherwiseOptional.empty() 
 
- 
readAllByName
public org.springframework.data.domain.Page<P> readAllByName(@NonNull @NonNull String name, @Nullable org.springframework.data.domain.Pageable pageable, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:AccountRoleServiceReads roles in the data store, filtering to those whose name contains the given value. Results are restricted to only the roles accessible from the given context as described in the class-level javadocs.- Specified by:
 readAllByNamein interfaceAccountRoleService<P extends AccountRole>- Parameters:
 name- the value that role names must contain in order to matchpageable- describes the page of results to returncontext- context information about multitenant state- Returns:
 - roles accessible in the current context that match the given name
 
 
- 
existsById
public boolean existsById(@NonNull @NonNull String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:AccountRoleServiceReports whether there exists a role in the data store whoseAccountRole.getId()()} is equal to the givenid. Results are restricted to only the roles accessible from the given context as described in the class-level javadocs.- Specified by:
 existsByIdin interfaceAccountRoleService<P extends AccountRole>- Parameters:
 id- the value that the role's id must not equal in order to matchcontext- context information about multitenant state- Returns:
 trueif there exists a role accessible from the given context matching the given name and not matching the given id,falseotherwise
 
- 
existsByNameAndIdNot
public boolean existsByNameAndIdNot(@NonNull @NonNull String name, @Nullable String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:AccountRoleServiceReports whether there exists a role in the data store whoseAccountRole.getName()is equal to the givennameand whoseAccountRole.getId()is not equal to the givenid. Results are restricted to only the roles accessible from the given context as described in the class-level javadocs.- Specified by:
 existsByNameAndIdNotin interfaceAccountRoleService<P extends AccountRole>- Parameters:
 name- the value that role name must equal in order to matchid- (optional) the value that the role's id must not equal in order to match. If this value isnull, then results will not be filtered by their id.context- context information about multitenant state- Returns:
 trueif there exists a role accessible from the given context matching the given name and not matching the given id,falseotherwise
 
- 
create
public P create(@NonNull P role, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:AccountRoleServiceCreates the role.Emits an
OperationAwarePersistenceMessageto thePersistenceProducer.TYPEchannel.- Specified by:
 createin interfaceAccountRoleService<P extends AccountRole>- Specified by:
 createin interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountRole>- Overrides:
 createin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountRole>- Parameters:
 role- the role to createcontext- context information about multitenant state- Returns:
 - the role after it has been created in the data store
 
 
- 
createInternal
protected com.broadleafcommerce.data.tracking.core.Trackable createInternal(@NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Mostly copied fromMappableCrudEntityHelper.create(Object, CrudRepository), but overridden to support notifying on persistence events via#notifyPersistenceProducer(NotificationStateAware).- Parameters:
 businessInstance- The business domain instance. In general, theDomainMapperManageris responsible for converting to a repository platform type for persistence.context-- Returns:
 - The new entity instance in the form of a persisted type instance.
 - Throws:
 com.broadleafcommerce.common.error.validation.ValidationException- if the given businessInstance could not be created
 
- 
replace
public P replace(@NonNull @NonNull String id, @NonNull P role, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Description copied from interface:AccountRoleServiceReplaces the given role.Emits an
OperationAwarePersistenceMessageto thePersistenceProducer.TYPEchannel.- Specified by:
 replacein interfaceAccountRoleService<P extends AccountRole>- Specified by:
 replacein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountRole>- Overrides:
 replacein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountRole>- Parameters:
 id- the id of the role to replacerole- the replacement rolecontext- context information about multitenant state- Returns:
 - the role after it has been replaced in the data store
 
 
- 
replaceInternal
protected com.broadleafcommerce.data.tracking.core.Trackable replaceInternal(@NonNull @NonNull String id, @NonNull P businessInstance, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Mostly copied fromMappableCrudEntityHelper.replace(String, Object, CrudRepository), but overridden to support notifying on persistence events via#notifyPersistenceProducer(NotificationStateAware).- Parameters:
 id- The id for the entity.businessInstance- The payload type that domain class should be converted to. In general, the payload is what the rest API responds with.context-- Returns:
 - The replaced entity instance in the form of a persisted instance, or
         
EntityMissingExceptionif not available. - Throws:
 com.broadleafcommerce.common.error.validation.ValidationException- if the given businessInstance failed validation on replacementcom.broadleafcommerce.data.tracking.core.exception.EntityMissingException- if a managed instance corresponding to the given id could not be found
 
- 
delete
public void delete(@NonNull @NonNull String id, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)Description copied from interface:AccountRoleServiceDeletes the given role.Emits an
OperationAwarePersistenceMessageto thePersistenceProducer.TYPEchannel.- Specified by:
 deletein interfaceAccountRoleService<P extends AccountRole>- Specified by:
 deletein interfacecom.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountRole>- Overrides:
 deletein classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountRole>- Parameters:
 id- the ID of the role to deletecontext- context information about multitenant state
 
- 
validateNoChildrenOfRoleBeforeDeletion
protected void validateNoChildrenOfRoleBeforeDeletion(@NonNull @NonNull String roleToDeleteId)Given a role that is requested to be deleted, checks that it does not have any child roles in the data store. This protects against descendants being suddenly orphaned.- Parameters:
 roleToDeleteId- the id of the role which should be validated to have no children in the data store- Throws:
 InvalidAccountRoleDeleteException- if the role has children in the data store
 
- 
throwIfErrors
protected void throwIfErrors(@NonNull @NonNull org.springframework.validation.Errors errors) 
- 
convertFromPersistentDomain
protected P convertFromPersistentDomain(@NonNull @NonNull Object persistedDomain, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
Similar toMappableCrudEntityHelper.convertFromPersistentDomain(Object), except will invokeDomainMapperManager.fromRepositoryDomain(BusinessTypeAware, ContextInfo)with the givencontextargument instead of justnull.Ensures
MutabilityContextStateMapperMemberwill have a context to base its mutability determination on.- Parameters:
 persistedDomain- the persisted-domain instance to convert to the business domaincontext- context information surrounding multitenant state
 
- 
getRepository
protected AccountRoleRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
- Overrides:
 getRepositoryin classcom.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountRole>
 
- 
getAccountRoleContextValidator
protected AccountRoleContextValidator<P> getAccountRoleContextValidator()
 
- 
getPermissionHydrationService
protected AccountPermissionHydrationService getPermissionHydrationService()
 
- 
getValidator
protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager getValidator()
 
- 
getPersistenceProducer
protected com.broadleafcommerce.common.messaging.PersistenceProducer getPersistenceProducer()
 
- 
getNotificationStateService
protected com.broadleafcommerce.common.messaging.notification.NotificationStateService getNotificationStateService()
 
- 
getNotificationManager
protected com.broadleafcommerce.common.messaging.notification.NotificationManager getNotificationManager()
 
- 
getMessageSerializationHelper
protected com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper getMessageSerializationHelper()
 
 - 
 
 -