summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-01-30 12:58:35 +0100
committerBjørn Christian Seime <bjorncs@oath.com>2018-02-01 10:33:22 +0100
commit5abfb3b646244299f09bdcfc9e9f13d756334846 (patch)
treec70acb0cd6b1e72c881ed5e2df3ca99a23a39dec
parentc1b85f88cce4d69aa78a0fc8ebcd17e73f1408e1 (diff)
Add rawPath and rawQuery to AccessLogEntry
-rw-r--r--container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java36
-rw-r--r--container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java11
2 files changed, 46 insertions, 1 deletions
diff --git a/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
index 24078151d64..9beae9463c0 100644
--- a/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
+++ b/container-accesslogging/src/main/java/com/yahoo/container/logging/AccessLogEntry.java
@@ -96,6 +96,8 @@ public class AccessLogEntry {
private int localPort;
private Principal principal;
private X500Principal sslPrincipal;
+ private String rawPath;
+ private String rawQuery;
private ListMap<String,String> keyValues=null;
@@ -597,6 +599,10 @@ public class AccessLogEntry {
}
}
+ /**
+ * @deprecated Use {@link #setRawPath(String)} and {@link #setRawQuery(String)} instead.
+ */
+ @Deprecated
public void setURI(final URI uri) {
synchronized (monitor) {
requireNull(this.uri);
@@ -604,6 +610,10 @@ public class AccessLogEntry {
}
}
+ /**
+ * @deprecated Use {@link #getRawPath()} and {@link #getRawQuery()} instead. This method may return wrong path.
+ */
+ @Deprecated
public URI getURI() {
synchronized (monitor) {
return uri;
@@ -739,6 +749,32 @@ public class AccessLogEntry {
}
}
+ public void setRawPath(String rawPath) {
+ synchronized (monitor) {
+ requireNull(this.rawPath);
+ this.rawPath = rawPath;
+ }
+ }
+
+ public String getRawPath() {
+ synchronized (monitor) {
+ return rawPath;
+ }
+ }
+
+ public void setRawQuery(String rawQuery) {
+ synchronized (monitor) {
+ requireNull(this.rawQuery);
+ this.rawQuery = rawQuery;
+ }
+ }
+
+ public String getRawQuery() {
+ synchronized (monitor) {
+ return rawQuery;
+ }
+ }
+
@Override
public String toString() {
synchronized (monitor) {
diff --git a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
index fe11bd42a01..698c9d7f902 100644
--- a/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/jdisc/LoggingRequestHandler.java
@@ -20,6 +20,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
+import java.net.URI;
import java.util.Optional;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -304,7 +305,10 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler {
logEntry.setRemoteAddress(remoteAddress);
logEntry.setRemotePort(remoteAddress.getPort());
}
- logEntry.setURI(AccessLogUtil.getUri(httpRequest));
+ URI uri = AccessLogUtil.getUri(httpRequest);
+ setDeprecatedUri(logEntry, uri);
+ logEntry.setRawPath(uri.getRawPath());
+ logEntry.setRawQuery(uri.getRawQuery());
logEntry.setUserAgent(AccessLogUtil.getUserAgentHeader(httpRequest));
logEntry.setReferer(AccessLogUtil.getReferrerHeader(httpRequest));
logEntry.setHttpMethod(AccessLogUtil.getHttpMethod(httpRequest));
@@ -314,6 +318,11 @@ public abstract class LoggingRequestHandler extends ThreadedHttpRequestHandler {
}
}
+ @SuppressWarnings("deprecation")
+ private static void setDeprecatedUri(AccessLogEntry logEntry, URI uri) {
+ logEntry.setURI(uri);
+ }
+
@Override
public void handleTimeout(Request request, ResponseHandler responseHandler) {
LoggingHandler loggingHandler = this.loggingHandler.get();