/** * Enables or disabled orderable children on the underlying tree. * * @param enable whether to enable or disable orderable children. */ public void setOrderableChildren(boolean enable) throws InvalidItemStateException { getTree().setOrderableChildren(enable); }
/** * Enables or disabled orderable children on the underlying tree. * * @param enable whether to enable or disable orderable children. */ public void setOrderableChildren(boolean enable) throws InvalidItemStateException { getTree().setOrderableChildren(enable); }
/** * Enables or disabled orderable children on the underlying tree. * * @param enable whether to enable or disable orderable children. */ public void setOrderableChildren(boolean enable) throws InvalidItemStateException { getTree().setOrderableChildren(enable); }
private static Tree getOrCreateChild(Tree tree, String name){ if (tree.hasChild(name)){ return tree.getChild(name); } Tree child = tree.addChild(name); child.setOrderableChildren(true); child.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME); return child; }
public static Tree newRulePropTree(Tree indexDefn, String typeName) { Tree rules = indexDefn.addChild(FulltextIndexConstants.INDEX_RULES); rules.setOrderableChildren(true); Tree rule = rules.addChild(typeName); Tree props = rule.addChild(FulltextIndexConstants.PROP_NODE); props.setOrderableChildren(true); return props; }
private static Tree getOrCreateChild(Tree tree, String name){ if (tree.hasChild(name)){ return tree.getChild(name); } Tree child = tree.addChild(name); child.setOrderableChildren(true); child.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME); return child; }
private static Tree getOrCreateChild(Tree tree, String name){ if (tree.hasChild(name)){ return tree.getChild(name); } Tree child = tree.addChild(name); child.setOrderableChildren(true); child.setProperty(JCR_PRIMARYTYPE, NT_UNSTRUCTURED, NAME); return child; }
public static Tree newRulePropTree(Tree indexDefn, String typeName){ Tree rules = indexDefn.addChild(FulltextIndexConstants.INDEX_RULES); rules.setOrderableChildren(true); Tree rule = rules.addChild(typeName); Tree props = rule.addChild(FulltextIndexConstants.PROP_NODE); props.setOrderableChildren(true); return props; }
private Tree addUnstructuredChild(Tree tree, String name){ Tree child = tree.addChild(name); child.setOrderableChildren(true); child.setProperty("jcr:primaryType", "nt:unstructured", Type.NAME); return child; } }
@Test public void testSetOrderableChildNodesOnHiddenTree() { try { Tree hidden = parent.getChild(HIDDEN_NAME); hidden.setOrderableChildren(true); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // success } try { Tree hidden = parent.getChild(HIDDEN_NAME); hidden.setOrderableChildren(false); fail("IllegalStateException expected"); } catch (IllegalStateException e) { // success } }
public static void copyToTree(NodeState state, Tree tree){ tree.setOrderableChildren(state.hasProperty(OAK_CHILD_ORDER)); copyProps(state, tree); Tree src = TreeFactory.createReadOnlyTree(state); for (Tree srcChild : src.getChildren()){ String childName = srcChild.getName(); Tree child = tree.addChild(childName); copyToTree(state.getChildNode(childName), child); } }
@Override @Before public void before() throws Exception { super.before(); Tree a = root.getTree("/a"); a.setOrderableChildren(true); root.commit(); }
@Test public void testSetOrderableChildrenSetsProperty() throws Exception { Tree tree = root.getTree("/").addChild("test"); tree.setOrderableChildren(true); assertTrue(((MutableTree) tree).getNodeState().hasProperty(TreeConstants.OAK_CHILD_ORDER)); tree.setOrderableChildren(false); assertFalse(((MutableTree) tree).getNodeState().hasProperty(TreeConstants.OAK_CHILD_ORDER)); tree.setOrderableChildren(true); root.commit(); assertTrue(((MutableTree) tree).getNodeState().hasProperty(TreeConstants.OAK_CHILD_ORDER)); tree.setOrderableChildren(false); root.commit(); assertFalse(((MutableTree) tree).getNodeState().hasProperty(TreeConstants.OAK_CHILD_ORDER)); }
@Override public void initialize(final NodeBuilder builder) { if (!isAlreadyThere(builder)) { Tree t = TreeFactory.createTree(builder.child(INDEX_DEFINITIONS_NAME)); t = t.addChild(name); t.setProperty("jcr:primaryType", INDEX_DEFINITIONS_NODE_TYPE, NAME); t.setProperty(COMPAT_MODE, 2L, LONG); t.setProperty(TYPE_PROPERTY_NAME, TYPE_LUCENE, STRING); t.setProperty(ASYNC_PROPERTY_NAME, "async", STRING); t.setProperty(REINDEX_PROPERTY_NAME, true); t = t.addChild(INDEX_RULES); t.setOrderableChildren(true); t.setProperty("jcr:primaryType", "nt:unstructured", NAME); t = t.addChild("nt:base"); Tree propnode = t.addChild(PROP_NODE); propnode.setOrderableChildren(true); propnode.setProperty("jcr:primaryType", "nt:unstructured", NAME); for (String p : properties) { Tree t1 = propnode.addChild(PathUtils.getName(p)); t1.setProperty(PROP_PROPERTY_INDEX, true, BOOLEAN); t1.setProperty(PROP_NAME, p); } } } }
/** * @see <a href="https://issues.apache.org/jira/browse/OAK-842">OAK-842</a> */ @Test public void testOrderableChildren() throws Exception { Tree a = root.getTree("/a"); a.setOrderableChildren(true); testRoot.refresh(); for (Tree t : testRoot.getTree("/a").getChildren()) { if (!"b".equals(t.getName())) { fail("Child " + t.getName() + " should not be accessible."); } } }
@Test public void testSetOrderableChildren() throws Exception { Tree tree = root.getTree("/").addChild("test2"); tree.setOrderableChildren(true); String[] childNames = new String[]{"a", "b", "c", "d"}; for (String name : childNames) { tree.addChild(name); } int index = 0; for (Tree child : tree.getChildren()) { assertEquals(childNames[index++], child.getName()); } }
@Test public void testChildOrderWithoutPropertyReadAccess() throws Exception { root.getTree("/a").setOrderableChildren(true); root.getTree("/a/bb").orderBefore("b"); root.commit(); setupPermission("/", testPrincipal, true, PrivilegeConstants.REP_READ_NODES); Root testRoot = getTestRoot(); Tree aTree = testRoot.getTree("/a"); // verify that properties cannot be read: assertFalse(aTree.hasProperty(JcrConstants.JCR_PRIMARYTYPE)); List<String> expected = ImmutableList.of("/a/bb", "/a/b"); Iterable<String> childPaths = Iterables.transform(aTree.getChildren(), new Function<Tree, String>() { @Nullable @Override public String apply(Tree input) { return input.getPath(); } }); assertTrue(childPaths.toString(), Iterables.elementsEqual(expected, childPaths)); } }
@Test public void copyOrdered() throws Exception{ NodeBuilder testBuilder = EMPTY_NODE.builder(); Tree srcTree = TreeFactory.createTree(testBuilder); srcTree.setOrderableChildren(true); srcTree.setProperty("foo", "x"); srcTree.addChild("a").setOrderableChildren(true); srcTree.addChild("a").setProperty("foo", "y"); srcTree.addChild("b").setOrderableChildren(true); srcTree.addChild("b").setProperty("foo", "z"); Tree tree = TreeFactory.createTree(EMPTY_NODE.builder()); NodeStateCopyUtils.copyToTree(testBuilder.getNodeState(), tree); assertEquals("x", tree.getProperty("foo").getValue(Type.STRING)); assertEquals(2, tree.getChildrenCount(100)); assertEquals("y", tree.getChild("a").getProperty("foo").getValue(Type.STRING)); assertEquals("z", tree.getChild("b").getProperty("foo").getValue(Type.STRING)); //Assert the order Iterator<Tree> children = tree.getChildren().iterator(); assertEquals("a", children.next().getName()); assertEquals("b", children.next().getName()); }
@Test public void newIndexAndOrderableChildren() throws Exception{ String json = "{\"/oak:index/barIndex\": {\n" + " \"compatVersion\": 2,\n" + " \"type\": \"lucene\",\n" + " \"barIndexProp\": \"barbar\",\n" + " \"async\": \"async\",\n" + " \"jcr:primaryType\": \"oak:QueryIndexDefinition\"\n" + " }}"; NodeBuilder builder = store.getRoot().builder(); Tree root = TreeFactory.createTree(builder); Tree oakIndex = root.addChild("oak:index"); oakIndex.setOrderableChildren(true); Tree fooIndex = oakIndex.addChild("fooIndex"); store.merge(builder, EmptyHook.INSTANCE, CommitInfo.EMPTY); IndexDefinitionUpdater updater = new IndexDefinitionUpdater(json); builder = store.getRoot().builder(); NodeBuilder idxBuilder = updater.apply(builder, "/oak:index/barIndex"); PropertyState childOrder = builder.getChildNode("oak:index").getProperty(":childOrder"); List<String> names = ImmutableList.copyOf(childOrder.getValue(Type.NAMES)); assertEquals(asList("fooIndex", "barIndex"), names); }
@Before public void setUp() throws Exception { Tree tree = root.getTree("/"); NodeUtil node = new NodeUtil(tree); node.addChild("x", JcrConstants.NT_UNSTRUCTURED).addChild("y", JcrConstants.NT_UNSTRUCTURED).addChild("z", JcrConstants.NT_UNSTRUCTURED); Tree orderable = node.addChild("orderable", JcrConstants.NT_UNSTRUCTURED).getTree(); orderable.setOrderableChildren(true); root.commit(); immutable = new ImmutableTree(((AbstractTree) root.getTree("/")).getNodeState()); }