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()) {