Skip to content

Commit ba7a33c

Browse files
committed
Changed ContainerRequest creation to use the method for the headers. Simple add was sending to an unimplemented addNull if the list didn't already exist. Also added unit test for issue aws#208
1 parent f084177 commit ba7a33c

File tree

3 files changed

+29
-2
lines changed

3 files changed

+29
-2
lines changed

aws-serverless-java-container-jersey/src/main/java/com/amazonaws/serverless/proxy/jersey/JerseyHandlerFilter.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030
import java.io.IOException;
3131
import java.io.InputStream;
3232
import java.net.URI;
33+
import java.util.ArrayList;
34+
import java.util.Collections;
3335
import java.util.Enumeration;
3436
import java.util.Locale;
3537
import java.util.concurrent.CountDownLatch;
@@ -167,8 +169,7 @@ private ContainerRequest servletRequestToContainerRequest(ServletRequest request
167169

168170
while (headerNames.hasMoreElements()) {
169171
String headerKey = headerNames.nextElement();
170-
//requestContext.header(headerKey, servletRequest.getHeader(headerKey));
171-
requestContext.getHeaders().add(headerKey, servletRequest.getHeader(headerKey));
172+
requestContext.getHeaders().addAll(headerKey, Collections.list(servletRequest.getHeaders(headerKey)));
172173
}
173174

174175
Timer.stop("JERSEY_SERVLET_REQUEST_TO_CONTAINER");

aws-serverless-java-container-jersey/src/test/java/com/amazonaws/serverless/proxy/jersey/EchoJerseyResource.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import com.amazonaws.serverless.proxy.jersey.model.MapResponseModel;
1818
import com.amazonaws.serverless.proxy.jersey.model.SingleValueModel;
1919

20+
import org.glassfish.jersey.server.ContainerRequest;
21+
2022
import javax.servlet.ServletContext;
2123
import javax.servlet.http.HttpServletRequest;
2224
import javax.servlet.http.HttpServletResponse;
@@ -212,4 +214,14 @@ public Response encodedPathParam(@Encoded @PathParam("resource") String resource
212214
sv.setValue(resource);
213215
return Response.ok(sv).build();
214216
}
217+
218+
@Path("/referer-header") @GET
219+
@Produces(MediaType.APPLICATION_JSON)
220+
@Consumes(MediaType.APPLICATION_JSON)
221+
public Response referer(@HeaderParam("Referer") String referer) {
222+
System.out.println("Received referer: " + referer);
223+
SingleValueModel sv = new SingleValueModel();
224+
sv.setValue(referer);
225+
return Response.ok(sv).build();
226+
}
215227
}

aws-serverless-java-container-jersey/src/test/java/com/amazonaws/serverless/proxy/jersey/JerseyAwsProxyTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,20 @@ public void emptyStream_putNullBody_expectPutToSucceed() {
288288
validateSingleValueModel(resp, CUSTOM_HEADER_KEY);
289289
}
290290

291+
@Test
292+
public void refererHeader_headerParam_expectCorrectInjection() {
293+
String refererValue = "test-referer";
294+
AwsProxyRequest request = new AwsProxyRequestBuilder("/echo/referer-header", "GET")
295+
.nullBody()
296+
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
297+
.header("Referer", refererValue)
298+
.build();
299+
300+
AwsProxyResponse resp = handler.proxy(request, lambdaContext);
301+
assertEquals(200, resp.getStatusCode());
302+
validateSingleValueModel(resp, refererValue);
303+
}
304+
291305
private void validateMapResponseModel(AwsProxyResponse output) {
292306
validateMapResponseModel(output, CUSTOM_HEADER_KEY, CUSTOM_HEADER_VALUE);
293307
}

0 commit comments

Comments
 (0)