You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by mb...@apache.org on 2019/03/13 00:31:11 UTC
[asterixdb] 03/04: Merge commit 'ac5b498' from
'stabilization-f69489' into 'master'
This is an automated email from the ASF dual-hosted git repository.
mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git
commit 54928eb6a3b03c7d71d1c07e11d813f9be8798da
Merge: 4b0ea93 ac5b498
Author: Michael Blow <mb...@apache.org>
AuthorDate: Tue Mar 12 13:43:08 2019 -0400
Merge commit 'ac5b498' from 'stabilization-f69489' into 'master'
Change-Id: Iaf16894f0628189e3d2de685f2b3f132c65baff3
.../translator/LangExpressionToPlanTranslator.java | 15 +++--
.../apache/asterix/test/common/TestExecutor.java | 58 +++++++----------
hyracks-fullstack/hyracks/hyracks-http/pom.xml | 2 -
.../hyracks/http/server/FormUrlEncodedRequest.java | 76 ++++------------------
.../apache/hyracks/http/server/utils/HttpUtil.java | 12 +---
5 files changed, 47 insertions(+), 116 deletions(-)
diff --cc hyracks-fullstack/hyracks/hyracks-http/pom.xml
index a0e426b,9bfbfc2..bf96e79
--- a/hyracks-fullstack/hyracks/hyracks-http/pom.xml
+++ b/hyracks-fullstack/hyracks/hyracks-http/pom.xml
@@@ -59,15 -58,8 +58,14 @@@
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
- <scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpcore-nio</artifactId>
+ <version>4.4.10</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
diff --cc hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
index 08271a6,05a7e5e..42712fd
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/FormUrlEncodedRequest.java
@@@ -18,86 -18,32 +18,36 @@@
*/
package org.apache.hyracks.http.server;
- import java.io.IOException;
+ import java.nio.charset.Charset;
+import java.net.InetSocketAddress;
import java.util.ArrayList;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.HashSet;
+ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
- import java.util.Set;
+ import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.hyracks.http.api.IServletRequest;
import org.apache.hyracks.http.server.utils.HttpUtil;
+import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.http.FullHttpRequest;
import io.netty.handler.codec.http.QueryStringDecoder;
- import io.netty.handler.codec.http.multipart.Attribute;
- import io.netty.handler.codec.http.multipart.HttpPostRequestDecoder;
- import io.netty.handler.codec.http.multipart.InterfaceHttpData;
- import io.netty.handler.codec.http.multipart.MixedAttribute;
public class FormUrlEncodedRequest extends BaseRequest implements IServletRequest {
- private final List<String> names;
- private final List<String> values;
-
- public static IServletRequest create(ChannelHandlerContext ctx, FullHttpRequest request) throws IOException {
- List<String> names = new ArrayList<>();
- List<String> values = new ArrayList<>();
- HttpPostRequestDecoder decoder = new HttpPostRequestDecoder(request);
- try {
- List<InterfaceHttpData> bodyHttpDatas = decoder.getBodyHttpDatas();
- for (InterfaceHttpData data : bodyHttpDatas) {
- if (data.getHttpDataType().equals(InterfaceHttpData.HttpDataType.Attribute)) {
- Attribute attr = (MixedAttribute) data;
- names.add(data.getName());
- values.add(attr.getValue());
- }
- }
- } finally {
- decoder.destroy();
- }
- public static IServletRequest create(FullHttpRequest request) {
++ public static IServletRequest create(ChannelHandlerContext ctx, FullHttpRequest request) {
+ Charset charset = HttpUtil.getRequestCharset(request);
+ Map<String, List<String>> parameters = new LinkedHashMap<>();
+ URLEncodedUtils.parse(request.content().toString(charset), charset).forEach(
+ pair -> parameters.computeIfAbsent(pair.getName(), a -> new ArrayList<>()).add(pair.getValue()));
+ new QueryStringDecoder(request.uri()).parameters()
+ .forEach((name, value) -> parameters.computeIfAbsent(name, a -> new ArrayList<>()).addAll(value));
- return new FormUrlEncodedRequest(request, parameters);
+ InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress();
- return new FormUrlEncodedRequest(request, remoteAddress, new QueryStringDecoder(request.uri()).parameters(),
- names, values);
++ return new FormUrlEncodedRequest(request, remoteAddress, parameters);
}
- protected FormUrlEncodedRequest(FullHttpRequest request, InetSocketAddress remoteAddress,
- Map<String, List<String>> parameters, List<String> names, List<String> values) {
- private FormUrlEncodedRequest(FullHttpRequest request, Map<String, List<String>> parameters) {
- super(request, parameters);
++ private FormUrlEncodedRequest(FullHttpRequest request, InetSocketAddress remoteAddress,
++ Map<String, List<String>> parameters) {
+ super(request, remoteAddress, parameters);
- this.names = names;
- this.values = values;
- }
-
- @Override
- public String getParameter(CharSequence name) {
- for (int i = 0; i < names.size(); i++) {
- if (name.equals(names.get(i))) {
- return values.get(i);
- }
- }
- return HttpUtil.getParameter(parameters, name);
- }
-
- @Override
- public Set<String> getParameterNames() {
- HashSet<String> paramNames = new HashSet<>();
- paramNames.addAll(parameters.keySet());
- paramNames.addAll(names);
- return Collections.unmodifiableSet(paramNames);
- }
-
- @Override
- public Map<String, String> getParameters() {
- HashMap<String, String> paramMap = new HashMap<>();
- paramMap.putAll(super.getParameters());
- for (int i = 0; i < names.size(); i++) {
- paramMap.put(names.get(i), values.get(i));
- }
-
- return Collections.unmodifiableMap(paramMap);
}
}
diff --cc hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
index 78b5096,5326019..34ca2c4
--- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
+++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
@@@ -77,23 -73,12 +77,13 @@@ public class HttpUtil
public static String getParameter(Map<String, List<String>> parameters, CharSequence name) {
List<String> parameter = parameters.get(String.valueOf(name));
- if (parameter == null) {
- return null;
- } else if (parameter.size() == 1) {
- return parameter.get(0);
- } else {
- StringBuilder aString = new StringBuilder(parameter.get(0));
- for (int i = 1; i < parameter.size(); i++) {
- aString.append(",").append(parameter.get(i));
- }
- return aString.toString();
- }
+ return parameter == null ? null : String.join(",", parameter);
}
- public static IServletRequest toServletRequest(FullHttpRequest request) throws IOException {
+ public static IServletRequest toServletRequest(ChannelHandlerContext ctx, FullHttpRequest request)
+ throws IOException {
return ContentType.APPLICATION_X_WWW_FORM_URLENCODED.equals(getContentTypeOnly(request))
- ? FormUrlEncodedRequest.create(request) : BaseRequest.create(request);
+ ? FormUrlEncodedRequest.create(ctx, request) : BaseRequest.create(ctx, request);
}
public static String getContentTypeOnly(IServletRequest request) {