class AbstractNotificationServiceImpl implements AbstractNotificationService<T> {

    @Transactional
    @Nonnull
    @Override
    public T updateNotificationState(@Nonnull final Long notificationId, @Nonnull final NotificationState notificationState) {
        assertNotificationIdNotNull(notificationId);
        Assert.notNull(notificationState, "Notification state should not be null");
        LOGGER.debug("Updating notification state for notification with id - {}, state - {}", notificationId, notificationState);
        T notification = getRepository().findById(notificationId).orElseThrow(() -> new NotificationNotFoundForIdException(notificationId, getInstanceClass()));
        // Update notification state
        notification.setState(notificationState);
        notification.setUpdated(LocalDateTime.now());
        // Persist notification
        notification = getRepository().save(notification);
        LOGGER.debug("Successfully updated state for notification with id - {}, notification state - {}", notificationId, notificationState);
        return notification;
    }

    public  AbstractNotificationServiceImpl();

}