summaryrefslogtreecommitdiffstats
path: root/container-core/src/main/java/com/yahoo
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@verizonmedia.com>2021-12-03 11:07:37 +0100
committerBjørn Christian Seime <bjorncs@verizonmedia.com>2021-12-03 12:34:52 +0100
commit203c887fba0cd6fbd0cfc813742c45b37bbb8065 (patch)
tree62793c537676696c640c4cc5cb08bcb10c3dc600 /container-core/src/main/java/com/yahoo
parente04f95504e5469ae7e30dddc7cab69fdb5973004 (diff)
Make DiscFilterRequest non-abstract and deprecate JdiscFilterRequest
There is no need for having DiscFilterRequest as an abstract class after removing servlet support.
Diffstat (limited to 'container-core/src/main/java/com/yahoo')
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java73
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java116
-rw-r--r--container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java2
3 files changed, 57 insertions, 134 deletions
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
index 9b799e3a68f..8ac2305f5df 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/DiscFilterRequest.java
@@ -7,6 +7,7 @@ import com.yahoo.jdisc.http.Cookie;
import com.yahoo.jdisc.http.HttpHeaders;
import com.yahoo.jdisc.http.HttpRequest;
import com.yahoo.jdisc.http.HttpRequest.Version;
+import com.yahoo.jdisc.http.server.jetty.RequestUtils;
import java.net.InetSocketAddress;
import java.net.URI;
@@ -15,6 +16,7 @@ import java.security.cert.X509Certificate;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
@@ -22,15 +24,14 @@ import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
/**
* The Request class on which all filters will operate upon.
- * Test cases that need a concrete
- * instance should create a {@link JdiscFilterRequest}.
*/
-public abstract class DiscFilterRequest {
+public class DiscFilterRequest {
protected static final String HTTPS_PREFIX = "https";
protected static final int DEFAULT_HTTP_PORT = 80;
@@ -54,7 +55,7 @@ public abstract class DiscFilterRequest {
untreatedParams = new HashMap<>(parent.parameters());
}
- public abstract String getMethod();
+ public String getMethod() { return parent.getMethod().name(); }
public Version getVersion() {
return parent.getVersion();
@@ -65,8 +66,12 @@ public abstract class DiscFilterRequest {
}
@Deprecated
- public abstract void setUri(URI uri);
+ public void setUri(URI uri) { parent.setUri(uri); }
+ /**
+ * @deprecated Use methods on {@link DiscFilterRequest} instead to inspect request
+ */
+ @Deprecated(forRemoval = true, since = "7.511")
public HttpRequest getParentRequest() {
throw new UnsupportedOperationException("getParentRequest is not supported for " + parent.getClass().getName());
}
@@ -124,9 +129,18 @@ public abstract class DiscFilterRequest {
parent.context().remove(name);
}
- public abstract String getParameter(String name);
+ public String getParameter(String name) {
+ if(parent.parameters().containsKey(name)) {
+ return parent.parameters().get(name).get(0);
+ }
+ else {
+ return null;
+ }
+ }
- public abstract Enumeration<String> getParameterNames();
+ public Enumeration<String> getParameterNames() {
+ return Collections.enumeration(parent.parameters().keySet());
+ }
public List<String> getParameterNamesAsList() {
return new ArrayList<String>(parent.parameters().keySet());
@@ -199,7 +213,9 @@ public abstract class DiscFilterRequest {
* Sets a header with the given name and value.
* If the header had already been set, the new value overwrites the previous one.
*/
- public abstract void addHeader(String name, String value);
+ public void addHeader(String name, String value) {
+ parent.headers().add(name, value);
+ }
public long getDateHeader(String name) {
String value = getHeader(name);
@@ -220,31 +236,43 @@ public abstract class DiscFilterRequest {
return date.getTime();
}
- public abstract String getHeader(String name);
+ public String getHeader(String name) {
+ List<String> values = parent.headers().get(name);
+ if (values == null || values.isEmpty()) {
+ return null;
+ }
+ return values.get(values.size() - 1);
+ }
- public abstract Enumeration<String> getHeaderNames();
+ public Enumeration<String> getHeaderNames() { return Collections.enumeration(parent.headers().keySet()); }
- public abstract List<String> getHeaderNamesAsList();
+ public List<String> getHeaderNamesAsList() { return new ArrayList<>(parent.headers().keySet()); }
- public abstract Enumeration<String> getHeaders(String name);
+ public Enumeration<String> getHeaders(String name) { return Collections.enumeration(getHeadersAsList(name)); }
- public abstract List<String> getHeadersAsList(String name);
+ public List<String> getHeadersAsList(String name) {
+ List<String> values = parent.headers().get(name);
+ if(values == null) {
+ return Collections.emptyList();
+ }
+ return parent.headers().get(name);
+ }
- public abstract void removeHeaders(String name);
+ public void removeHeaders(String name) { parent.headers().remove(name); }
/**
* Sets a header with the given name and value.
* If the header had already been set, the new value overwrites the previous one.
*
*/
- public abstract void setHeaders(String name, String value);
+ public void setHeaders(String name, String value) { parent.headers().put(name, value); }
/**
* Sets a header with the given name and value.
* If the header had already been set, the new value overwrites the previous one.
*
*/
- public abstract void setHeaders(String name, List<String> values);
+ public void setHeaders(String name, List<String> values) { parent.headers().put(name, values); }
public int getIntHeader(String name) {
String value = getHeader(name);
@@ -339,7 +367,7 @@ public abstract class DiscFilterRequest {
return port;
}
- public abstract Principal getUserPrincipal();
+ public Principal getUserPrincipal() { return parent.getUserPrincipal(); }
public boolean isSecure() {
if(getScheme().equalsIgnoreCase(HTTPS_PREFIX)) {
@@ -382,13 +410,18 @@ public abstract class DiscFilterRequest {
this.remoteUser = remoteUser;
}
- public abstract void setUserPrincipal(Principal principal);
+ public void setUserPrincipal(Principal principal) { this.parent.setUserPrincipal(principal); }
/**
* @return The client certificate chain in ascending order of trust. The first certificate is the one sent from the client.
* Returns an empty list if the client did not provide a certificate.
*/
- public abstract List<X509Certificate> getClientCertificateChain();
+ public List<X509Certificate> getClientCertificateChain() {
+ return Optional.ofNullable(parent.context().get(RequestUtils.JDISC_REQUEST_X509CERT))
+ .map(X509Certificate[].class::cast)
+ .map(Arrays::asList)
+ .orElse(Collections.emptyList());
+ }
public void setUserRoles(String[] roles) {
this.roles = roles;
@@ -436,7 +469,7 @@ public abstract class DiscFilterRequest {
}
}
- public abstract void clearCookies();
+ public void clearCookies() { parent.headers().remove(HttpHeaders.Names.COOKIE); }
public JDiscCookieWrapper[] getWrappedCookies() {
List<Cookie> cookies = getCookies();
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
index f78c03f7af7..aa4050dd963 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/JdiscFilterRequest.java
@@ -1,25 +1,13 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.jdisc.http.filter;
-import com.yahoo.jdisc.http.HttpHeaders;
import com.yahoo.jdisc.http.HttpRequest;
-import com.yahoo.jdisc.http.server.jetty.RequestUtils;
-
-import java.net.URI;
-import java.security.Principal;
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Optional;
/**
* JDisc implementation of a filter request.
*
- * @since 5.27
*/
+@Deprecated(forRemoval = true, since = "7.511")
public class JdiscFilterRequest extends DiscFilterRequest {
private final HttpRequest parent;
@@ -29,106 +17,8 @@ public class JdiscFilterRequest extends DiscFilterRequest {
this.parent = parent;
}
- public HttpRequest getParentRequest() {
- return parent;
- }
-
- @Deprecated
- public void setUri(URI uri) {
- parent.setUri(uri);
- }
-
- @Override
- public String getMethod() {
- return parent.getMethod().name();
- }
-
- @Override
- public String getParameter(String name) {
- if(parent.parameters().containsKey(name)) {
- return parent.parameters().get(name).get(0);
- }
- else {
- return null;
- }
- }
-
- @Override
- public Enumeration<String> getParameterNames() {
- return Collections.enumeration(parent.parameters().keySet());
- }
-
- @Override
- public void addHeader(String name, String value) {
- parent.headers().add(name, value);
- }
-
- @Override
- public String getHeader(String name) {
- List<String> values = parent.headers().get(name);
- if (values == null || values.isEmpty()) {
- return null;
- }
- return values.get(values.size() - 1);
- }
-
- public Enumeration<String> getHeaderNames() {
- return Collections.enumeration(parent.headers().keySet());
- }
-
- public List<String> getHeaderNamesAsList() {
- return new ArrayList<String>(parent.headers().keySet());
- }
-
+ @SuppressWarnings("removal")
@Override
- public Enumeration<String> getHeaders(String name) {
- return Collections.enumeration(getHeadersAsList(name));
- }
-
- public List<String> getHeadersAsList(String name) {
- List<String> values = parent.headers().get(name);
- if(values == null) {
- return Collections.<String>emptyList();
- }
- return parent.headers().get(name);
- }
-
- @Override
- public void removeHeaders(String name) {
- parent.headers().remove(name);
- }
-
- @Override
- public void setHeaders(String name, String value) {
- parent.headers().put(name, value);
- }
-
- @Override
- public void setHeaders(String name, List<String> values) {
- parent.headers().put(name, values);
- }
-
- @Override
- public Principal getUserPrincipal() {
- return parent.getUserPrincipal();
- }
-
- @Override
- public void setUserPrincipal(Principal principal) {
- this.parent.setUserPrincipal(principal);
- }
-
- @Override
- public List<X509Certificate> getClientCertificateChain() {
- return Optional.ofNullable(parent.context().get(RequestUtils.JDISC_REQUEST_X509CERT))
- .map(X509Certificate[].class::cast)
- .map(Arrays::asList)
- .orElse(Collections.emptyList());
- }
-
- @Override
- public void clearCookies() {
- parent.headers().remove(HttpHeaders.Names.COOKIE);
- }
+ public HttpRequest getParentRequest() { return parent; }
}
diff --git a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
index 0c81d919f0e..554a83a240f 100644
--- a/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
+++ b/container-core/src/main/java/com/yahoo/jdisc/http/filter/SecurityRequestFilterChain.java
@@ -30,7 +30,7 @@ public final class SecurityRequestFilterChain extends AbstractResource implement
@Override
public void filter(HttpRequest request, ResponseHandler responseHandler) {
- DiscFilterRequest discFilterRequest = new JdiscFilterRequest(request);
+ DiscFilterRequest discFilterRequest = new DiscFilterRequest(request);
filter(discFilterRequest, responseHandler);
}