From d98a1621c8aae7f08eea56d91b8d8e6c047c37d1 Mon Sep 17 00:00:00 2001 From: Athou Date: Thu, 27 Jun 2013 11:10:08 +0200 Subject: [PATCH] cache users --- .../java/com/commafeed/backend/dao/UserDAO.java | 6 ++++-- .../com/commafeed/backend/services/UserService.java | 13 ++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/commafeed/backend/dao/UserDAO.java b/src/main/java/com/commafeed/backend/dao/UserDAO.java index 96c7b4fc..7fb8b12e 100644 --- a/src/main/java/com/commafeed/backend/dao/UserDAO.java +++ b/src/main/java/com/commafeed/backend/dao/UserDAO.java @@ -21,7 +21,8 @@ public class UserDAO extends GenericDAO { query.where(builder.equal(builder.lower(root.get(User_.name)), name.toLowerCase())); TypedQuery q = em.createQuery(query); - + cache(q); + User user = null; try { user = q.getSingleResult(); @@ -36,7 +37,8 @@ public class UserDAO extends GenericDAO { Root root = query.from(getType()); query.where(builder.equal(root.get(User_.apiKey), key)); TypedQuery q = em.createQuery(query); - + cache(q); + User user = null; try { user = q.getSingleResult(); diff --git a/src/main/java/com/commafeed/backend/services/UserService.java b/src/main/java/com/commafeed/backend/services/UserService.java index fdef12ba..0bab2450 100644 --- a/src/main/java/com/commafeed/backend/services/UserService.java +++ b/src/main/java/com/commafeed/backend/services/UserService.java @@ -9,6 +9,7 @@ import javax.inject.Inject; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.time.DateUtils; import com.commafeed.backend.dao.FeedCategoryDAO; import com.commafeed.backend.dao.FeedEntryStatusDAO; @@ -50,12 +51,18 @@ public class UserService { boolean authenticated = encryptionService.authenticate(password, user.getPassword(), user.getSalt()); if (authenticated) { - user.setLastLogin(new Date()); - userDAO.saveOrUpdate(user); + Date lastLogin = user.getLastLogin(); + Date now = new Date(); + // only update lastLogin field every hour in order to not + // invalidate the cache everytime someone logs in + if (lastLogin == null + || lastLogin.before(DateUtils.addHours(now, -1))) { + user.setLastLogin(now); + userDAO.saveOrUpdate(user); + } return user; } } - return null; }