diff --git a/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java b/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java index c5a57086..109ccacb 100644 --- a/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java +++ b/commafeed-server/src/main/java/com/commafeed/CommaFeedApplication.java @@ -16,9 +16,6 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class CommaFeedApplication { - public static final String USERNAME_ADMIN = "admin"; - public static final String USERNAME_DEMO = "demo"; - private final DatabaseStartupService databaseStartupService; private final FeedRefreshEngine feedRefreshEngine; private final TaskScheduler taskScheduler; diff --git a/commafeed-server/src/main/java/com/commafeed/CommaFeedConstants.java b/commafeed-server/src/main/java/com/commafeed/CommaFeedConstants.java new file mode 100644 index 00000000..5cc5ee60 --- /dev/null +++ b/commafeed-server/src/main/java/com/commafeed/CommaFeedConstants.java @@ -0,0 +1,9 @@ +package com.commafeed; + +import lombok.experimental.UtilityClass; + +@UtilityClass +public class CommaFeedConstants { + public static final String USERNAME_ADMIN = "admin"; + public static final String USERNAME_DEMO = "demo"; +} diff --git a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java index b72366eb..60b46afc 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedEntryStatusDAO.java @@ -25,7 +25,6 @@ import com.commafeed.backend.model.QFeedEntryTag; import com.commafeed.backend.model.User; import com.commafeed.backend.model.UserSettings.ReadingOrder; import com.commafeed.frontend.model.UnreadCount; -import com.google.common.collect.Iterables; import com.querydsl.core.BooleanBuilder; import com.querydsl.core.Tuple; import com.querydsl.jpa.impl.JPAQuery; @@ -49,7 +48,7 @@ public class FeedEntryStatusDAO extends GenericDAO { public FeedEntryStatus getStatus(User user, FeedSubscription sub, FeedEntry entry) { List statuses = query().selectFrom(STATUS).where(STATUS.entry.eq(entry), STATUS.subscription.eq(sub)).fetch(); - FeedEntryStatus status = Iterables.getFirst(statuses, null); + FeedEntryStatus status = statuses.stream().findFirst().orElse(null); return handleStatus(user, status, sub, entry); } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java index af6bd00f..0a063eb1 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/dao/FeedSubscriptionDAO.java @@ -22,7 +22,6 @@ import com.commafeed.backend.model.FeedSubscription; import com.commafeed.backend.model.Models; import com.commafeed.backend.model.QFeedSubscription; import com.commafeed.backend.model.User; -import com.google.common.collect.Iterables; import com.querydsl.jpa.JPQLQuery; @Singleton @@ -71,7 +70,8 @@ public class FeedSubscriptionDAO extends GenericDAO { .leftJoin(SUBSCRIPTION.category) .fetchJoin() .fetch(); - return initRelations(Iterables.getFirst(subs, null)); + FeedSubscription sub = subs.stream().findFirst().orElse(null); + return initRelations(sub); } public List findByFeed(Feed feed) { @@ -82,7 +82,8 @@ public class FeedSubscriptionDAO extends GenericDAO { List subs = query().selectFrom(SUBSCRIPTION) .where(SUBSCRIPTION.user.eq(user), SUBSCRIPTION.feed.eq(feed)) .fetch(); - return initRelations(Iterables.getFirst(subs, null)); + FeedSubscription sub = subs.stream().findFirst().orElse(null); + return initRelations(sub); } public List findAll(User user) { diff --git a/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/FeedParser.java b/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/FeedParser.java index 0ce0b41c..db4ddfa2 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/FeedParser.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/feed/parser/FeedParser.java @@ -24,7 +24,6 @@ import com.commafeed.backend.feed.parser.FeedParserResult.Content; import com.commafeed.backend.feed.parser.FeedParserResult.Enclosure; import com.commafeed.backend.feed.parser.FeedParserResult.Entry; import com.commafeed.backend.feed.parser.FeedParserResult.Media; -import com.google.common.collect.Iterables; import com.rometools.modules.mediarss.MediaEntryModule; import com.rometools.modules.mediarss.MediaModule; import com.rometools.modules.mediarss.types.MediaGroup; @@ -148,7 +147,7 @@ public class FeedParser { } private Enclosure buildEnclosure(SyndEntry item) { - SyndEnclosure enclosure = Iterables.getFirst(item.getEnclosures(), null); + SyndEnclosure enclosure = item.getEnclosures().stream().findFirst().orElse(null); if (enclosure == null) { return null; } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/UserService.java b/commafeed-server/src/main/java/com/commafeed/backend/service/UserService.java index 9d572260..355b8921 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/UserService.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/UserService.java @@ -12,8 +12,8 @@ import jakarta.inject.Singleton; import org.apache.commons.lang3.StringUtils; -import com.commafeed.CommaFeedApplication; import com.commafeed.CommaFeedConfiguration; +import com.commafeed.CommaFeedConstants; import com.commafeed.backend.Digests; import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO; @@ -140,11 +140,11 @@ public class UserService { } public void createAdminUser() { - register(CommaFeedApplication.USERNAME_ADMIN, "admin", "admin@commafeed.com", Arrays.asList(Role.ADMIN, Role.USER), true); + register(CommaFeedConstants.USERNAME_ADMIN, "admin", "admin@commafeed.com", Arrays.asList(Role.ADMIN, Role.USER), true); } public void createDemoUser() { - register(CommaFeedApplication.USERNAME_DEMO, "demo", "demo@commafeed.com", Collections.singletonList(Role.USER), true); + register(CommaFeedConstants.USERNAME_DEMO, "demo", "demo@commafeed.com", Collections.singletonList(Role.USER), true); } public void unregister(User user) { diff --git a/commafeed-server/src/main/java/com/commafeed/backend/task/DemoAccountCleanupTask.java b/commafeed-server/src/main/java/com/commafeed/backend/task/DemoAccountCleanupTask.java index 4ad08476..5347619b 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/task/DemoAccountCleanupTask.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/task/DemoAccountCleanupTask.java @@ -4,8 +4,8 @@ import java.util.concurrent.TimeUnit; import jakarta.inject.Singleton; -import com.commafeed.CommaFeedApplication; import com.commafeed.CommaFeedConfiguration; +import com.commafeed.CommaFeedConstants; import com.commafeed.backend.dao.UnitOfWork; import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.model.User; @@ -32,7 +32,7 @@ public class DemoAccountCleanupTask extends ScheduledTask { log.info("recreating demo user account"); unitOfWork.run(() -> { - User demoUser = userDAO.findByName(CommaFeedApplication.USERNAME_DEMO); + User demoUser = userDAO.findByName(CommaFeedConstants.USERNAME_DEMO); if (demoUser == null) { return; } diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/resource/AdminREST.java b/commafeed-server/src/main/java/com/commafeed/frontend/resource/AdminREST.java index 43bbdeb1..18e86e7e 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/resource/AdminREST.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/resource/AdminREST.java @@ -20,7 +20,7 @@ import jakarta.ws.rs.core.Response.Status; import org.apache.commons.lang3.StringUtils; import com.codahale.metrics.MetricRegistry; -import com.commafeed.CommaFeedApplication; +import com.commafeed.CommaFeedConstants; import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserRoleDAO; import com.commafeed.backend.model.User; @@ -102,7 +102,7 @@ public class AdminREST { if (req.isAdmin() && !roles.contains(Role.ADMIN)) { userRoleDAO.persist(new UserRole(u, Role.ADMIN)); } else if (!req.isAdmin() && roles.contains(Role.ADMIN)) { - if (CommaFeedApplication.USERNAME_ADMIN.equals(u.getName())) { + if (CommaFeedConstants.USERNAME_ADMIN.equals(u.getName())) { return Response.status(Status.FORBIDDEN).entity("You cannot remove the admin role from the admin user.").build(); } for (UserRole userRole : userRoleDAO.findAll(u)) { diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/resource/FeedREST.java b/commafeed-server/src/main/java/com/commafeed/frontend/resource/FeedREST.java index d09db561..6bdceb53 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/resource/FeedREST.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/resource/FeedREST.java @@ -32,8 +32,8 @@ import org.apache.hc.core5.http.HttpStatus; import org.jboss.resteasy.reactive.Cache; import org.jboss.resteasy.reactive.RestForm; -import com.commafeed.CommaFeedApplication; import com.commafeed.CommaFeedConfiguration; +import com.commafeed.CommaFeedConstants; import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedEntryStatusDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO; @@ -472,7 +472,7 @@ public class FeedREST { @Operation(summary = "OPML import", description = "Import an OPML file, posted as a FORM with the 'file' name") public Response importOpml(@Parameter(description = "ompl file", required = true) @RestForm("file") String opml) { User user = authenticationContext.getCurrentUser(); - if (CommaFeedApplication.USERNAME_DEMO.equals(user.getName())) { + if (CommaFeedConstants.USERNAME_DEMO.equals(user.getName())) { return Response.status(Status.FORBIDDEN).entity("Import is disabled for the demo account").build(); } try { diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/resource/UserREST.java b/commafeed-server/src/main/java/com/commafeed/frontend/resource/UserREST.java index cf0b737b..311e9f6e 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/resource/UserREST.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/resource/UserREST.java @@ -1,5 +1,7 @@ package com.commafeed.frontend.resource; +import java.net.MalformedURLException; +import java.net.URISyntaxException; import java.time.Instant; import java.time.temporal.ChronoUnit; import java.util.Collections; @@ -27,8 +29,8 @@ import org.apache.commons.lang3.RandomStringUtils; import org.apache.commons.lang3.StringUtils; import org.apache.hc.core5.net.URIBuilder; -import com.commafeed.CommaFeedApplication; import com.commafeed.CommaFeedConfiguration; +import com.commafeed.CommaFeedConstants; import com.commafeed.backend.Digests; import com.commafeed.backend.dao.UserDAO; import com.commafeed.backend.dao.UserRoleDAO; @@ -174,7 +176,7 @@ public class UserREST { s.setShowRead(settings.isShowRead()); s.setScrollMarks(settings.isScrollMarks()); s.setCustomCss(settings.getCustomCss()); - s.setCustomJs(CommaFeedApplication.USERNAME_DEMO.equals(user.getName()) ? "" : settings.getCustomJs()); + s.setCustomJs(CommaFeedConstants.USERNAME_DEMO.equals(user.getName()) ? "" : settings.getCustomJs()); s.setLanguage(settings.getLanguage()); s.setScrollSpeed(settings.getScrollSpeed()); s.setScrollMode(ScrollMode.valueOf(settings.getScrollMode())); @@ -233,7 +235,7 @@ public class UserREST { @Operation(summary = "Save user's profile") public Response saveUserProfile(@Valid @Parameter(required = true) ProfileModificationRequest request) { User user = authenticationContext.getCurrentUser(); - if (CommaFeedApplication.USERNAME_DEMO.equals(user.getName())) { + if (CommaFeedConstants.USERNAME_DEMO.equals(user.getName())) { return Response.status(Status.FORBIDDEN).build(); } @@ -306,7 +308,7 @@ public class UserREST { } } - private String buildEmailContent(User user) throws Exception { + private String buildEmailContent(User user) throws URISyntaxException, MalformedURLException { String publicUrl = FeedUtils.removeTrailingSlash(uri.getBaseUri().toString()); publicUrl += "/rest/user/passwordResetCallback"; return String.format( @@ -314,7 +316,7 @@ public class UserREST { user.getName(), callbackUrl(user, publicUrl)); } - private String callbackUrl(User user, String publicUrl) throws Exception { + private String callbackUrl(User user, String publicUrl) throws URISyntaxException, MalformedURLException { return new URIBuilder(publicUrl).addParameter("email", user.getEmail()) .addParameter("token", user.getRecoverPasswordToken()) .build() @@ -364,7 +366,7 @@ public class UserREST { @Operation(summary = "Delete the user account") public Response deleteUser() { User user = authenticationContext.getCurrentUser(); - if (CommaFeedApplication.USERNAME_ADMIN.equals(user.getName()) || CommaFeedApplication.USERNAME_DEMO.equals(user.getName())) { + if (CommaFeedConstants.USERNAME_ADMIN.equals(user.getName()) || CommaFeedConstants.USERNAME_DEMO.equals(user.getName())) { return Response.status(Status.FORBIDDEN).build(); } userService.unregister(userDAO.findById(user.getId())); diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/servlet/NextUnreadServlet.java b/commafeed-server/src/main/java/com/commafeed/frontend/servlet/NextUnreadServlet.java index 78a98d9d..a56790be 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/servlet/NextUnreadServlet.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/servlet/NextUnreadServlet.java @@ -25,7 +25,6 @@ import com.commafeed.backend.model.UserSettings.ReadingOrder; import com.commafeed.backend.service.FeedEntryService; import com.commafeed.frontend.resource.CategoryREST; import com.commafeed.security.AuthenticationContext; -import com.google.common.collect.Iterables; import lombok.RequiredArgsConstructor; @@ -54,7 +53,7 @@ public class NextUnreadServlet { List subs = feedSubscriptionDAO.findAll(user); List statuses = feedEntryStatusDAO.findBySubscriptions(user, subs, true, null, null, 0, 1, order, true, null, null, null); - s = Iterables.getFirst(statuses, null); + s = statuses.stream().findFirst().orElse(null); } else { FeedCategory category = feedCategoryDAO.findById(user, Long.valueOf(categoryId)); if (category != null) { @@ -62,7 +61,7 @@ public class NextUnreadServlet { List subscriptions = feedSubscriptionDAO.findByCategories(user, children); List statuses = feedEntryStatusDAO.findBySubscriptions(user, subscriptions, true, null, null, 0, 1, order, true, null, null, null); - s = Iterables.getFirst(statuses, null); + s = statuses.stream().findFirst().orElse(null); } } if (s != null) {