All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.symphony.bdk.bot.sdk.event.EventDispatcherImpl Maven / Gradle / Ivy

There is a newer version: 1.3.9
Show newest version
package com.symphony.bdk.bot.sdk.event;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

import com.symphony.bdk.bot.sdk.event.model.BaseEvent;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class EventDispatcherImpl implements EventDispatcher {
  private static final Logger LOGGER = LoggerFactory.getLogger(EventDispatcherImpl.class);

  private Map> eventHandlers = new HashMap<>();

  /**
   * {@inheritDoc}
   */
  @Override
  public  void register(String channel, BaseEventHandler handler) {
    LOGGER.info("Registering handler for event: {}", channel);
    eventHandlers.computeIfAbsent(channel, handlers -> new ArrayList<>()).add(handler);
  }

  /**
   * {@inheritDoc}
   */
  @Override
  @Async("botTaskExecutor")
  public  void push(String channel, E event) {
    LOGGER.debug("Looking for handler for event: {}", channel);
    eventHandlers.computeIfPresent(channel, (ch, handlers) -> {
      handlers.forEach(handler -> {
        LOGGER.debug("Handler found");
        handler.onEvent(event);
      });
      return handlers;
    });
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy