Skip to content

Commit 267278c

Browse files
authored
Merge pull request #165 from awslabs/core
Preparing for 1.1.3 release
2 parents dfe6e4f + 31475a7 commit 267278c

File tree

24 files changed

+176
-154
lines changed

24 files changed

+176
-154
lines changed

archetypes/jersey/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<parent>
55
<groupId>com.amazonaws.serverless</groupId>
66
<artifactId>aws-serverless-java-container</artifactId>
7-
<version>1.2-SNAPSHOT</version>
7+
<version>1.1.3-SNAPSHOT</version>
88
</parent>
99

1010
<groupId>com.amazonaws.serverless.archetypes</groupId>
1111
<artifactId>aws-serverless-jersey-archetype</artifactId>
12-
<version>1.2-SNAPSHOT</version>
12+
<version>1.1.3-SNAPSHOT</version>
1313
<packaging>maven-archetype</packaging>
1414

1515
<scm>

archetypes/jersey/src/main/resources/archetype-resources/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<dependency>
2121
<groupId>com.amazonaws.serverless</groupId>
2222
<artifactId>aws-serverless-java-container-jersey</artifactId>
23-
<version>1.1.2</version>
23+
<version>1.1.3</version>
2424
</dependency>
2525

2626
<dependency>

archetypes/spark/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<parent>
55
<groupId>com.amazonaws.serverless</groupId>
66
<artifactId>aws-serverless-java-container</artifactId>
7-
<version>1.2-SNAPSHOT</version>
7+
<version>1.1.3-SNAPSHOT</version>
88
</parent>
99

1010
<groupId>com.amazonaws.serverless.archetypes</groupId>
1111
<artifactId>aws-serverless-spark-archetype</artifactId>
12-
<version>1.2-SNAPSHOT</version>
12+
<version>1.1.3-SNAPSHOT</version>
1313
<packaging>maven-archetype</packaging>
1414

1515
<scm>

archetypes/spark/src/main/resources/archetype-resources/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<dependency>
2424
<groupId>com.amazonaws.serverless</groupId>
2525
<artifactId>aws-serverless-java-container-spark</artifactId>
26-
<version>1.1.2</version>
26+
<version>1.1.3</version>
2727
</dependency>
2828

2929
<dependency>

archetypes/spring/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<parent>
55
<groupId>com.amazonaws.serverless</groupId>
66
<artifactId>aws-serverless-java-container</artifactId>
7-
<version>1.2-SNAPSHOT</version>
7+
<version>1.1.3-SNAPSHOT</version>
88
</parent>
99

1010
<groupId>com.amazonaws.serverless.archetypes</groupId>
1111
<artifactId>aws-serverless-spring-archetype</artifactId>
12-
<version>1.2-SNAPSHOT</version>
12+
<version>1.1.3-SNAPSHOT</version>
1313
<packaging>maven-archetype</packaging>
1414

1515
<scm>

archetypes/spring/src/main/resources/archetype-resources/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
<dependency>
2525
<groupId>com.amazonaws.serverless</groupId>
2626
<artifactId>aws-serverless-java-container-spring</artifactId>
27-
<version>1.1.2</version>
27+
<version>1.1.3</version>
2828
</dependency>
2929

3030
<dependency>

archetypes/springboot/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
<parent>
55
<groupId>com.amazonaws.serverless</groupId>
66
<artifactId>aws-serverless-java-container</artifactId>
7-
<version>1.2-SNAPSHOT</version>
7+
<version>1.1.3-SNAPSHOT</version>
88
</parent>
99

1010
<groupId>com.amazonaws.serverless.archetypes</groupId>
1111
<artifactId>aws-serverless-springboot-archetype</artifactId>
12-
<version>1.2-SNAPSHOT</version>
12+
<version>1.1.3-SNAPSHOT</version>
1313
<packaging>maven-archetype</packaging>
1414

1515
<scm>

archetypes/springboot/src/main/resources/archetype-resources/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<dependency>
2828
<groupId>com.amazonaws.serverless</groupId>
2929
<artifactId>aws-serverless-java-container-spring</artifactId>
30-
<version>1.1.2</version>
30+
<version>1.1.3</version>
3131
</dependency>
3232

3333
<dependency>

aws-serverless-java-container-core/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
<name>AWS Serverless Java container support - Core</name>
77
<description>Allows Java applications written for a servlet container to run in AWS Lambda</description>
88
<url>https://aws.amazon.com/lambda</url>
9-
<version>1.2-SNAPSHOT</version>
9+
<version>1.1.3-SNAPSHOT</version>
1010

