mirror of
https://github.com/Athou/commafeed.git
synced 2026-03-21 21:37:29 +00:00
let the module decide what tasks are registered
This commit is contained in:
@@ -13,6 +13,7 @@ import io.dropwizard.setup.Environment;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
|
|
||||||
import javax.servlet.DispatcherType;
|
import javax.servlet.DispatcherType;
|
||||||
@@ -42,8 +43,7 @@ import com.commafeed.backend.model.UserRole;
|
|||||||
import com.commafeed.backend.model.UserSettings;
|
import com.commafeed.backend.model.UserSettings;
|
||||||
import com.commafeed.backend.service.StartupService;
|
import com.commafeed.backend.service.StartupService;
|
||||||
import com.commafeed.backend.service.UserService;
|
import com.commafeed.backend.service.UserService;
|
||||||
import com.commafeed.backend.task.OldStatusesCleanupTask;
|
import com.commafeed.backend.task.ScheduledTask;
|
||||||
import com.commafeed.backend.task.OrphansCleanupTask;
|
|
||||||
import com.commafeed.frontend.auth.SecurityCheckFactoryProvider;
|
import com.commafeed.frontend.auth.SecurityCheckFactoryProvider;
|
||||||
import com.commafeed.frontend.resource.AdminREST;
|
import com.commafeed.frontend.resource.AdminREST;
|
||||||
import com.commafeed.frontend.resource.CategoryREST;
|
import com.commafeed.frontend.resource.CategoryREST;
|
||||||
@@ -59,6 +59,8 @@ import com.commafeed.frontend.servlet.NextUnreadServlet;
|
|||||||
import com.commafeed.frontend.session.SessionHelperFactoryProvider;
|
import com.commafeed.frontend.session.SessionHelperFactoryProvider;
|
||||||
import com.google.inject.Guice;
|
import com.google.inject.Guice;
|
||||||
import com.google.inject.Injector;
|
import com.google.inject.Injector;
|
||||||
|
import com.google.inject.Key;
|
||||||
|
import com.google.inject.TypeLiteral;
|
||||||
import com.wordnik.swagger.config.ConfigFactory;
|
import com.wordnik.swagger.config.ConfigFactory;
|
||||||
import com.wordnik.swagger.config.ScannerFactory;
|
import com.wordnik.swagger.config.ScannerFactory;
|
||||||
import com.wordnik.swagger.config.SwaggerConfig;
|
import com.wordnik.swagger.config.SwaggerConfig;
|
||||||
@@ -142,9 +144,13 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
|
|||||||
environment.servlets().addServlet("analytics.js", injector.getInstance(AnalyticsServlet.class)).addMapping("/analytics.js");
|
environment.servlets().addServlet("analytics.js", injector.getInstance(AnalyticsServlet.class)).addMapping("/analytics.js");
|
||||||
|
|
||||||
// Scheduled tasks
|
// Scheduled tasks
|
||||||
ScheduledExecutorService executor = environment.lifecycle().scheduledExecutorService("task-scheduler", true).build();
|
Set<ScheduledTask> tasks = injector.getInstance(Key.get(new TypeLiteral<Set<ScheduledTask>>() {
|
||||||
injector.getInstance(OldStatusesCleanupTask.class).register(executor);
|
}));
|
||||||
injector.getInstance(OrphansCleanupTask.class).register(executor);
|
ScheduledExecutorService executor = environment.lifecycle().scheduledExecutorService("task-scheduler", true).threads(tasks.size())
|
||||||
|
.build();
|
||||||
|
for (ScheduledTask task : tasks) {
|
||||||
|
task.register(executor);
|
||||||
|
}
|
||||||
|
|
||||||
// database init/changelogs
|
// database init/changelogs
|
||||||
environment.lifecycle().manage(injector.getInstance(StartupService.class));
|
environment.lifecycle().manage(injector.getInstance(StartupService.class));
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ import com.commafeed.backend.favicon.AbstractFaviconFetcher;
|
|||||||
import com.commafeed.backend.favicon.DefaultFaviconFetcher;
|
import com.commafeed.backend.favicon.DefaultFaviconFetcher;
|
||||||
import com.commafeed.backend.favicon.FacebookFaviconFetcher;
|
import com.commafeed.backend.favicon.FacebookFaviconFetcher;
|
||||||
import com.commafeed.backend.favicon.YoutubeFaviconFetcher;
|
import com.commafeed.backend.favicon.YoutubeFaviconFetcher;
|
||||||
|
import com.commafeed.backend.task.OldStatusesCleanupTask;
|
||||||
|
import com.commafeed.backend.task.OrphansCleanupTask;
|
||||||
|
import com.commafeed.backend.task.ScheduledTask;
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
import com.google.inject.multibindings.Multibinder;
|
import com.google.inject.multibindings.Multibinder;
|
||||||
@@ -39,9 +42,13 @@ public class CommaFeedModule extends AbstractModule {
|
|||||||
log.info("using cache {}", cacheService.getClass());
|
log.info("using cache {}", cacheService.getClass());
|
||||||
bind(CacheService.class).toInstance(cacheService);
|
bind(CacheService.class).toInstance(cacheService);
|
||||||
|
|
||||||
Multibinder<AbstractFaviconFetcher> multibinder = Multibinder.newSetBinder(binder(), AbstractFaviconFetcher.class);
|
Multibinder<AbstractFaviconFetcher> faviconMultibinder = Multibinder.newSetBinder(binder(), AbstractFaviconFetcher.class);
|
||||||
multibinder.addBinding().to(YoutubeFaviconFetcher.class);
|
faviconMultibinder.addBinding().to(YoutubeFaviconFetcher.class);
|
||||||
multibinder.addBinding().to(FacebookFaviconFetcher.class);
|
faviconMultibinder.addBinding().to(FacebookFaviconFetcher.class);
|
||||||
multibinder.addBinding().to(DefaultFaviconFetcher.class);
|
faviconMultibinder.addBinding().to(DefaultFaviconFetcher.class);
|
||||||
|
|
||||||
|
Multibinder<ScheduledTask> taskMultibinder = Multibinder.newSetBinder(binder(), ScheduledTask.class);
|
||||||
|
taskMultibinder.addBinding().to(OldStatusesCleanupTask.class);
|
||||||
|
taskMultibinder.addBinding().to(OrphansCleanupTask.class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ public abstract class ScheduledTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
log.info("registering task {} for execution every {} {}, starting in {} {}", getClass().getSimpleName(), getPeriod(),
|
||||||
|
getTimeUnit(), getInitialDelay(), getTimeUnit());
|
||||||
executor.scheduleWithFixedDelay(runnable, getInitialDelay(), getPeriod(), getTimeUnit());
|
executor.scheduleWithFixedDelay(runnable, getInitialDelay(), getPeriod(), getTimeUnit());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user