Come spostare una risorsa in un codice applicazione

Ambiente

Risorse AEM 6.0, 6.1, 6.2, 6.3

Passaggi

Le risorse non possono essere spostate correttamente utilizzando l'API Session.move di JCR.  È invece necessario utilizzare l' API PageManager.move.

Ad esempio:

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

Sfortunatamente, questa chiamata al metodo non include completamente tutto quello che è stato fatto dai com.day.cq.wcm.core.impl.commands. Classe AbstractCopyMoveCommand che gestisce la richiesta dell'interfaccia utente. Per simulare completamente l'interfaccia utente, è necessario attivare internamente questa richiesta utilizzando lo SlingRequestProcessor.

Vedere questo articolo per i dettagli su come estinguere internamente una tale richiesta:
http://www.nateyolles.com/blog/2015/10/get-rendered-html-for-an-aem-resource-or-component

La richiesta sarà:

POST /bin/wcmcommand

con questi parametri POST:

cmd=movePage
integrity=true
_charset=utf-8
destParentPath=/content/dam
destName=test1.png
srcPath=/content/dam/test.png
Logo Adobe

Accedi al tuo account