npeltier commented on a change in pull request #10: SLING-8648
URL: 
https://github.com/apache/sling-org-apache-sling-pipes/pull/10#discussion_r316580657
 
 

 ##########
 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:
   why orderBefore? aren't we in the case where there is no "orderBefore" 
configured?

----------------------------------------------------------------
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

Reply via email to