switch query cache to use Jena Atlas Cache instead of plain LinkedHashMap
Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/f91818e9 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/f91818e9 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/f91818e9 Branch: refs/heads/JENA-507 Commit: f91818e99306d33d6889f25d6a840756b7e95b64 Parents: 8e24f26 Author: Osma Suominen <osma.suomi...@helsinki.fi> Authored: Sat Jan 9 10:51:57 2016 +0200 Committer: Osma Suominen <o...@apache.org> Committed: Mon Jan 11 09:27:13 2016 +0200 ---------------------------------------------------------------------- .../java/org/apache/jena/query/text/TextQueryPF.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/f91818e9/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java ---------------------------------------------------------------------- diff --git a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java index c6fa84f..50350eb 100644 --- a/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java +++ b/jena-text/src/main/java/org/apache/jena/query/text/TextQueryPF.java @@ -20,12 +20,12 @@ package org.apache.jena.query.text ; import java.util.Collection ; import java.util.Iterator ; -import java.util.LinkedHashMap ; import java.util.List ; -import java.util.Map ; import java.util.function.Function ; import org.apache.jena.atlas.iterator.Iter ; +import org.apache.jena.atlas.lib.Cache ; +import org.apache.jena.atlas.lib.CacheFactory ; import org.apache.jena.atlas.logging.Log ; import org.apache.jena.datatypes.RDFDatatype ; import org.apache.jena.datatypes.xsd.XSDDatatype ; @@ -68,6 +68,7 @@ public class TextQueryPF extends PropertyFunctionBase { private String langArg = null; private static final Symbol cacheSymbol = Symbol.create("TextQueryPF.cache"); + private static final int CACHE_SIZE = 10; @Override public void build(PropFuncArg argSubject, Node predicate, PropFuncArg argObject, ExecutionContext execCxt) { @@ -278,14 +279,14 @@ public class TextQueryPF extends PropertyFunctionBase { log.debug("Text query: {} ({})", queryString,limit) ; String cacheKey = limit + " " + property + " " + queryString ; - Map<String,ListMultimap<String,TextHit>> queryCache = - (Map<String,ListMultimap<String,TextHit>>) execCxt.getContext().get(cacheSymbol); + Cache<String,ListMultimap<String,TextHit>> queryCache = + (Cache<String,ListMultimap<String,TextHit>>) execCxt.getContext().get(cacheSymbol); if (queryCache == null) { /* doesn't yet exist, need to create it */ - queryCache = new LinkedHashMap(); + queryCache = CacheFactory.createCache(CACHE_SIZE); execCxt.getContext().put(cacheSymbol, queryCache); } - ListMultimap<String,TextHit> results = queryCache.get(cacheKey) ; + ListMultimap<String,TextHit> results = queryCache.getIfPresent(cacheKey) ; if (results == null) { /* cache miss */ List<TextHit> resultList = textIndex.query(property, queryString, limit) ; results = LinkedListMultimap.create();