in src/main/java/org/apache/sling/servlets/post/impl/operations/MoveOperation.java [40:71]
protected Resource execute(final List<Modification> changes,
final Resource source,
final String destParent,
String destName,
final VersioningConfiguration versioningConfiguration)
throws PersistenceException {
if (destName == null) {
destName = source.getName();
}
final Resource destParentRsrc = source.getResourceResolver().getResource(destParent);
final Resource dest = destParentRsrc.getChild(destName);
if (dest != null ) {
source.getResourceResolver().delete(dest);
}
// ensure we have an item underlying the request's resource
final Object item = this.jcrSupport.getItem(source);
final Object target = this.jcrSupport.getNode(destParentRsrc);
if (item == null || target == null ) {
move(source, destParentRsrc);
} else {
this.jcrSupport.checkoutIfNecessary(source.getParent(), changes, versioningConfiguration);
this.jcrSupport.move(item, target, destName);
}
final Resource result = destParentRsrc.getChild(destName);
if ( result != null ) {
changes.add(Modification.onMoved(source.getPath(), result.getPath()));
}
return result;
}