Update of 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext
In directory james.mmbase.org:/tmp/cvs-serv29647

Modified Files:
        BasicUserProvider.java 
Log Message:
Cache also the result of getUserByRank, because in some situations it can be 
called very often, resulting in query every time.


See also: 
http://cvs.mmbase.org/viewcvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext


Index: BasicUserProvider.java
===================================================================
RCS file: 
/var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/BasicUserProvider.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- BasicUserProvider.java      6 Jan 2009 14:38:21 -0000       1.3
+++ BasicUserProvider.java      2 Mar 2009 17:29:57 -0000       1.4
@@ -28,7 +28,7 @@
  * This is a basic implemention of {...@link Provider} that implements all the 
methods in a default way.
  *
  * @author Michiel Meeuwissen
- * @version $Id: BasicUserProvider.java,v 1.3 2009/01/06 14:38:21 michiel Exp $
+ * @version $Id: BasicUserProvider.java,v 1.4 2009/03/02 17:29:57 michiel Exp $
  * @since  MMBase-1.9.1
  */
 public abstract class BasicUserProvider implements UserProvider {
@@ -194,6 +194,15 @@
      * @since MMBase-1.8
      */
     public MMObjectNode getUserByRank(String rank, String userName) {
+
+        Cache<String, MMObjectNode> userCache = Caches.getUserCache();
+        final String key = userName + "::" + rank;
+        if (userCache.containsKey(key)) {
+            return userCache.get(key);
+        }
+
+
+
         MMBase mmb = MMBase.getMMBase();
         BasicSearchQuery query = new BasicSearchQuery();
         MMObjectBuilder ranks = mmb.getBuilder("mmbaseranks");
@@ -223,11 +232,14 @@
             if (log.isDebugEnabled()) {
                 log.debug("Executing " + query + " --> " + result);
             }
+            MMObjectNode res;
             if (result.size() > 0) {
-                return result.get(0).getNodeValue("mmbaseusers");
+                res = result.get(0).getNodeValue("mmbaseusers");
             } else {
-                return null;
+                res =  null;
             }
+            userCache.put(key, res);
+            return res;
         } catch (SearchQueryException sqe) {
             log.error(sqe);
             return null;
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to