Fail Replication Event Listener

Thanks Henry Saginor from Adobe for this information

import org.apache.sling.event.jobs.JobUtil;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;

/**
* By Yogesh Upadhyay
*/


@Component(metatype=false,immediate=true)
@Service
@Property(name="event.topics" valueRef="org.apache.sling.event.jobs.JobUtil.TOPIC_JOB_FAILED")

public class FailedReplicationsListener implements EventHandler {

	private static final Logger log = LoggerFactory.getLogger(FailedReplicationsListener.class);
	
	public void handleEvent(Event event) {
		log.info("========================================================================================");
		
		Event jobEvent = (Event) event.getProperty(JobUtil.PROPERTY_NOTIFICATION_JOB); 
		if(jobEvent != null) {
			String topic = jobEvent.getTopic();
			if(topic != null && topic.startsWith("com/day/cq/replication/job")) {
				logEvent(jobEvent);
				String cqPath = (String) jobEvent.getProperty("cq:path"); 
				String cqAction = (String) jobEvent.getProperty("cq:type"); 
				int retryCount = (Integer) jobEvent.getProperty(JobUtil.PROPERTY_JOB_RETRY_COUNT);
				int retries = (Integer) jobEvent.getProperty(JobUtil.PROPERTY_JOB_RETRIES);
				if(retryCount == retries) {
					log.error("Replication action {} failed on {} after " + retryCount + " retries.", cqAction, cqPath);
				}
					
			}
		}
		 
		log.info("========================================================================================");
		
	}
	
	private void logEvent(Event event) {
		String n[] = event.getPropertyNames();
		log.info("Event properties: ");
		for(String s : n) {
			log.info(s + " = " + event.getProperty(s));
		}
	}

}
Comments