public static List listOpenNonWinningVotings()

in src/main/java/org/apache/sling/discovery/impl/cluster/voting/VotingHelper.java [51:113]


    public static List<VotingView> listOpenNonWinningVotings(
            final ResourceResolver resourceResolver, final Config config) {
        if (config==null) {
            logger.info("listOpenNonWinningVotings: config is null, bundle likely deactivated.");
            return new ArrayList<VotingView>();
        }
        final String ongoingVotingsPath = config.getOngoingVotingsPath();
        final Resource ongoingVotingsResource = resourceResolver
                .getResource(ongoingVotingsPath);
        if (ongoingVotingsResource == null) {
            // it is legal that at this stage there is no ongoingvotings node yet 
            // for example when there was never a voting yet
            logger.debug("listOpenNonWinningVotings: no ongoing votings parent resource found");
            return new ArrayList<VotingView>();
        }
        final Iterable<Resource> children = ongoingVotingsResource.getChildren();
        final Iterator<Resource> it = children.iterator();
        final List<VotingView> result = new LinkedList<VotingView>();
        if (!it.hasNext()) {
            return result;
        }
        while (it.hasNext()) {
            Resource aChild = it.next();
            VotingView c = new VotingView(aChild);
            String matchesLiveView;
            try {
                matchesLiveView = c.matchesLiveView(config);
            } catch (Exception e) {
                logger.error("listOpenNonWinningVotings: could not compare voting with live view: "+e, e);
                continue;
            }
            boolean ongoingVoting = c.isOngoingVoting(config);
            boolean hasNoVotes = c.hasNoVotes();
            boolean isWinning = c.isWinning();
            if (matchesLiveView == null
                    && ongoingVoting && !hasNoVotes
                    && !isWinning) {
            	if (logger.isDebugEnabled()) {
	                logger.debug("listOpenNonWinningVotings: found an open voting: "
	                        + aChild
	                        + ", properties="
	                        + ResourceHelper.getPropertiesForLogging(aChild));
            	}
                result.add(c);
            } else {
            	if (logger.isDebugEnabled()) {
	                logger.debug("listOpenNonWinningVotings: a non-open voting: "
	                        + aChild
	                        + ", matches live: " + matchesLiveView
	                        + ", is ongoing: " + ongoingVoting
	                        + ", has no votes: " + hasNoVotes
	                        + ", is winning: " + isWinning
	                        + ", properties="
	                        + ResourceHelper.getPropertiesForLogging(aChild));
            	}
            }
        }
    	if (logger.isDebugEnabled()) {
	        logger.debug("listOpenNonWinningVotings: votings found: "
	                + result.size());
    	}
        return result;
    }