public void findReferences(ResourceResolver rr, String referenceSearchRoot, int maxReferences) throws IllegalAccessException { ReferenceSearch refSearch = new ReferenceSearch(); refSearch.setExact(true); refSearch.setHollow(true); refSearch.setMaxReferencesPerPage(maxReferences); refSearch.setSearchRoot(referenceSearchRoot); refSearch.search(rr, sourcePath).values().stream() .peek(p -> allReferences.add(p.getPagePath())) .filter(p -> isActivated(rr, p.getPagePath())) .map(ReferenceSearch.Info::getPagePath) .collect(Collectors.toCollection(() -> publishedReferences)); }
/** * Searches for references to the given path and invalidates them in the cache * * @param path the path to search for */ void invalidateReferences(String path) { try (ResourceResolver adminResolver = resolverFactory.getServiceResourceResolver(null)){ Collection<ReferenceSearch.Info> refs = new ReferenceSearch() .search(adminResolver, path).values(); for (ReferenceSearch.Info info : refs) { String refPath = info.getPage().getPath(); invalidate(refPath); } } catch (Exception e){ log.debug("failed to invalidate references of {}", path); } } }
/** * Searches for references to the given path and invalidates them in the cache * * @param path the path to search for */ void invalidateReferences(String path){ ResourceResolver adminResolver = null; try { adminResolver = resolverFactory.getServiceResourceResolver(null); Collection<ReferenceSearch.Info> refs = new ReferenceSearch() .search(adminResolver, path).values(); for (ReferenceSearch.Info info : refs) { String refPath = info.getPage().getPath(); invalidate(refPath); } } catch (Exception e){ log.debug("failed to invalidate references of {}", path); } finally { if(adminResolver != null) adminResolver.close(); } } }