class AbstractPushNotificationRecipientServiceImpl implements AbstractPushNotificationRecipientService<T> {

    @Transactional
    @Nonnull
    @Override
    public T updatePushNotificationRecipientStatus(@Nonnull final Long recipientId, @Nonnull final PushNotificationRecipientStatus status) {
        assertPushNotificationRecipientIdNotNull(recipientId);
        Assert.notNull(status, "Push notification recipient status should not be null");
        LOGGER.debug("Updating push notification recipient status for recipient with id - {} , status - {}", recipientId, status);
        T recipient = getRepository().findById(recipientId).orElseThrow(() -> new PushNotificationRecipientNotFoundForIdException(recipientId, getInstanceClass()));;
        // Update recipient status
        recipient.setStatus(status);
        recipient.setUpdated(LocalDateTime.now());
        // Persist recipient
        recipient = getRepository().save(recipient);
        LOGGER.debug("Successfully update push notification recipient status with id - {}, recipient - {}", recipient.getId(), recipient);
        return recipient;
    }

    public  AbstractPushNotificationRecipientServiceImpl();

}