dichaudhary commented on a change in pull request #10: SLING-8648 URL: https://github.com/apache/sling-org-apache-sling-pipes/pull/10#discussion_r316598444
########## File path: src/main/java/org/apache/sling/pipes/internal/MovePipe.java ########## @@ -63,23 +67,38 @@ public boolean modifiesContent() { try { Session session = resolver.adaptTo(Session.class); if (session.itemExists(targetPath)){ - if (overwriteTarget && !isDryRun()) { - logger.debug("overwriting {}", targetPath); + if (overwriteTarget || orderBefore && !isDryRun()) { + Resource target = resolver.getResource(targetPath); + Resource parent = target.getParent(); Node targetParent = session.getItem(targetPath).getParent(); - if (targetParent.getPrimaryNodeType().hasOrderableChildNodes()) { - String targetPathNewNode = targetPath + UUID.randomUUID() ; - session.move(resource.getPath(), targetPathNewNode); - String newNodeName = targetPathNewNode.substring(targetPathNewNode.lastIndexOf("/") + 1); - String oldNodeName = targetPath.substring(targetPath.lastIndexOf("/") + 1); - targetParent.orderBefore(newNodeName, oldNodeName); - session.removeItem(targetPath); - // Need to use JackrabbitNode.rename() here, since session.move(targetPathNewNode, targetPath) - // would move the new node back to the end of its siblings list - JackrabbitNode newNode = (JackrabbitNode) session.getNode(targetPathNewNode); - newNode.rename(oldNodeName); + String targetPathNewNode = targetPath + UUID.randomUUID(); + String newNodeName = targetPathNewNode.substring(targetPathNewNode.lastIndexOf("/") + 1); + String oldNodeName = targetPath.substring(targetPath.lastIndexOf("/") + 1); + if (orderBefore) { + logger.debug("ordering {} before {}", resource.getPath(), targetPath); + if (targetParent.getPrimaryNodeType().hasOrderableChildNodes()) { + String targetNodeName = ResourceUtil.createUniqueChildName(parent, resource.getName()); + String targetNodePath = targetParent.getPath() + SLASH + targetNodeName; + session.move(resource.getPath(), targetNodePath); + targetParent.orderBefore(targetNodeName, oldNodeName); + output = Collections.singleton(parent.getChild(targetNodeName)).iterator(); + } else { + logger.warn("parent resource {} doesn't support ordering", target.getPath()); + } } else { - session.removeItem(targetPath); - session.move(resource.getPath(), targetPath); + logger.debug("overwriting {}", targetPath); + if (targetParent.getPrimaryNodeType().hasOrderableChildNodes()) { + session.move(resource.getPath(), targetPathNewNode); + targetParent.orderBefore(newNodeName, oldNodeName); Review comment: @npeltier , this part of code was already there which gets triggered when we have overwrite flag set to true , so this basically overwrites the target node . ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services