private List maybeQueryTestResources()

in src/main/java/org/apache/sling/junit/scriptable/ScriptableTestsProvider.java [200:233]


    private List<String> maybeQueryTestResources() throws RepositoryException {
        if(lastModified <= lastReloaded) {
            log.debug("No changes detected, keeping existing list of {} test resources", testPaths.size());
            return testPaths;
        }

        log.info("Changes detected, reloading list of test resources");
        final long reloadTime = System.currentTimeMillis();
        final List<String> newList = new LinkedList<>();

        for(String root : allowedRoots) {
            final String statement = "/jcr:root" + root + "/element(*, " + SLING_TEST_NODETYPE + ")";
            log.debug("Querying for test nodes: {}", statement);
            session.refresh(true);
            final Query q = session.getWorkspace().getQueryManager().createQuery(statement, Query.XPATH);
            final NodeIterator it = q.execute().getNodes();
            while(it.hasNext()) {
                final String path = it.nextNode().getPath();
                newList.add(path);
                log.debug("Test resource found: {}", path);
            }
        }
        log.info("List of test resources updated, {} resource(s) found under {}",
                newList.size(), Arrays.asList(allowedRoots));

        synchronized (testPaths) {
            testPaths.clear();
            testPaths.addAll(newList);
        }

        lastReloaded = reloadTime;

        return testPaths;
    }