ResourceChangeListener
I'm writing a ResourceChangeListener to check for changes in a particular property ( for ex : "cq:lastReplicated")
But the listener gets triggered for any kind of change, I want it to listen only to the property specified in the
Here is my example code
package com.demo.core.jobs;
import java.util.List;
import org.apache.sling.api.resource.observation.ResourceChange;
import org.apache.sling.api.resource.observation.ResourceChangeListener;
import org.osgi.service.component.annotations.Component;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.osgi.framework.Constants;
/**
* ResourceChangeListener
*/
@Component(service = ResourceChangeListener.class, property = {
Constants.SERVICE_DESCRIPTION + "=Demo to listen on changes in the replication",
ResourceChangeListener.PATHS + "=" + "/content/dam",
ResourceChangeListener.CHANGES + "=" + "CHANGED",
ResourceChangeListener.PROPERTY_NAMES_HINT + "=" + "cq:lastReplicated"
})
public class ResourceListenerTest implements ResourceChangeListener {
/**
* logger for logging.
*/
private final Logger logger = LoggerFactory.getLogger(getClass());
/**
* Override
*/
public final void onChange(final List<ResourceChange> changes) {
for (ResourceChange change : changes) {
String path = change.getPath();
logger.info("Handling resource change at: {}", path);
}
}
}
Any suggestion on how to make this work would be appreciated.
Thanks