1111
<parent>
1212
<groupId>com.amazonaws.serverless</groupId>
1313
<artifactId>aws-serverless-java-container</artifactId>
14-
<version>1.2-SNAPSHOT</version>
14+
<version>1.1.3-SNAPSHOT</version>
1515
</parent>
1616

1717
<properties>

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsHttpServletRequest.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import javax.servlet.AsyncContext;
2525
import javax.servlet.DispatcherType;
2626
import javax.servlet.ServletContext;
27+
import javax.servlet.ServletException;
2728
import javax.servlet.http.Cookie;
2829
import javax.servlet.http.HttpServletRequest;
2930
import javax.servlet.http.HttpSession;
@@ -288,9 +289,12 @@ protected Cookie[] parseCookieHeaderValue(String headerValue) {
288289
* Given a map of key/values query string parameters from API Gateway, creates a query string as it would have
289290
* been in the original url.
290291
* @param parameters A Map&lt;String, String&gt; of query string parameters
292+
* @param encode Whether the key and values should be URL encoded
293+
* @param encodeCharset Charset to use for encoding the query string
291294
* @return The generated query string for the URI
292295
*/
293-
protected String generateQueryString(EncodingQueryStringParameterMap parameters) {
296+
protected String generateQueryString(Map<String, String> parameters, boolean encode, String encodeCharset)
297+
throws ServletException {
294298
if (parameters == null || parameters.size() == 0) {
295299
return null;
296300
}
@@ -300,12 +304,31 @@ protected String generateQueryString(EncodingQueryStringParameterMap parameters)
300304

301305
StringBuilder queryStringBuilder = new StringBuilder();
302306

303-
parameters.keySet().stream().forEach(k -> parameters.get(k).stream().forEach(v -> {
307+
/*parameters.keySet().stream().forEach(k -> parameters.stream().forEach(v -> {
304308
queryStringBuilder.append("&");
305309
queryStringBuilder.append(k);
306310
queryStringBuilder.append("=");
307311
queryStringBuilder.append(v);
308-
}));
312+
}));*/
313+
try {
314+
for (Map.Entry<String, String> e : parameters.entrySet()) {
315+
queryStringBuilder.append("&");
316+
if (encode) {
317+
queryStringBuilder.append(URLEncoder.encode(e.getKey(), encodeCharset));
318+
} else {
319+
queryStringBuilder.append(e.getKey());
320+
}
321+
queryStringBuilder.append("=");
322+
if (encode) {
323+
queryStringBuilder.append(URLEncoder.encode(e.getValue(), encodeCharset));
324+
} else {
325+
queryStringBuilder.append(e.getValue());
326+
}
327+
328+
}
329+
} catch (UnsupportedEncodingException e) {
330+
throw new ServletException("Invalid charset passed for query string encoding", e);
331+
}
309332

310333
queryString = queryStringBuilder.toString();
311334
queryString = queryString.substring(1); // remove the first & - faster to do it here than adding logic in the Lambda

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/AwsProxyHttpServletRequest.java

Lines changed: 39 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ public class AwsProxyHttpServletRequest extends AwsHttpServletRequest {
8787
private Map<String, List<String>> urlEncodedFormParameters;
8888
private Map<String, Part> multipartFormParameters;
8989
private Map<String, String> caseInsensitiveHeaders;
90-
private EncodingQueryStringParameterMap queryStringParameters;
9190
private static Logger log = LoggerFactory.getLogger(AwsProxyHttpServletRequest.class);
9291
private ContainerConfig config;
9392

@@ -107,9 +106,6 @@ public AwsProxyHttpServletRequest(AwsProxyRequest awsProxyRequest, Context lambd
107106
this.securityContext = awsSecurityContext;
108107
this.config = config;
109108

110-
this.queryStringParameters = new EncodingQueryStringParameterMap(config.isQueryStringCaseSensitive(), config.getUriEncoding());
111-
this.queryStringParameters.putAllMapEncoding(request.getQueryStringParameters());
112-
113109
this.caseInsensitiveHeaders = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
114110
this.caseInsensitiveHeaders.putAll(awsProxyRequest.getHeaders());
115111
}
@@ -230,7 +226,12 @@ public String getContextPath() {
230226

231227
@Override
232228
public String getQueryString() {
233-
return this.generateQueryString(queryStringParameters);
229+
try {
230+
return this.generateQueryString(request.getQueryStringParameters(), true, config.getUriEncoding());
231+
} catch (ServletException e) {
232+
log.error("Could not generate query string", e);
233+
return null;
234+
}
234235
}
235236

236237

@@ -441,11 +442,7 @@ public ServletInputStream getInputStream()
441442

442443
@Override
443444
public String getParameter(String s) {
444-
String paramKey = s;
445-
if (config.isQueryStringCaseSensitive()) {
446-
paramKey = paramKey.toLowerCase(Locale.getDefault());
447-
}
448-
String queryStringParameter = queryStringParameters.getFirst(paramKey);
445+
String queryStringParameter = getQueryParamValue(s, config.isQueryStringCaseSensitive());
449446
if (queryStringParameter != null) {
450447
return queryStringParameter;
451448
}
@@ -462,7 +459,9 @@ public String getParameter(String s) {
462459
@Override
463460
public Enumeration<String> getParameterNames() {
464461
List<String> paramNames = new ArrayList<>();
465-
paramNames.addAll(queryStringParameters.keySet());
462+
if (request.getQueryStringParameters() != null) {
463+
paramNames.addAll(request.getQueryStringParameters().keySet());
464+
}
466465
paramNames.addAll(getFormUrlEncodedParametersMap().keySet());
467466
return Collections.enumeration(paramNames);
468467
}
@@ -471,16 +470,11 @@ public Enumeration<String> getParameterNames() {
471470
@Override
472471
@SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS") // suppressing this as according to the specs we should be returning null here if we can't find params
473472
public String[] getParameterValues(String s) {
474-
String paramKey = s;
475-
if (config.isQueryStringCaseSensitive()) {
476-
paramKey = paramKey.toLowerCase(Locale.getDefault());
477-
}
478473
List<String> values = new ArrayList<>();
479-
List<String> queryParamValues = queryStringParameters.get(paramKey);
480-
if (queryParamValues != null) {
481-
values.addAll(queryParamValues);
474+
String queryValue = getQueryParamValue(s, config.isQueryStringCaseSensitive());
475+
if (queryValue != null) {
476+
values.add(queryValue);
482477
}
483-
//values.addAll(queryStringParameters.get(paramKey));
484478

485479
String[] formBodyValues = getFormBodyParameterCaseInsensitive(s);
486480
if (formBodyValues != null) {
@@ -504,9 +498,17 @@ public Map<String, String[]> getParameterMap() {
504498
output.put(e.getKey(), e.getValue().toArray(new String[0]));
505499
});
506500

507-
queryStringParameters.keySet().stream().parallel().forEach(e -> {
508-
output.put(e, queryStringParameters.get(e).toArray(new String[0]));
509-
});
501+
if (request.getQueryStringParameters() != null) {
502+
request.getQueryStringParameters().keySet().stream().parallel().forEach(e -> {
503+
List<String> newValues = new ArrayList<>();
504+
if (output.containsKey(e)) {
505+
String[] values = output.get(e);
506+
newValues.addAll(Arrays.asList(values));
507+
}
508+
newValues.add(getQueryParamValue(e, config.isQueryStringCaseSensitive()));
509+
output.put(e, newValues.toArray(new String[0]));
510+
});
511+
}
510512

511513
return output;
512514
}
@@ -649,13 +651,6 @@ public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse se
649651
return null;
650652
}
651653

652-
//-------------------------------------------------------------
653-
// Methods - Protected
654-
//-------------------------------------------------------------
655-
656-
protected EncodingQueryStringParameterMap getQueryParametersMap() {
657-
return queryStringParameters;
658-
}
659654

660655
//-------------------------------------------------------------
661656
// Methods - Private
@@ -816,6 +811,21 @@ public static String decodeValueIfEncoded(String value) {
816811
}
817812

818813

814+
private String getQueryParamValue(String key, boolean isCaseSensitive) {
815+
if (isCaseSensitive) {
816+
return request.getQueryStringParameters().get(key);
817+
}
818+
819+
for (String k : request.getQueryStringParameters().keySet()) {
820+
if (k.toLowerCase(Locale.getDefault()).equals(key.toLowerCase(Locale.getDefault()))) {
821+
return request.getQueryStringParameters().get(k);
822+
}
823+
}
824+
825+
return null;
826+
}
827+
828+
819829
public static class AwsServletInputStream extends ServletInputStream {
820830

821831
private InputStream bodyStream;

aws-serverless-java-container-core/src/main/java/com/amazonaws/serverless/proxy/internal/servlet/EncodingQueryStringParameterMap.java

Lines changed: 0 additions & 89 deletions
This file was deleted.

0 commit comments

Comments
 (0)