guicing up

This commit is contained in:
Athou
2014-08-17 14:16:30 +02:00
parent f63695bdc7
commit 8e262a1e10
48 changed files with 298 additions and 180 deletions

View File

@@ -133,6 +133,12 @@
<version>1.7.7</version> <version>1.7.7</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>3.0</version>
</dependency>
<dependency> <dependency>
<groupId>io.dropwizard</groupId> <groupId>io.dropwizard</groupId>
<artifactId>dropwizard-core</artifactId> <artifactId>dropwizard-core</artifactId>

View File

@@ -13,32 +13,9 @@ import java.io.File;
import java.util.Date; import java.util.Date;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import lombok.extern.slf4j.Slf4j;
import org.eclipse.jetty.server.session.HashSessionManager; import org.eclipse.jetty.server.session.HashSessionManager;
import org.eclipse.jetty.server.session.SessionHandler; import org.eclipse.jetty.server.session.SessionHandler;
import org.hibernate.SessionFactory;
import com.codahale.metrics.MetricRegistry;
import com.commafeed.CommaFeedConfiguration.CacheType;
import com.commafeed.backend.HttpGetter;
import com.commafeed.backend.cache.CacheService;
import com.commafeed.backend.cache.NoopCacheService;
import com.commafeed.backend.cache.RedisCacheService;
import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.dao.FeedEntryContentDAO;
import com.commafeed.backend.dao.FeedEntryDAO;
import com.commafeed.backend.dao.FeedEntryStatusDAO;
import com.commafeed.backend.dao.FeedEntryTagDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.dao.UserRoleDAO;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.feed.FaviconFetcher;
import com.commafeed.backend.feed.FeedFetcher;
import com.commafeed.backend.feed.FeedParser;
import com.commafeed.backend.feed.FeedQueues;
import com.commafeed.backend.feed.FeedRefreshTaskGiver; import com.commafeed.backend.feed.FeedRefreshTaskGiver;
import com.commafeed.backend.feed.FeedRefreshUpdater; import com.commafeed.backend.feed.FeedRefreshUpdater;
import com.commafeed.backend.feed.FeedRefreshWorker; import com.commafeed.backend.feed.FeedRefreshWorker;
@@ -53,18 +30,6 @@ import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserRole; import com.commafeed.backend.model.UserRole;
import com.commafeed.backend.model.UserSettings; import com.commafeed.backend.model.UserSettings;
import com.commafeed.backend.opml.OPMLExporter;
import com.commafeed.backend.opml.OPMLImporter;
import com.commafeed.backend.service.DatabaseCleaningService;
import com.commafeed.backend.service.FeedEntryContentService;
import com.commafeed.backend.service.FeedEntryService;
import com.commafeed.backend.service.FeedEntryTagService;
import com.commafeed.backend.service.FeedService;
import com.commafeed.backend.service.FeedSubscriptionService;
import com.commafeed.backend.service.FeedUpdateService;
import com.commafeed.backend.service.MailService;
import com.commafeed.backend.service.PasswordEncryptionService;
import com.commafeed.backend.service.PubSubService;
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.OldStatusesCleanupTask;
@@ -83,6 +48,8 @@ import com.commafeed.frontend.servlet.AnalyticsServlet;
import com.commafeed.frontend.servlet.CustomCssServlet; import com.commafeed.frontend.servlet.CustomCssServlet;
import com.commafeed.frontend.servlet.LogoutServlet; import com.commafeed.frontend.servlet.LogoutServlet;
import com.commafeed.frontend.servlet.NextUnreadServlet; import com.commafeed.frontend.servlet.NextUnreadServlet;
import com.google.inject.Guice;
import com.google.inject.Injector;
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;
@@ -93,7 +60,6 @@ import com.wordnik.swagger.jaxrs.listing.ResourceListingProvider;
import com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader; import com.wordnik.swagger.jaxrs.reader.DefaultJaxrsApiReader;
import com.wordnik.swagger.reader.ClassReaders; import com.wordnik.swagger.reader.ClassReaders;
@Slf4j
public class CommaFeedApplication extends Application<CommaFeedConfiguration> { public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
public static final String USERNAME_ADMIN = "admin"; public static final String USERNAME_ADMIN = "admin";
@@ -102,85 +68,35 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
public static final Date STARTUP_TIME = new Date(); public static final Date STARTUP_TIME = new Date();
private HibernateBundle<CommaFeedConfiguration> hibernateBundle; private HibernateBundle<CommaFeedConfiguration> hibernateBundle;
private MigrationsBundle<CommaFeedConfiguration> migrationsBundle;
@Override @Override
public void initialize(Bootstrap<CommaFeedConfiguration> bootstrap) { public void initialize(Bootstrap<CommaFeedConfiguration> bootstrap) {
hibernateBundle = new HibernateBundle<CommaFeedConfiguration>(AbstractModel.class, Feed.class, FeedCategory.class, FeedEntry.class, bootstrap.addBundle(hibernateBundle = new HibernateBundle<CommaFeedConfiguration>(AbstractModel.class, Feed.class,
FeedEntryContent.class, FeedEntryStatus.class, FeedEntryTag.class, FeedSubscription.class, User.class, UserRole.class, FeedCategory.class, FeedEntry.class, FeedEntryContent.class, FeedEntryStatus.class, FeedEntryTag.class,
UserSettings.class) { FeedSubscription.class, User.class, UserRole.class, UserSettings.class) {
@Override @Override
public DataSourceFactory getDataSourceFactory(CommaFeedConfiguration configuration) { public DataSourceFactory getDataSourceFactory(CommaFeedConfiguration configuration) {
return configuration.getDatabase(); return configuration.getDatabase();
} }
}; });
bootstrap.addBundle(hibernateBundle);
migrationsBundle = new MigrationsBundle<CommaFeedConfiguration>() { bootstrap.addBundle(new MigrationsBundle<CommaFeedConfiguration>() {
@Override @Override
public DataSourceFactory getDataSourceFactory(CommaFeedConfiguration configuration) { public DataSourceFactory getDataSourceFactory(CommaFeedConfiguration configuration) {
return configuration.getDatabase(); return configuration.getDatabase();
} }
}; });
bootstrap.addBundle(migrationsBundle);
bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html")); bootstrap.addBundle(new AssetsBundle("/assets/", "/", "index.html"));
} }
@Override @Override
public void run(CommaFeedConfiguration config, Environment environment) throws Exception { public void run(CommaFeedConfiguration config, Environment environment) throws Exception {
// configure context path
environment.getApplicationContext().setContextPath(config.getApplicationSettings().getContextPath()); environment.getApplicationContext().setContextPath(config.getApplicationSettings().getContextPath());
MetricRegistry metrics = environment.metrics(); // guice init
SessionFactory sessionFactory = hibernateBundle.getSessionFactory(); Injector injector = Guice.createInjector(new CommaFeedModule(hibernateBundle.getSessionFactory(), config, environment.metrics()));
CacheService cacheService = config.getApplicationSettings().getCache() == CacheType.NOOP ? new NoopCacheService()
: new RedisCacheService();
log.info("using cache {}", cacheService.getClass());
// DAOs
FeedCategoryDAO feedCategoryDAO = new FeedCategoryDAO(sessionFactory);
FeedDAO feedDAO = new FeedDAO(sessionFactory);
FeedEntryContentDAO feedEntryContentDAO = new FeedEntryContentDAO(sessionFactory);
FeedEntryDAO feedEntryDAO = new FeedEntryDAO(sessionFactory);
FeedEntryTagDAO feedEntryTagDAO = new FeedEntryTagDAO(sessionFactory);
FeedSubscriptionDAO feedSubscriptionDAO = new FeedSubscriptionDAO(sessionFactory);
UserDAO userDAO = new UserDAO(sessionFactory);
UserRoleDAO userRoleDAO = new UserRoleDAO(sessionFactory);
UserSettingsDAO userSettingsDAO = new UserSettingsDAO(sessionFactory);
FeedEntryStatusDAO feedEntryStatusDAO = new FeedEntryStatusDAO(sessionFactory, feedEntryDAO, feedEntryTagDAO, config);
// Queuing system
FeedQueues queues = new FeedQueues(feedDAO, config, metrics);
// Services
DatabaseCleaningService cleaningService = new DatabaseCleaningService(sessionFactory, feedDAO, feedEntryDAO, feedEntryContentDAO,
feedEntryStatusDAO);
FeedEntryContentService feedEntryContentService = new FeedEntryContentService(feedEntryContentDAO);
FeedEntryService feedEntryService = new FeedEntryService(feedSubscriptionDAO, feedEntryDAO, feedEntryStatusDAO, cacheService);
FeedEntryTagService feedEntryTagService = new FeedEntryTagService(feedEntryDAO, feedEntryTagDAO);
FeedService feedService = new FeedService(feedDAO);
FeedSubscriptionService feedSubscriptionService = new FeedSubscriptionService(feedEntryStatusDAO, feedSubscriptionDAO, feedService,
queues, cacheService, config);
FeedUpdateService feedUpdateService = new FeedUpdateService(feedEntryDAO, feedEntryContentService);
MailService mailService = new MailService(config);
PasswordEncryptionService encryptionService = new PasswordEncryptionService();
PubSubService pubSubService = new PubSubService(config, queues);
UserService userService = new UserService(feedCategoryDAO, userDAO, userSettingsDAO, feedSubscriptionService, encryptionService,
config);
StartupService startupService = new StartupService(sessionFactory, userDAO, userService);
OPMLImporter opmlImporter = new OPMLImporter(feedCategoryDAO, feedSubscriptionService, cacheService);
OPMLExporter opmlExporter = new OPMLExporter(feedCategoryDAO, feedSubscriptionDAO);
// Feed fetching/parsing
HttpGetter httpGetter = new HttpGetter(config);
FeedParser feedParser = new FeedParser();
FaviconFetcher faviconFetcher = new FaviconFetcher(httpGetter);
FeedFetcher feedFetcher = new FeedFetcher(feedParser, httpGetter);
FeedRefreshUpdater feedUpdater = new FeedRefreshUpdater(sessionFactory, feedUpdateService, pubSubService, queues, config, metrics,
feedSubscriptionDAO, cacheService);
FeedRefreshWorker feedWorker = new FeedRefreshWorker(feedUpdater, feedFetcher, queues, config, metrics);
FeedRefreshTaskGiver taskGiver = new FeedRefreshTaskGiver(sessionFactory, queues, feedDAO, feedWorker, config, metrics);
// Auth/session management // Auth/session management
HashSessionManager sessionManager = new HashSessionManager(); HashSessionManager sessionManager = new HashSessionManager();
@@ -198,46 +114,36 @@ public class CommaFeedApplication extends Application<CommaFeedConfiguration> {
sessionManager.setScavengePeriod((int) TimeUnit.MINUTES.toSeconds(5)); sessionManager.setScavengePeriod((int) TimeUnit.MINUTES.toSeconds(5));
environment.servlets().setSessionHandler(new SessionHandler(sessionManager)); environment.servlets().setSessionHandler(new SessionHandler(sessionManager));
environment.jersey().register(new SecurityCheckUserServiceProvider(userService)); environment.jersey().register(new SecurityCheckUserServiceProvider(injector.getInstance(UserService.class)));
environment.jersey().register(SecurityCheckProvider.class); environment.jersey().register(SecurityCheckProvider.class);
environment.jersey().register(HttpSessionProvider.class); environment.jersey().register(HttpSessionProvider.class);
// REST resources // REST resources
environment.jersey().setUrlPattern("/rest/*"); environment.jersey().setUrlPattern("/rest/*");
environment.jersey().register(new AdminREST(userDAO, userRoleDAO, userService, encryptionService, config, metrics)); environment.jersey().register(injector.getInstance(AdminREST.class));
environment.jersey().register( environment.jersey().register(injector.getInstance(CategoryREST.class));
new CategoryREST(feedCategoryDAO, feedEntryStatusDAO, feedSubscriptionDAO, feedEntryService, feedSubscriptionService, environment.jersey().register(injector.getInstance(EntryREST.class));
cacheService, config)); environment.jersey().register(injector.getInstance(FeedREST.class));
environment.jersey().register(new EntryREST(feedEntryTagDAO, feedEntryService, feedEntryTagService)); environment.jersey().register(injector.getInstance(PubSubHubbubCallbackREST.class));
environment.jersey().register( environment.jersey().register(injector.getInstance(ServerREST.class));
new FeedREST(feedSubscriptionDAO, feedCategoryDAO, feedEntryStatusDAO, faviconFetcher, feedFetcher, feedEntryService, environment.jersey().register(injector.getInstance(UserREST.class));
feedSubscriptionService, queues, opmlImporter, opmlExporter, cacheService, config));
environment.jersey().register(new PubSubHubbubCallbackREST(feedDAO, feedParser, queues, config, metrics));
environment.jersey().register(new ServerREST(httpGetter, config));
environment.jersey().register(
new UserREST(userDAO, userRoleDAO, userSettingsDAO, userService, encryptionService, mailService, config));
// Servlets // Servlets
NextUnreadServlet nextUnreadServlet = new NextUnreadServlet(sessionFactory, feedSubscriptionDAO, feedEntryStatusDAO, environment.servlets().addServlet("next", injector.getInstance(NextUnreadServlet.class)).addMapping("/next");
feedCategoryDAO, userService, config); environment.servlets().addServlet("logout", injector.getInstance(LogoutServlet.class)).addMapping("/logout");
LogoutServlet logoutServlet = new LogoutServlet(config); environment.servlets().addServlet("customCss", injector.getInstance(CustomCssServlet.class)).addMapping("/custom_css.css");
CustomCssServlet customCssServlet = new CustomCssServlet(sessionFactory, userSettingsDAO, userService); environment.servlets().addServlet("analytics.js", injector.getInstance(AnalyticsServlet.class)).addMapping("/analytics.js");
AnalyticsServlet analyticsServlet = new AnalyticsServlet(config);
environment.servlets().addServlet("next", nextUnreadServlet).addMapping("/next");
environment.servlets().addServlet("logout", logoutServlet).addMapping("/logout");
environment.servlets().addServlet("customCss", customCssServlet).addMapping("/custom_css.css");
environment.servlets().addServlet("analytics.js", analyticsServlet).addMapping("/analytics.js");
// Tasks // Tasks
SchedulingService schedulingService = new SchedulingService(); SchedulingService schedulingService = new SchedulingService();
schedulingService.register(new OldStatusesCleanupTask(config, cleaningService)); schedulingService.register(injector.getInstance(OldStatusesCleanupTask.class));
schedulingService.register(new OrphansCleanupTask(cleaningService)); schedulingService.register(injector.getInstance(OrphansCleanupTask.class));
// Managed objects // Managed objects
environment.lifecycle().manage(startupService); environment.lifecycle().manage(injector.getInstance(StartupService.class));
environment.lifecycle().manage(taskGiver); environment.lifecycle().manage(injector.getInstance(FeedRefreshTaskGiver.class));
environment.lifecycle().manage(feedWorker); environment.lifecycle().manage(injector.getInstance(FeedRefreshWorker.class));
environment.lifecycle().manage(feedUpdater); environment.lifecycle().manage(injector.getInstance(FeedRefreshUpdater.class));
environment.lifecycle().manage(schedulingService); environment.lifecycle().manage(schedulingService);
// Swagger // Swagger

View File

@@ -0,0 +1,37 @@
package com.commafeed;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.SessionFactory;
import com.codahale.metrics.MetricRegistry;
import com.commafeed.CommaFeedConfiguration.CacheType;
import com.commafeed.backend.cache.CacheService;
import com.commafeed.backend.cache.NoopCacheService;
import com.commafeed.backend.cache.RedisCacheService;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
@RequiredArgsConstructor
@Slf4j
public class CommaFeedModule extends AbstractModule {
@Getter(onMethod = @__({ @Provides }))
private final SessionFactory sessionFactory;
@Getter(onMethod = @__({ @Provides }))
private final CommaFeedConfiguration config;
@Getter(onMethod = @__({ @Provides }))
private final MetricRegistry metrics;
@Override
protected void configure() {
CacheService cacheService = config.getApplicationSettings().getCache() == CacheType.NOOP ? new NoopCacheService()
: new RedisCacheService();
log.info("using cache {}", cacheService.getClass());
bind(CacheService.class).toInstance(cacheService);
}
}

View File

@@ -8,11 +8,14 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.net.ssl.KeyManager; import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext; import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager; import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager; import javax.net.ssl.X509TrustManager;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
@@ -51,6 +54,8 @@ import com.commafeed.CommaFeedConfiguration;
* *
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class HttpGetter { public class HttpGetter {
private static final String ACCEPT_LANGUAGE = "en"; private static final String ACCEPT_LANGUAGE = "en";
@@ -93,7 +98,7 @@ public class HttpGetter {
} }
} }
private final String userAgent; private String userAgent;
public HttpGetter(CommaFeedConfiguration config) { public HttpGetter(CommaFeedConfiguration config) {
this.userAgent = String.format("CommaFeed/%s (https://www.commafeed.com)", config.getVersion()); this.userAgent = String.format("CommaFeed/%s (https://www.commafeed.com)", config.getVersion());

View File

@@ -2,6 +2,9 @@ package com.commafeed.backend.dao;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
@@ -12,10 +15,12 @@ import com.commafeed.backend.model.User;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.mysema.query.types.Predicate; import com.mysema.query.types.Predicate;
@Singleton
public class FeedCategoryDAO extends GenericDAO<FeedCategory> { public class FeedCategoryDAO extends GenericDAO<FeedCategory> {
private QFeedCategory category = QFeedCategory.feedCategory; private QFeedCategory category = QFeedCategory.feedCategory;
@Inject
public FeedCategoryDAO(SessionFactory sessionFactory) { public FeedCategoryDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.dao;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
@@ -15,10 +18,12 @@ import com.google.common.collect.Iterables;
import com.mysema.query.BooleanBuilder; import com.mysema.query.BooleanBuilder;
import com.mysema.query.jpa.hibernate.HibernateQuery; import com.mysema.query.jpa.hibernate.HibernateQuery;
@Singleton
public class FeedDAO extends GenericDAO<Feed> { public class FeedDAO extends GenericDAO<Feed> {
private QFeed feed = QFeed.feed; private QFeed feed = QFeed.feed;
@Inject
public FeedDAO(SessionFactory sessionFactory) { public FeedDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -2,6 +2,9 @@ package com.commafeed.backend.dao;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.FeedEntryContent; import com.commafeed.backend.model.FeedEntryContent;
@@ -9,10 +12,12 @@ import com.commafeed.backend.model.QFeedEntry;
import com.commafeed.backend.model.QFeedEntryContent; import com.commafeed.backend.model.QFeedEntryContent;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@Singleton
public class FeedEntryContentDAO extends GenericDAO<FeedEntryContent> { public class FeedEntryContentDAO extends GenericDAO<FeedEntryContent> {
private QFeedEntryContent content = QFeedEntryContent.feedEntryContent; private QFeedEntryContent content = QFeedEntryContent.feedEntryContent;
@Inject
public FeedEntryContentDAO(SessionFactory sessionFactory) { public FeedEntryContentDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.dao;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
@@ -13,10 +16,12 @@ import com.commafeed.backend.model.QFeedEntry;
import com.commafeed.backend.model.QFeedSubscription; import com.commafeed.backend.model.QFeedSubscription;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@Singleton
public class FeedEntryDAO extends GenericDAO<FeedEntry> { public class FeedEntryDAO extends GenericDAO<FeedEntry> {
private QFeedEntry entry = QFeedEntry.feedEntry; private QFeedEntry entry = QFeedEntry.feedEntry;
@Inject
public FeedEntryDAO(SessionFactory sessionFactory) { public FeedEntryDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -4,6 +4,9 @@ import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.builder.CompareToBuilder; import org.apache.commons.lang.builder.CompareToBuilder;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
@@ -29,6 +32,7 @@ import com.mysema.query.BooleanBuilder;
import com.mysema.query.Tuple; import com.mysema.query.Tuple;
import com.mysema.query.jpa.hibernate.HibernateQuery; import com.mysema.query.jpa.hibernate.HibernateQuery;
@Singleton
public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> { public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
private FeedEntryDAO feedEntryDAO; private FeedEntryDAO feedEntryDAO;
@@ -40,6 +44,7 @@ public class FeedEntryStatusDAO extends GenericDAO<FeedEntryStatus> {
private QFeedEntryContent content = QFeedEntryContent.feedEntryContent; private QFeedEntryContent content = QFeedEntryContent.feedEntryContent;
private QFeedEntryTag entryTag = QFeedEntryTag.feedEntryTag; private QFeedEntryTag entryTag = QFeedEntryTag.feedEntryTag;
@Inject
public FeedEntryStatusDAO(SessionFactory sessionFactory, FeedEntryDAO feedEntryDAO, FeedEntryTagDAO feedEntryTagDAO, public FeedEntryStatusDAO(SessionFactory sessionFactory, FeedEntryDAO feedEntryDAO, FeedEntryTagDAO feedEntryTagDAO,
CommaFeedConfiguration config) { CommaFeedConfiguration config) {
super(sessionFactory); super(sessionFactory);

View File

@@ -2,6 +2,9 @@ package com.commafeed.backend.dao;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry;
@@ -9,10 +12,12 @@ import com.commafeed.backend.model.FeedEntryTag;
import com.commafeed.backend.model.QFeedEntryTag; import com.commafeed.backend.model.QFeedEntryTag;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
@Singleton
public class FeedEntryTagDAO extends GenericDAO<FeedEntryTag> { public class FeedEntryTagDAO extends GenericDAO<FeedEntryTag> {
private QFeedEntryTag tag = QFeedEntryTag.feedEntryTag; private QFeedEntryTag tag = QFeedEntryTag.feedEntryTag;
@Inject
public FeedEntryTagDAO(SessionFactory sessionFactory) { public FeedEntryTagDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -2,6 +2,9 @@ package com.commafeed.backend.dao;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
@@ -15,10 +18,12 @@ import com.google.common.collect.Iterables;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.mysema.query.jpa.hibernate.HibernateQuery; import com.mysema.query.jpa.hibernate.HibernateQuery;
@Singleton
public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> { public class FeedSubscriptionDAO extends GenericDAO<FeedSubscription> {
private QFeedSubscription sub = QFeedSubscription.feedSubscription; private QFeedSubscription sub = QFeedSubscription.feedSubscription;
@Inject
public FeedSubscriptionDAO(SessionFactory sessionFactory) { public FeedSubscriptionDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -1,15 +1,20 @@
package com.commafeed.backend.dao; package com.commafeed.backend.dao;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.QUser; import com.commafeed.backend.model.QUser;
import com.commafeed.backend.model.QUserRole; import com.commafeed.backend.model.QUserRole;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
@Singleton
public class UserDAO extends GenericDAO<User> { public class UserDAO extends GenericDAO<User> {
private QUser user = QUser.user; private QUser user = QUser.user;
@Inject
public UserDAO(SessionFactory sessionFactory) { public UserDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.dao;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.QUserRole; import com.commafeed.backend.model.QUserRole;
@@ -11,10 +14,12 @@ import com.commafeed.backend.model.UserRole;
import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.model.UserRole.Role;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
@Singleton
public class UserRoleDAO extends GenericDAO<UserRole> { public class UserRoleDAO extends GenericDAO<UserRole> {
private QUserRole role = QUserRole.userRole; private QUserRole role = QUserRole.userRole;
@Inject
public UserRoleDAO(SessionFactory sessionFactory) { public UserRoleDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -1,15 +1,20 @@
package com.commafeed.backend.dao; package com.commafeed.backend.dao;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import com.commafeed.backend.model.QUserSettings; import com.commafeed.backend.model.QUserSettings;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserSettings; import com.commafeed.backend.model.UserSettings;
@Singleton
public class UserSettingsDAO extends GenericDAO<UserSettings> { public class UserSettingsDAO extends GenericDAO<UserSettings> {
private QUserSettings settings = QUserSettings.userSettings; private QUserSettings settings = QUserSettings.userSettings;
@Inject
public UserSettingsDAO(SessionFactory sessionFactory) { public UserSettingsDAO(SessionFactory sessionFactory) {
super(sessionFactory); super(sessionFactory);
} }

View File

@@ -3,7 +3,10 @@ package com.commafeed.backend.feed;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import lombok.AllArgsConstructor; import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -19,7 +22,8 @@ import com.commafeed.backend.HttpGetter.HttpResult;
* *
*/ */
@Slf4j @Slf4j
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FaviconFetcher { public class FaviconFetcher {
private static List<String> ICON_MIMETYPE_BLACKLIST = Arrays.asList("application/xml", "text/html"); private static List<String> ICON_MIMETYPE_BLACKLIST = Arrays.asList("application/xml", "text/html");

View File

@@ -3,7 +3,10 @@ package com.commafeed.backend.feed;
import java.io.IOException; import java.io.IOException;
import java.util.Date; import java.util.Date;
import lombok.AllArgsConstructor; import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.StringUtils; import org.apache.commons.codec.binary.StringUtils;
@@ -20,7 +23,8 @@ import com.commafeed.backend.model.Feed;
import com.rometools.rome.io.FeedException; import com.rometools.rome.io.FeedException;
@Slf4j @Slf4j
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedFetcher { public class FeedFetcher {
private final FeedParser parser; private final FeedParser parser;

View File

@@ -5,6 +5,10 @@ import java.text.DateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -29,6 +33,8 @@ import com.rometools.rome.io.FeedException;
import com.rometools.rome.io.SyndFeedInput; import com.rometools.rome.io.SyndFeedInput;
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedParser { public class FeedParser {
private static final String ATOM_10_URI = "http://www.w3.org/2005/Atom"; private static final String ATOM_10_URI = "http://www.w3.org/2005/Atom";

View File

@@ -6,6 +6,7 @@ import java.util.Map;
import java.util.Queue; import java.util.Queue;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.lang.time.DateUtils; import org.apache.commons.lang.time.DateUtils;
@@ -20,6 +21,7 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.google.common.collect.Queues; import com.google.common.collect.Queues;
@Singleton
public class FeedQueues { public class FeedQueues {
private final FeedDAO feedDAO; private final FeedDAO feedDAO;

View File

@@ -6,6 +6,7 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -22,6 +23,7 @@ import com.commafeed.backend.dao.UnitOfWork;
* *
*/ */
@Slf4j @Slf4j
@Singleton
public class FeedRefreshTaskGiver implements Managed { public class FeedRefreshTaskGiver implements Managed {
private final SessionFactory sessionFactory; private final SessionFactory sessionFactory;

View File

@@ -9,6 +9,9 @@ import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -36,6 +39,7 @@ import com.google.common.collect.Lists;
import com.google.common.util.concurrent.Striped; import com.google.common.util.concurrent.Striped;
@Slf4j @Slf4j
@Singleton
public class FeedRefreshUpdater implements Managed { public class FeedRefreshUpdater implements Managed {
private final SessionFactory sessionFactory; private final SessionFactory sessionFactory;
@@ -54,6 +58,7 @@ public class FeedRefreshUpdater implements Managed {
private Meter feedUpdated; private Meter feedUpdated;
private Meter entryInserted; private Meter entryInserted;
@Inject
public FeedRefreshUpdater(SessionFactory sessionFactory, FeedUpdateService feedUpdateService, PubSubService pubSubService, public FeedRefreshUpdater(SessionFactory sessionFactory, FeedUpdateService feedUpdateService, PubSubService pubSubService,
FeedQueues queues, CommaFeedConfiguration config, MetricRegistry metrics, FeedSubscriptionDAO feedSubscriptionDAO, FeedQueues queues, CommaFeedConfiguration config, MetricRegistry metrics, FeedSubscriptionDAO feedSubscriptionDAO,
CacheService cache) { CacheService cache) {

View File

@@ -5,6 +5,9 @@ import io.dropwizard.lifecycle.Managed;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -24,6 +27,7 @@ import com.google.common.base.Optional;
* *
*/ */
@Slf4j @Slf4j
@Singleton
public class FeedRefreshWorker implements Managed { public class FeedRefreshWorker implements Managed {
private final FeedRefreshUpdater feedRefreshUpdater; private final FeedRefreshUpdater feedRefreshUpdater;
@@ -32,6 +36,7 @@ public class FeedRefreshWorker implements Managed {
private final CommaFeedConfiguration config; private final CommaFeedConfiguration config;
private final FeedRefreshExecutor pool; private final FeedRefreshExecutor pool;
@Inject
public FeedRefreshWorker(FeedRefreshUpdater feedRefreshUpdater, FeedFetcher fetcher, FeedQueues queues, CommaFeedConfiguration config, public FeedRefreshWorker(FeedRefreshUpdater feedRefreshUpdater, FeedFetcher fetcher, FeedQueues queues, CommaFeedConfiguration config,
MetricRegistry metrics) { MetricRegistry metrics) {
this.feedRefreshUpdater = feedRefreshUpdater; this.feedRefreshUpdater = feedRefreshUpdater;

View File

@@ -3,7 +3,10 @@ package com.commafeed.backend.opml;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import lombok.AllArgsConstructor; import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO;
@@ -14,7 +17,8 @@ import com.rometools.opml.feed.opml.Attribute;
import com.rometools.opml.feed.opml.Opml; import com.rometools.opml.feed.opml.Opml;
import com.rometools.opml.feed.opml.Outline; import com.rometools.opml.feed.opml.Outline;
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class OPMLExporter { public class OPMLExporter {
private final FeedCategoryDAO feedCategoryDAO; private final FeedCategoryDAO feedCategoryDAO;

View File

@@ -3,6 +3,10 @@ package com.commafeed.backend.opml;
import java.io.StringReader; import java.io.StringReader;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@@ -20,18 +24,13 @@ import com.rometools.opml.feed.opml.Outline;
import com.rometools.rome.io.WireFeedInput; import com.rometools.rome.io.WireFeedInput;
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class OPMLImporter { public class OPMLImporter {
private FeedCategoryDAO feedCategoryDAO; private final FeedCategoryDAO feedCategoryDAO;
private FeedSubscriptionService feedSubscriptionService; private final FeedSubscriptionService feedSubscriptionService;
private CacheService cache; private final CacheService cache;
public OPMLImporter(FeedCategoryDAO feedCategoryDAO, FeedSubscriptionService feedSubscriptionService, CacheService cache) {
super();
this.feedCategoryDAO = feedCategoryDAO;
this.feedSubscriptionService = feedSubscriptionService;
this.cache = cache;
}
public void importOpml(User user, String xml) { public void importOpml(User user, String xml) {
xml = xml.substring(xml.indexOf('<')); xml = xml.substring(xml.indexOf('<'));

View File

@@ -5,6 +5,9 @@ import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -23,7 +26,8 @@ import com.commafeed.backend.model.FeedEntryStatus;
* *
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class DatabaseCleaningService { public class DatabaseCleaningService {
private static final int BATCH_SIZE = 100; private static final int BATCH_SIZE = 100;

View File

@@ -1,5 +1,8 @@
package com.commafeed.backend.service; package com.commafeed.backend.service;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -9,7 +12,8 @@ import com.commafeed.backend.dao.FeedEntryContentDAO;
import com.commafeed.backend.feed.FeedUtils; import com.commafeed.backend.feed.FeedUtils;
import com.commafeed.backend.model.FeedEntryContent; import com.commafeed.backend.model.FeedEntryContent;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedEntryContentService { public class FeedEntryContentService {
private final FeedEntryContentDAO feedEntryContentDAO; private final FeedEntryContentDAO feedEntryContentDAO;

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.service;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import com.commafeed.backend.cache.CacheService; import com.commafeed.backend.cache.CacheService;
@@ -15,7 +18,8 @@ import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedEntryService { public class FeedEntryService {
private final FeedSubscriptionDAO feedSubscriptionDAO; private final FeedSubscriptionDAO feedSubscriptionDAO;

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import com.commafeed.backend.dao.FeedEntryDAO; import com.commafeed.backend.dao.FeedEntryDAO;
@@ -14,7 +17,8 @@ import com.google.common.base.Function;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedEntryTagService { public class FeedEntryTagService {
private final FeedEntryDAO feedEntryDAO; private final FeedEntryDAO feedEntryDAO;

View File

@@ -2,6 +2,9 @@ package com.commafeed.backend.service;
import java.util.Date; import java.util.Date;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -10,7 +13,8 @@ import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.feed.FeedUtils; import com.commafeed.backend.feed.FeedUtils;
import com.commafeed.backend.model.Feed; import com.commafeed.backend.model.Feed;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedService { public class FeedService {
private final FeedDAO feedDAO; private final FeedDAO feedDAO;

View File

@@ -3,6 +3,9 @@ package com.commafeed.backend.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -23,7 +26,8 @@ import com.commafeed.frontend.model.UnreadCount;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedSubscriptionService { public class FeedSubscriptionService {
@SuppressWarnings("serial") @SuppressWarnings("serial")

View File

@@ -2,7 +2,10 @@ package com.commafeed.backend.service;
import java.util.Date; import java.util.Date;
import lombok.AllArgsConstructor; import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -11,7 +14,8 @@ import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedEntry; import com.commafeed.backend.model.FeedEntry;
import com.commafeed.backend.model.FeedEntryContent; import com.commafeed.backend.model.FeedEntryContent;
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedUpdateService { public class FeedUpdateService {
private final FeedEntryDAO feedEntryDAO; private final FeedEntryDAO feedEntryDAO;

View File

@@ -2,6 +2,8 @@ package com.commafeed.backend.service;
import java.util.Properties; import java.util.Properties;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.mail.Authenticator; import javax.mail.Authenticator;
import javax.mail.Message; import javax.mail.Message;
import javax.mail.PasswordAuthentication; import javax.mail.PasswordAuthentication;
@@ -20,7 +22,8 @@ import com.commafeed.backend.model.User;
* Mailing service * Mailing service
* *
*/ */
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class MailService { public class MailService {
private final CommaFeedConfiguration config; private final CommaFeedConfiguration config;

View File

@@ -9,7 +9,10 @@ import java.security.spec.KeySpec;
import javax.crypto.SecretKey; import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory; import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEKeySpec;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -17,6 +20,8 @@ import org.apache.commons.lang.StringUtils;
// taken from http://www.javacodegeeks.com/2012/05/secure-password-storage-donts-dos-and.html // taken from http://www.javacodegeeks.com/2012/05/secure-password-storage-donts-dos-and.html
@SuppressWarnings("serial") @SuppressWarnings("serial")
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class PasswordEncryptionService implements Serializable { public class PasswordEncryptionService implements Serializable {
public boolean authenticate(String attemptedPassword, byte[] encryptedPassword, byte[] salt) { public boolean authenticate(String attemptedPassword, byte[] encryptedPassword, byte[] salt) {

View File

@@ -2,6 +2,8 @@ package com.commafeed.backend.service;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -31,7 +33,8 @@ import com.google.common.collect.Lists;
* *
*/ */
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class PubSubService { public class PubSubService {
private final CommaFeedConfiguration config; private final CommaFeedConfiguration config;

View File

@@ -5,6 +5,8 @@ import io.dropwizard.lifecycle.Managed;
import java.sql.Connection; import java.sql.Connection;
import java.util.Arrays; import java.util.Arrays;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.sql.DataSource; import javax.sql.DataSource;
import liquibase.Liquibase; import liquibase.Liquibase;
@@ -15,6 +17,7 @@ import liquibase.database.jvm.JdbcConnection;
import liquibase.resource.ClassLoaderResourceAccessor; import liquibase.resource.ClassLoaderResourceAccessor;
import liquibase.resource.ResourceAccessor; import liquibase.resource.ResourceAccessor;
import liquibase.structure.DatabaseObject; import liquibase.structure.DatabaseObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
@@ -28,17 +31,13 @@ import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.model.UserRole.Role; import com.commafeed.backend.model.UserRole.Role;
@Slf4j @Slf4j
@RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class StartupService implements Managed { public class StartupService implements Managed {
private SessionFactory sessionFactory; private final SessionFactory sessionFactory;
private UserDAO userDAO; private final UserDAO userDAO;
private UserService userService; private final UserService userService;
public StartupService(SessionFactory sessionFactory, UserDAO userDAO, UserService userService) {
this.sessionFactory = sessionFactory;
this.userDAO = userDAO;
this.userService = userService;
}
@Override @Override
public void start() throws Exception { public void start() throws Exception {

View File

@@ -4,6 +4,8 @@ import java.util.Collection;
import java.util.Date; import java.util.Date;
import java.util.UUID; import java.util.UUID;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -22,7 +24,8 @@ import com.commafeed.backend.model.UserRole.Role;
import com.google.common.base.Optional; import com.google.common.base.Optional;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class UserService { public class UserService {
private static final String SESSION_KEY_USER = "user"; private static final String SESSION_KEY_USER = "user";

View File

@@ -3,13 +3,17 @@ package com.commafeed.backend.task;
import java.util.Date; import java.util.Date;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import com.commafeed.CommaFeedConfiguration; import com.commafeed.CommaFeedConfiguration;
import com.commafeed.backend.service.DatabaseCleaningService; import com.commafeed.backend.service.DatabaseCleaningService;
import com.commafeed.backend.task.SchedulingService.ScheduledTask; import com.commafeed.backend.task.SchedulingService.ScheduledTask;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class OldStatusesCleanupTask implements ScheduledTask { public class OldStatusesCleanupTask implements ScheduledTask {
private final CommaFeedConfiguration config; private final CommaFeedConfiguration config;

View File

@@ -2,12 +2,16 @@ package com.commafeed.backend.task;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import com.commafeed.backend.service.DatabaseCleaningService; import com.commafeed.backend.service.DatabaseCleaningService;
import com.commafeed.backend.task.SchedulingService.ScheduledTask; import com.commafeed.backend.task.SchedulingService.ScheduledTask;
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class OrphansCleanupTask implements ScheduledTask { public class OrphansCleanupTask implements ScheduledTask {
private final DatabaseCleaningService cleaner; private final DatabaseCleaningService cleaner;

View File

@@ -5,6 +5,8 @@ import io.dropwizard.hibernate.UnitOfWork;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.POST; import javax.ws.rs.POST;
@@ -15,7 +17,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -44,7 +46,8 @@ import com.wordnik.swagger.annotations.ApiParam;
@Api(value = "/admin", description = "Operations about application administration") @Api(value = "/admin", description = "Operations about application administration")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class AdminREST { public class AdminREST {
private final UserDAO userDAO; private final UserDAO userDAO;

View File

@@ -10,6 +10,8 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue; import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET; import javax.ws.rs.GET;
@@ -21,7 +23,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
@@ -69,7 +71,8 @@ import com.wordnik.swagger.annotations.ApiParam;
@Slf4j @Slf4j
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class CategoryREST { public class CategoryREST {
public static final String ALL = "all"; public static final String ALL = "all";

View File

@@ -4,6 +4,8 @@ import io.dropwizard.hibernate.UnitOfWork;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.POST; import javax.ws.rs.POST;
@@ -12,7 +14,7 @@ import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import com.commafeed.backend.dao.FeedEntryTagDAO; import com.commafeed.backend.dao.FeedEntryTagDAO;
import com.commafeed.backend.model.User; import com.commafeed.backend.model.User;
@@ -32,7 +34,8 @@ import com.wordnik.swagger.annotations.ApiParam;
@Api(value = "/entry", description = "Operations about feed entries") @Api(value = "/entry", description = "Operations about feed entries")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class EntryREST { public class EntryREST {
private final FeedEntryTagDAO feedEntryTagDAO; private final FeedEntryTagDAO feedEntryTagDAO;

View File

@@ -12,6 +12,8 @@ import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue; import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET; import javax.ws.rs.GET;
@@ -27,7 +29,7 @@ import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder; import javax.ws.rs.core.Response.ResponseBuilder;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
@@ -86,7 +88,8 @@ import com.wordnik.swagger.annotations.ApiParam;
@Slf4j @Slf4j
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class FeedREST { public class FeedREST {
private final FeedSubscriptionDAO feedSubscriptionDAO; private final FeedSubscriptionDAO feedSubscriptionDAO;

View File

@@ -5,6 +5,8 @@ import io.dropwizard.hibernate.UnitOfWork;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.GET; import javax.ws.rs.GET;
@@ -35,7 +37,8 @@ import com.google.common.base.Preconditions;
@Path("/push") @Path("/push")
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class PubSubHubbubCallbackREST { public class PubSubHubbubCallbackREST {
@Context @Context

View File

@@ -2,6 +2,8 @@ package com.commafeed.frontend.resource;
import io.dropwizard.hibernate.UnitOfWork; import io.dropwizard.hibernate.UnitOfWork;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.ws.rs.Consumes; import javax.ws.rs.Consumes;
import javax.ws.rs.GET; import javax.ws.rs.GET;
import javax.ws.rs.Path; import javax.ws.rs.Path;
@@ -11,7 +13,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@@ -29,7 +31,8 @@ import com.wordnik.swagger.annotations.ApiOperation;
@Api(value = "/server", description = "Operations about server infos") @Api(value = "/server", description = "Operations about server infos")
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class ServerREST { public class ServerREST {
private final HttpGetter httpGetter; private final HttpGetter httpGetter;

View File

@@ -9,6 +9,8 @@ import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.UUID; import java.util.UUID;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolation;
import javax.validation.Valid; import javax.validation.Valid;
@@ -22,7 +24,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response; import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status; import javax.ws.rs.core.Response.Status;
import lombok.AllArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.codec.digest.DigestUtils;
@@ -66,7 +68,8 @@ import com.wordnik.swagger.annotations.ApiParam;
@Produces(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON)
@Slf4j @Slf4j
@AllArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class UserREST { public class UserREST {
private final UserDAO userDAO; private final UserDAO userDAO;

View File

@@ -2,6 +2,8 @@ package com.commafeed.frontend.servlet;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -12,11 +14,13 @@ import org.apache.commons.lang.StringUtils;
import com.commafeed.CommaFeedConfiguration; import com.commafeed.CommaFeedConfiguration;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@Singleton
public class AnalyticsServlet extends HttpServlet { public class AnalyticsServlet extends HttpServlet {
private CommaFeedConfiguration config; private final CommaFeedConfiguration config;
private String script; private final String script;
@Inject
public AnalyticsServlet(CommaFeedConfiguration config) { public AnalyticsServlet(CommaFeedConfiguration config) {
this.config = config; this.config = config;

View File

@@ -2,6 +2,8 @@ package com.commafeed.frontend.servlet;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -19,7 +21,8 @@ import com.commafeed.backend.service.UserService;
import com.google.common.base.Optional; import com.google.common.base.Optional;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class CustomCssServlet extends HttpServlet { public class CustomCssServlet extends HttpServlet {
private final SessionFactory sessionFactory; private final SessionFactory sessionFactory;

View File

@@ -2,6 +2,8 @@ package com.commafeed.frontend.servlet;
import java.io.IOException; import java.io.IOException;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -12,7 +14,8 @@ import lombok.RequiredArgsConstructor;
import com.commafeed.CommaFeedConfiguration; import com.commafeed.CommaFeedConfiguration;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class LogoutServlet extends HttpServlet { public class LogoutServlet extends HttpServlet {
private final CommaFeedConfiguration config; private final CommaFeedConfiguration config;

View File

@@ -3,6 +3,8 @@ package com.commafeed.frontend.servlet;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.servlet.ServletException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
@@ -29,7 +31,8 @@ import com.google.common.base.Optional;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
@SuppressWarnings("serial") @SuppressWarnings("serial")
@RequiredArgsConstructor @RequiredArgsConstructor(onConstructor = @__({ @Inject }))
@Singleton
public class NextUnreadServlet extends HttpServlet { public class NextUnreadServlet extends HttpServlet {
private static final String PARAM_CATEGORYID = "category"; private static final String PARAM_CATEGORYID = "category";