Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java (revision 1446307) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeDelegate.java (working copy) @@ -229,6 +229,16 @@ getTree().remove(); } + /** + * 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); + } + //------------------------------------------------------------< internal >--- @Nonnull Index: oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java =================================================================== --- oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (revision 1446307) +++ oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/NodeImpl.java (working copy) @@ -275,7 +275,7 @@ } if (getPrimaryNodeType().hasOrderableChildNodes()) { - dlg.orderBefore(oakName, null); + dlg.setOrderableChildren(true); } NodeImpl childNode = new NodeImpl(added); @@ -1440,16 +1440,7 @@ Value value = sessionDelegate.getValueFactory().createValue(nodeTypeName, PropertyType.NAME); dlg.setProperty(jcrPrimaryType, value); - if (nt.hasOrderableChildNodes()) { - // freeze child order with a call to orderBefore() - // only makes sense with a least two child nodes - Iterator children = dlg.getChildren(); - NodeDelegate child1 = children.hasNext() ? children.next() : null; - NodeDelegate child2 = children.hasNext() ? children.next() : null; - if (child1 != null && child2 != null) { - dlg.orderBefore(child1.getName(), child2.getName()); - } - } + dlg.setOrderableChildren(nt.hasOrderableChildNodes()); return null; }