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) {

Reply via email to