handle query cache misses with getOrFill and a lambda function

Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/3570b14b
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/3570b14b
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/3570b14b

Branch: refs/heads/JENA-507
Commit: 3570b14bd6913ecfbf268fdeba7781e8dd650dc5
Parents: f91818e
Author: Osma Suominen <[email protected]>
Authored: Sat Jan 9 11:05:47 2016 +0200
Committer: Osma Suominen <[email protected]>
Committed: Mon Jan 11 09:27:13 2016 +0200

----------------------------------------------------------------------
 .../java/org/apache/jena/query/text/TextQueryPF.java  | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/3570b14b/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 50350eb..9b30605 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
@@ -286,15 +286,15 @@ public class TextQueryPF extends PropertyFunctionBase {
             execCxt.getContext().put(cacheSymbol, queryCache);
         }
 
-        ListMultimap<String,TextHit> results = 
queryCache.getIfPresent(cacheKey) ;
-        if (results == null) { /* cache miss */
-            List<TextHit> resultList = textIndex.query(property, queryString, 
limit) ;
-            results = LinkedListMultimap.create();
+        final String queryStr = queryString; // final needed for the lambda 
function
+        ListMultimap<String,TextHit> results = queryCache.getOrFill(cacheKey, 
() -> {
+            List<TextHit> resultList = textIndex.query(property, queryStr, 
limit) ;
+            ListMultimap<String,TextHit> resultMultimap = 
LinkedListMultimap.create();
             for (TextHit result : resultList) {
-                results.put(result.getNode().getURI(), result);
+                resultMultimap.put(result.getNode().getURI(), result);
             }
-            queryCache.put(cacheKey, results) ;
-        }
+            return resultMultimap;
+        });
         return results;
     }
     

Reply via email to