@Override
    public WebApplicationService extractService(final HttpServletRequest request) {
        val service = extractServiceInternal(request);
        if (service == null) {
            LOGGER.trace("Extractor did not generate service via [{}].", getClass().getName());
        } else {
            LOGGER.trace("Extractor [{}] generated service type [{}] for: [{}]",
                getClass().getName(),
                service.getClass().getName(), DigestUtils.abbreviate(service.getId()));
        }
        return service;
    }
The factory responsible for creating service objects based on the arguments extracted.
core/cas-server-core-web-api/src/main/java/org/apereo/cas/web/support/AbstractArgumentExtractor.java