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