@Override
    public void recordSubmissionFailure(final HttpServletRequest request) {
        val key = constructKey(request);
        val submission = ThrottledSubmission
            .builder()
            .id(UUID.randomUUID().toString())
            .key(key)
            .username(getUsernameParameterFromRequest(request))
            .clientIpAddress(ClientInfoHolder.getClientInfo().getClientIpAddress())
            .build();
        LOGGER.info("Recording submission failure entry [{}]", submission);
        getConfigurationContext().getThrottledSubmissionStore().put(submission);
        throttledSubmissionReceivers.forEach(Unchecked.consumer(receiver -> receiver.receive(submission)));
        LOGGER.info("Recorded submission failure [{}] for [{}]", submission, key);
    }
Implementation of a {@link InMemoryThrottledSubmissionHandlerInterceptor} that keeps track of a mapping
of IP Addresses to number of failures to authenticate.
This class relies on an external configuration to clean it up.
It ignores the threshold data in the parent class.

@author Scott Battaglia
@since 3.0.0
support/cas-server-support-throttle-core/src/main/java/org/apereo/cas/throttle/AbstractInMemoryThrottledSubmissionHandlerInterceptorAdapter.java