Class AdminPermissionPersistenceHandler

  • All Implemented Interfaces:
    com.broadleafcommerce.common.messaging.PersistenceHandler

    public class AdminPermissionPersistenceHandler
    extends OperationAwarePersistenceHandler
    Handles messages from the Persistence channel for AdminPermission data to update UserPermission. This is designed to perform a replacement of existing data within this service from the admin user service.
    Author:
    Samarth Dhruva (samarthd)
    • Constructor Detail

      • AdminPermissionPersistenceHandler

        public AdminPermissionPersistenceHandler​(UserPermissionService<UserPermission> userPermissionService,
                                                 com.fasterxml.jackson.databind.ObjectMapper mapper,
                                                 com.broadleafcommerce.common.extension.TypeFactory typeFactory)
    • Method Detail

      • hook

        @StreamListener("persistenceInputAdminPermission")
        public void hook​(String entityJson)
      • processCreateOperation

        protected void processCreateOperation​(@NonNull
                                              @NonNull String entityId,
                                              @NonNull
                                              @NonNull Instant changeTimestamp,
                                              @NonNull
                                              @NonNull com.fasterxml.jackson.databind.JsonNode entityJson)
                                       throws IOException
        Description copied from class: OperationAwarePersistenceHandler
        Invoked if the persistence message had an OperationType of OperationType.CREATE.
        Specified by:
        processCreateOperation in class OperationAwarePersistenceHandler
        Parameters:
        entityId - the ID found on the persistence message. Guaranteed non-empty.
        changeTimestamp - the timestamp found on the persistence message. Guaranteed non-null.
        entityJson - the persistence message json itself. Guaranteed non-null.
        Throws:
        IOException
      • processUpdateOperation

        protected void processUpdateOperation​(@NonNull
                                              @NonNull String entityId,
                                              @NonNull
                                              @NonNull Instant changeTimestamp,
                                              @NonNull
                                              @NonNull com.fasterxml.jackson.databind.JsonNode entityJson)
                                       throws IOException
        Description copied from class: OperationAwarePersistenceHandler
        Invoked if the persistence message had an OperationType of OperationType.UPDATE.
        Specified by:
        processUpdateOperation in class OperationAwarePersistenceHandler
        Parameters:
        entityId - the entity ID found on the persistence message. Guaranteed non-empty.
        changeTimestamp - the timestamp found on the persistence message. Guaranteed non-null.
        entityJson - the persistence message json itself. Guaranteed non-null.
        Throws:
        IOException
      • performReplacementIfEligible

        protected void performReplacementIfEligible​(@NonNull
                                                    @NonNull String entityId,
                                                    @NonNull
                                                    @NonNull UserPermission existing,
                                                    @NonNull
                                                    @NonNull AdminPermission request,
                                                    @NonNull
                                                    @NonNull Instant changeTimestamp)
      • processDeleteOperation

        protected void processDeleteOperation​(@NonNull
                                              @NonNull String entityId,
                                              @NonNull
                                              @NonNull Instant changeTimestamp,
                                              @NonNull
                                              @NonNull com.fasterxml.jackson.databind.JsonNode entityJson)
                                       throws IOException
        Archives the given entity.

        Note that if an existing record is not found, one will be created in an archived state. The motivation for this is to protect against out-of-order messages (ex: "Delete" message on an entity arrives before the "Create"). By establishing a pre-existing record in an archived state with a timestamp, any subsequent persistence message received can be compared against this record's timestamp and appropriately discarded as outdated rather than triggering creation of a new record.

        Specified by:
        processDeleteOperation in class OperationAwarePersistenceHandler
        Parameters:
        entityId - the entity ID found on the persistence message. Guaranteed non-empty.
        changeTimestamp - the timestamp found on the persistence message. Guaranteed non-null.
        entityJson - the persistence message json itself. Guaranteed non-null.
        Throws:
        IOException
      • performArchivalReplacementIfEligible

        protected void performArchivalReplacementIfEligible​(@NonNull
                                                            @NonNull String entityId,
                                                            @NonNull
                                                            @NonNull UserPermission existing,
                                                            @NonNull
                                                            @NonNull Instant changeTimestamp)
      • updatePermissionTenantRestrictions

        protected void updatePermissionTenantRestrictions​(AdminPermission request,
                                                          UserPermission permission)
      • getSupportedSimpleTypeNames

        public String[] getSupportedSimpleTypeNames()
      • getTypeFactory

        protected com.broadleafcommerce.common.extension.TypeFactory getTypeFactory()