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 69f95307b3575a0b161c3400062c2091ed9ece29 Author: Michael Blow <[email protected]> AuthorDate: Fri Dec 22 00:25:19 2023 -0500 [NO ISSUE][HYR][HTTP] Minor refactoring Change-Id: Ib1196ae6f0fec60c414fabced42f2aeb61fbd662 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18024 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Hussain Towaileb <[email protected]> --- .../apache/hyracks/http/api/IServletRequest.java | 7 ++++++- .../apache/hyracks/http/server/BaseRequest.java | 22 ++++++++++++---------- .../org/apache/hyracks/http/server/CLFLogger.java | 11 ++++++++--- .../hyracks/http/server/FormUrlEncodedRequest.java | 12 +++++------- 4 files changed, 31 insertions(+), 21 deletions(-) diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java index a049412737..59c0ae05f2 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/api/IServletRequest.java @@ -23,6 +23,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import io.netty.channel.Channel; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpScheme; @@ -78,7 +79,9 @@ public interface IServletRequest { * @param name header name * @return the header or null if not found */ - String getHeader(CharSequence name); + default String getHeader(CharSequence name) { + return getHttpRequest().headers().get(name); + } /** * Get a request header if found, return the default value, otherwise @@ -110,4 +113,6 @@ public interface IServletRequest { * @return the remote address */ InetSocketAddress getLocalAddress(); + + Channel getChannel(); } diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java index c3c7dbccf1..4a72d539b4 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/BaseRequest.java @@ -29,6 +29,7 @@ import java.util.Set; import org.apache.hyracks.http.api.IServletRequest; +import io.netty.channel.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpScheme; @@ -37,26 +38,22 @@ import io.netty.handler.codec.http.QueryStringDecoder; public class BaseRequest implements IServletRequest { private static final List<String> NO_PARAM = Collections.singletonList(null); + private final Channel channel; protected final FullHttpRequest request; protected final Map<? extends CharSequence, List<String>> parameters; - protected final InetSocketAddress remoteAddress; protected final HttpScheme scheme; - protected final InetSocketAddress localAddress; public static IServletRequest create(ChannelHandlerContext ctx, FullHttpRequest request, HttpScheme scheme, boolean ignoreQueryParameters) { Map<? extends CharSequence, List<String>> param = ignoreQueryParameters ? Collections.emptyMap() : new QueryStringDecoder(request.uri()).parameters(); - InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress(); - InetSocketAddress localAddress = (InetSocketAddress) ctx.channel().localAddress(); - return new BaseRequest(request, localAddress, remoteAddress, param, scheme); + return new BaseRequest(ctx.channel(), request, param, scheme); } - protected BaseRequest(FullHttpRequest request, InetSocketAddress localAddress, InetSocketAddress remoteAddress, + protected BaseRequest(Channel channel, FullHttpRequest request, Map<? extends CharSequence, List<String>> parameters, HttpScheme scheme) { + this.channel = channel; this.request = request; - this.localAddress = localAddress; - this.remoteAddress = remoteAddress; this.parameters = parameters; this.scheme = scheme; } @@ -104,7 +101,7 @@ public class BaseRequest implements IServletRequest { @Override public InetSocketAddress getRemoteAddress() { - return remoteAddress; + return (InetSocketAddress) channel.remoteAddress(); } @Override @@ -114,6 +111,11 @@ public class BaseRequest implements IServletRequest { @Override public InetSocketAddress getLocalAddress() { - return localAddress; + return (InetSocketAddress) channel.localAddress(); + } + + @Override + public Channel getChannel() { + return channel; } } diff --git a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/CLFLogger.java b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/CLFLogger.java index 219995b8e3..a24ed9575b 100644 --- a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/CLFLogger.java +++ b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/CLFLogger.java @@ -120,21 +120,22 @@ public class CLFLogger extends ChannelDuplexHandler { @Override public void flush(ChannelHandlerContext ctx) throws Exception { if (lastChunk) { - printAndPrepare(); + printAndPrepare(ctx); lastChunk = false; } ctx.flush(); } - private void printAndPrepare() { + private void printAndPrepare(ChannelHandlerContext ctx) { if (!accessLogger.isEnabled(ACCESS_LOG_LEVEL)) { return; } logLineBuilder.append(clientIp); //identd value - not relevant here logLineBuilder.append(" - "); + logLineBuilder.append(getUserId(ctx)); //no http auth or any auth either for that matter - logLineBuilder.append(" - ["); + logLineBuilder.append(" ["); logLineBuilder.append(DATE_TIME_FORMATTER.format(requestTime)); logLineBuilder.append("] \""); logLineBuilder.append(reqLine); @@ -146,4 +147,8 @@ public class CLFLogger extends ChannelDuplexHandler { respSize = 0; logLineBuilder.setLength(0); } + + protected String getUserId(ChannelHandlerContext ctx) { + return "-"; + } } diff --git 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 index fa7ef66a12..983a1fdc45 100644 --- 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,7 +18,6 @@ */ package org.apache.hyracks.http.server; -import java.net.InetSocketAddress; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.LinkedHashMap; @@ -29,6 +28,7 @@ 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.Channel; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.FullHttpRequest; import io.netty.handler.codec.http.HttpScheme; @@ -46,13 +46,11 @@ public class FormUrlEncodedRequest extends BaseRequest implements IServletReques new QueryStringDecoder(request.uri()).parameters() .forEach((name, value) -> parameters.computeIfAbsent(name, a -> new ArrayList<>()).addAll(value)); } - InetSocketAddress remoteAddress = (InetSocketAddress) ctx.channel().remoteAddress(); - InetSocketAddress localAddress = (InetSocketAddress) ctx.channel().localAddress(); - return new FormUrlEncodedRequest(request, localAddress, remoteAddress, parameters, scheme); + return new FormUrlEncodedRequest(ctx.channel(), request, parameters, scheme); } - private FormUrlEncodedRequest(FullHttpRequest request, InetSocketAddress localAddress, - InetSocketAddress remoteAddress, Map<String, List<String>> parameters, HttpScheme scheme) { - super(request, localAddress, remoteAddress, parameters, scheme); + private FormUrlEncodedRequest(Channel channel, FullHttpRequest request, Map<String, List<String>> parameters, + HttpScheme scheme) { + super(channel, request, parameters, scheme); } }
