private List getLastMessagesOfProgressTracker()

in src/main/java/org/apache/sling/engine/impl/SlingJakartaHttpServletResponseImpl.java [361:383]


    private List<String> getLastMessagesOfProgressTracker() {
        // Collect the last MAX_NR_OF_MESSAGES messages from the RequestProgressTracker
        // to prevent excessive memory
        // consumption errors when close to infinite recursive calls are made
        int nrOfOriginalMessages = 0;
        boolean gotCut = false;
        Iterator<String> messagesIterator =
                requestData.getRequestProgressTracker().getMessages();
        LinkedList<String> lastMessages = new LinkedList<>();
        while (messagesIterator.hasNext()) {
            nrOfOriginalMessages++;
            if (gotCut || lastMessages.size() >= MAX_NR_OF_MESSAGES) {
                lastMessages.removeFirst();
                gotCut = true;
            }
            lastMessages.add(messagesIterator.next());
        }

        if (gotCut) {
            lastMessages.addFirst("... cut " + (nrOfOriginalMessages - MAX_NR_OF_MESSAGES) + " messages ...");
        }
        return lastMessages;
    }