From 4ba0ed4bf79d76fb8c6333e9655d9efd041f5e41 Mon Sep 17 00:00:00 2001 From: Athou Date: Fri, 24 May 2013 09:21:20 +0200 Subject: [PATCH] jklm initial implementation --- pom.xml | 15 ++++++++++++++ .../backend/feeds/FeedRefreshUpdater.java | 20 ++++++++++++------- .../backend/services/UserService.java | 5 +++-- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 2db4bc6b..abfadc09 100644 --- a/pom.xml +++ b/pom.xml @@ -31,6 +31,16 @@ true + + jklm.releases + http://mvn.jkeylockmanager.de + + true + + + false + + @@ -234,6 +244,11 @@ joda-time 2.2 + + de.jkeylockmanager + jkeylockmanager + 1.0.0 + net.java.dev.rome diff --git a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java index b93bddb4..7054e52e 100644 --- a/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java +++ b/src/main/java/com/commafeed/backend/feeds/FeedRefreshUpdater.java @@ -14,7 +14,6 @@ import javax.inject.Singleton; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.commafeed.backend.LockMap; import com.commafeed.backend.dao.FeedDAO; import com.commafeed.backend.dao.FeedSubscriptionDAO; import com.commafeed.backend.model.ApplicationSettings; @@ -26,13 +25,17 @@ import com.commafeed.backend.pubsubhubbub.SubscriptionHandler; import com.commafeed.backend.services.ApplicationSettingsService; import com.commafeed.backend.services.FeedUpdateService; +import de.jkeylockmanager.manager.KeyLockManager; +import de.jkeylockmanager.manager.KeyLockManagers; +import de.jkeylockmanager.manager.LockCallback; + @Singleton public class FeedRefreshUpdater { protected static Logger log = LoggerFactory .getLogger(FeedRefreshUpdater.class); - private static LockMap lockMap = new LockMap(); + private static final KeyLockManager lockManager = KeyLockManagers.newLock(); @Inject FeedUpdateService feedUpdateService; @@ -107,11 +110,14 @@ public class FeedRefreshUpdater { } - private void updateEntry(Feed feed, FeedEntry entry, - List subscriptions) { - synchronized (lockMap.get(entry.getGuid())) { - feedUpdateService.updateEntry(feed, entry, subscriptions); - } + private void updateEntry(final Feed feed, final FeedEntry entry, + final List subscriptions) { + lockManager.executeLocked(entry.getGuid(), new LockCallback() { + @Override + public void doInLock() throws Exception { + feedUpdateService.updateEntry(feed, entry, subscriptions); + } + }); } private void handlePubSub(final Feed feed) { diff --git a/src/main/java/com/commafeed/backend/services/UserService.java b/src/main/java/com/commafeed/backend/services/UserService.java index 56f32ede..502e7771 100644 --- a/src/main/java/com/commafeed/backend/services/UserService.java +++ b/src/main/java/com/commafeed/backend/services/UserService.java @@ -46,8 +46,9 @@ public class UserService { PasswordEncryptionService encryptionService; public User login(String name, String password) { - Preconditions.checkNotNull(name); - Preconditions.checkNotNull(password); + if (name == null || password == null) { + return null; + } User user = userDAO.findByName(name); if (user != null && !user.isDisabled()) {