package com.mozilla.grouperfish.batch.scheduling; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.mozilla.grouperfish.batch.handlers.TaskHandler; import com.mozilla.grouperfish.batch.transforms.TransformProvider; import com.mozilla.grouperfish.model.Fail; import com.mozilla.grouperfish.model.Task; import com.mozilla.grouperfish.services.api.FileSystem; import com.mozilla.grouperfish.services.api.Grid; import com.mozilla.grouperfish.services.api.IndexProvider; /** * Braindead fully synchronous "batch" service. * * It has no queue, no multithreading. * It just executes everything right away, while you wait for results. * * Can be useful in testing/development. */ public class SynchronousBatchService extends AbstractBatchService { private static final Logger log = LoggerFactory.getLogger(SynchronousBatchService.class); private final TaskHandler handler; @Inject public SynchronousBatchService( final Grid grid, final IndexProvider indexes, final FileSystem fs, final TransformProvider transforms) { super(indexes); handler = Helpers.sequentialHandler(grid, fs, indexes, transforms); log.info("Instantiated service: {}", getClass().getSimpleName()); } @Override public void schedule(final Task task) { try { handler.handle(task); } catch (Fail e) { throw new RuntimeException(e); } } @Override public void start() { } @Override public void stop() { } }