jp.primecloud.auto.process.ProcessManager.java Source code

Java tutorial

Introduction

Here is the source code for jp.primecloud.auto.process.ProcessManager.java

Source

/*
 * Copyright 2014 by SCSK Corporation.
 * 
 * This file is part of PrimeCloud Controller(TM).
 * 
 * PrimeCloud Controller(TM) is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 * 
 * PrimeCloud Controller(TM) is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with PrimeCloud Controller(TM). If not, see <http://www.gnu.org/licenses/>.
 */
package jp.primecloud.auto.process;

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

import jp.primecloud.auto.common.log.LoggingUtils;
import jp.primecloud.auto.common.status.ComponentInstanceStatus;
import jp.primecloud.auto.common.status.InstanceCoodinateStatus;
import jp.primecloud.auto.common.status.InstanceStatus;
import jp.primecloud.auto.common.status.LoadBalancerInstanceStatus;
import jp.primecloud.auto.common.status.LoadBalancerListenerStatus;
import jp.primecloud.auto.common.status.LoadBalancerStatus;
import jp.primecloud.auto.entity.crud.ComponentInstance;
import jp.primecloud.auto.entity.crud.Farm;
import jp.primecloud.auto.entity.crud.Instance;
import jp.primecloud.auto.entity.crud.LoadBalancer;
import jp.primecloud.auto.entity.crud.LoadBalancerInstance;
import jp.primecloud.auto.entity.crud.LoadBalancerListener;
import jp.primecloud.auto.entity.crud.User;
import jp.primecloud.auto.exception.MultiCauseException;
import jp.primecloud.auto.log.EventLogger;
import jp.primecloud.auto.service.ServiceSupport;

import org.apache.commons.lang.BooleanUtils;

import jp.primecloud.auto.process.lb.LoadBalancerProcess;

/**
 * <p>
 * TODO: 
 * </p>
 *
 */
public class ProcessManager extends ServiceSupport {

    protected InstanceProcess instanceProcess;

    protected ComponentProcess componentProcess;

    protected InstancesProcess instancesProcess;

    protected LoadBalancerProcess loadBalancerProcess;

    protected ExecutorService executorService;

    protected EventLogger eventLogger;

    public void process() {
        // ???
        List<Farm> farms = new ArrayList<Farm>();
        List<Farm> allFarms = farmDao.readAll();
        for (Farm farm : allFarms) {
            if (BooleanUtils.isTrue(farm.getScheduled())) {
                farms.add(farm);
            }
        }

        List<Long> farmNos = new ArrayList<Long>();
        for (Farm farm : farms) {
            farmNos.add(farm.getFarmNo());
        }

        log.debug("farmNos: " + farmNos);

        if (farms.isEmpty()) {
            return;
        }

        for (Farm farm : farms) {
            // TODO: ??????

            processFarm(farm);
        }
    }

    protected void processFarm(Farm farm) {
        // ????
        boolean next = processStartInstance(farm);
        boolean next2 = processStartLoadBalancer(farm);
        if (!next || !next2) {
            return;
        }

        // ???
        next = processStartInstances(farm);
        if (!next) {
            return;
        }

        // ????
        next = processConfigureComponent(farm);
        if (!next) {
            return;
        }

        // ????
        next = processStopInstances(farm);
        if (!next) {
            return;
        }

        // ?????
        next = processStopInstance(farm);
        next2 = processStopLoadBalancer(farm);
        if (!next || !next2) {
            return;
        }

        // ???
        unscheduled(farm.getFarmNo());
    }

    protected void unscheduled(Long farmNo) {
        Farm farm = farmDao.read(farmNo);
        if (BooleanUtils.isTrue(farm.getScheduled())) {
            farm.setScheduled(false);
            farmDao.update(farm);
        }
    }

