Update of /var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/builders In directory james.mmbase.org:/tmp/cvs-serv29119/implementation/cloudcontext/builders
Modified Files: Tag: MMBase-1_8 Users.java Log Message: MMB-1749 See also: http://cvs.mmbase.org/viewcvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/builders See also: http://www.mmbase.org/jira/browse/MMB-1749 Index: Users.java =================================================================== RCS file: /var/cvs/applications/cloudcontext/src/org/mmbase/security/implementation/cloudcontext/builders/Users.java,v retrieving revision 1.48.2.4 retrieving revision 1.48.2.5 diff -u -b -r1.48.2.4 -r1.48.2.5 --- Users.java 24 Sep 2008 09:55:59 -0000 1.48.2.4 +++ Users.java 8 Dec 2008 16:30:55 -0000 1.48.2.5 @@ -17,6 +17,7 @@ import org.mmbase.storage.search.*; import org.mmbase.storage.search.implementation.*; import org.mmbase.cache.Cache; +import org.mmbase.cache.QueryResultCache; import org.mmbase.util.Encode; import org.mmbase.util.logging.Logger; import org.mmbase.util.logging.Logging; @@ -31,10 +32,10 @@ * @author Eduard Witteveen * @author Pierre van Rooden * @author Michiel Meeuwissen - * @version $Id: Users.java,v 1.48.2.4 2008/09/24 09:55:59 rico Exp $ + * @version $Id: Users.java,v 1.48.2.5 2008/12/08 16:30:55 michiel Exp $ * @since MMBase-1.7 */ -public class Users extends MMObjectBuilder { +public class Users extends MMObjectBuilder implements Provider { private static final Logger log = Logging.getLoggerInstance(Users.class); @@ -63,6 +64,12 @@ public String getDescription() { return "Caches the users. UserName --> User Node"; } }; + protected static QueryResultCache userRankCache = new QueryResultCache(100) { + public String getName() { return "CCS:UserRankCache"; } + public String getDescription() { return "Caches the rank objects related to queries"; } + + }; + protected Function encodeFunction = new AbstractFunction("encode", new Parameter[] {new Parameter("password", String.class, true) }, ReturnType.STRING) { { @@ -92,6 +99,7 @@ public boolean init() { rankCache.putCache(); userCache.putCache(); + userRankCache.putCache(); String s = (String)getInitParameters().get("encoding"); if (s == null) { @@ -336,11 +344,21 @@ query.setConstraint(cons); // sometimes, I quite hate the 'core version' query-framework. + + try { - List result = mmb.getClusterBuilder().getClusterNodesFromQueryHandler(query); + boolean useCache = query.getCachePolicy().checkPolicy(query); + List result = useCache ? (List) userRankCache.get(query) : null; + if (result == null) { + result = mmb.getClusterBuilder().getClusterNodesFromQueryHandler(query); if (log.isDebugEnabled()) { log.debug("Executing " + query + " --> " + result); } + } + if (useCache) { + userRankCache.put(query, result); + } + if (result.size() > 0) { return ((MMObjectNode) result.get(0)).getNodeValue("mmbaseusers"); } else { @@ -588,5 +606,15 @@ } + public boolean allowEncodedPassword() { + return org.mmbase.util.Casting.toBoolean(getInitParameter("allowencodedpassword")); + } + + public MMObjectBuilder getUserBuilder() { + return this; + } + + + } _______________________________________________ Cvs mailing list Cvs@lists.mmbase.org http://lists.mmbase.org/mailman/listinfo/cvs