Skip to main content
Selva123
New Participant
March 30, 2016

Programatically replicate the asset including all the sub asets

  • March 30, 2016
  • 3 replies
  • 3007 views

Hi,

I am using the Replicator API to replicate the asset like below.

replicator.replicate(session, ReplicationActionType.ACTIVATE, asset.getPath());

but somehow subassets are not replicated. Please confirm is there we can replicate all the subassets when the asset has been activated.

I am using the below code and achieving it now. Is there any better way the API or AEM provides. please help.

        Resource resource = resolver.resolve(assetPath);

                   if(resource != null){
                       Asset parentAsset = resource.adaptTo(Asset.class);
                       if(parentAsset != null){
                           Collection<Asset> subAssetCollection = parentAsset.getSubAssets();
                           for(Asset subAsset : subAssetCollection){
                               replicator.replicate(session, ReplicationActionType.ACTIVATE, subAsset.getPath());
                           }
                       }
                   }

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.

3 replies

smacdonald2008
New Participant
April 1, 2016

This is a good use case to add to our community articles. 

kautuk_sahni
Employee
March 30, 2016

[No solution, but good to refer this]

Hi

Please read this post :

Link:- http://stackoverflow.com/questions/18955982/how-to-activate-programmatically-a-page-in-cq5-workflow

//Use Replicator OSGi service:

@Component public class MyComponent { @Reference private Replicator replicator; private void activatePage(Session session) { //... replicator.replicate(session, ReplicationActionType.ACTIVATE, pathToPage); //... } }
Kautuk Sahni
edubey
New Participant
March 30, 2016

It looks fine to me, 

You are using right asset API and replicator as well.

Other community member will share if there is better way