Query on ResourceChangeListener
Hi All,
I was trying to capture resource change events using ResourceChangeListener but, nothing is getting captured in log file.
Here, resource is - cq:page and it has one property called: 'interval' at /content/poll/jcr:content.
Here is my code -
import java.util.List;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.api.resource.LoginException;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
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.osgi.service.component.annotations.Reference;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.aemtraining.service.SessionHandlerService;
@Component(immediate = true)
@Service(value = {ResourceChangeListener.class})
@Properties(value = {
@Property(name = ResourceChangeListener.PATHS, value = { "/content/poll/jcr:content" }),
@Property(name = ResourceChangeListener.CHANGES, value = { "CHANGED"}, propertyPrivate=true),
@Property(name = ResourceChangeListener.PROPERTY_NAMES_HINT, value={"interval"})
})
public class PropertyChangeListener implements ResourceChangeListener {
private final Logger logger = LoggerFactory.getLogger(getClass());
@Reference
private SessionHandlerService sessionHandlerService;
@Override
public void onChange(List<ResourceChange> resourceChangeList) {
ResourceResolver resourceResolver = null;
try {
resourceResolver = sessionHandlerService.getResourceResolver();
for (ResourceChange resourceChange : resourceChangeList) {
String resourcepath = resourceChange.getPath();
logger.info("******* RESOURCE PATH *******"+ resourcepath);
Resource resource = resourceResolver.getResource(resourcepath);
logger.info("******* RESOURCE NAME *******"+ resource.getName());
}
} catch (LoginException e) {
e.printStackTrace();
}
}
}
I am using AEM 6.3 and I have used archetype 11.
Please have a look and let me know if I have missed anything.
Thanks ,
Debal