private void doHandleConsistent()

in src/main/java/org/apache/sling/discovery/commons/providers/base/ViewStateManagerImpl.java [672:710]


    private void doHandleConsistent(BaseTopologyView newView) {
        logger.trace("doHandleConsistent: start");
        
        // unset the isChanging flag
        logger.trace("doHandleConsistent: setting isChanging to false");
        isChanging = false;

        if (previousView==null) {
            // this is the first time handleNewTopologyView is called
            
            if (eventListeners.size()>0) {
                logger.info("doHandleConsistent: no previous view available even though listeners already got CHANGED event");
            } else {
                logger.debug("doHandleConsistent: no previous view and there are no event listeners yet. very quiet.");
            }

            // otherwise this is the normal case where there are uninitialized event listeners waiting below

        } else {
            logger.debug("doHandleConsistent: sending TOPOLOGY_CHANGED to initialized listeners");
            previousView.setNotCurrent();
            enqueueForAll(eventListeners, EventHelper.newChangedEvent(previousView, newView));
        }
        
        if (unInitializedEventListeners.size()>0) {
            // then there were bindTopologyEventListener calls coming in while
            // we were in CHANGING state - so we must send those the INIT they were 
            // waiting for oh so long
            logger.debug("doHandleConsistent: sending TOPOLOGY_INIT to uninitialized listeners ({})", 
                    unInitializedEventListeners.size());
            enqueueForAll(unInitializedEventListeners, EventHelper.newInitEvent(newView));
            eventListeners.addAll(unInitializedEventListeners);
            unInitializedEventListeners.clear();
        }
        
        logger.trace("doHandleConsistent: setting previousView to {}", newView);
        previousView = newView;
        logger.trace("doHandleConsistent: end");
    }