Class DefaultAccountPermissionService<P extends AccountPermission>

  • All Implemented Interfaces:
    AccountPermissionService<P>, com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P>, com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService<P>

    public class DefaultAccountPermissionService<P extends AccountPermission>
    extends com.broadleafcommerce.data.tracking.core.service.BaseRsqlCrudEntityService<P>
    implements AccountPermissionService<P>
    Author:
    Samarth Dhruva (samarthd), Chris Kittrell (ckittrell)
    • Constructor Summary

      Constructors 
      Constructor Description
      DefaultAccountPermissionService​(AccountPermissionRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository, AccountPermissionContextValidator<P> accountPermissionContextValidator, 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 P convertFromPersistentDomain​(@NonNull Object persistedDomain, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Similar to MappableCrudEntityHelper.convertFromPersistentDomain(Object), except will invoke DomainMapperManager.fromRepositoryDomain(BusinessTypeAware, ContextInfo) with the given context argument instead of just null.
      P create​(P permission, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Creates the permission.
      protected com.broadleafcommerce.data.tracking.core.Trackable createInternal​(P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Mostly copied from MappableCrudEntityHelper.create(Object, CrudRepository), but overridden to support notifying on persistence events via #initializePersistenceProducerState(NotificationStateAware, OperationType).
      void delete​(@NonNull String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Deletes the given permission.
      boolean existsByNameAndIdNot​(@NonNull String name, String id, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Reports whether there exists a permission in the data store whose AccountPermission.getName() is equal to the given name and whose AccountPermission.getId() is not equal to the given id.
      protected AccountPermissionContextValidator<P> getAccountPermissionContextValidator()  
      protected com.broadleafcommerce.common.messaging.notification.MessageSerializationHelper getMessageSerializationHelper()  
      protected com.broadleafcommerce.common.messaging.notification.NotificationManager getNotificationManager()  
      protected com.broadleafcommerce.common.messaging.notification.NotificationStateService getNotificationStateService()  
      protected com.broadleafcommerce.common.messaging.PersistenceProducer getPersistenceProducer()  
      protected AccountPermissionRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()  
      protected com.broadleafcommerce.data.tracking.core.mapping.validation.EntityValidatorManager getValidator()  
      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 permissions in the data store, filtering to those whose name contains the given value.
      P replace​(@NonNull String id, P permission, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Replaces the given permission.
      protected com.broadleafcommerce.data.tracking.core.Trackable replaceInternal​(@NonNull String id, P businessInstance, com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
      Mostly copied from MappableCrudEntityHelper.replace(String, Object, CrudRepository), but overridden to support notifying on persistence events via #initializePersistenceProducerState(NotificationStateAware, OperationType).
      protected void throwIfErrors​(@NonNull org.springframework.validation.Errors errors)  
      • 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 interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService

        createAll, createAllAllowingPartialSuccess, readAll, readAll, readAll, readAllByContextId, readByContextId, replaceAll, replaceAllAllowingPartialSuccess, update, updateAll, updateAllAllowingPartialSuccess, updateSort
      • Methods inherited from interface com.broadleafcommerce.data.tracking.core.service.RsqlCrudEntityService

        readAll, readAll, readAll, readAll
    • Constructor Detail

      • DefaultAccountPermissionService

        public DefaultAccountPermissionService​(AccountPermissionRepository<com.broadleafcommerce.data.tracking.core.Trackable> repository,
                                               AccountPermissionContextValidator<P> accountPermissionContextValidator,
                                               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

      • 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: AccountPermissionService
        Reads permissions in the data store, filtering to those whose name contains the given value. Results are restricted to only the permissions accessible from the given context as described in the class-level javadocs.
        Specified by:
        readAllByName in interface AccountPermissionService<P extends AccountPermission>
        Parameters:
        name - the value that permission names must contain in order to match
        pageable - describes the page of results to return
        context - context information about multitenant state
        Returns:
        permissions accessible in the current context that match the given name
      • existsByNameAndIdNot

        public boolean existsByNameAndIdNot​(@NonNull
                                            @NonNull String name,
                                            @Nullable
                                            String id,
                                            @Nullable
                                            com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from interface: AccountPermissionService
        Reports whether there exists a permission in the data store whose AccountPermission.getName() is equal to the given name and whose AccountPermission.getId() is not equal to the given id. Results are restricted to only the permissions accessible from the given context as described in the class-level javadocs.
        Specified by:
        existsByNameAndIdNot in interface AccountPermissionService<P extends AccountPermission>
        Parameters:
        name - the value that permission name must equal in order to match
        id - (optional) the value that the permission's id must not equal in order to match. If this value is null, then results will not be filtered by their id.
        context - context information about multitenant state
        Returns:
        true if there exists a permission accessible from the given context matching the given name and not matching the given id, false otherwise
      • create

        public P create​(@NonNull
                        P permission,
                        @Nullable
                        com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from interface: AccountPermissionService
        Creates the permission. Emits an OperationAwarePersistenceMessage to the PersistenceProducer.TYPE channel.
        Specified by:
        create in interface AccountPermissionService<P extends AccountPermission>
        Specified by:
        create in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountPermission>
        Overrides:
        create in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountPermission>
        Parameters:
        permission - the permission to create
        context - context information about multitenant state
        Returns:
        the permission 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 from MappableCrudEntityHelper.create(Object, CrudRepository), but overridden to support notifying on persistence events via #initializePersistenceProducerState(NotificationStateAware, OperationType).
        Parameters:
        businessInstance - The business domain instance. In general, the DomainMapperManager is 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 permission,
                         @Nullable
                         com.broadleafcommerce.data.tracking.core.context.ContextInfo context)
        Description copied from interface: AccountPermissionService
        Replaces the given permission.

        Emits an OperationAwarePersistenceMessage to the PersistenceProducer.TYPE channel.

        Specified by:
        replace in interface AccountPermissionService<P extends AccountPermission>
        Specified by:
        replace in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountPermission>
        Overrides:
        replace in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountPermission>
        Parameters:
        id - the id of the permission to replace
        permission - the replacement permission
        context - context information about multitenant state
        Returns:
        the permission 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 from MappableCrudEntityHelper.replace(String, Object, CrudRepository), but overridden to support notifying on persistence events via #initializePersistenceProducerState(NotificationStateAware, OperationType).
        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 EntityMissingException if not available.
        Throws:
        com.broadleafcommerce.common.error.validation.ValidationException - if the given businessInstance failed validation on replacement
        com.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: AccountPermissionService
        Deletes the given permission.

        Emits an OperationAwarePersistenceMessage to the PersistenceProducer.TYPE channel.

        Specified by:
        delete in interface AccountPermissionService<P extends AccountPermission>
        Specified by:
        delete in interface com.broadleafcommerce.data.tracking.core.service.CrudEntityService<P extends AccountPermission>
        Overrides:
        delete in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountPermission>
        Parameters:
        id - the ID of the permission to delete
        context - context information about multitenant state
      • 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 to MappableCrudEntityHelper.convertFromPersistentDomain(Object), except will invoke DomainMapperManager.fromRepositoryDomain(BusinessTypeAware, ContextInfo) with the given context argument instead of just null.

        Ensures MutabilityContextStateMapperMember will have a context to base its mutability determination on.

        Parameters:
        persistedDomain - the persisted-domain instance to convert to the business domain
        context - context information surrounding multitenant state
      • getRepository

        protected AccountPermissionRepository<com.broadleafcommerce.data.tracking.core.Trackable> getRepository()
        Overrides:
        getRepository in class com.broadleafcommerce.data.tracking.core.service.BaseCrudEntityService<P extends AccountPermission>
      • 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()