protected boolean onlyDiffersInProperties()

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


    protected boolean onlyDiffersInProperties(BaseTopologyView newView) {
        if (previousView==null) {
            return false;
        }
        if (newView==null) {
            throw new IllegalArgumentException("newView must not be null");
        }
        String previousSyncTokenId = null;
        String newSyncTokenId = null;
        try{
            previousSyncTokenId = previousView.getLocalClusterSyncTokenId();
        } catch(IllegalStateException re) {
            previousSyncTokenId = null;
        }
        try{
            newSyncTokenId = newView.getLocalClusterSyncTokenId();
        } catch(IllegalStateException re) {
            newSyncTokenId = null;
        }
        if ((previousSyncTokenId == null && newSyncTokenId != null)
                || (newSyncTokenId == null && previousSyncTokenId != null)
                || (previousSyncTokenId!=null && !previousSyncTokenId.equals(newSyncTokenId))) {
            return false;
        }
        if (previousView.getInstances().size()!=newView.getInstances().size()) {
            return false;
        }
        if (previousView.equals(newView)) {
            return false;
        }
        Set<String> newIds = new HashSet<String>();
        for(InstanceDescription newInstance : newView.getInstances()) {
            newIds.add(newInstance.getSlingId());
        }
        
        for(InstanceDescription oldInstance : previousView.getInstances()) {
            InstanceDescription newInstance = newView.getInstance(oldInstance.getSlingId());
            if (newInstance == null) {
                return false;
            }
            if (oldInstance.isLeader() != newInstance.isLeader()) {
                return false;
            }
            if (!oldInstance.getClusterView().getId().equals(newInstance.getClusterView().getId())) {
                return false;
            }
        }
        return true;
    }