@Override public Iterable<String> getIndexPaths() { NodeState nodeType = NodeStateUtils.getNode(nodeStore.getRoot(), "/oak:index/nodetype"); checkState("property".equals(nodeType.getString("type")), "nodetype index at " + "/oak:index/nodetype is found to be disabled. Cannot determine the paths of all indexes"); //Check if oak:QueryIndexDefinition is indexed as part of nodetype index boolean indxDefnTypeIndexed = Iterables.contains(nodeType.getNames(DECLARING_NODE_TYPES), INDEX_DEFINITIONS_NODE_TYPE); if (!indxDefnTypeIndexed) { log.warn("{} is not found to be indexed as part of nodetype index. Non root indexes would " + "not be listed", INDEX_DEFINITIONS_NODE_TYPE); NodeState oakIndex = nodeStore.getRoot().getChildNode("oak:index"); return transform(filter(oakIndex.getChildNodeEntries(), cne -> INDEX_DEFINITIONS_NODE_TYPE.equals(cne.getNodeState().getName(JCR_PRIMARYTYPE))), cne -> PathUtils.concat("/oak:index", cne.getName())); } return () -> { Iterator<IndexRow> itr = getIndex().query(createFilter(INDEX_DEFINITIONS_NODE_TYPE), nodeStore.getRoot()); return transform(itr, input -> input.getPath()); }; }
@Override public Iterable<String> getIndexPaths() { NodeState nodeType = NodeStateUtils.getNode(nodeStore.getRoot(), "/oak:index/nodetype"); checkState("property".equals(nodeType.getString("type")), "nodetype index at " + "/oak:index/nodetype is found to be disabled. Cannot determine the paths of all indexes"); //Check if oak:QueryIndexDefinition is indexed as part of nodetype index boolean indxDefnTypeIndexed = Iterables.contains(nodeType.getNames(DECLARING_NODE_TYPES), INDEX_DEFINITIONS_NODE_TYPE); if (!indxDefnTypeIndexed) { log.warn("{} is not found to be indexed as part of nodetype index. Non root indexes would " + "not be listed", INDEX_DEFINITIONS_NODE_TYPE); NodeState oakIndex = nodeStore.getRoot().getChildNode("oak:index"); return transform(filter(oakIndex.getChildNodeEntries(), cne -> INDEX_DEFINITIONS_NODE_TYPE.equals(cne.getNodeState().getName(JCR_PRIMARYTYPE))), cne -> PathUtils.concat("/oak:index", cne.getName())); } return () -> { Iterator<IndexRow> itr = getIndex().query(createFilter(INDEX_DEFINITIONS_NODE_TYPE), nodeStore.getRoot()); return transform(itr, input -> input.getPath()); }; }
@Override public Iterable<String> getIndexPaths() { NodeState nodeType = NodeStateUtils.getNode(nodeStore.getRoot(), "/oak:index/nodetype"); checkState("property".equals(nodeType.getString("type")), "nodetype index at " + "/oak:index/nodetype is found to be disabled. Cannot determine the paths of all indexes"); //Check if oak:QueryIndexDefinition is indexed as part of nodetype index boolean indxDefnTypeIndexed = Iterables.contains(nodeType.getNames(DECLARING_NODE_TYPES), INDEX_DEFINITIONS_NODE_TYPE); if (!indxDefnTypeIndexed) { log.warn("{} is not found to be indexed as part of nodetype index. Non root indexes would " + "not be listed", INDEX_DEFINITIONS_NODE_TYPE); NodeState oakIndex = nodeStore.getRoot().getChildNode("oak:index"); return transform(filter(oakIndex.getChildNodeEntries(), cne -> INDEX_DEFINITIONS_NODE_TYPE.equals(cne.getNodeState().getName(JCR_PRIMARYTYPE))), cne -> PathUtils.concat("/oak:index", cne.getName())); } return () -> { Iterator<IndexRow> itr = getIndex().query(createFilter(INDEX_DEFINITIONS_NODE_TYPE), nodeStore.getRoot()); return transform(itr, input -> input.getPath()); }; }
private static List<String> assertFilter(Filter filter, QueryIndex queryIndex, NodeState indexed, List<String> expected) { Cursor cursor = queryIndex.query(filter, indexed); List<String> paths = newArrayList(); while (cursor.hasNext()) { paths.add(cursor.next().getPath()); } Collections.sort(paths); for (String p : expected) { assertTrue("Expected path " + p + " not found", paths.contains(p)); } assertEquals("Result set size is different \nExpected: " + expected + "\nActual: " + paths, expected.size(), paths.size()); return paths; }
@Override public void execute(NodeState rootState) { QueryIndex index = plan.getIndex(); if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { cursor = index.query(createFilter(false), rootState); } }
@Override public void execute(NodeState rootState) { QueryIndex index = plan.getIndex(); if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { cursor = index.query(createFilter(false), rootState); } }
private void executeInternal(NodeState rootState) { QueryIndex index = plan.getIndex(); timerDuration = null; if (index == null) { cursor = Cursors.newPathCursor(new ArrayList<String>(), query.getSettings()); planIndexName = "traverse"; return; } IndexPlan p = plan.getIndexPlan(); if (p != null) { planIndexName = p.getPlanName(); p.setFilter(createFilter(false)); AdvancedQueryIndex adv = (AdvancedQueryIndex) index; cursor = adv.query(p, rootState); } else { FilterImpl f = createFilter(false); planIndexName = index.getIndexName(f, rootState); cursor = index.query(f, rootState); } }