package com.anjlab.spelling.web.services; // Imports omitted public class AppModule { @Contribute(WorkerManager.class) public static void defineWorkers(Configuration conf) { conf.addInstance(GitPullWorker.class); conf.addInstance(GitCloneWorker.class); conf.addInstance(SpellcheckWorker.class); conf.addInstance(CorrectionsWorker.class); conf.addInstance(GitPullRequestWorker.class); } @Startup public static void startup(ParallelExecutor executor, final WorkerManager workerManager, final Logger logger, TaskManager taskManager, @Symbol(START_WORKERS) boolean startWorkers, RegistryShutdownHub shutdownHub) { if (!startWorkers) { return; } shutdownHub.addRegistryWillShutdownListener(new Runnable() { public void run() { for (Worker worker : workerManager.workers()) { worker.shutdown(); } } }); for (final Worker worker : workerManager.workers()) { executor.invoke(new WorkerRoutine(logger, worker, taskManager, workerManager)); } } }