in src/main/java/org/apache/sling/pipes/internal/MovePipe.java [64:94]
private Iterator<Resource> overwriteTarget(Resource input, Resource target) throws RepositoryException {
logger.info("overwriting {}", target.getPath());
Session session = resolver.adaptTo(Session.class);
if (!isDryRun() && session != null) {
Resource parent = target.getParent();
String targetPath = target.getPath();
Node targetParent = session.getItem(targetPath).getParent();
if (targetParent.getPrimaryNodeType().hasOrderableChildNodes()) {
String oldNodeName = target.getName();
String targetPathNewNode = targetPath + UUID.randomUUID();
String newNodeName = targetPathNewNode.substring(targetPathNewNode.lastIndexOf("/") + 1);
session.move(input.getPath(), targetPathNewNode);
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);
if (parent != null) {
return Collections.singleton(parent.getChild(oldNodeName)).iterator();
}
} else {
session.removeItem(targetPath);
session.move(input.getPath(), targetPath);
if (parent != null) {
return Collections.singleton(parent.getChild(input.getName())).iterator();
}
}
}
return EMPTY_ITERATOR;
}