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