private ContainerRequest servletRequestToContainerRequest()

in aws-serverless-java-container-jersey/src/main/java/com/amazonaws/serverless/proxy/jersey/JerseyHandlerFilter.java [132:185]


    private ContainerRequest servletRequestToContainerRequest(ServletRequest request) {
        Timer.start("JERSEY_SERVLET_REQUEST_TO_CONTAINER");
        HttpServletRequest servletRequest = (HttpServletRequest)request;

        if (baseUri == null) {
            baseUri = getBaseUri(request, "/");
        }

        String requestFullPath = servletRequest.getRequestURI();
        if (LambdaContainerHandler.getContainerConfig().getServiceBasePath() != null && LambdaContainerHandler.getContainerConfig().isStripBasePath()) {
            if (requestFullPath.startsWith(LambdaContainerHandler.getContainerConfig().getServiceBasePath())) {
                requestFullPath = requestFullPath.replaceFirst(LambdaContainerHandler.getContainerConfig().getServiceBasePath(), "");
                if (!requestFullPath.startsWith("/")) {
                    requestFullPath = "/" + requestFullPath;
                }
            }
        }
        UriBuilder uriBuilder = UriBuilder.fromUri(baseUri).path(requestFullPath);
        uriBuilder.replaceQuery(servletRequest.getQueryString());

        PropertiesDelegate apiGatewayProperties = new MapPropertiesDelegate();
        apiGatewayProperties.setProperty(API_GATEWAY_CONTEXT_PROPERTY, servletRequest.getAttribute(API_GATEWAY_CONTEXT_PROPERTY));
        apiGatewayProperties.setProperty(API_GATEWAY_STAGE_VARS_PROPERTY, servletRequest.getAttribute(API_GATEWAY_STAGE_VARS_PROPERTY));
        apiGatewayProperties.setProperty(LAMBDA_CONTEXT_PROPERTY, servletRequest.getAttribute(LAMBDA_CONTEXT_PROPERTY));
        apiGatewayProperties.setProperty(JERSEY_SERVLET_REQUEST_PROPERTY, servletRequest);

        ContainerRequest requestContext = new ContainerRequest(
                null, // jersey uses "/" by default
                uriBuilder.build(),
                servletRequest.getMethod().toUpperCase(Locale.ENGLISH),
                (SecurityContext)servletRequest.getAttribute(JAX_SECURITY_CONTEXT_PROPERTY),
                apiGatewayProperties);

        InputStream requestInputStream;
        try {
            requestInputStream = servletRequest.getInputStream();
            if (requestInputStream != null) {
                requestContext.setEntityStream(requestInputStream);
            }
        } catch (IOException e) {
            log.error("Could not read input stream from request", e);
            throw new RuntimeException("Could not read request input stream", e);
        }

        Enumeration<String> headerNames = servletRequest.getHeaderNames();

        while (headerNames.hasMoreElements()) {
            String headerKey = headerNames.nextElement();
            requestContext.getHeaders().addAll(headerKey, Collections.list(servletRequest.getHeaders(headerKey)));
        }

        Timer.stop("JERSEY_SERVLET_REQUEST_TO_CONTAINER");
        return requestContext;
    }