class ContainerActionsHandler implements
    EventHandler<ContainerActionsFromDatanode> {

  @Override
  public void onMessage(
      ContainerActionsFromDatanode containerReportFromDatanode,
      EventPublisher publisher) {
    DatanodeDetails dd = containerReportFromDatanode.getDatanodeDetails();
    for (ContainerAction action : containerReportFromDatanode.getReport()
        .getContainerActionsList()) {
      ContainerID containerId = ContainerID.valueof(action.getContainerID());
      switch (action.getAction()) {
      case CLOSE:
        if (LOG.isDebugEnabled()) {
          LOG.debug("Closing container {} in datanode {} because the" +
              " container is {}.", containerId, dd, action.getReason());
        }
        publisher.fireEvent(SCMEvents.CLOSE_CONTAINER, containerId);
        break;
      default:
        LOG.warn("Invalid action {} with reason {}, from datanode {}. ",
            action.getAction(), action.getReason(), dd); }
    }
  }

}