Your achievements

Level 1

0% to

Level 2

Tip /
Sign in

Sign in to Community

to gain points, level up, and earn exciting badges like the new
Bedrock Mission!

Learn more

View all

Sign in to view all badges

Programatically replicate the asset including all the sub asets

Selva123
Level 3
Level 3

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

3 Replies
edubey
Level 10
Level 10

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

kautuk_sahni
Community Manager
Community Manager

[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); //... } }
smacdonald2008
Level 10
Level 10

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