    protected boolean processStartInstance(final Farm farm) {
        // ??
        List<Instance> instances = new ArrayList<Instance>();
        List<Instance> allInstances = instanceDao.readByFarmNo(farm.getFarmNo());
        for (Instance instance : allInstances) {
            // ??
            if (BooleanUtils.isTrue(instance.getLoadBalancer())) {
                continue;
            }

            if (BooleanUtils.isTrue(instance.getEnabled())) {
                instances.add(instance);
            }
        }

        // ????
        if (instances.isEmpty()) {
            return true;
        }

        // ??
        boolean processing = false;
        List<Long> targetInstanceNos = new ArrayList<Long>();
        for (Instance instance : instances) {
            InstanceStatus status = InstanceStatus.fromStatus(instance.getStatus());

            if (status != InstanceStatus.RUNNING && status != InstanceStatus.WARNING) {
                processing = true;

                if (status == InstanceStatus.STOPPED) {
                    targetInstanceNos.add(instance.getInstanceNo());
                }
            }
        }

        // ?????
        if (!targetInstanceNos.isEmpty()) {
            final User user = userDao.read(farm.getUserNo());
            for (final Long instanceNo : targetInstanceNos) {
                Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        LoggingUtils.setUserNo(user.getMasterUser());
                        LoggingUtils.setUserName(user.getUsername());
                        LoggingUtils.setFarmNo(farm.getFarmNo());
                        LoggingUtils.setFarmName(farm.getFarmName());
                        LoggingUtils.setLoginUserNo(user.getUserNo());
                        try {
                            instanceProcess.start(instanceNo);
                        } catch (MultiCauseException ignore) {
                        } catch (Throwable e) {
                            log.error(e.getMessage(), e);

                            // 
                            eventLogger.error("SystemError", new Object[] { e.getMessage() });
                        } finally {
                            LoggingUtils.removeContext();
                        }
                    }
                };
                executorService.execute(runnable);
            }
        }

        // ?????
        if (processing) {
            return false;
        }

        return true;
    }

    protected boolean processStartInstances(final Farm farm) {
        // ??????
        if (BooleanUtils.isTrue(farm.getComponentProcessing())) {
            return false;
        }

        // ??????????????????????
        boolean coodinated = true;
        List<Instance> allInstances = instanceDao.readByFarmNo(farm.getFarmNo());
        for (Instance instance : allInstances) {
            if (InstanceStatus.fromStatus(instance.getStatus()) == InstanceStatus.RUNNING) {
                if (BooleanUtils.isTrue(instance.getEnabled())) {
                    if (InstanceCoodinateStatus
                            .fromStatus(instance.getCoodinateStatus()) == InstanceCoodinateStatus.UN_COODINATED) {
                        coodinated = false;
                        break;
                    }
                }
            }
        }

        // ????????????
        if (!coodinated) {
            final User user = userDao.read(farm.getUserNo());
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    LoggingUtils.setUserNo(user.getMasterUser());
                    LoggingUtils.setUserName(user.getUsername());
                    LoggingUtils.setFarmNo(farm.getFarmNo());
                    LoggingUtils.setFarmName(farm.getFarmName());
                    LoggingUtils.setLoginUserNo(user.getUserNo());
                    try {
                        instancesProcess.start(farm.getFarmNo());
                    } catch (MultiCauseException ignore) {
                    } catch (Throwable e) {
                        log.error(e.getMessage(), e);

                        // 
                        eventLogger.error("SystemError", new Object[] { e.getMessage() });
                    } finally {
                        LoggingUtils.removeContext();
                    }
                }
            };
            executorService.execute(runnable);
        }

        return coodinated;
    }

    protected boolean processConfigureComponent(final Farm farm) {
        // ??????
        if (BooleanUtils.isTrue(farm.getComponentProcessing())) {
            return false;
        }

        boolean configured = true;

        // ?Instance?ComponentInstnace??
        List<Instance> instances = instanceDao.readByFarmNo(farm.getFarmNo());
        List<Long> instanceNos = new ArrayList<Long>();
        for (Instance instance : instances) {
            // ??
            if (BooleanUtils.isTrue(instance.getLoadBalancer())) {
                continue;
            }

            if (InstanceStatus.fromStatus(instance.getStatus()) == InstanceStatus.RUNNING) {
                instanceNos.add(instance.getInstanceNo());
            }
        }
        List<ComponentInstance> componentInstances = componentInstanceDao.readInInstanceNos(instanceNos);

        // ComponentInstance????????
        for (ComponentInstance componentInstance : componentInstances) {
            ComponentInstanceStatus status = ComponentInstanceStatus.fromStatus(componentInstance.getStatus());
            if (BooleanUtils.isTrue(componentInstance.getEnabled())) {
                if (status == ComponentInstanceStatus.WARNING) {
                    // ?????????
                    unscheduled(farm.getFarmNo());
                    return false;
                } else if (status != ComponentInstanceStatus.RUNNING) {
                    configured = false;
                }
            } else {
                if (status != ComponentInstanceStatus.STOPPED) {
                    configured = false;
                }
            }
        }

        // ???
        List<LoadBalancer> loadBalancers = null;
        List<LoadBalancerListener> listeners = null;
        List<LoadBalancerInstance> lbInstances = null;
        Map<Long, LoadBalancer> loadBalancerMap = null;
        Map<Long, Instance> instanceMap = null;
        if (configured) {
            loadBalancers = loadBalancerDao.readByFarmNo(farm.getFarmNo());
            loadBalancerMap = new HashMap<Long, LoadBalancer>();
            for (LoadBalancer loadBalancer : loadBalancers) {
                loadBalancerMap.put(loadBalancer.getLoadBalancerNo(), loadBalancer);
            }
            listeners = loadBalancerListenerDao.readInLoadBalancerNos(loadBalancerMap.keySet());
            lbInstances = loadBalancerInstanceDao.readInLoadBalancerNos(loadBalancerMap.keySet());
            instanceMap = new HashMap<Long, Instance>();
            for (Instance instance : instances) {
                instanceMap.put(instance.getInstanceNo(), instance);
            }
        }

        // ????????
        if (configured) {
            for (LoadBalancerListener listener : listeners) {
                LoadBalancer loadBalancer = loadBalancerMap.get(listener.getLoadBalancerNo());
                LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());
                LoadBalancerListenerStatus status2 = LoadBalancerListenerStatus.fromStatus(listener.getStatus());

                if (BooleanUtils.isTrue(loadBalancer.getEnabled())) {
                    if (status == LoadBalancerStatus.RUNNING) {
                        // ?????
                        if (BooleanUtils.isTrue(listener.getEnabled())) {
                            if (status2 == LoadBalancerListenerStatus.WARNING) {
                                // ???????
                                unscheduled(farm.getFarmNo());
                                return false;
                            } else if (status2 != LoadBalancerListenerStatus.RUNNING) {
                                configured = false;
                            }
                        } else {
                            if (status2 != LoadBalancerListenerStatus.STOPPED) {
                                configured = false;
                            }
                        }
                    }
                } else {
                    if (status == LoadBalancerStatus.RUNNING || status == LoadBalancerStatus.WARNING) {
                        // ????????
                        if (status2 != LoadBalancerListenerStatus.STOPPED) {
                            configured = false;
                        }
                    }
                }
            }
        }

        // ????????
        if (configured) {
            for (LoadBalancerInstance lbInstance : lbInstances) {
                LoadBalancer loadBalancer = loadBalancerMap.get(lbInstance.getLoadBalancerNo());
                LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());
                LoadBalancerInstanceStatus status2 = LoadBalancerInstanceStatus.fromStatus(lbInstance.getStatus());
                Instance instance = instanceMap.get(lbInstance.getInstanceNo());
                InstanceStatus instanceStatus = InstanceStatus.fromStatus(instance.getStatus());

                // ???????
                if (instanceStatus == InstanceStatus.RUNNING) {
                    if (BooleanUtils.isTrue(loadBalancer.getEnabled())
                            && BooleanUtils.isTrue(instance.getEnabled())) {
                        if (status == LoadBalancerStatus.RUNNING) {
                            // ?????????
                            if (BooleanUtils.isTrue(lbInstance.getEnabled())) {
                                if (status2 == LoadBalancerInstanceStatus.WARNING) {
                                    // ????????
                                    unscheduled(farm.getFarmNo());
                                    return false;
                                } else if (status2 != LoadBalancerInstanceStatus.RUNNING) {
                                    configured = false;
                                }
                            } else {
                                if (status2 != LoadBalancerInstanceStatus.STOPPED) {
                                    configured = false;
                                }
                            }
                        }
                    } else {
                        if (status == LoadBalancerStatus.RUNNING || status == LoadBalancerStatus.WARNING) {
                            // ??????????????
                            if (status2 != LoadBalancerInstanceStatus.STOPPED) {
                                configured = false;
                            }
                        }
                    }
                }
            }
        }

        // ?????????
        if (configured) {
            for (ComponentInstance componentInstance : componentInstances) {
                if (BooleanUtils.isTrue(componentInstance.getConfigure())) {
                    configured = false;
                    break;
                }
            }
        }

        // ????????
        if (configured) {
            for (LoadBalancer loadBalancer : loadBalancers) {
                if (BooleanUtils.isTrue(loadBalancer.getConfigure())) {
                    LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());
                    if (BooleanUtils.isTrue(loadBalancer.getEnabled())) {
                        if (status == LoadBalancerStatus.RUNNING) {
                            configured = false;
                            break;
                        }
                    } else {
                        if (status == LoadBalancerStatus.RUNNING || status == LoadBalancerStatus.WARNING) {
                            configured = false;
                            break;
                        }
                    }
                }
            }
        }

        // ????????
        if (configured) {
            for (LoadBalancerListener listener : listeners) {
                if (BooleanUtils.isTrue(listener.getConfigure())) {
                    LoadBalancer loadBalancer = loadBalancerMap.get(listener.getLoadBalancerNo());
                    LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());
                    if (BooleanUtils.isTrue(loadBalancer.getEnabled())) {
                        if (status == LoadBalancerStatus.RUNNING) {
                            configured = false;
                            break;
                        }
                    } else {
                        if (status == LoadBalancerStatus.RUNNING || status == LoadBalancerStatus.WARNING) {
                            configured = false;
                            break;
                        }
                    }
                }
            }
        }

        // ??????????
        if (!configured) {
            final User user = userDao.read(farm.getUserNo());
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    LoggingUtils.setUserNo(user.getMasterUser());
                    LoggingUtils.setUserName(user.getUsername());
                    LoggingUtils.setFarmNo(farm.getFarmNo());
                    LoggingUtils.setFarmName(farm.getFarmName());
                    LoggingUtils.setLoginUserNo(user.getUserNo());
                    try {
                        componentProcess.configure(farm.getFarmNo());
                    } catch (MultiCauseException ignore) {
                    } catch (Throwable e) {
                        log.error(e.getMessage(), e);

                        // 
                        eventLogger.error("SystemError", new Object[] { e.getMessage() });
                    } finally {
                        LoggingUtils.removeContext();
                    }
                }
            };
            executorService.execute(runnable);
        }

        return configured;
    }

    protected boolean processStopInstances(final Farm farm) {
        // ??????
        if (BooleanUtils.isTrue(farm.getComponentProcessing())) {
            return false;
        }

        // ????????????????????
        boolean coodinated = false;
        List<Instance> allInstances = instanceDao.readByFarmNo(farm.getFarmNo());
        for (Instance instance : allInstances) {
            if (InstanceStatus.fromStatus(instance.getStatus()) == InstanceStatus.RUNNING) {
                if (BooleanUtils.isNotTrue(instance.getEnabled())) {
                    if (InstanceCoodinateStatus
                            .fromStatus(instance.getCoodinateStatus()) == InstanceCoodinateStatus.COODINATED) {
                        coodinated = true;
                        break;
                    }
                }
            }
        }

        // ???????????????
        if (coodinated) {
            final User user = userDao.read(farm.getUserNo());
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    LoggingUtils.setUserNo(user.getMasterUser());
                    LoggingUtils.setUserName(user.getUsername());
                    LoggingUtils.setFarmNo(farm.getFarmNo());
                    LoggingUtils.setFarmName(farm.getFarmName());
                    LoggingUtils.setLoginUserNo(user.getUserNo());
                    try {
                        instancesProcess.stop(farm.getFarmNo());
                    } catch (MultiCauseException ignore) {
                    } catch (Throwable e) {
                        log.error(e.getMessage(), e);

                        // 
                        eventLogger.error("SystemError", new Object[] { e.getMessage() });
                    } finally {
                        LoggingUtils.removeContext();
                    }
                }
            };
            executorService.execute(runnable);
        }

        return !coodinated;
    }

    protected boolean processStopInstance(final Farm farm) {
        // ??
        List<Instance> instances = new ArrayList<Instance>();
        List<Instance> allInstances = instanceDao.readByFarmNo(farm.getFarmNo());
        for (Instance instance : allInstances) {
            // ??
            if (BooleanUtils.isTrue(instance.getLoadBalancer())) {
                continue;
            }

            if (BooleanUtils.isNotTrue(instance.getEnabled())) {
                instances.add(instance);
            }
        }

        // ????
        if (instances.isEmpty()) {
            return true;
        }

        // ??
        boolean processing = false;
        List<Long> targetInstanceNos = new ArrayList<Long>();
        for (Instance instance : instances) {
            InstanceStatus status = InstanceStatus.fromStatus(instance.getStatus());

            if (status != InstanceStatus.STOPPED) {
                processing = true;

                if (status == InstanceStatus.RUNNING || status == InstanceStatus.WARNING) {
                    targetInstanceNos.add(instance.getInstanceNo());
                }
            }
        }

        // ?????
        if (!targetInstanceNos.isEmpty()) {
            final User user = userDao.read(farm.getUserNo());
            for (final Long instanceNo : targetInstanceNos) {
                Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        LoggingUtils.setUserNo(user.getMasterUser());
                        LoggingUtils.setUserName(user.getUsername());
                        LoggingUtils.setFarmNo(farm.getFarmNo());
                        LoggingUtils.setFarmName(farm.getFarmName());
                        LoggingUtils.setLoginUserNo(user.getUserNo());
                        try {
                            log.debug("instanceProcess.stop(instanceNo):" + String.valueOf(instanceNo));
                            instanceProcess.stop(instanceNo);
                        } catch (MultiCauseException ignore) {
                        } catch (Throwable e) {
                            log.error(e.getMessage(), e);

                            // 
                            eventLogger.error("SystemError", new Object[] { e.getMessage() });
                        } finally {
                            LoggingUtils.removeContext();
                        }
                    }
                };
                executorService.execute(runnable);
            }
        }

        // ?????
        if (processing) {
            return false;
        }

        return true;
    }

    protected boolean processStartLoadBalancer(final Farm farm) {
        // ???
        List<LoadBalancer> loadBalancers = new ArrayList<LoadBalancer>();
        List<LoadBalancer> allLoadBalancers = loadBalancerDao.readByFarmNo(farm.getFarmNo());
        for (LoadBalancer loadBalancer : allLoadBalancers) {
            if (BooleanUtils.isTrue(loadBalancer.getEnabled())) {
                loadBalancers.add(loadBalancer);
            }
        }

        // ??????
        if (loadBalancers.isEmpty()) {
            return true;
        }

        // ???
        boolean processing = false;
        List<Long> targetLoadBalancerNos = new ArrayList<Long>();
        for (LoadBalancer loadBalancer : loadBalancers) {
            LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());

            if (status != LoadBalancerStatus.RUNNING && status != LoadBalancerStatus.WARNING) {
                processing = true;

                if (status == LoadBalancerStatus.STOPPED) {
                    targetLoadBalancerNos.add(loadBalancer.getLoadBalancerNo());
                }
            }
        }

        // ??????
        if (!targetLoadBalancerNos.isEmpty()) {
            final User user = userDao.read(farm.getUserNo());
            for (final Long loadBalancerNo : targetLoadBalancerNos) {
                Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        LoggingUtils.setUserNo(user.getMasterUser());
                        LoggingUtils.setUserName(user.getUsername());
                        LoggingUtils.setFarmNo(farm.getFarmNo());
                        LoggingUtils.setFarmName(farm.getFarmName());
                        LoggingUtils.setLoginUserNo(user.getUserNo());
                        try {
                            loadBalancerProcess.start(loadBalancerNo);
                        } catch (MultiCauseException ignore) {
                        } catch (Throwable e) {
                            log.error(e.getMessage(), e);

                            // 
                            eventLogger.error("SystemError", new Object[] { e.getMessage() });
                        } finally {
                            LoggingUtils.removeContext();
                        }
                    }
                };
                executorService.execute(runnable);
            }
        }

        // ??????
        if (processing) {
            return false;
        }

        return true;
    }

    protected boolean processStopLoadBalancer(final Farm farm) {
        // ???
        List<LoadBalancer> loadBalancers = new ArrayList<LoadBalancer>();
        List<LoadBalancer> allLoadBalancers = loadBalancerDao.readByFarmNo(farm.getFarmNo());
        for (LoadBalancer loadBalancer : allLoadBalancers) {
            if (BooleanUtils.isNotTrue(loadBalancer.getEnabled())) {
                loadBalancers.add(loadBalancer);
            }
        }

        // ?????
        if (loadBalancers.isEmpty()) {
            return true;
        }

        // ???
        boolean processing = false;
        List<Long> targetLoadBalancerNos = new ArrayList<Long>();
        for (LoadBalancer loadBalancer : loadBalancers) {
            LoadBalancerStatus status = LoadBalancerStatus.fromStatus(loadBalancer.getStatus());

            if (status != LoadBalancerStatus.STOPPED) {
                processing = true;

                if (status == LoadBalancerStatus.RUNNING || status == LoadBalancerStatus.WARNING) {
                    targetLoadBalancerNos.add(loadBalancer.getLoadBalancerNo());
                }
            }
        }

        // ??????
        if (!targetLoadBalancerNos.isEmpty()) {
            final User user = userDao.read(farm.getUserNo());
            for (final Long loadBalancerNo : targetLoadBalancerNos) {
                Runnable runnable = new Runnable() {
                    @Override
                    public void run() {
                        LoggingUtils.setUserNo(user.getMasterUser());
                        LoggingUtils.setUserName(user.getUsername());
                        LoggingUtils.setFarmNo(farm.getFarmNo());
                        LoggingUtils.setFarmName(farm.getFarmName());
                        LoggingUtils.setLoginUserNo(user.getUserNo());
                        try {
                            loadBalancerProcess.stop(loadBalancerNo);
                        } catch (MultiCauseException ignore) {
                        } catch (Throwable e) {
                            log.error(e.getMessage(), e);

                            // 
                            eventLogger.error("SystemError", new Object[] { e.getMessage() });
                        } finally {
                            LoggingUtils.removeContext();
                        }
                    }
                };
                executorService.execute(runnable);
            }
        }

        // ?????
        if (processing) {
            return false;
        }

        return true;
    }

    /**
     * instanceProcess???
     *
     * @param instanceProcess instanceProcess
     */
    public void setInstanceProcess(InstanceProcess instanceProcess) {
        this.instanceProcess = instanceProcess;
    }

    /**
     * componentProcess???
     *
     * @param componentProcess componentProcess
     */
    public void setComponentProcess(ComponentProcess componentProcess) {
        this.componentProcess = componentProcess;
    }

    /**
     * instancesProcess???
     *
     * @param instancesProcess instancesProcess
     */
    public void setInstancesProcess(InstancesProcess instancesProcess) {
        this.instancesProcess = instancesProcess;
    }

    /**
     * loadBalancerProcess???
     *
     * @param loadBalancerProcess loadBalancerProcess
     */
    public void setLoadBalancerProcess(LoadBalancerProcess loadBalancerProcess) {
        this.loadBalancerProcess = loadBalancerProcess;
    }

    /**
     * executorService???
     *
     * @param executorService executorService
     */
    public void setExecutorService(ExecutorService executorService) {
        this.executorService = executorService;
    }

    /**
     * eventLogger???
     *
     * @param eventLogger eventLogger
     */
    public void setEventLogger(EventLogger eventLogger) {
        this.eventLogger = eventLogger;
    }

}