move injection points where they belong

This commit is contained in:
Athou
2013-07-02 16:10:59 +02:00
parent d2a053a53c
commit beaf39c8e6
10 changed files with 176 additions and 22 deletions

View File

@@ -1,6 +1,7 @@
package com.commafeed.backend;
import java.util.Calendar;
import java.util.List;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject;
@@ -10,6 +11,9 @@ import org.slf4j.LoggerFactory;
import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.dao.FeedEntryDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedSubscription;
public class DatabaseCleaner {
@@ -21,6 +25,9 @@ public class DatabaseCleaner {
@Inject
FeedEntryDAO feedEntryDAO;
@Inject
FeedSubscriptionDAO feedSubscriptionDAO;
public long cleanFeedsWithoutSubscriptions() {
long total = 0;
@@ -48,4 +55,19 @@ public class DatabaseCleaner {
log.info("cleanup done: {} entries deleted", total);
return total;
}
public void mergeFeeds(Feed into, List<Feed> feeds) {
for (Feed feed : feeds) {
if (into.getId().equals(feed.getId())) {
continue;
}
List<FeedSubscription> subs = feedSubscriptionDAO.findByFeed(feed);
for (FeedSubscription sub : subs) {
sub.setFeed(into);
}
feedSubscriptionDAO.saveOrUpdate(subs);
feedDAO.delete(feed);
}
feedDAO.saveOrUpdate(into);
}
}

View File

@@ -1,7 +1,5 @@
package com.commafeed.backend.services;
import java.util.List;
import javax.ejb.Lock;
import javax.ejb.LockType;
import javax.ejb.Singleton;
@@ -13,7 +11,6 @@ import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedSubscription;
@Singleton
public class FeedService {
@@ -39,19 +36,4 @@ public class FeedService {
return feed;
}
public void mergeFeeds(Feed into, List<Feed> feeds) {
for (Feed feed : feeds) {
if (into.getId().equals(feed.getId())) {
continue;
}
List<FeedSubscription> subs = feedSubscriptionDAO.findByFeed(feed);
for (FeedSubscription sub : subs) {
sub.setFeed(into);
}
feedSubscriptionDAO.saveOrUpdate(subs);
feedDAO.delete(feed);
}
feedDAO.saveOrUpdate(into);
}
}

View File

@@ -1,5 +1,6 @@
package com.commafeed.frontend.rest.resources;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Context;
@@ -11,6 +12,7 @@ import javax.ws.rs.core.UriInfo;
import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.model.UserRole.Role;
import com.commafeed.backend.services.ApplicationSettingsService;
import com.commafeed.frontend.SecurityCheck;
import com.commafeed.frontend.model.Entries;
import com.commafeed.frontend.model.request.MarkRequest;
@@ -25,6 +27,9 @@ import com.wordnik.swagger.jaxrs.JaxrsApiReader;
@SecurityCheck(Role.USER)
public abstract class AbstractResourceREST extends AbstractREST {
@Inject
ApplicationSettingsService applicationSettingsService;
@GET
@SecurityCheck(value = Role.NONE)
@ApiOperation(value = "Returns information about API parameters", responseClass = "com.wordnik.swagger.core.Documentation")
@@ -33,7 +38,7 @@ public abstract class AbstractResourceREST extends AbstractREST {
TypeUtil.addAllowablePackage(Entries.class.getPackage().getName());
TypeUtil.addAllowablePackage(MarkRequest.class.getPackage().getName());
String apiVersion = ApiDocumentationREST.API_VERSION;
String swaggerVersion = SwaggerSpec.version();
String basePath = ApiDocumentationREST

View File

@@ -17,13 +17,23 @@ import javax.ws.rs.core.Response.Status;
import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.DatabaseCleaner;
import com.commafeed.backend.MetricsBean;
import com.commafeed.backend.StartupBean;
import com.commafeed.backend.dao.FeedDAO;
import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.dao.UserRoleDAO;
import com.commafeed.backend.feeds.FeedRefreshTaskGiver;
import com.commafeed.backend.feeds.FeedRefreshUpdater;
import com.commafeed.backend.feeds.FeedRefreshWorker;
import com.commafeed.backend.model.ApplicationSettings;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserRole;
import com.commafeed.backend.model.UserRole.Role;
import com.commafeed.backend.services.FeedService;
import com.commafeed.backend.services.PasswordEncryptionService;
import com.commafeed.backend.services.UserService;
import com.commafeed.frontend.SecurityCheck;
import com.commafeed.frontend.model.UserModel;
import com.commafeed.frontend.model.request.FeedMergeRequest;
@@ -44,6 +54,36 @@ public class AdminREST extends AbstractResourceREST {
@Inject
FeedService feedService;
@Inject
UserService userService;
@Inject
UserDAO userDAO;
@Inject
UserRoleDAO userRoleDAO;
@Inject
FeedDAO feedDAO;
@Inject
MetricsBean metricsBean;
@Inject
DatabaseCleaner cleaner;
@Inject
FeedRefreshWorker feedRefreshWorker;
@Inject
FeedRefreshUpdater feedRefreshUpdater;
@Inject
FeedRefreshTaskGiver taskGiver;
@Inject
PasswordEncryptionService encryptionService;
@Path("/user/save")
@POST
@ApiOperation(value = "Save or update a user", notes = "Save or update a user. If the id is not specified, a new user will be created")
@@ -233,7 +273,7 @@ public class AdminREST extends AbstractResourceREST {
feeds.add(feed);
}
feedService.mergeFeeds(into, feeds);
cleaner.mergeFeeds(into, feeds);
return Response.ok().build();
}

View File

@@ -1,11 +1,13 @@
package com.commafeed.frontend.rest.resources;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Application;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import com.commafeed.backend.services.ApplicationSettingsService;
import com.commafeed.frontend.model.Entries;
import com.commafeed.frontend.model.request.MarkRequest;
import com.wordnik.swagger.annotations.Api;
@@ -21,6 +23,9 @@ public class ApiDocumentationREST extends AbstractREST {
public static final String API_VERSION = "1.0";
@Inject
ApplicationSettingsService applicationSettingsService;
@GET
@ApiOperation(value = "Returns list of all available api endpoints", responseClass = "List[DocumentationEndPoint]")
public Response getAllApis(@Context Application app) {

View File

@@ -7,6 +7,7 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
@@ -22,6 +23,9 @@ import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedEntryStatusDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.model.FeedCategory;
import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.model.FeedSubscription;
@@ -58,6 +62,15 @@ public class CategoryREST extends AbstractResourceREST {
public static final String ALL = "all";
public static final String STARRED = "starred";
@Inject
FeedEntryStatusDAO feedEntryStatusDAO;
@Inject
FeedCategoryDAO feedCategoryDAO;
@Inject
FeedSubscriptionDAO feedSubscriptionDAO;
@Path("/entries")
@GET
@ApiOperation(value = "Get category entries", notes = "Get a list of category entries", responseClass = "com.commafeed.frontend.model.Entries")

View File

@@ -2,6 +2,7 @@ package com.commafeed.frontend.rest.resources;
import java.util.List;
import javax.inject.Inject;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
@@ -12,7 +13,9 @@ import javax.ws.rs.core.Response.Status;
import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.dao.FeedEntryStatusDAO;
import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.services.FeedEntryService;
import com.commafeed.frontend.model.Entries;
import com.commafeed.frontend.model.Entry;
import com.commafeed.frontend.model.request.MarkRequest;
@@ -27,6 +30,12 @@ import com.wordnik.swagger.annotations.ApiParam;
@Api(value = "/entry", description = "Operations about feed entries")
public class EntryREST extends AbstractResourceREST {
@Inject
FeedEntryService feedEntryService;
@Inject
FeedEntryStatusDAO feedEntryStatusDAO;
@Path("/mark")
@POST
@ApiOperation(value = "Mark a feed entry", notes = "Mark a feed entry as read/unread")

View File

@@ -8,6 +8,8 @@ import java.util.Comparator;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
@@ -18,6 +20,7 @@ import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.ResponseBuilder;
@@ -34,14 +37,23 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.commafeed.backend.StartupBean;
import com.commafeed.backend.dao.FeedCategoryDAO;
import com.commafeed.backend.dao.FeedEntryStatusDAO;
import com.commafeed.backend.dao.FeedSubscriptionDAO;
import com.commafeed.backend.feeds.FaviconFetcher;
import com.commafeed.backend.feeds.FeedFetcher;
import com.commafeed.backend.feeds.FeedRefreshTaskGiver;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.backend.feeds.FetchedFeed;
import com.commafeed.backend.feeds.OPMLExporter;
import com.commafeed.backend.feeds.OPMLImporter;
import com.commafeed.backend.model.Feed;
import com.commafeed.backend.model.FeedCategory;
import com.commafeed.backend.model.FeedEntryStatus;
import com.commafeed.backend.model.FeedSubscription;
import com.commafeed.backend.model.UserRole.Role;
import com.commafeed.backend.model.UserSettings.ReadingOrder;
import com.commafeed.backend.services.FeedSubscriptionService;
import com.commafeed.frontend.SecurityCheck;
import com.commafeed.frontend.model.Entries;
import com.commafeed.frontend.model.Entry;
@@ -70,6 +82,39 @@ public class FeedREST extends AbstractResourceREST {
private static Logger log = LoggerFactory.getLogger(FeedREST.class);
@Inject
StartupBean startupBean;
@Inject
FeedCategoryDAO feedCategoryDAO;
@Inject
FaviconFetcher faviconFetcher;
@Inject
FeedSubscriptionDAO feedSubscriptionDAO;
@Inject
FeedSubscriptionService feedSubscriptionService;
@Inject
FeedFetcher feedFetcher;
@Inject
FeedEntryStatusDAO feedEntryStatusDAO;
@Inject
FeedRefreshTaskGiver taskGiver;
@Inject
OPMLImporter opmlImporter;
@Inject
OPMLExporter opmlExporter;
@Context
private HttpServletRequest request;
@Path("/entries")
@GET
@ApiOperation(value = "Get feed entries", notes = "Get a list of feed entries", responseClass = "com.commafeed.frontend.model.Entries")

View File

@@ -1,5 +1,6 @@
package com.commafeed.frontend.rest.resources;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
@@ -7,7 +8,9 @@ import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import com.commafeed.backend.HttpGetter;
import com.commafeed.backend.HttpGetter.HttpResult;
import com.commafeed.backend.StartupBean;
import com.commafeed.backend.feeds.FeedUtils;
import com.commafeed.frontend.model.ServerInfo;
import com.wordnik.swagger.annotations.Api;
@@ -17,6 +20,12 @@ import com.wordnik.swagger.annotations.ApiOperation;
@Api(value = "/server", description = "Operations about server infos")
public class ServerREST extends AbstractResourceREST {
@Inject
StartupBean startupBean;
@Inject
HttpGetter httpGetter;
@Path("/get")
@GET
@ApiOperation(value = "Get server infos", notes = "Get server infos", responseClass = "com.commafeed.frontend.model.ServerInfo")
@@ -37,7 +46,7 @@ public class ServerREST extends AbstractResourceREST {
if (!applicationSettingsService.get().isImageProxyEnabled()) {
return Response.status(Status.FORBIDDEN).build();
}
url = FeedUtils.imageProxyDecoder(url);
try {
HttpResult result = httpGetter.getBinary(url, 20000);

View File

@@ -2,6 +2,7 @@ package com.commafeed.frontend.rest.resources;
import java.util.Arrays;
import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
@@ -11,6 +12,9 @@ import javax.ws.rs.core.Response.Status;
import org.apache.commons.lang.StringUtils;
import com.commafeed.backend.StartupBean;
import com.commafeed.backend.dao.UserDAO;
import com.commafeed.backend.dao.UserRoleDAO;
import com.commafeed.backend.dao.UserSettingsDAO;
import com.commafeed.backend.model.User;
import com.commafeed.backend.model.UserRole;
import com.commafeed.backend.model.UserRole.Role;
@@ -18,6 +22,8 @@ import com.commafeed.backend.model.UserSettings;
import com.commafeed.backend.model.UserSettings.ReadingMode;
import com.commafeed.backend.model.UserSettings.ReadingOrder;
import com.commafeed.backend.model.UserSettings.ViewMode;
import com.commafeed.backend.services.PasswordEncryptionService;
import com.commafeed.backend.services.UserService;
import com.commafeed.frontend.SecurityCheck;
import com.commafeed.frontend.model.Settings;
import com.commafeed.frontend.model.UserModel;
@@ -32,6 +38,24 @@ import com.wordnik.swagger.annotations.ApiParam;
@Api(value = "/user", description = "Operations about the user")
public class UserREST extends AbstractResourceREST {
@Inject
UserDAO userDAO;
@Inject
UserSettingsDAO userSettingsDAO;
@Inject
UserRoleDAO userRoleDAO;
@Inject
StartupBean startupBean;
@Inject
UserService userService;
@Inject
PasswordEncryptionService encryptionService;
@Path("/settings")
@GET
@ApiOperation(value = "Retrieve user settings", notes = "Retrieve user settings", responseClass = "com.commafeed.frontend.model.Settings")
@@ -42,7 +66,7 @@ public class UserREST extends AbstractResourceREST {
// force unread for the moment
// s.setReadingMode(settings.getReadingMode().name());
s.setReadingMode(ReadingMode.unread.name());
s.setReadingOrder(settings.getReadingOrder().name());
s.setViewMode(settings.getViewMode().name());
s.setShowRead(settings.isShowRead());