Friday, December 11, 2015

How to capture the RollOutPage as event in aem

When we are using Live copy based on the Blueprint in aem. This is one of the scenario, where we will come across the RollOut event in AEM.

          If we made any change to Blue print copy and want to reflect the changes to Live-copy as well, then we have to use Rollout page from the Sidekick. Then the changes will get reflected under Live-copy.  

         So, the changes are reflected and captured under jcr:content of the live copy. Here if we want to capture the RollOutPage event in aem using the java, we can use following code as reference.

Note: The following code is just for reference. 

package com.adobe.training.core.impl;
import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.observation.Event;
import javax.jcr.observation.EventIterator;
import javax.jcr.observation.EventListener;
import javax.jcr.observation.ObservationManager;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.sling.jcr.api.SlingRepository;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class TitlePropertyListner implements EventListener {
    
    private final Logger log = LoggerFactory.getLogger(TitlePropertyListner.class);
    
    @Reference
    private SlingRepository repository;
    
    private Session session;
    private ObservationManager observationManager;
    
    protected void activate(ComponentContext context) throws Exception
    {
        session = repository.loginAdministrative(null);
        observationManager = session.getWorkspace().getObservationManager();
        observationManager.addEventListener(this, Event.PROPERTY_CHANGED, "/", true, null, null, true);
        log.info("********************************************** added JCR event listner");
    }
    protected void deactivate(ComponentContext context)
    {
        try{
            if(observationManager !=null)
            {
                observationManager.removeEventListener(this);
                log.info("************************************************************ removed JCR event listner");
            }
        }
        catch(RepositoryException e)
        {
            log.error("***************************************************************** error removing JCR event listner", e);  
        }
    }
    

    @Override
    public void onEvent(EventIterator it) {
        while (it.hasNext()) {
            Event event = it.nextEvent();
            try {
             log.info("********new property event: {}", event.getPath());
                Property changedProperty = session.getProperty(event.getPath());
                if (changedProperty.getName().equalsIgnoreCase("cq:lastRolledout")) {
                    log.info("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^LastRolledout Time: {}", changedProperty.getValue());
                    session.save();
                    
                }
            }
            catch (Exception e) {
                log.error(e.getMessage(), e);
            }
        }   
        
    }

}

No comments:

Post a Comment