static String resubmitSavedForm()

in support/jakarta-ee/src/main/java/org/apache/shiro/ee/filters/FormResubmitSupport.java [365:407]


    static String resubmitSavedForm(@NonNull String savedFormData, @NonNull String savedRequest,
            HttpServletRequest originalRequest, HttpServletResponse originalResponse,
            ServletContext servletContext, boolean rememberedAjaxResubmit)
            throws InterruptedException, IOException {
        if (log.isDebugEnabled()) {
            log.debug("saved form data: {}", savedFormData);
            log.debug("Set Cookie Headers: {}", originalResponse.getHeaders(SET_COOKIE));
            log.debug("Original Request Headers: {}", Collections.list(originalRequest.getHeaderNames()));
            log.debug("Original Request Cookie Header: {}", Collections.list(originalRequest.getHeaders(COOKIE)));
        }
        if (Boolean.TRUE.toString().equals(originalRequest.getHeader(FORM_IS_RESUBMITTED))) {
            log.debug("Form resubmit: internal auth failure");
            originalResponse.setStatus(AUTHFAIL);
            return resubmitResponseCleanup(originalRequest);
        }
        URI overriddenRequestURI = overrideSavedRequestURI(URI.create(savedRequest));
        HttpClient client = buildHttpClient(overriddenRequestURI, servletContext, originalRequest);
        HttpResponse<String> response;
        PartialAjaxResult decodedFormData;
        try {
            decodedFormData = parseFormData(savedFormData, overriddenRequestURI, client, servletContext);
            HttpRequest postRequest = constructPostRequest(overriddenRequestURI, decodedFormData.result);
            response = sendResubmitRequest(client, postRequest);
        } catch (IOException e) {
            log.warn("Unable to resubmit form to {}" + System.lineSeparator()
                    + "perhaps set org.apache.shiro.form-resubmit-host or "
                    + "org.apache.shiro.form-resubmit-port system property?", overriddenRequestURI, e);
            return savedRequest;
        }
        if (rememberedAjaxResubmit && !decodedFormData.isStatelessRequest) {
            HttpRequest redirectRequest = constructPostRequest(overriddenRequestURI, savedFormData);
            var redirectResponse = client.send(redirectRequest, HttpResponse.BodyHandlers.ofString());
            log.debug("Redirect request: {}, response: {}", redirectRequest, redirectResponse);
            return processResubmitResponse(redirectResponse, originalRequest, originalResponse,
                    response.headers(), savedRequest, servletContext, true, rememberedAjaxResubmit);
        } else {
            deleteCookie(originalResponse, servletContext, SHIRO_FORM_DATA_KEY);
            return processResubmitResponse(response, originalRequest, originalResponse,
                    response.headers(), savedRequest, servletContext,
                    (rememberedAjaxResubmit && decodedFormData.isStatelessRequest) ? false
                            : decodedFormData.isPartialAjaxRequest, rememberedAjaxResubmit);
        }
    }