in src/main/java/org/apache/sling/capabilities/jcr/SearchSource.java [104:135]
private void refreshCachedValues(ResourceResolver unused) {
if(System.currentTimeMillis() < similaritySearchCacheExpires) {
log.debug("Using cached similaritySearchActive value");
return;
}
similaritySearchCacheExpires = System.currentTimeMillis() + (cacheLifetimeSeconds * 1000L);
synchronized(this) {
Session session = null;
try {
// TODO for now we need a service user as in general users do not have
// access to /oak:index where the information that we need is found.
// This information should be provided by Oak in a different way such as
// JCR Repository descriptors or OSGi service properties on the Repository
// object.
session = repository.loginService(SUBSERVICE_NAME, null);
final QueryManager qm = session.getWorkspace().getQueryManager();
final QueryResult qr = qm.createQuery(similarityIndexQuery, Query.XPATH).execute();
similaritySearchActiveResult = String.valueOf(qr.getNodes().hasNext());
} catch(RepositoryException rex) {
similaritySearchActiveResult = rex.toString();
} finally {
if(session != null) {
session.logout();
}
}
}
log.debug("Recomputed {}={} using query {}", SSA_PROP_NAME, similaritySearchActiveResult, similarityIndexQuery);
}