diff --git a/commafeed-server/src/main/java/com/commafeed/backend/dao/GenericDAO.java b/commafeed-server/src/main/java/com/commafeed/backend/dao/GenericDAO.java index a337576f..c602e591 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/dao/GenericDAO.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/dao/GenericDAO.java @@ -5,7 +5,6 @@ import java.util.Collection; import jakarta.persistence.EntityManager; -import org.hibernate.Session; import org.hibernate.jpa.SpecHints; import com.commafeed.backend.model.AbstractModel; @@ -35,15 +34,6 @@ public abstract class GenericDAO { return new JPADeleteClause(entityManager, entityPath); } - @SuppressWarnings("deprecation") - public void saveOrUpdate(T model) { - entityManager.unwrap(Session.class).saveOrUpdate(model); - } - - public void saveOrUpdate(Collection models) { - models.forEach(this::saveOrUpdate); - } - public void persist(T model) { entityManager.persist(model); } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/opml/OPMLImporter.java b/commafeed-server/src/main/java/com/commafeed/backend/opml/OPMLImporter.java index bae71b7a..dd4b08d2 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/opml/OPMLImporter.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/opml/OPMLImporter.java @@ -57,7 +57,7 @@ public class OPMLImporter { category.setParent(parent); category.setUser(user); category.setPosition(position); - feedCategoryDAO.saveOrUpdate(category); + feedCategoryDAO.persist(category); } for (int i = 0; i < children.size(); i++) { diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryContentService.java b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryContentService.java index df5ee744..20a84223 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryContentService.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryContentService.java @@ -35,7 +35,7 @@ public class FeedEntryContentService { if (existing.isPresent()) { return existing.get(); } else { - feedEntryContentDAO.saveOrUpdate(entryContent); + feedEntryContentDAO.persist(entryContent); return entryContent; } } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryService.java b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryService.java index 0cd5c044..60bc7c77 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryService.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryService.java @@ -48,7 +48,7 @@ public class FeedEntryService { feedEntry.setFeed(feed); feedEntry.setContent(feedEntryContentService.findOrCreate(entry.content(), feed.getLink())); - feedEntryDAO.saveOrUpdate(feedEntry); + feedEntryDAO.persist(feedEntry); return feedEntry; } @@ -63,7 +63,7 @@ public class FeedEntryService { if (!matches) { FeedEntryStatus status = new FeedEntryStatus(sub.getUser(), sub, entry); status.setRead(true); - feedEntryStatusDAO.saveOrUpdate(status); + feedEntryStatusDAO.persist(status); } return matches; @@ -83,7 +83,7 @@ public class FeedEntryService { FeedEntryStatus status = feedEntryStatusDAO.getStatus(user, sub, entry); if (status.isMarkable()) { status.setRead(read); - feedEntryStatusDAO.saveOrUpdate(status); + feedEntryStatusDAO.merge(status); } } @@ -101,7 +101,7 @@ public class FeedEntryService { FeedEntryStatus status = feedEntryStatusDAO.getStatus(user, sub, entry); status.setStarred(starred); - feedEntryStatusDAO.saveOrUpdate(status); + feedEntryStatusDAO.merge(status); } public void markSubscriptionEntries(User user, List subscriptions, Instant olderThan, Instant insertedBefore, @@ -125,7 +125,9 @@ public class FeedEntryService { return insertedBefore == null || insertedDate == null || insertedDate.isBefore(insertedBefore); }).toList(); - statusesToMark.forEach(s -> s.setRead(true)); - feedEntryStatusDAO.saveOrUpdate(statusesToMark); + statusesToMark.forEach(s -> { + s.setRead(true); + feedEntryStatusDAO.merge(s); + }); } } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryTagService.java b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryTagService.java index cdec71ba..742e68be 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryTagService.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedEntryTagService.java @@ -36,7 +36,7 @@ public class FeedEntryTagService { .toList(); List removeList = existingTags.stream().filter(tag -> !tagNames.contains(tag.getName())).toList(); - feedEntryTagDAO.saveOrUpdate(addList); + addList.forEach(feedEntryTagDAO::persist); feedEntryTagDAO.delete(removeList); } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedSubscriptionService.java b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedSubscriptionService.java index 86a0a133..2f8e9f94 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/FeedSubscriptionService.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/FeedSubscriptionService.java @@ -72,7 +72,6 @@ public class FeedSubscriptionService { // upgrade feed to https if it was using http if (FeedUtils.isHttp(feed.getUrl()) && FeedUtils.isHttps(url)) { feed.setUrl(url); - feedDAO.saveOrUpdate(feed); } FeedSubscription sub = feedSubscriptionDAO.findByFeed(user, feed); @@ -84,9 +83,7 @@ public class FeedSubscriptionService { sub.setCategory(category); sub.setPosition(position); sub.setTitle(FeedUtils.truncate(title, 128)); - feedSubscriptionDAO.saveOrUpdate(sub); - - return sub.getId(); + return feedSubscriptionDAO.merge(sub).getId(); } public boolean unsubscribe(User user, Long subId) { 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 992c2001..9d572260 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 @@ -132,9 +132,9 @@ public class UserService { user.setCreated(Instant.now()); user.setSalt(salt); user.setPassword(encryptionService.getEncryptedPassword(password, salt)); - userDAO.saveOrUpdate(user); + userDAO.persist(user); for (Role role : roles) { - userRoleDAO.saveOrUpdate(new UserRole(user, role)); + userRoleDAO.persist(new UserRole(user, role)); } return user; } diff --git a/commafeed-server/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java b/commafeed-server/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java index 36184167..3a9df391 100644 --- a/commafeed-server/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java +++ b/commafeed-server/src/main/java/com/commafeed/backend/service/internal/PostLoginActivities.java @@ -24,7 +24,7 @@ public class PostLoginActivities { Instant lastLogin = user.getLastLogin(); if (lastLogin == null || ChronoUnit.MINUTES.between(lastLogin, now) >= 30) { user.setLastLogin(now); - unitOfWork.run(() -> userDAO.saveOrUpdate(user)); + unitOfWork.run(() -> userDAO.merge(user)); } } } 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 88cb5a4e..98f2a7d1 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 @@ -97,11 +97,10 @@ public class AdminREST { } u.setEmail(req.getEmail()); u.setDisabled(!req.isEnabled()); - userDAO.saveOrUpdate(u); Set roles = userRoleDAO.findRoles(u); if (req.isAdmin() && !roles.contains(Role.ADMIN)) { - userRoleDAO.saveOrUpdate(new UserRole(u, Role.ADMIN)); + userRoleDAO.persist(new UserRole(u, Role.ADMIN)); } else if (!req.isAdmin() && roles.contains(Role.ADMIN)) { if (CommaFeedApplication.USERNAME_ADMIN.equals(u.getName())) { return Response.status(Status.FORBIDDEN).entity("You cannot remove the admin role from the admin user.").build(); diff --git a/commafeed-server/src/main/java/com/commafeed/frontend/resource/CategoryREST.java b/commafeed-server/src/main/java/com/commafeed/frontend/resource/CategoryREST.java index 06020790..7c48459a 100644 --- a/commafeed-server/src/main/java/com/commafeed/frontend/resource/CategoryREST.java +++ b/commafeed-server/src/main/java/com/commafeed/frontend/resource/CategoryREST.java @@ -291,7 +291,7 @@ public class CategoryREST { parent.setId(Long.valueOf(parentId)); cat.setParent(parent); } - feedCategoryDAO.saveOrUpdate(cat); + feedCategoryDAO.persist(cat); return Response.ok(cat.getId()).build(); } @@ -311,14 +311,13 @@ public class CategoryREST { for (FeedSubscription sub : subs) { sub.setCategory(null); } - feedSubscriptionDAO.saveOrUpdate(subs); + List categories = feedCategoryDAO.findAllChildrenCategories(user, cat); for (FeedCategory child : categories) { if (!child.getId().equals(cat.getId()) && child.getParent().getId().equals(cat.getId())) { child.setParent(null); } } - feedCategoryDAO.saveOrUpdate(categories); feedCategoryDAO.delete(cat); return Response.ok().build(); @@ -330,7 +329,7 @@ public class CategoryREST { @POST @Path("/modify") @Transactional - @Operation(summary = "Rename a category", description = "Rename an existing feed category") + @Operation(summary = "Modify a category", description = "Modify an existing feed category") public Response modifyCategory(@Valid @Parameter(required = true) CategoryModificationRequest req) { Preconditions.checkNotNull(req); Preconditions.checkNotNull(req.getId()); @@ -367,12 +366,8 @@ public class CategoryREST { for (int i = 0; i < categories.size(); i++) { categories.get(i).setPosition(i); } - feedCategoryDAO.saveOrUpdate(categories); - } else { - feedCategoryDAO.saveOrUpdate(category); } - feedCategoryDAO.saveOrUpdate(category); return Response.ok().build(); } @@ -390,7 +385,7 @@ public class CategoryREST { return Response.status(Status.NOT_FOUND).build(); } category.setCollapsed(req.isCollapse()); - feedCategoryDAO.saveOrUpdate(category); + return Response.ok().build(); } 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 140995dc..d09db561 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 @@ -460,10 +460,8 @@ public class FeedREST { for (int i = 0; i < subs.size(); i++) { subs.get(i).setPosition(i); } - feedSubscriptionDAO.saveOrUpdate(subs); - } else { - feedSubscriptionDAO.saveOrUpdate(subscription); } + return Response.ok().build(); } 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 8f2b8910..cf0b737b 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 @@ -198,7 +198,7 @@ public class UserREST { s.setInstapaper(settings.getSharingSettings().isInstapaper()); s.setBuffer(settings.getSharingSettings().isBuffer()); - userSettingsDAO.saveOrUpdate(s); + userSettingsDAO.merge(s); return Response.ok().build(); } @@ -261,7 +261,7 @@ public class UserREST { user.setApiKey(userService.generateApiKey(user)); } - userDAO.saveOrUpdate(user); + userDAO.merge(user); return Response.ok().build(); } @@ -297,7 +297,7 @@ public class UserREST { try { user.setRecoverPasswordToken(Digests.sha1Hex(UUID.randomUUID().toString())); user.setRecoverPasswordTokenDate(Instant.now()); - userDAO.saveOrUpdate(user); + mailService.sendMail(user, "Password recovery", buildEmailContent(user)); return Response.ok().build(); } catch (Exception e) { @@ -351,7 +351,6 @@ public class UserREST { } user.setRecoverPasswordToken(null); user.setRecoverPasswordTokenDate(null); - userDAO.saveOrUpdate(user); String message = "Your new password is: " + passwd; message += "
";