in src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java [364:406]
public void handleChanging() {
logger.trace("handleChanging: start");
lock.lock();
try{
if (isChanging) {
// if isChanging: then this is no news
// hence: return asap
logger.debug("handleChanging: was already changing - ignoring.");
return;
}
modCnt++;
// whether activated or not: set isChanging to true now
logger.trace("handleChanging: setting isChanging to true");
isChanging = true;
if (!activated) {
// if not activated: we can only start sending events once activated
// hence returning here - after isChanging was set to true accordingly
// note however, that if !activated, there should be no eventListeners yet
// all of them should be in unInitializedEventListeners at the moment
// waiting for activate() and handleNewTopologyView
logger.debug("handleChanging: not yet activated - ignoring.");
return;
}
if (previousView==null) {
// then nothing further to do - this is a very early changing event
// before even the first view was available
logger.debug("handleChanging: no previousView set - ignoring.");
return;
}
logger.debug("handleChanging: sending TOPOLOGY_CHANGING to initialized listeners");
previousView.setNotCurrent();
enqueueForAll(eventListeners, EventHelper.newChangingEvent(previousView));
} finally {
lock.unlock();
logger.trace("handleChanging: finally");
}
}