Avoid repeated calls to getPathWithinApplication from getLookupPathForRequest
Closes gh-25669
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2019 the original author or authors.
|
* Copyright 2002-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -164,17 +164,18 @@ public class UrlPathHelper {
|
|||||||
* @see #getPathWithinApplication
|
* @see #getPathWithinApplication
|
||||||
*/
|
*/
|
||||||
public String getLookupPathForRequest(HttpServletRequest request) {
|
public String getLookupPathForRequest(HttpServletRequest request) {
|
||||||
|
String pathWithinApp = getPathWithinApplication(request);
|
||||||
// Always use full path within current servlet context?
|
// Always use full path within current servlet context?
|
||||||
if (this.alwaysUseFullPath) {
|
if (this.alwaysUseFullPath) {
|
||||||
return getPathWithinApplication(request);
|
return pathWithinApp;
|
||||||
}
|
}
|
||||||
// Else, use path within current servlet mapping if applicable
|
// Else, use path within current servlet mapping if applicable
|
||||||
String rest = getPathWithinServletMapping(request);
|
String rest = getPathWithinServletMapping(request, pathWithinApp);
|
||||||
if (StringUtils.hasLength(rest)) {
|
if (StringUtils.hasLength(rest)) {
|
||||||
return rest;
|
return rest;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return getPathWithinApplication(request);
|
return pathWithinApp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,6 +199,18 @@ public class UrlPathHelper {
|
|||||||
return getLookupPathForRequest(request);
|
return getLookupPathForRequest(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the path within the servlet mapping for the given request,
|
||||||
|
* i.e. the part of the request's URL beyond the part that called the servlet,
|
||||||
|
* or "" if the whole URL has been used to identify the servlet.
|
||||||
|
* @param request current HTTP request
|
||||||
|
* @return the path within the servlet mapping, or ""
|
||||||
|
* @see #getPathWithinServletMapping(HttpServletRequest, String)
|
||||||
|
*/
|
||||||
|
public String getPathWithinServletMapping(HttpServletRequest request) {
|
||||||
|
return getPathWithinServletMapping(request, getPathWithinApplication(request));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the path within the servlet mapping for the given request,
|
* Return the path within the servlet mapping for the given request,
|
||||||
* i.e. the part of the request's URL beyond the part that called the servlet,
|
* i.e. the part of the request's URL beyond the part that called the servlet,
|
||||||
@@ -209,11 +222,12 @@ public class UrlPathHelper {
|
|||||||
* <p>E.g.: servlet mapping = "/test"; request URI = "/test" -> "".
|
* <p>E.g.: servlet mapping = "/test"; request URI = "/test" -> "".
|
||||||
* <p>E.g.: servlet mapping = "/*.test"; request URI = "/a.test" -> "".
|
* <p>E.g.: servlet mapping = "/*.test"; request URI = "/a.test" -> "".
|
||||||
* @param request current HTTP request
|
* @param request current HTTP request
|
||||||
|
* @param pathWithinApp a precomputed path within the application
|
||||||
* @return the path within the servlet mapping, or ""
|
* @return the path within the servlet mapping, or ""
|
||||||
|
* @since 5.2.9
|
||||||
* @see #getLookupPathForRequest
|
* @see #getLookupPathForRequest
|
||||||
*/
|
*/
|
||||||
public String getPathWithinServletMapping(HttpServletRequest request) {
|
protected String getPathWithinServletMapping(HttpServletRequest request, String pathWithinApp) {
|
||||||
String pathWithinApp = getPathWithinApplication(request);
|
|
||||||
String servletPath = getServletPath(request);
|
String servletPath = getServletPath(request);
|
||||||
String sanitizedPathWithinApp = getSanitizedPath(pathWithinApp);
|
String sanitizedPathWithinApp = getSanitizedPath(pathWithinApp);
|
||||||
String path;
|
String path;
|
||||||
|
|||||||
Reference in New Issue
Block a user