You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by wu...@apache.org on 2022/11/16 01:43:31 UTC
[ambari] branch trunk updated: AMBARI-25341: SmartSense API call fails with Unsupported Media Type (#3510)
This is an automated email from the ASF dual-hosted git repository.
wuzhiguo pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/trunk by this push:
new bfe07cdd6b AMBARI-25341: SmartSense API call fails with Unsupported Media Type (#3510)
bfe07cdd6b is described below
commit bfe07cdd6b3c551c4edcf5c3c65cb5cba2bd9e77
Author: Zhiguo Wu <wu...@apache.org>
AuthorDate: Wed Nov 16 09:43:26 2022 +0800
AMBARI-25341: SmartSense API call fails with Unsupported Media Type (#3510)
---
.../ambari/server/api/ContentTypeOverrideFilter.java | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/ContentTypeOverrideFilter.java b/ambari-server/src/main/java/org/apache/ambari/server/api/ContentTypeOverrideFilter.java
index f69d124a3b..0ea6069cf7 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/api/ContentTypeOverrideFilter.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/api/ContentTypeOverrideFilter.java
@@ -23,6 +23,7 @@ import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet;
import java.util.Set;
+import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
@@ -61,7 +62,7 @@ public class ContentTypeOverrideFilter implements Filter {
private static final Logger logger = LoggerFactory.getLogger(ContentTypeOverrideFilter.class);
- private final Set<String> excludedUrls = new HashSet<>();
+ private final Set<Pattern> excludedUrls = new HashSet<>();
class ContentTypeOverrideRequestWrapper extends HttpServletRequestWrapper {
@@ -132,7 +133,7 @@ public class ContentTypeOverrideFilter implements Filter {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String contentType = httpServletRequest.getContentType();
- if (contentType != null && contentType.startsWith(MediaType.APPLICATION_JSON) && !excludedUrls.contains(httpServletRequest.getPathInfo())) {
+ if (contentType != null && contentType.startsWith(MediaType.APPLICATION_JSON) && !isUrlExcluded(httpServletRequest.getPathInfo())) {
ContentTypeOverrideRequestWrapper requestWrapper = new ContentTypeOverrideRequestWrapper(httpServletRequest);
ContentTypeOverrideResponseWrapper responseWrapper = new ContentTypeOverrideResponseWrapper((HttpServletResponse) response);
@@ -160,7 +161,7 @@ public class ContentTypeOverrideFilter implements Filter {
Consumes consumesAnnotation = method.getAnnotation(Consumes.class);
for (String consume : consumesAnnotation.value()) {
if (MediaType.APPLICATION_JSON.equals(consume)) {
- excludedUrls.add(path.value());
+ excludedUrls.add(Pattern.compile(path.value()));
continue restart;
}
}
@@ -172,10 +173,16 @@ public class ContentTypeOverrideFilter implements Filter {
logger.error("Failed to discover URLs that are excluded from Content-Type override. Falling back to pre-defined list of exluded URLs.", e);
/* Do not fail here, but fallback to manual definition of excluded endpoints. */
- excludedUrls.add("/bootstrap");
+ excludedUrls.add(Pattern.compile("/bootstrap"));
+ } finally {
+ excludedUrls.add(Pattern.compile("/views/.*"));
}
}
+ private boolean isUrlExcluded(String pathInfo) {
+ return excludedUrls.stream().anyMatch(p -> p.matcher(pathInfo).matches());
+ }
+
@Override
public void destroy() {
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@ambari.apache.org
For additional commands, e-mail: commits-help@ambari.apache.org