Umgebung
AEM Assets 6.0, 6.1, 6.2, 6.3.
Schritte
Assets können nicht ordnungsgemäß mithilfe der JCR-Session.move-API verschoben werden. Stattdessen müssen Sie die PageManager.move API verwenden.
Beispiel:
PageManager pageManager = ((PageManager)resourceResolver.adaptTo(PageManager.class)); Resource sourceResource = resourceResolver.getResource("/content/dam/example.jpg"); String destinationPath = "/content/dam/test/example.jpg"; pageManager.move(sourceResource, destinationPath, null, false, true, null, null);
Leider enthält dieser Methodenaufruf nicht alles, was von den com.day.cq.wcm.core.impl.commands erledigt wird. AbstractCopyMoveCommand-Klasse, die die Anforderung von der Benutzeroberfläche verarbeitet. Um die Benutzeroberfläche vollständig zu simulieren, müssten Sie diese Anforderung intern mit dem SlingRequestProcessor auslösen.
In diesem Artikel finden Sie Einzelheiten dazu, wie Sie eine solche Anfrage intern auslösen können:
http://www.nateyolles.com/blog/2015/10/get-rendered-html-for-an-aem-resource-or-component.
Die Anfrage wäre:
POST /bin/wcmcommand
mit diesen POST-Parametern:
cmd=movePage integrity=true _charset=utf-8 destParentPath=/content/dam destName=test1.png srcPath=/content/dam/test.png