class NotificationServiceImpl implements NotificationService {

    public NotificationsHandler getNotificationsHandler(final Publisher publisher) {
        final String type = publisher.getType();
        if (notificationHandlers == null) {
            synchronized (lockObject) {
                if (notificationHandlers == null) { // check again in synchronized-block, only one may create list
                    notificationHandlers = new HashMap<String, NotificationsHandler>();
                    if (notificationHandlersMap == null) {
                        notificationHandlersMap = getNotificationHandlersMap();
                    }
                    final Collection<Object> notificationsHandlerValues = notificationHandlersMap.values();
                    for (final Object object : notificationsHandlerValues) {
                        final NotificationsHandler notificationsHandler = (NotificationsHandler) object;
                        log.debug("initNotificationUpgrades notificationsHandler=" + notificationsHandler);
                        notificationHandlers.put(notificationsHandler.getType(), notificationsHandler);
                    }
                }
            }
        }
        return notificationHandlers.get(type);
    }

    @SuppressWarnings("unused") private  NotificationServiceImpl();
      NotificationServiceImpl(final NotificationsDao notificationsManager, Map<String, Object> notificationHandlersMap,
            NotificationServiceStaticDependenciesWrapper staticDelegator);

}