this.forwardError(theVerificationURL, theRequest, theResponse);
this.redirectError(theVerificationURL, theRequest, theResponse);
    private void verifyAnswerToACaptchaChallenge(        HttpServletRequest theRequest,        HttpServletResponse theResponse,        String theVerificationURL,        FilterChain theFilterChain)        throws IOException, ServletException    {        // get captcha ID from the request        String captchaID = theRequest.getParameter(captchaIDParameterName);        if ((captchaID == null)            || (captchaID.length() > this.captchaIDMaxLength))        {            // If the captcha ID is not specified or is too long,            // return a 404 error            if (log.isWarnEnabled())            {                log.warn(                    "There was a try from "                        + theRequest.getRemoteAddr()                        + " to render an URL without ID"                        + " or with a too long one");            }            theResponse.sendError(HttpServletResponse.SC_NOT_FOUND);            return;        }        // get challenge response from the request        String challengeResponse =            theRequest.getParameter(captchaChallengeResponseParameterName);        if (challengeResponse == null)        {            // If the challenge response is not specified, forward error            this.forwardError(theVerificationURL, theRequest, theResponse);            return;        }        // get the captcha from internal store and remove it from there        WebCaptcha captcha = (WebCaptcha) this.internalStore.get(captchaID);        this.internalStore.remove(captchaID);        // if captcha is null, it means that captcha ID is a fake one or that        // the timeout is expired and there was a run of the garbage collector        // -> forward error        if (captcha == null)        {            this.forwardError(theVerificationURL, theRequest, theResponse);            return;        }        // verify challenge response and forward to the corresponding URL        if (captcha.validateResponse(challengeResponse))        {            // update the total number of captcha correctly answered            totalNumberOfCaptchaCorrectlyAnswered += 1;            // clean the request and call the next element in filter chain            // (forward success)            this.forwardSuccess(theFilterChain, theRequest, theResponse);        }        else        {            // update the total number of captcha badly answered            totalNumberOfCaptchaBadlyAnswered += 1;            // forward            this.forwardError(theVerificationURL, theRequest, theResponse);        }    }