Skip to content

Commit 26dac66

Browse files
committed
improve HttpServletRequest for Springboot4
1 parent d26bec2 commit 26dac66

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

aws-serverless-java-container-springboot4/src/main/java/com/amazonaws/serverless/proxy/spring/AwsSpringHttpProcessingUtils.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,33 @@ private static HttpServletRequest generateRequest1(String request, Context lambd
120120
SecurityContextWriter securityWriter, ObjectMapper mapper, ServletContext servletContext) {
121121
AwsProxyRequest v1Request = readValue(request, AwsProxyRequest.class, mapper);
122122

123-
// Use AWS container's servlet request instead of Spring Cloud Function's
124-
AwsProxyHttpServletRequest httpServletRequest = new AwsProxyHttpServletRequest(v1Request, lambdaContext, securityWriter.writeSecurityContext(v1Request, lambdaContext));
125-
httpServletRequest.setServletContext(servletContext);
126-
return httpServletRequest;
123+
ServerlessHttpServletRequest httpRequest = new ServerlessHttpServletRequest(servletContext, v1Request.getHttpMethod(), v1Request.getPath());
124+
125+
populateQueryStringParametersV1(v1Request, httpRequest);
126+
populateMultiValueQueryStringParametersV1(v1Request, httpRequest);
127+
128+
if (v1Request.getMultiValueHeaders() != null) {
129+
MultiValueMapAdapter headers = new MultiValueMapAdapter(v1Request.getMultiValueHeaders());
130+
httpRequest.setHeaders(headers);
131+
}
132+
populateContentAndContentType(
133+
v1Request.getBody(),
134+
v1Request.getMultiValueHeaders().getFirst(HttpHeaders.CONTENT_TYPE),
135+
v1Request.isBase64Encoded(),
136+
httpRequest
137+
);
138+
if (v1Request.getRequestContext() != null) {
139+
httpRequest.setAttribute(RequestReader.API_GATEWAY_CONTEXT_PROPERTY, v1Request.getRequestContext());
140+
httpRequest.setAttribute(RequestReader.ALB_CONTEXT_PROPERTY, v1Request.getRequestContext().getElb());
141+
}
142+
httpRequest.setAttribute(RequestReader.API_GATEWAY_STAGE_VARS_PROPERTY, v1Request.getStageVariables());
143+
httpRequest.setAttribute(RequestReader.API_GATEWAY_EVENT_PROPERTY, v1Request);
144+
httpRequest.setAttribute(RequestReader.LAMBDA_CONTEXT_PROPERTY, lambdaContext);
145+
httpRequest.setAttribute(RequestReader.JAX_SECURITY_CONTEXT_PROPERTY,
146+
securityWriter.writeSecurityContext(v1Request, lambdaContext));
147+
return httpRequest;
127148
}
149+
128150

129151

130152

0 commit comments

Comments
 (0)