This is an automated email from the ASF dual-hosted git repository.
markt-asf pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new 0530321c97 Switch to using String.strip() rather than String.trim() as
appropriate
0530321c97 is described below
commit 0530321c975c7c6bb7c8973815e3b41a6726df5b
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Oct 28 12:36:55 2026 +0000
Switch to using String.strip() rather than String.trim() as appropriate
String.strip() isn't available for Java 8 so use JreCompat
---
java/javax/el/ELProcessor.java | 18 ++++++++++--------
java/javax/el/ExpressionFactory.java | 8 ++++----
.../catalina/authenticator/AuthenticatorBase.java | 7 +++++--
.../apache/catalina/authenticator/SingleSignOn.java | 3 ++-
java/org/apache/catalina/core/StandardContext.java | 2 +-
java/org/apache/catalina/core/StandardHost.java | 3 ++-
java/org/apache/catalina/filters/CorsFilter.java | 5 +++--
.../apache/catalina/filters/CsrfPreventionFilter.java | 9 +++++----
java/org/apache/catalina/filters/ExpiresFilter.java | 6 ++++--
java/org/apache/catalina/filters/RateLimitFilter.java | 3 ++-
.../catalina/filters/RestCsrfPreventionFilter.java | 5 ++++-
java/org/apache/catalina/ha/backend/TcpSender.java | 3 ++-
.../apache/catalina/manager/HTMLManagerServlet.java | 3 ++-
java/org/apache/catalina/realm/DataSourceRealm.java | 5 +++--
java/org/apache/catalina/realm/JDBCRealm.java | 5 +++--
java/org/apache/catalina/realm/JNDIRealm.java | 8 +++++---
java/org/apache/catalina/realm/MemoryRealm.java | 5 +++--
java/org/apache/catalina/realm/RealmBase.java | 5 +++--
.../apache/catalina/security/SecurityListener.java | 3 ++-
java/org/apache/catalina/servlets/CGIServlet.java | 5 +++--
java/org/apache/catalina/servlets/DefaultServlet.java | 5 +++--
java/org/apache/catalina/session/JDBCStore.java | 3 ++-
java/org/apache/catalina/ssi/ExpressionTokenizer.java | 4 +++-
java/org/apache/catalina/ssi/SSIProcessor.java | 3 ++-
.../apache/catalina/startup/WebappServiceLoader.java | 3 ++-
.../catalina/storeconfig/XMLFormatPreserver.java | 14 +++++++++-----
.../apache/catalina/users/DataSourceUserDatabase.java | 3 ++-
.../org/apache/catalina/users/MemoryUserDatabase.java | 13 +++++++------
java/org/apache/catalina/util/ManifestResource.java | 4 +++-
.../apache/catalina/valves/ParameterLimitValve.java | 7 ++++---
.../valves/rewrite/RandomizedTextRewriteMap.java | 5 +++--
.../apache/catalina/valves/rewrite/ResolverImpl.java | 5 +++--
java/org/apache/coyote/CompressionConfig.java | 7 ++++---
java/org/apache/coyote/http2/Http2Protocol.java | 3 ++-
java/org/apache/jasper/compiler/ELParser.java | 3 ++-
java/org/apache/jasper/compiler/Generator.java | 4 ++--
java/org/apache/jasper/compiler/JavacErrorDetail.java | 3 ++-
java/org/apache/jasper/compiler/Node.java | 19 ++++++++++---------
java/org/apache/jasper/compiler/SmapUtil.java | 3 ++-
java/org/apache/jasper/compiler/Validator.java | 7 ++++---
java/org/apache/jasper/tagplugins/jstl/Util.java | 5 +++--
.../tomcat/util/buf/EncodedSolidusHandling.java | 3 ++-
java/org/apache/tomcat/util/buf/StringUtils.java | 4 +++-
.../apache/tomcat/util/descriptor/tld/TldRuleSet.java | 3 ++-
.../util/descriptor/web/SecurityConstraint.java | 12 ++++++++----
.../apache/tomcat/util/descriptor/web/WebRuleSet.java | 5 +++--
.../apache/tomcat/util/digester/CallMethodRule.java | 3 ++-
.../apache/tomcat/util/digester/CallParamRule.java | 3 ++-
java/org/apache/tomcat/util/digester/Digester.java | 3 ++-
.../apache/tomcat/util/http/CookiesWithoutEquals.java | 3 ++-
java/org/apache/tomcat/util/net/SSLHostConfig.java | 17 +++++++++--------
.../tomcat/util/scan/StandardJarScanFilter.java | 3 ++-
.../apache/tomcat/util/scan/StandardJarScanner.java | 2 +-
.../catalina/tribes/demos/CoordinationDemo.java | 7 ++++---
.../catalina/valves/TestExtendedAccessLogValve.java | 5 +++--
.../catalina/webresources/TestFileResource.java | 4 +++-
test/org/apache/el/TesterFunctions.java | 4 +++-
.../apache/jasper/compiler/TestEncodingDetector.java | 3 ++-
test/org/apache/jasper/compiler/TestGenerator.java | 4 ++--
test/org/apache/jasper/compiler/TestJspUtil.java | 3 ++-
.../org/apache/juli/TestPerWebappJuliIntegration.java | 5 +++--
test/org/apache/naming/TestEnvEntry.java | 5 +++--
.../util/net/openssl/ciphers/TesterOpenSSL.java | 5 +++--
webapps/docs/changelog.xml | 8 ++++++++
64 files changed, 216 insertions(+), 132 deletions(-)
diff --git a/java/javax/el/ELProcessor.java b/java/javax/el/ELProcessor.java
index 74496143ff..15afc9920e 100644
--- a/java/javax/el/ELProcessor.java
+++ b/java/javax/el/ELProcessor.java
@@ -209,10 +209,10 @@ public class ELProcessor {
int paramIndex = methodName.indexOf('(');
if (paramIndex == -1) {
- name = methodName.trim();
+ name = JreCompat.getInstance().strip(methodName);
parameterTypeNames = null;
} else {
- String returnTypeAndName = methodName.substring(0,
paramIndex).trim();
+ String returnTypeAndName =
JreCompat.getInstance().strip(methodName.substring(0, paramIndex));
// Assume that the return type and the name are separated by
// whitespace. Given the use of trim() above, there should only
// be one sequence of whitespace characters.
@@ -226,27 +226,28 @@ public class ELProcessor {
if (wsPos == -1) {
throw new NoSuchMethodException();
}
- name = returnTypeAndName.substring(wsPos).trim();
+ name =
JreCompat.getInstance().strip(returnTypeAndName.substring(wsPos));
- String paramString = methodName.substring(paramIndex).trim();
+ String paramString =
JreCompat.getInstance().strip(methodName.substring(paramIndex));
// We know the params start with '(', check they end with ')'
if (!paramString.endsWith(")")) {
throw new NoSuchMethodException(Util.message(context,
"elProcessor.defineFunctionInvalidParameterList",
paramString, methodName, className));
}
// Trim '(' and ')'
- paramString = paramString.substring(1, paramString.length() -
1).trim();
+ paramString =
JreCompat.getInstance().strip(paramString.substring(1, paramString.length() -
1));
if (paramString.length() == 0) {
parameterTypeNames = EMPTY_STRING_ARRAY;
} else {
parameterTypeNames = paramString.split(",");
ImportHandler importHandler = context.getImportHandler();
for (int i = 0; i < parameterTypeNames.length; i++) {
- String parameterTypeName =
parameterTypeNames[i].trim();
+ String parameterTypeName =
JreCompat.getInstance().strip(parameterTypeNames[i]);
int dimension = 0;
int bracketPos = parameterTypeName.indexOf('[');
if (bracketPos > -1) {
- String parameterTypeNameOnly =
parameterTypeName.substring(0, bracketPos).trim();
+ String parameterTypeNameOnly =
JreCompat.getInstance().strip(
+ parameterTypeName.substring(0,
bracketPos));
while (bracketPos > -1) {
dimension++;
bracketPos = parameterTypeName.indexOf('[',
bracketPos + 1);
@@ -257,7 +258,8 @@ public class ELProcessor {
if (parameterTypeName.endsWith("...")) {
varArgs = true;
dimension = 1;
- parameterTypeName = parameterTypeName.substring(0,
parameterTypeName.length() - 3).trim();
+ parameterTypeName = JreCompat.getInstance()
+ .strip(parameterTypeName.substring(0,
parameterTypeName.length() - 3));
}
boolean isPrimitive =
PRIMITIVES.contains(parameterTypeName);
if (isPrimitive && dimension > 0) {
diff --git a/java/javax/el/ExpressionFactory.java
b/java/javax/el/ExpressionFactory.java
index de5187b1d7..f3da6936cc 100644
--- a/java/javax/el/ExpressionFactory.java
+++ b/java/javax/el/ExpressionFactory.java
@@ -354,8 +354,8 @@ public abstract class ExpressionFactory {
Properties props = new Properties();
props.load(is);
String value = props.getProperty(PROPERTY_NAME);
- if (value != null && value.trim().length() > 0) {
- return value.trim();
+ if (value != null &&
JreCompat.getInstance().strip(value).length() > 0) {
+ return JreCompat.getInstance().strip(value);
}
} catch (FileNotFoundException e) {
// Should not happen - ignore it if it does
@@ -368,8 +368,8 @@ public abstract class ExpressionFactory {
private static String getClassNameSysProp() {
String value = System.getProperty(PROPERTY_NAME);
- if (value != null && value.trim().length() > 0) {
- return value.trim();
+ if (value != null && JreCompat.getInstance().strip(value).length() >
0) {
+ return JreCompat.getInstance().strip(value);
}
return null;
}
diff --git a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
index 3c14fec87a..5338f16661 100644
--- a/java/org/apache/catalina/authenticator/AuthenticatorBase.java
+++ b/java/org/apache/catalina/authenticator/AuthenticatorBase.java
@@ -65,6 +65,7 @@ import org.apache.catalina.valves.ValveBase;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.descriptor.web.FilterDef;
import org.apache.tomcat.util.descriptor.web.FilterMap;
import org.apache.tomcat.util.descriptor.web.LoginConfig;
@@ -261,7 +262,8 @@ public abstract class AuthenticatorBase extends ValveBase
implements Authenticat
*/
public void setSsoReauthenticationMode(String ssoReauthenticationMode) {
this.ssoReauthenticationMode =
-
SsoReauthenticationMode.valueOf(ssoReauthenticationMode.trim().toUpperCase(Locale.ENGLISH));
+ SsoReauthenticationMode
+
.valueOf(JreCompat.getInstance().strip(ssoReauthenticationMode).toUpperCase(Locale.ENGLISH));
}
/**
@@ -279,7 +281,8 @@ public abstract class AuthenticatorBase extends ValveBase
implements Authenticat
* @param allowCorsPreflight the CORS preflight handling mode
*/
public void setAllowCorsPreflight(String allowCorsPreflight) {
- this.allowCorsPreflight =
AllowCorsPreflight.valueOf(allowCorsPreflight.trim().toUpperCase(Locale.ENGLISH));
+ this.allowCorsPreflight = AllowCorsPreflight
+
.valueOf(JreCompat.getInstance().strip(allowCorsPreflight).toUpperCase(Locale.ENGLISH));
}
/**
diff --git a/java/org/apache/catalina/authenticator/SingleSignOn.java
b/java/org/apache/catalina/authenticator/SingleSignOn.java
index 7dd0b6b14b..f16045cbed 100644
--- a/java/org/apache/catalina/authenticator/SingleSignOn.java
+++ b/java/org/apache/catalina/authenticator/SingleSignOn.java
@@ -37,6 +37,7 @@ import org.apache.catalina.SessionListener;
import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.catalina.valves.ValveBase;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -141,7 +142,7 @@ public class SingleSignOn extends ValveBase {
* @param cookieDomain cookie domain name
*/
public void setCookieDomain(String cookieDomain) {
- if (cookieDomain != null && cookieDomain.trim().isEmpty()) {
+ if (cookieDomain != null &&
JreCompat.getInstance().strip(cookieDomain).isEmpty()) {
this.cookieDomain = null;
} else {
this.cookieDomain = cookieDomain;
diff --git a/java/org/apache/catalina/core/StandardContext.java
b/java/org/apache/catalina/core/StandardContext.java
index 6f7a3f8f2f..799ca2c8a4 100644
--- a/java/org/apache/catalina/core/StandardContext.java
+++ b/java/org/apache/catalina/core/StandardContext.java
@@ -1174,7 +1174,7 @@ public class StandardContext extends ContainerBase
implements Context, Notificat
return;
}
for (String servletName : resourceOnlyServlets.split(",")) {
- servletName = servletName.trim();
+ servletName = JreCompat.getInstance().strip(servletName);
if (!servletName.isEmpty()) {
this.resourceOnlyServlets.add(servletName);
}
diff --git a/java/org/apache/catalina/core/StandardHost.java
b/java/org/apache/catalina/core/StandardHost.java
index ca1dcfc903..4fe72d6761 100644
--- a/java/org/apache/catalina/core/StandardHost.java
+++ b/java/org/apache/catalina/core/StandardHost.java
@@ -46,6 +46,7 @@ import org.apache.catalina.valves.ErrorReportValve;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
/**
* Standard implementation of the <b>Host</b> interface. Each child container
must be a Context implementation to
@@ -235,7 +236,7 @@ public class StandardHost extends ContainerBase implements
Host {
@Override
public void setAppBase(String appBase) {
- if (appBase.trim().isEmpty()) {
+ if (JreCompat.getInstance().strip(appBase).isEmpty()) {
log.warn(sm.getString("standardHost.problematicAppBase",
getName()));
}
String oldAppBase = this.appBase;
diff --git a/java/org/apache/catalina/filters/CorsFilter.java
b/java/org/apache/catalina/filters/CorsFilter.java
index 24eed3af67..bb425172fa 100644
--- a/java/org/apache/catalina/filters/CorsFilter.java
+++ b/java/org/apache/catalina/filters/CorsFilter.java
@@ -38,6 +38,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.Globals;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.Method;
import org.apache.tomcat.util.http.RequestUtil;
import org.apache.tomcat.util.http.ResponseUtil;
@@ -621,7 +622,7 @@ public class CorsFilter extends GenericFilter {
final String allowedHttpHeaders, final String exposedHeaders,
final String supportsCredentials,
final String preflightMaxAge, final String decorateRequest) throws
ServletException {
- if (allowedOrigins.trim().equals("*")) {
+ if (JreCompat.getInstance().strip(allowedOrigins).equals("*")) {
this.anyOriginAllowed = true;
} else {
this.anyOriginAllowed = false;
@@ -686,7 +687,7 @@ public class CorsFilter extends GenericFilter {
Set<String> set = new HashSet<>();
for (String split : splits) {
- set.add(split.trim());
+ set.add(JreCompat.getInstance().strip(split));
}
return set;
diff --git a/java/org/apache/catalina/filters/CsrfPreventionFilter.java
b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
index 2d8dc5f268..a41a170d09 100644
--- a/java/org/apache/catalina/filters/CsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/CsrfPreventionFilter.java
@@ -46,6 +46,7 @@ import javax.servlet.http.HttpSession;
import org.apache.catalina.util.RequestUtil;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.Method;
/**
@@ -117,7 +118,7 @@ public class CsrfPreventionFilter extends
CsrfPreventionFilterBase {
public void setEntryPoints(String entryPoints) {
String[] values = entryPoints.split(",");
for (String value : values) {
- this.entryPoints.add(value.trim());
+ this.entryPoints.add(JreCompat.getInstance().strip(value));
}
}
@@ -188,7 +189,7 @@ public class CsrfPreventionFilter extends
CsrfPreventionFilterBase {
* @return A collection of predicates representing the URL patterns.
*/
protected static Collection<Predicate<String>>
createNoNoncePredicates(ServletContext context, String patterns) {
- if (null == patterns || patterns.trim().isEmpty()) {
+ if (null == patterns ||
JreCompat.getInstance().strip(patterns).isEmpty()) {
return null;
}
@@ -200,7 +201,7 @@ public class CsrfPreventionFilter extends
CsrfPreventionFilterBase {
ArrayList<Predicate<String>> matchers = new ArrayList<>(values.length);
for (String value : values) {
- Predicate<String> p = createNoNoncePredicate(context,
value.trim());
+ Predicate<String> p = createNoNoncePredicate(context,
JreCompat.getInstance().strip(value));
if (null != p) {
matchers.add(p);
@@ -221,7 +222,7 @@ public class CsrfPreventionFilter extends
CsrfPreventionFilterBase {
* @return A Predicate which can match the specified pattern, or
<code>null</code> if the pattern is null or blank.
*/
protected static Predicate<String> createNoNoncePredicate(ServletContext
context, String pattern) {
- if (null == pattern || pattern.trim().isEmpty()) {
+ if (null == pattern ||
JreCompat.getInstance().strip(pattern).isEmpty()) {
return null;
}
if (pattern.startsWith("mime:")) {
diff --git a/java/org/apache/catalina/filters/ExpiresFilter.java
b/java/org/apache/catalina/filters/ExpiresFilter.java
index 04f41e5985..9d7f738dc7 100644
--- a/java/org/apache/catalina/filters/ExpiresFilter.java
+++ b/java/org/apache/catalina/filters/ExpiresFilter.java
@@ -44,6 +44,7 @@ import javax.servlet.http.MappingMatch;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.StringUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.Method;
/**
@@ -1495,7 +1496,8 @@ public class ExpiresFilter extends FilterBase {
try {
if (name.startsWith(PARAMETER_EXPIRES_BY_TYPE)) {
String contentType =
-
name.substring(PARAMETER_EXPIRES_BY_TYPE.length()).trim().toLowerCase(Locale.ENGLISH);
+
JreCompat.getInstance().strip(name.substring(PARAMETER_EXPIRES_BY_TYPE.length()))
+ .toLowerCase(Locale.ENGLISH);
ExpiresConfiguration expiresConfiguration =
parseExpiresConfiguration(value);
this.expiresConfigurationByContentType.put(contentType,
expiresConfiguration);
} else if (name.equalsIgnoreCase(PARAMETER_EXPIRES_DEFAULT)) {
@@ -1627,7 +1629,7 @@ public class ExpiresFilter extends FilterBase {
* @return the parsed expires
*/
protected ExpiresConfiguration parseExpiresConfiguration(String inputLine)
{
- String line = inputLine.trim();
+ String line = JreCompat.getInstance().strip(inputLine);
StringTokenizer tokenizer = new StringTokenizer(line, " ");
diff --git a/java/org/apache/catalina/filters/RateLimitFilter.java
b/java/org/apache/catalina/filters/RateLimitFilter.java
index d24de66a23..3b97398a62 100644
--- a/java/org/apache/catalina/filters/RateLimitFilter.java
+++ b/java/org/apache/catalina/filters/RateLimitFilter.java
@@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletResponse;
import org.apache.catalina.util.RateLimiter;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -264,7 +265,7 @@ public class RateLimitFilter extends FilterBase {
rateLimiter.setFilterConfig(filterConfig);
if (policyName != null) {
- String trimmedName = policyName.trim();
+ String trimmedName = JreCompat.getInstance().strip(policyName);
if (!trimmedName.isEmpty()) {
rateLimiter.setPolicyName(trimmedName);
}
diff --git a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
index 4149f1c4e9..87818feb77 100644
--- a/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
+++ b/java/org/apache/catalina/filters/RestCsrfPreventionFilter.java
@@ -33,6 +33,8 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import org.apache.tomcat.util.compat.JreCompat;
+
/**
* Provides basic CSRF protection for REST APIs. The filter assumes that the
clients have adapted the transfer of the
* nonce through the 'X-CSRF-Token' header.
@@ -248,7 +250,8 @@ public class RestCsrfPreventionFilter extends
CsrfPreventionFilterBase {
*/
public void setPathsAcceptingParams(String pathsList) {
if (Objects.nonNull(pathsList)) {
- Arrays.asList(pathsList.split(pathsDelimiter)).forEach(e ->
pathsAcceptingParams.add(e.trim()));
+ Arrays.asList(pathsList.split(pathsDelimiter))
+ .forEach(e ->
pathsAcceptingParams.add(JreCompat.getInstance().strip(e)));
}
}
diff --git a/java/org/apache/catalina/ha/backend/TcpSender.java
b/java/org/apache/catalina/ha/backend/TcpSender.java
index 1597090e18..d809a664f3 100644
--- a/java/org/apache/catalina/ha/backend/TcpSender.java
+++ b/java/org/apache/catalina/ha/backend/TcpSender.java
@@ -28,6 +28,7 @@ import java.util.StringTokenizer;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -108,7 +109,7 @@ public class TcpSender implements Sender {
proxies = new Proxy[tok.countTokens()];
int i = 0;
while (tok.hasMoreTokens()) {
- String token = tok.nextToken().trim();
+ String token = JreCompat.getInstance().strip(tok.nextToken());
int pos = token.indexOf(':');
if (pos <= 0) {
throw new
Exception(sm.getString("tcpSender.invalidProxyList"));
diff --git a/java/org/apache/catalina/manager/HTMLManagerServlet.java
b/java/org/apache/catalina/manager/HTMLManagerServlet.java
index 952f876df3..712cf95979 100644
--- a/java/org/apache/catalina/manager/HTMLManagerServlet.java
+++ b/java/org/apache/catalina/manager/HTMLManagerServlet.java
@@ -49,6 +49,7 @@ import org.apache.catalina.util.ContextName;
import org.apache.catalina.util.ServerInfo;
import org.apache.catalina.util.SessionComparators;
import org.apache.catalina.util.URLEncoder;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.util.security.Escape;
@@ -951,7 +952,7 @@ public class HTMLManagerServlet extends ManagerServlet {
List<Session> sessions = getSessionsForName(cn, smClient);
String sortBy = req.getParameter("sort");
String orderBy = null;
- if (null != sortBy && !sortBy.trim().isEmpty()) {
+ if (null != sortBy &&
!JreCompat.getInstance().strip(sortBy).isEmpty()) {
Comparator<Session> comparator = getComparator(sortBy);
if (comparator != null) {
orderBy = req.getParameter("order");
diff --git a/java/org/apache/catalina/realm/DataSourceRealm.java
b/java/org/apache/catalina/realm/DataSourceRealm.java
index 78c398e290..8165401c1d 100644
--- a/java/org/apache/catalina/realm/DataSourceRealm.java
+++ b/java/org/apache/catalina/realm/DataSourceRealm.java
@@ -31,6 +31,7 @@ import javax.sql.DataSource;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.Server;
import org.apache.naming.ContextBindings;
+import org.apache.tomcat.util.compat.JreCompat;
/**
* Implementation of <b>Realm</b> that works with any JDBC JNDI DataSource.
See the Realm How-To for more details on how
@@ -447,7 +448,7 @@ public class DataSourceRealm extends RealmBase {
dbCredentials = rs.getString(1);
}
- return (dbCredentials != null) ? dbCredentials.trim() : null;
+ return (dbCredentials != null) ?
JreCompat.getInstance().strip(dbCredentials) : null;
}
} catch (SQLException e) {
containerLog.error(sm.getString("dataSourceRealm.getPassword.exception",
username), e);
@@ -551,7 +552,7 @@ public class DataSourceRealm extends RealmBase {
while (rs.next()) {
String role = rs.getString(1);
if (role != null) {
- list.add(role.trim());
+ list.add(JreCompat.getInstance().strip(role));
}
}
return list;
diff --git a/java/org/apache/catalina/realm/JDBCRealm.java
b/java/org/apache/catalina/realm/JDBCRealm.java
index ffb5a2bae8..1ec7696575 100644
--- a/java/org/apache/catalina/realm/JDBCRealm.java
+++ b/java/org/apache/catalina/realm/JDBCRealm.java
@@ -29,6 +29,7 @@ import java.util.Properties;
import org.apache.catalina.LifecycleException;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
/**
@@ -525,7 +526,7 @@ public class JDBCRealm extends RealmBase {
dbConnection.commit();
if (dbCredentials != null) {
- dbCredentials = dbCredentials.trim();
+ dbCredentials =
JreCompat.getInstance().strip(dbCredentials);
}
return dbCredentials;
@@ -639,7 +640,7 @@ public class JDBCRealm extends RealmBase {
while (rs.next()) {
String role = rs.getString(1);
if (null != role) {
- roleList.add(role.trim());
+ roleList.add(JreCompat.getInstance().strip(role));
}
}
diff --git a/java/org/apache/catalina/realm/JNDIRealm.java
b/java/org/apache/catalina/realm/JNDIRealm.java
index 0e8343941c..1941ae60da 100644
--- a/java/org/apache/catalina/realm/JNDIRealm.java
+++ b/java/org/apache/catalina/realm/JNDIRealm.java
@@ -66,6 +66,7 @@ import org.apache.catalina.LifecycleException;
import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.buf.StringUtils;
import org.apache.tomcat.util.collections.SynchronizedStack;
+import org.apache.tomcat.util.compat.JreCompat;
import org.ietf.jgss.GSSContext;
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSName;
@@ -1087,7 +1088,7 @@ public class JNDIRealm extends RealmBase {
if (cipherSuites == null || cipherSuitesArray != null) {
return cipherSuitesArray;
}
- this.cipherSuites = this.cipherSuites.trim();
+ this.cipherSuites = JreCompat.getInstance().strip(this.cipherSuites);
if (this.cipherSuites.isEmpty()) {
containerLog.warn(sm.getString("jndiRealm.emptyCipherSuites"));
this.cipherSuitesArray = null;
@@ -1154,7 +1155,7 @@ public class JNDIRealm extends RealmBase {
*/
public void setHostnameVerifierClassName(String verifierClassName) {
if (verifierClassName != null) {
- this.hostNameVerifierClassName = verifierClassName.trim();
+ this.hostNameVerifierClassName =
JreCompat.getInstance().strip(verifierClassName);
} else {
this.hostNameVerifierClassName = null;
}
@@ -2751,7 +2752,8 @@ public class JNDIRealm extends RealmBase {
return sslSocketFactory;
}
final SSLSocketFactory result;
- if (this.sslSocketFactoryClassName != null &&
!sslSocketFactoryClassName.trim().isEmpty()) {
+ if (this.sslSocketFactoryClassName != null &&
+
!JreCompat.getInstance().strip(sslSocketFactoryClassName).isEmpty()) {
result =
createSSLSocketFactoryFromClassName(this.sslSocketFactoryClassName);
} else {
result = createSSLContextFactoryFromProtocol(sslProtocol);
diff --git a/java/org/apache/catalina/realm/MemoryRealm.java
b/java/org/apache/catalina/realm/MemoryRealm.java
index b10fcb1c55..c83151d56f 100644
--- a/java/org/apache/catalina/realm/MemoryRealm.java
+++ b/java/org/apache/catalina/realm/MemoryRealm.java
@@ -27,6 +27,7 @@ import java.util.Map;
import org.apache.catalina.LifecycleException;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.file.ConfigFileLoader;
@@ -156,14 +157,14 @@ public class MemoryRealm extends RealmBase {
// Accumulate the list of roles for this user
List<String> list = new ArrayList<>();
- if (roles != null && roles.trim().length() > 0) {
+ if (roles != null && JreCompat.getInstance().strip(roles).length() >
0) {
roles += ",";
while (true) {
int comma = roles.indexOf(',');
if (comma < 0) {
break;
}
- String role = roles.substring(0, comma).trim();
+ String role = JreCompat.getInstance().strip(roles.substring(0,
comma));
if (!role.isEmpty()) {
list.add(role);
}
diff --git a/java/org/apache/catalina/realm/RealmBase.java
b/java/org/apache/catalina/realm/RealmBase.java
index 8a962dc896..304dab9ccc 100644
--- a/java/org/apache/catalina/realm/RealmBase.java
+++ b/java/org/apache/catalina/realm/RealmBase.java
@@ -57,6 +57,7 @@ import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.HexUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.descriptor.web.SecurityCollection;
import org.apache.tomcat.util.descriptor.web.SecurityConstraint;
import org.apache.tomcat.util.res.StringManager;
@@ -955,7 +956,7 @@ public abstract class RealmBase extends LifecycleMBeanBase
implements Realm {
}
List<String> attrs = new ArrayList<>();
for (String name : userAttributes.split(USER_ATTRIBUTES_DELIMITER)) {
- name = name.trim();
+ name = JreCompat.getInstance().strip(name);
if (name.isEmpty()) {
continue;
}
@@ -1661,7 +1662,7 @@ public abstract class RealmBase extends
LifecycleMBeanBase implements Realm {
}
private static X509UsernameRetriever createUsernameRetriever(String
className) throws LifecycleException {
- if (null == className || className.trim().isEmpty()) {
+ if (null == className ||
JreCompat.getInstance().strip(className).isEmpty()) {
return new X509SubjectDnRetriever();
}
diff --git a/java/org/apache/catalina/security/SecurityListener.java
b/java/org/apache/catalina/security/SecurityListener.java
index c14405bad7..664982e3c7 100644
--- a/java/org/apache/catalina/security/SecurityListener.java
+++ b/java/org/apache/catalina/security/SecurityListener.java
@@ -32,6 +32,7 @@ import org.apache.catalina.util.ServerInfo;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.StringUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -101,7 +102,7 @@ public class SecurityListener implements LifecycleListener {
} else {
String[] userNames = userNameList.split(",");
for (String userName : userNames) {
- userName = userName.trim();
+ userName = JreCompat.getInstance().strip(userName);
if (!userName.isEmpty()) {
checkedOsUsers.add(userName.toLowerCase(Locale.getDefault()));
}
diff --git a/java/org/apache/catalina/servlets/CGIServlet.java
b/java/org/apache/catalina/servlets/CGIServlet.java
index c4196ba95e..eb506035cc 100644
--- a/java/org/apache/catalina/servlets/CGIServlet.java
+++ b/java/org/apache/catalina/servlets/CGIServlet.java
@@ -55,6 +55,7 @@ import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.util.IOTools;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.compat.JrePlatform;
import org.apache.tomcat.util.http.Method;
import org.apache.tomcat.util.res.StringManager;
@@ -356,13 +357,13 @@ public final class CGIServlet extends HttpServlet {
if (getServletConfig().getInitParameter("cgiMethods") != null) {
String paramValue =
getServletConfig().getInitParameter("cgiMethods");
- paramValue = paramValue.trim();
+ paramValue = JreCompat.getInstance().strip(paramValue);
if ("*".equals(paramValue)) {
cgiMethodsAll = true;
} else {
String[] methods = paramValue.split(",");
for (String method : methods) {
- String trimmedMethod = method.trim();
+ String trimmedMethod =
JreCompat.getInstance().strip(method);
cgiMethods.add(trimmedMethod);
}
}
diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java
b/java/org/apache/catalina/servlets/DefaultServlet.java
index 77368a41fb..7356d36f95 100644
--- a/java/org/apache/catalina/servlets/DefaultServlet.java
+++ b/java/org/apache/catalina/servlets/DefaultServlet.java
@@ -83,6 +83,7 @@ import org.apache.catalina.util.ServerInfo;
import org.apache.catalina.util.URLEncoder;
import org.apache.catalina.webresources.CachedResource;
import org.apache.tomcat.util.buf.B2CConverter;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.FastHttpDateFormat;
import org.apache.tomcat.util.http.Method;
import org.apache.tomcat.util.http.ResponseUtil;
@@ -3255,7 +3256,7 @@ public class DefaultServlet extends HttpServlet {
* @return An Order specifying the column and ascending/descending to
be applied to resources.
*/
public Order getOrder(String order) {
- if (null == order || order.trim().isEmpty()) {
+ if (null == order ||
JreCompat.getInstance().strip(order).isEmpty()) {
return Order.DEFAULT;
}
@@ -3269,7 +3270,7 @@ public class DefaultServlet extends HttpServlet {
boolean ascending = false;
for (String option : options) {
- option = option.trim();
+ option = JreCompat.getInstance().strip(option);
if (2 < option.length()) {
char opt = option.charAt(0);
diff --git a/java/org/apache/catalina/session/JDBCStore.java
b/java/org/apache/catalina/session/JDBCStore.java
index 0d6561c7be..f26a9340b7 100644
--- a/java/org/apache/catalina/session/JDBCStore.java
+++ b/java/org/apache/catalina/session/JDBCStore.java
@@ -44,6 +44,7 @@ import org.apache.catalina.LifecycleException;
import org.apache.catalina.Session;
import org.apache.juli.logging.Log;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
/**
* Implementation of the {@link org.apache.catalina.Store Store} interface
that stores serialized session objects in a
@@ -425,7 +426,7 @@ public class JDBCStore extends StoreBase {
* @param dataSourceName The JNDI name of the DataSource-factory
*/
public void setDataSourceName(String dataSourceName) {
- if (dataSourceName == null || dataSourceName.trim().isEmpty()) {
+ if (dataSourceName == null ||
JreCompat.getInstance().strip(dataSourceName).isEmpty()) {
manager.getContext().getLogger().warn(sm.getString(getStoreName()
+ ".missingDataSourceName"));
return;
}
diff --git a/java/org/apache/catalina/ssi/ExpressionTokenizer.java
b/java/org/apache/catalina/ssi/ExpressionTokenizer.java
index 981a85fe4b..d76594da04 100644
--- a/java/org/apache/catalina/ssi/ExpressionTokenizer.java
+++ b/java/org/apache/catalina/ssi/ExpressionTokenizer.java
@@ -16,6 +16,8 @@
*/
package org.apache.catalina.ssi;
+import org.apache.tomcat.util.compat.JreCompat;
+
/**
* Parses an expression string to return the individual tokens. This is
patterned similar to the StreamTokenizer in the
@@ -62,7 +64,7 @@ public class ExpressionTokenizer {
* @param expr The expression
*/
public ExpressionTokenizer(String expr) {
- this.expr = expr.trim().toCharArray();
+ this.expr = JreCompat.getInstance().strip(expr).toCharArray();
this.length = this.expr.length;
}
diff --git a/java/org/apache/catalina/ssi/SSIProcessor.java
b/java/org/apache/catalina/ssi/SSIProcessor.java
index 2c4d04e039..22d95fb836 100644
--- a/java/org/apache/catalina/ssi/SSIProcessor.java
+++ b/java/org/apache/catalina/ssi/SSIProcessor.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.Locale;
import org.apache.catalina.util.IOTools;
+import org.apache.tomcat.util.compat.JreCompat;
/**
* The entry point to SSI processing. This class does the actual parsing,
delegating to the SSIMediator, SSICommand, and
@@ -252,7 +253,7 @@ public class SSIProcessor {
collectingName = false;
}
} else if (endQuote == 0 && c == '=') {
- retString[idx++] = nameBuf.toString().trim();
+ retString[idx++] =
JreCompat.getInstance().strip(nameBuf.toString());
nameBuf.setLength(0);
collectingName = false;
} else if (endQuote == 0) {
diff --git a/java/org/apache/catalina/startup/WebappServiceLoader.java
b/java/org/apache/catalina/startup/WebappServiceLoader.java
index abb266de23..b80403c67b 100644
--- a/java/org/apache/catalina/startup/WebappServiceLoader.java
+++ b/java/org/apache/catalina/startup/WebappServiceLoader.java
@@ -37,6 +37,7 @@ import java.util.regex.Pattern;
import javax.servlet.ServletContext;
import org.apache.catalina.Context;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.scan.JarFactory;
/**
@@ -213,7 +214,7 @@ public class WebappServiceLoader<T> {
if (i >= 0) {
line = line.substring(0, i);
}
- line = line.trim();
+ line = JreCompat.getInstance().strip(line);
if (line.isEmpty()) {
continue;
}
diff --git a/java/org/apache/catalina/storeconfig/XMLFormatPreserver.java
b/java/org/apache/catalina/storeconfig/XMLFormatPreserver.java
index efdc7cce7f..9a23d65d31 100644
--- a/java/org/apache/catalina/storeconfig/XMLFormatPreserver.java
+++ b/java/org/apache/catalina/storeconfig/XMLFormatPreserver.java
@@ -34,6 +34,7 @@ import javax.xml.parsers.SAXParserFactory;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
import org.apache.tomcat.util.security.Escape;
import org.xml.sax.Attributes;
@@ -285,8 +286,9 @@ public final class XMLFormatPreserver {
}
String freshText = fresh.getText();
String candidateText = candidate.getText();
- if (freshText != null && !freshText.trim().isEmpty()
- && Objects.equals(freshText.trim(), candidateText == null ?
null : candidateText.trim())) {
+ if (freshText != null &&
!JreCompat.getInstance().strip(freshText).isEmpty()
+ && Objects.equals(JreCompat.getInstance().strip(freshText),
+ candidateText == null ? null :
JreCompat.getInstance().strip(candidateText))) {
score += 50;
}
return score;
@@ -346,7 +348,7 @@ public final class XMLFormatPreserver {
}
boolean hasChildren = !fresh.children.isEmpty();
String text = fresh.getText();
- boolean hasText = text != null && !text.trim().isEmpty();
+ boolean hasText = text != null &&
!JreCompat.getInstance().strip(text).isEmpty();
// Reproduce the attribute line wrapping of StoreAppender: the
position starts at the indentation level and
// the attributes are wrapped on a new line once the position exceeds
60 characters
int position = indent;
@@ -483,8 +485,10 @@ public final class XMLFormatPreserver {
// Only the significant text is compared: whitespace between child
elements is layout, not content
String aText = a.getText();
String bText = b.getText();
- String aTrimmed = (aText == null || aText.trim().isEmpty()) ? null :
aText.trim();
- String bTrimmed = (bText == null || bText.trim().isEmpty()) ? null :
bText.trim();
+ String aTrimmed = (aText == null ||
JreCompat.getInstance().strip(aText).isEmpty()) ? null :
+ JreCompat.getInstance().strip(aText);
+ String bTrimmed = (bText == null ||
JreCompat.getInstance().strip(bText).isEmpty()) ? null :
+ JreCompat.getInstance().strip(bText);
if (!Objects.equals(aTrimmed, bTrimmed)) {
return false;
}
diff --git a/java/org/apache/catalina/users/DataSourceUserDatabase.java
b/java/org/apache/catalina/users/DataSourceUserDatabase.java
index 9b3867b38f..109e2c7f53 100644
--- a/java/org/apache/catalina/users/DataSourceUserDatabase.java
+++ b/java/org/apache/catalina/users/DataSourceUserDatabase.java
@@ -35,6 +35,7 @@ import org.apache.catalina.User;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.ExceptionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -943,7 +944,7 @@ public class DataSourceUserDatabase extends
SparseUserDatabase {
return null;
}
- dbCredentials = (dbCredentials != null) ? dbCredentials.trim()
: null;
+ dbCredentials = (dbCredentials != null) ?
JreCompat.getInstance().strip(dbCredentials) : null;
}
} catch (SQLException e) {
log.error(sm.getString("dataSourceUserDatabase.exception"), e);
diff --git a/java/org/apache/catalina/users/MemoryUserDatabase.java
b/java/org/apache/catalina/users/MemoryUserDatabase.java
index 961b9fa740..7960fddc07 100644
--- a/java/org/apache/catalina/users/MemoryUserDatabase.java
+++ b/java/org/apache/catalina/users/MemoryUserDatabase.java
@@ -38,6 +38,7 @@ import org.apache.catalina.UserDatabase;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.CloseableURLConnection;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.digester.AbstractObjectCreationFactory;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.file.ConfigFileLoader;
@@ -713,10 +714,10 @@ class MemoryGroupCreationFactory extends
AbstractObjectCreationFactory {
String rolename;
int comma = roles.indexOf(',');
if (comma >= 0) {
- rolename = roles.substring(0, comma).trim();
+ rolename =
JreCompat.getInstance().strip(roles.substring(0, comma));
roles = roles.substring(comma + 1);
} else {
- rolename = roles.trim();
+ rolename = JreCompat.getInstance().strip(roles);
roles = "";
}
if (!rolename.isEmpty()) {
@@ -802,10 +803,10 @@ class MemoryUserCreationFactory extends
AbstractObjectCreationFactory {
String groupname;
int comma = groups.indexOf(',');
if (comma >= 0) {
- groupname = groups.substring(0, comma).trim();
+ groupname =
JreCompat.getInstance().strip(groups.substring(0, comma));
groups = groups.substring(comma + 1);
} else {
- groupname = groups.trim();
+ groupname = JreCompat.getInstance().strip(groups);
groups = "";
}
if (!groupname.isEmpty()) {
@@ -822,10 +823,10 @@ class MemoryUserCreationFactory extends
AbstractObjectCreationFactory {
String rolename;
int comma = roles.indexOf(',');
if (comma >= 0) {
- rolename = roles.substring(0, comma).trim();
+ rolename =
JreCompat.getInstance().strip(roles.substring(0, comma));
roles = roles.substring(comma + 1);
} else {
- rolename = roles.trim();
+ rolename = JreCompat.getInstance().strip(roles);
roles = "";
}
if (!rolename.isEmpty()) {
diff --git a/java/org/apache/catalina/util/ManifestResource.java
b/java/org/apache/catalina/util/ManifestResource.java
index 8b7276012f..4be48954a4 100644
--- a/java/org/apache/catalina/util/ManifestResource.java
+++ b/java/org/apache/catalina/util/ManifestResource.java
@@ -20,6 +20,8 @@ import java.util.ArrayList;
import java.util.jar.Attributes;
import java.util.jar.Manifest;
+import org.apache.tomcat.util.compat.JreCompat;
+
/**
* Representation of a Manifest file and its available extensions and required
extensions.
*/
@@ -168,7 +170,7 @@ public class ManifestResource {
if (space < 0) {
break;
}
- String name = names.substring(0, space).trim();
+ String name = JreCompat.getInstance().strip(names.substring(0,
space));
names = names.substring(space + 1);
String value = attributes.getValue(name + "-Extension-Name");
diff --git a/java/org/apache/catalina/valves/ParameterLimitValve.java
b/java/org/apache/catalina/valves/ParameterLimitValve.java
index 4fc1d5bafd..827a6dac60 100644
--- a/java/org/apache/catalina/valves/ParameterLimitValve.java
+++ b/java/org/apache/catalina/valves/ParameterLimitValve.java
@@ -36,6 +36,7 @@ import org.apache.catalina.connector.Request;
import org.apache.catalina.connector.Response;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.UDecoder;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.file.ConfigFileLoader;
import org.apache.tomcat.util.file.ConfigurationSource;
@@ -248,7 +249,7 @@ public class ParameterLimitValve extends ValveBase {
String line;
while ((line = reader.readLine()) != null) {
// Trim whitespace from the line
- line = line.trim();
+ line = JreCompat.getInstance().strip(line);
if (line.isEmpty() || line.startsWith("#")) {
// Skip empty lines or comments
continue;
@@ -259,8 +260,8 @@ public class ParameterLimitValve extends ValveBase {
throw new
IllegalArgumentException(sm.getString("parameterLimitValve.invalidLine", line));
}
- String patternString = line.substring(0,
lastEqualsIndex).trim();
- String limitsString = line.substring(lastEqualsIndex +
1).trim();
+ String patternString =
JreCompat.getInstance().strip(line.substring(0, lastEqualsIndex));
+ String limitsString =
JreCompat.getInstance().strip(line.substring(lastEqualsIndex + 1));
Pattern pattern =
Pattern.compile(UDecoder.URLDecode(patternString, StandardCharsets.UTF_8));
String[] limits = limitsString.split(",");
diff --git
a/java/org/apache/catalina/valves/rewrite/RandomizedTextRewriteMap.java
b/java/org/apache/catalina/valves/rewrite/RandomizedTextRewriteMap.java
index d809a77f9a..f235974ff1 100644
--- a/java/org/apache/catalina/valves/rewrite/RandomizedTextRewriteMap.java
+++ b/java/org/apache/catalina/valves/rewrite/RandomizedTextRewriteMap.java
@@ -24,6 +24,7 @@ import java.util.HashMap;
import java.util.Map;
import java.util.Random;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.file.ConfigFileLoader;
import org.apache.tomcat.util.file.ConfigurationSource.Resource;
import org.apache.tomcat.util.res.StringManager;
@@ -52,13 +53,13 @@ public class RandomizedTextRewriteMap implements RewriteMap
{
try (Resource txtResource =
ConfigFileLoader.getSource().getResource(txtFilePath);
BufferedReader reader = new BufferedReader(new
InputStreamReader(txtResource.getInputStream()))) {
while ((line = reader.readLine()) != null) {
- line = line.trim();
+ line = JreCompat.getInstance().strip(line);
if (line.startsWith("#") || line.isEmpty()) {
// Ignore comment line or empty lines
continue;
} else if (line.indexOf('#') > 0) {
// Ignore comment characters after '#'
- line = line.substring(0, line.indexOf('#')).trim();
+ line = JreCompat.getInstance().strip(line.substring(0,
line.indexOf('#')));
}
// Like mod_rewrite, any whitespace separates the key from the
// value. The value may itself contain whitespace.
diff --git a/java/org/apache/catalina/valves/rewrite/ResolverImpl.java
b/java/org/apache/catalina/valves/rewrite/ResolverImpl.java
index 71f50c4baf..f846d25f18 100644
--- a/java/org/apache/catalina/valves/rewrite/ResolverImpl.java
+++ b/java/org/apache/catalina/valves/rewrite/ResolverImpl.java
@@ -34,6 +34,7 @@ import org.apache.catalina.WebResource;
import org.apache.catalina.WebResourceRoot;
import org.apache.catalina.connector.Request;
import org.apache.juli.logging.Log;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.FastHttpDateFormat;
import org.apache.tomcat.util.http.RequestUtil;
import org.apache.tomcat.util.net.SSLSupport;
@@ -363,7 +364,7 @@ public class ResolverImpl extends Resolver {
break;
}
- String key = unescape(fullDN.substring(start, eqPos)).trim();
+ String key =
JreCompat.getInstance().strip(unescape(fullDN.substring(start, eqPos)));
int valStart = eqPos + 1;
// Find the unescaped ',' that ends this RDN, or end of string
@@ -378,7 +379,7 @@ public class ResolverImpl extends Resolver {
}
}
- String value = unescape(fullDN.substring(valStart,
commaPos)).trim();
+ String value =
JreCompat.getInstance().strip(unescape(fullDN.substring(valStart, commaPos)));
if (!key.isEmpty()) {
components.put(key, value);
}
diff --git a/java/org/apache/coyote/CompressionConfig.java
b/java/org/apache/coyote/CompressionConfig.java
index 24fa9b1b44..7b52c80cca 100644
--- a/java/org/apache/coyote/CompressionConfig.java
+++ b/java/org/apache/coyote/CompressionConfig.java
@@ -30,6 +30,7 @@ import java.util.regex.Pattern;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.MessageBytes;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.MimeHeaders;
import org.apache.tomcat.util.http.ResponseUtil;
import org.apache.tomcat.util.http.parser.AcceptEncoding;
@@ -85,7 +86,7 @@ public class CompressionConfig {
if (encodings != null && !encodings.isEmpty()) {
StringTokenizer tokens = new StringTokenizer(encodings, ",");
while (tokens.hasMoreTokens()) {
- String token = tokens.nextToken().trim();
+ String token =
JreCompat.getInstance().strip(tokens.nextToken());
if (!token.isEmpty()) {
newEncodings.add(token);
}
@@ -105,7 +106,7 @@ public class CompressionConfig {
public void setCompression(String compression) {
// Trim the value so that surrounding whitespace in the configuration
// does not silently disable compression
- String value = compression == null ? "" : compression.trim();
+ String value = compression == null ? "" :
JreCompat.getInstance().strip(compression);
if (value.equals("on")) {
this.compressionLevel = 1;
} else if (value.equals("force")) {
@@ -232,7 +233,7 @@ public class CompressionConfig {
List<String> values = new ArrayList<>();
StringTokenizer tokens = new StringTokenizer(compressibleMimeType,
",");
while (tokens.hasMoreTokens()) {
- String token = tokens.nextToken().trim();
+ String token = JreCompat.getInstance().strip(tokens.nextToken());
if (!token.isEmpty()) {
values.add(token);
}
diff --git a/java/org/apache/coyote/http2/Http2Protocol.java
b/java/org/apache/coyote/http2/Http2Protocol.java
index 0b12f61d6a..8fbd7ff40e 100644
--- a/java/org/apache/coyote/http2/Http2Protocol.java
+++ b/java/org/apache/coyote/http2/Http2Protocol.java
@@ -45,6 +45,7 @@ import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
import org.apache.tomcat.util.buf.StringUtils;
import org.apache.tomcat.util.collections.SynchronizedStack;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.modeler.Registry;
import org.apache.tomcat.util.net.SocketWrapperBase;
import org.apache.tomcat.util.res.StringManager;
@@ -423,7 +424,7 @@ public class Http2Protocol implements UpgradeProtocol {
if (commaSeparatedHeaders != null) {
String[] headers = commaSeparatedHeaders.split(",");
for (String header : headers) {
- String trimmedHeader =
header.trim().toLowerCase(Locale.ENGLISH);
+ String trimmedHeader =
JreCompat.getInstance().strip(header).toLowerCase(Locale.ENGLISH);
if (toRemove.contains(trimmedHeader)) {
toRemove.remove(trimmedHeader);
} else {
diff --git a/java/org/apache/jasper/compiler/ELParser.java
b/java/org/apache/jasper/compiler/ELParser.java
index 1e7fb5656a..4f0fc062c0 100644
--- a/java/org/apache/jasper/compiler/ELParser.java
+++ b/java/org/apache/jasper/compiler/ELParser.java
@@ -16,6 +16,7 @@
*/
package org.apache.jasper.compiler;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.JasperException;
import org.apache.jasper.compiler.ELNode.ELText;
import org.apache.jasper.compiler.ELNode.Function;
@@ -269,7 +270,7 @@ public class ELParser {
int end = len;
// Look to see if the value is quoted
- String trimmed = input.trim();
+ String trimmed = JreCompat.getInstance().strip(input);
int trimmedLen = trimmed.length();
if (trimmedLen > 1) {
// Might be quoted
diff --git a/java/org/apache/jasper/compiler/Generator.java
b/java/org/apache/jasper/compiler/Generator.java
index 7578e28f4e..ecdd8f2d5c 100644
--- a/java/org/apache/jasper/compiler/Generator.java
+++ b/java/org/apache/jasper/compiler/Generator.java
@@ -589,7 +589,7 @@ class Generator {
Set<String> packages = new LinkedHashSet<>();
Set<String> classes = new LinkedHashSet<>();
for (String importName : imports) {
- String trimmed = importName.trim();
+ String trimmed = JreCompat.getInstance().strip(importName);
if (trimmed.endsWith(".*")) {
packages.add(trimmed.substring(0, trimmed.length() - 2));
} else {
@@ -2047,7 +2047,7 @@ class Generator {
String revisedText = matcher.replaceAll("\n");
// Leading and trailing whitespace can be trimmed so remove
// it here as the regex won't remove it.
- text = revisedText.trim();
+ text = JreCompat.getInstance().strip(revisedText);
}
}
diff --git a/java/org/apache/jasper/compiler/JavacErrorDetail.java
b/java/org/apache/jasper/compiler/JavacErrorDetail.java
index 158425a4dc..90f5af84bb 100644
--- a/java/org/apache/jasper/compiler/JavacErrorDetail.java
+++ b/java/org/apache/jasper/compiler/JavacErrorDetail.java
@@ -24,6 +24,7 @@ import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.JspCompilationContext;
import org.apache.tomcat.Jar;
@@ -113,7 +114,7 @@ public class JavacErrorDetail {
// faulty. Scan forward to match the java line...
if (jspLines[jspBeginLineNum - 1].lastIndexOf("<%") >
jspLines[jspBeginLineNum - 1]
.lastIndexOf("%>")) {
- String javaLine = javaLines[javaLineNum - 1].trim();
+ String javaLine =
JreCompat.getInstance().strip(javaLines[javaLineNum - 1]);
for (int i = jspBeginLineNum - 1; i < jspLines.length;
i++) {
if (jspLines[i].contains(javaLine)) {
diff --git a/java/org/apache/jasper/compiler/Node.java
b/java/org/apache/jasper/compiler/Node.java
index 3043fed6d9..b3d0c41aed 100644
--- a/java/org/apache/jasper/compiler/Node.java
+++ b/java/org/apache/jasper/compiler/Node.java
@@ -35,6 +35,7 @@ import javax.servlet.jsp.tagext.TagVariableInfo;
import javax.servlet.jsp.tagext.TryCatchFinally;
import javax.servlet.jsp.tagext.VariableInfo;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
import org.apache.jasper.compiler.tagplugin.TagPluginContext;
@@ -743,7 +744,7 @@ public abstract class Node implements TagConstants {
if (importEntry.indexOf(';') > -1) {
throw new
IllegalArgumentException(Localizer.getMessage("jsp.error.page.invalid.import"));
}
- return importEntry.trim();
+ return JreCompat.getInstance().strip(importEntry);
}
}
@@ -813,14 +814,14 @@ public abstract class Node implements TagConstants {
int start = 0;
int index;
while ((index = value.indexOf(',', start)) != -1) {
- imports.add(value.substring(start, index).trim());
+
imports.add(JreCompat.getInstance().strip(value.substring(start, index)));
start = index + 1;
}
if (start == 0) {
// No comma found
- imports.add(value.trim());
+ imports.add(JreCompat.getInstance().strip(value));
} else {
- imports.add(value.substring(start).trim());
+
imports.add(JreCompat.getInstance().strip(value.substring(start)));
}
}
@@ -2715,9 +2716,9 @@ public abstract class Node implements TagConstants {
} else if (this.isDeferredMethodInput()) {
String m = this.tai.getMethodSignature();
if (m != null) {
- int rti = m.trim().indexOf(' ');
+ int rti = JreCompat.getInstance().strip(m).indexOf('
');
if (rti > 0) {
- return m.substring(0, rti).trim();
+ return
JreCompat.getInstance().strip(m.substring(0, rti));
}
}
}
@@ -2735,13 +2736,13 @@ public abstract class Node implements TagConstants {
if (this.isDeferredMethodInput()) {
String m = this.tai.getMethodSignature();
if (m != null) {
- m = m.trim();
+ m = JreCompat.getInstance().strip(m);
m = m.substring(m.indexOf('(') + 1);
m = m.substring(0, m.length() - 1);
- if (!m.trim().isEmpty()) {
+ if (!JreCompat.getInstance().strip(m).isEmpty()) {
String[] p = m.split(",");
for (int i = 0; i < p.length; i++) {
- p[i] = p[i].trim();
+ p[i] = JreCompat.getInstance().strip(p[i]);
}
return p;
}
diff --git a/java/org/apache/jasper/compiler/SmapUtil.java
b/java/org/apache/jasper/compiler/SmapUtil.java
index ae38984dea..9901c6902d 100644
--- a/java/org/apache/jasper/compiler/SmapUtil.java
+++ b/java/org/apache/jasper/compiler/SmapUtil.java
@@ -31,6 +31,7 @@ import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
import org.apache.jasper.compiler.SmapStratum.LineInfo;
@@ -637,7 +638,7 @@ public class SmapUtil {
// beginning of the text.
while ((next = text.indexOf('\n', index)) > -1) {
if (beginning) {
- String line = text.substring(index, next).trim();
+ String line =
JreCompat.getInstance().strip(text.substring(index, next));
if (!slashStarSeen && line.startsWith("/*")) {
slashStarSeen = true;
}
diff --git a/java/org/apache/jasper/compiler/Validator.java
b/java/org/apache/jasper/compiler/Validator.java
index b90cdcaa12..3548f6a67a 100644
--- a/java/org/apache/jasper/compiler/Validator.java
+++ b/java/org/apache/jasper/compiler/Validator.java
@@ -40,6 +40,7 @@ import javax.servlet.jsp.tagext.TagInfo;
import javax.servlet.jsp.tagext.TagLibraryInfo;
import javax.servlet.jsp.tagext.ValidationMessage;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.JasperException;
import org.apache.jasper.compiler.ELNode.Text;
import org.apache.jasper.el.ELContextImpl;
@@ -1043,10 +1044,10 @@ class Validator {
// for the attribute
String m = tldAttr.getMethodSignature();
if (m != null) {
- m = m.trim();
+ m = JreCompat.getInstance().strip(m);
int rti = m.indexOf(' ');
if (rti > 0) {
- expectedType = m.substring(0,
rti).trim();
+ expectedType =
JreCompat.getInstance().strip(m.substring(0, rti));
}
} else {
expectedType = "java.lang.Object";
@@ -1491,7 +1492,7 @@ class Validator {
}
lastArg = true;
}
- String arg = signature.substring(start, p).trim();
+ String arg =
JreCompat.getInstance().strip(signature.substring(start, p));
if (!arg.isEmpty()) {
params.add(arg);
}
diff --git a/java/org/apache/jasper/tagplugins/jstl/Util.java
b/java/org/apache/jasper/tagplugins/jstl/Util.java
index 61969e8afa..93a1a77559 100644
--- a/java/org/apache/jasper/tagplugins/jstl/Util.java
+++ b/java/org/apache/jasper/tagplugins/jstl/Util.java
@@ -32,6 +32,7 @@ import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.PageContext;
+import org.apache.el.util.JreCompat;
import org.apache.jasper.Constants;
import org.apache.jasper.compiler.Localizer;
@@ -138,7 +139,7 @@ public class Util {
return null;
}
index += 1; // positioned after the '='
- input = input.substring(index).trim();
+ input = JreCompat.getInstance().strip(input.substring(index));
if (input.isEmpty()) {
// Empty or whitespace-only parameter value, e.g. a malformed
// "Content-Type: text/html;charset=" header from a remote server.
@@ -162,7 +163,7 @@ public class Util {
end = input.length();
}
}
- return input.substring(begin, end).trim();
+ return JreCompat.getInstance().strip(input.substring(begin, end));
}
/**
diff --git a/java/org/apache/tomcat/util/buf/EncodedSolidusHandling.java
b/java/org/apache/tomcat/util/buf/EncodedSolidusHandling.java
index e9879c9139..d69f147d16 100644
--- a/java/org/apache/tomcat/util/buf/EncodedSolidusHandling.java
+++ b/java/org/apache/tomcat/util/buf/EncodedSolidusHandling.java
@@ -18,6 +18,7 @@ package org.apache.tomcat.util.buf;
import java.util.Locale;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -67,7 +68,7 @@ public enum EncodedSolidusHandling {
* @throws IllegalStateException if the string does not match any known
strategy
*/
public static EncodedSolidusHandling fromString(String from) {
- String trimmedLower = from.trim().toLowerCase(Locale.ENGLISH);
+ String trimmedLower =
JreCompat.getInstance().strip(from).toLowerCase(Locale.ENGLISH);
for (EncodedSolidusHandling value : values()) {
if (value.getValue().equals(trimmedLower)) {
diff --git a/java/org/apache/tomcat/util/buf/StringUtils.java
b/java/org/apache/tomcat/util/buf/StringUtils.java
index 698b21875d..8fdb4db95f 100644
--- a/java/org/apache/tomcat/util/buf/StringUtils.java
+++ b/java/org/apache/tomcat/util/buf/StringUtils.java
@@ -20,6 +20,8 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.function.Function;
+import org.apache.tomcat.util.compat.JreCompat;
+
/**
* Utility methods to build a separated list from a given set (not
java.util.Set) of inputs and return that list as a
* string or append it to an existing StringBuilder. If the given set is null
or empty, an empty string will be
@@ -177,7 +179,7 @@ public final class StringUtils {
String[] splits = s.split(",");
for (int i = 0; i < splits.length; ++i) {
- splits[i] = splits[i].trim();
+ splits[i] = JreCompat.getInstance().strip(splits[i]);
}
return splits;
diff --git a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
index a652d87ae6..5b83a865ee 100644
--- a/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
+++ b/java/org/apache/tomcat/util/descriptor/tld/TldRuleSet.java
@@ -22,6 +22,7 @@ import javax.servlet.jsp.tagext.TagAttributeInfo;
import javax.servlet.jsp.tagext.TagVariableInfo;
import javax.servlet.jsp.tagext.VariableInfo;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.digester.Digester;
import org.apache.tomcat.util.digester.Rule;
import org.apache.tomcat.util.digester.RuleSet;
@@ -484,7 +485,7 @@ public class TldRuleSet implements RuleSet {
@Override
public void body(String namespace, String name, String text) throws
Exception {
if (null != text) {
- text = text.trim();
+ text = JreCompat.getInstance().strip(text);
}
boolean value = "true".equalsIgnoreCase(text) ||
"yes".equalsIgnoreCase(text);
setter.invoke(digester.peek(), Boolean.valueOf(value));
diff --git a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
index 2d12e98db0..6c6a51bd86 100644
--- a/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
+++ b/java/org/apache/tomcat/util/descriptor/web/SecurityConstraint.java
@@ -34,6 +34,7 @@ import javax.servlet.annotation.ServletSecurity;
import javax.servlet.annotation.ServletSecurity.EmptyRoleSemantic;
import org.apache.juli.logging.Log;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
@@ -699,7 +700,8 @@ public class SecurityConstraint extends XmlEncodingBase
implements Serializable
msg.append(' ');
}
if (denyUncoveredHttpMethods) {
-
log.info(sm.getString("securityConstraint.uncoveredHttpMethodFix", pattern,
msg.toString().trim()));
+
log.info(sm.getString("securityConstraint.uncoveredHttpMethodFix", pattern,
+ JreCompat.getInstance().strip(msg.toString())));
SecurityCollection collection = new SecurityCollection();
for (String method : methods) {
collection.addOmittedMethod(method);
@@ -711,7 +713,8 @@ public class SecurityConstraint extends XmlEncodingBase
implements Serializable
constraint.addCollection(collection);
newConstraints.add(constraint);
} else {
-
log.error(sm.getString("securityConstraint.uncoveredHttpMethod", pattern,
msg.toString().trim()));
+
log.error(sm.getString("securityConstraint.uncoveredHttpMethod", pattern,
+ JreCompat.getInstance().strip(msg.toString())));
}
continue;
}
@@ -746,7 +749,7 @@ public class SecurityConstraint extends XmlEncodingBase
implements Serializable
}
if (denyUncoveredHttpMethods) {
log.info(sm.getString("securityConstraint.uncoveredHttpOmittedMethodFix",
pattern,
- msg.toString().trim()));
+ JreCompat.getInstance().strip(msg.toString())));
SecurityCollection collection = new SecurityCollection();
for (String method : omittedMethods) {
collection.addMethod(method);
@@ -759,7 +762,8 @@ public class SecurityConstraint extends XmlEncodingBase
implements Serializable
newConstraints.add(constraint);
} else {
log.error(
-
sm.getString("securityConstraint.uncoveredHttpOmittedMethod", pattern,
msg.toString().trim()));
+
sm.getString("securityConstraint.uncoveredHttpOmittedMethod", pattern,
+
JreCompat.getInstance().strip(msg.toString())));
}
}
}
diff --git a/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
b/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
index acbc283847..54c0907953 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebRuleSet.java
@@ -20,6 +20,7 @@ import java.lang.reflect.Method;
import java.util.ArrayList;
import org.apache.tomcat.util.IntrospectionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.digester.CallMethodRule;
import org.apache.tomcat.util.digester.CallParamRule;
import org.apache.tomcat.util.digester.Digester;
@@ -1246,13 +1247,13 @@ final class MappedNameRule extends Rule {
@Override
public void body(String namespace, String name, String text) throws
Exception {
ResourceBase resourceBase = (ResourceBase) digester.peek();
- resourceBase.setProperty("mappedName", text.trim());
+ resourceBase.setProperty("mappedName",
JreCompat.getInstance().strip(text));
StringBuilder code = digester.getGeneratedCode();
if (code != null) {
code.append(System.lineSeparator());
code.append(digester.toVariableName(resourceBase));
- code.append(".setProperty(\"mappedName\",
\"").append(text.trim()).append("\");");
+ code.append(".setProperty(\"mappedName\",
\"").append(JreCompat.getInstance().strip(text)).append("\");");
code.append(System.lineSeparator());
}
}
diff --git a/java/org/apache/tomcat/util/digester/CallMethodRule.java
b/java/org/apache/tomcat/util/digester/CallMethodRule.java
index 1f2cb4f37f..fa1e98462c 100644
--- a/java/org/apache/tomcat/util/digester/CallMethodRule.java
+++ b/java/org/apache/tomcat/util/digester/CallMethodRule.java
@@ -19,6 +19,7 @@ package org.apache.tomcat.util.digester;
import java.util.Arrays;
import org.apache.tomcat.util.IntrospectionUtils;
+import org.apache.tomcat.util.compat.JreCompat;
import org.xml.sax.Attributes;
/**
@@ -227,7 +228,7 @@ public class CallMethodRule extends Rule {
public void body(String namespace, String name, String bodyText) throws
Exception {
if (paramCount == 0) {
- this.bodyText = bodyText.trim();
+ this.bodyText = JreCompat.getInstance().strip(bodyText);
}
}
diff --git a/java/org/apache/tomcat/util/digester/CallParamRule.java
b/java/org/apache/tomcat/util/digester/CallParamRule.java
index 6492e91ff5..603c37fdf8 100644
--- a/java/org/apache/tomcat/util/digester/CallParamRule.java
+++ b/java/org/apache/tomcat/util/digester/CallParamRule.java
@@ -16,6 +16,7 @@
*/
package org.apache.tomcat.util.digester;
+import org.apache.tomcat.util.compat.JreCompat;
import org.xml.sax.Attributes;
/**
@@ -160,7 +161,7 @@ public class CallParamRule extends Rule {
if (bodyTextStack == null) {
bodyTextStack = new ArrayStack<>();
}
- bodyTextStack.push(bodyText.trim());
+ bodyTextStack.push(JreCompat.getInstance().strip(bodyText));
}
}
diff --git a/java/org/apache/tomcat/util/digester/Digester.java
b/java/org/apache/tomcat/util/digester/Digester.java
index 8b90503133..38bbdd2568 100644
--- a/java/org/apache/tomcat/util/digester/Digester.java
+++ b/java/org/apache/tomcat/util/digester/Digester.java
@@ -45,6 +45,7 @@ import org.apache.tomcat.util.IntrospectionUtils;
import org.apache.tomcat.util.IntrospectionUtils.PropertySource;
import org.apache.tomcat.util.buf.B2CConverter;
import org.apache.tomcat.util.buf.ToStringUtil;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
import org.xml.sax.Attributes;
import org.xml.sax.EntityResolver;
@@ -102,7 +103,7 @@ public class Digester extends DefaultHandler2 {
if (classNames != null) {
StringTokenizer classNamesTokenizer = new
StringTokenizer(classNames, ",");
while (classNamesTokenizer.hasMoreTokens()) {
- String className = classNamesTokenizer.nextToken().trim();
+ String className =
JreCompat.getInstance().strip(classNamesTokenizer.nextToken());
ClassLoader[] cls = new ClassLoader[] {
Digester.class.getClassLoader(),
Thread.currentThread().getContextClassLoader() };
for (ClassLoader cl : cls) {
diff --git a/java/org/apache/tomcat/util/http/CookiesWithoutEquals.java
b/java/org/apache/tomcat/util/http/CookiesWithoutEquals.java
index 4026872353..b9b603e3a1 100644
--- a/java/org/apache/tomcat/util/http/CookiesWithoutEquals.java
+++ b/java/org/apache/tomcat/util/http/CookiesWithoutEquals.java
@@ -18,6 +18,7 @@ package org.apache.tomcat.util.http;
import java.util.Locale;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -105,7 +106,7 @@ public enum CookiesWithoutEquals {
* @return The corresponding enum value
*/
public static CookiesWithoutEquals fromString(String from) {
- String trimmedLower = from.trim().toLowerCase(Locale.ENGLISH);
+ String trimmedLower =
JreCompat.getInstance().strip(from).toLowerCase(Locale.ENGLISH);
for (CookiesWithoutEquals value : values()) {
if (value.getValue().equals(trimmedLower)) {
diff --git a/java/org/apache/tomcat/util/net/SSLHostConfig.java
b/java/org/apache/tomcat/util/net/SSLHostConfig.java
index 9cc477dcee..a8c1371258 100644
--- a/java/org/apache/tomcat/util/net/SSLHostConfig.java
+++ b/java/org/apache/tomcat/util/net/SSLHostConfig.java
@@ -36,6 +36,7 @@ import javax.net.ssl.TrustManagerFactory;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.net.openssl.OpenSSLConf;
import org.apache.tomcat.util.net.openssl.ciphers.Cipher;
import org.apache.tomcat.util.net.openssl.ciphers.Group;
@@ -797,7 +798,7 @@ public class SSLHostConfig implements Serializable {
String[] components = ciphersList.split(":");
// Remove any TLS 1.3 cipher suites
for (String component : components) {
- String trimmed = component.trim();
+ String trimmed = JreCompat.getInstance().strip(component);
if
(OpenSSLCipherConfigurationParser.isTls13Cipher(trimmed)) {
log.warn(sm.getString("sslHostConfig.handleTls13CiphersuiteInCiphers",
trimmed));
if (sbCipherSuitesFromCiphers.length() > 0) {
@@ -820,7 +821,7 @@ public class SSLHostConfig implements Serializable {
StringBuilder sbCipherSuitesFromCiphers = new StringBuilder();
String[] ciphers = ciphersList.split(",");
for (String cipher : ciphers) {
- String trimmed = cipher.trim();
+ String trimmed = JreCompat.getInstance().strip(cipher);
if (!trimmed.isEmpty()) {
if
(OpenSSLCipherConfigurationParser.isTls13Cipher(trimmed)) {
log.warn(sm.getString("sslHostConfig.handleTls13CiphersuiteInCiphers",
trimmed));
@@ -921,7 +922,7 @@ public class SSLHostConfig implements Serializable {
values = cipherSuites.split(",");
}
for (String value : values) {
- String trimmed = value.trim();
+ String trimmed = JreCompat.getInstance().strip(value);
if (!trimmed.isEmpty()) {
if (!OpenSSLCipherConfigurationParser.isTls13Cipher(trimmed)) {
log.warn(sm.getString("sslHostConfig.ignoreNonTls13Ciphersuite", trimmed));
@@ -1121,11 +1122,11 @@ public class SSLHostConfig implements Serializable {
// Split using a positive lookahead to keep the separator in
// the capture so we can check which case it is.
for (String value : input.split("(?=[-+,])")) {
- String trimmed = value.trim();
+ String trimmed = JreCompat.getInstance().strip(value);
// Ignore token which only consists of prefix character
if (trimmed.length() > 1) {
if (trimmed.charAt(0) == '+') {
- trimmed = trimmed.substring(1).trim();
+ trimmed =
JreCompat.getInstance().strip(trimmed.substring(1));
if (trimmed.equalsIgnoreCase(Constants.SSL_PROTO_ALL)) {
protocols.addAll(SSL_PROTO_ALL_SET);
} else {
@@ -1133,7 +1134,7 @@ public class SSLHostConfig implements Serializable {
explicitlyRequestedProtocols.add(trimmed);
}
} else if (trimmed.charAt(0) == '-') {
- trimmed = trimmed.substring(1).trim();
+ trimmed =
JreCompat.getInstance().strip(trimmed.substring(1));
if (trimmed.equalsIgnoreCase(Constants.SSL_PROTO_ALL)) {
protocols.removeAll(SSL_PROTO_ALL_SET);
} else {
@@ -1142,7 +1143,7 @@ public class SSLHostConfig implements Serializable {
}
} else {
if (trimmed.charAt(0) == ',') {
- trimmed = trimmed.substring(1).trim();
+ trimmed =
JreCompat.getInstance().strip(trimmed.substring(1));
}
if (!protocols.isEmpty()) {
log.warn(sm.getString("sslHostConfig.prefix_missing",
trimmed, getHostName()));
@@ -1247,7 +1248,7 @@ public class SSLHostConfig implements Serializable {
String[] groupNames = groups.split(",");
for (String groupName : groupNames) {
try {
- Group group = Group.valueOf(groupName.trim());
+ Group group =
Group.valueOf(JreCompat.getInstance().strip(groupName));
groupList.add(group);
} catch (IllegalArgumentException e) {
log.warn(sm.getString("sslHostConfig.unknownGroup",
groupName));
diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java
b/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java
index 6744cca901..225aacf66b 100644
--- a/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java
+++ b/java/org/apache/tomcat/util/scan/StandardJarScanFilter.java
@@ -25,6 +25,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock;
import org.apache.tomcat.JarScanFilter;
import org.apache.tomcat.JarScanType;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.file.Matcher;
/**
@@ -295,7 +296,7 @@ public class StandardJarScanFilter implements JarScanFilter
{
if (attribute != null) {
StringTokenizer tokenizer = new StringTokenizer(attribute, ",");
while (tokenizer.hasMoreElements()) {
- String token = tokenizer.nextToken().trim();
+ String token =
JreCompat.getInstance().strip(tokenizer.nextToken());
if (!token.isEmpty()) {
set.add(token);
}
diff --git a/java/org/apache/tomcat/util/scan/StandardJarScanner.java
b/java/org/apache/tomcat/util/scan/StandardJarScanner.java
index abd2be785e..11cd4f5326 100644
--- a/java/org/apache/tomcat/util/scan/StandardJarScanner.java
+++ b/java/org/apache/tomcat/util/scan/StandardJarScanner.java
@@ -522,7 +522,7 @@ public class StandardJarScanner implements JarScanner {
}
String[] classPathEntries = classPathAttribute.split(" ");
for (String classPathEntry : classPathEntries) {
- classPathEntry = classPathEntry.trim();
+ classPathEntry = JreCompat.getInstance().strip(classPathEntry);
if (classPathEntry.isEmpty()) {
continue;
}
diff --git a/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
b/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
index ad958a061f..54c97f3a8d 100644
--- a/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
+++ b/test/org/apache/catalina/tribes/demos/CoordinationDemo.java
@@ -29,6 +29,7 @@ import
org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator;
import org.apache.catalina.tribes.group.interceptors.TcpFailureDetector;
import org.apache.catalina.tribes.transport.ReceiverBase;
import org.apache.catalina.tribes.util.Arrays;
+import org.apache.tomcat.util.compat.JreCompat;
public class CoordinationDemo {
@@ -288,13 +289,13 @@ public class CoordinationDemo {
public static String fill(String value, int length, String ch, boolean
left) {
StringBuilder buf = new StringBuilder();
if (!left) {
- buf.append(value.trim());
+ buf.append(JreCompat.getInstance().strip(value));
}
- for (int i = value.trim().length(); i < length; i++) {
+ for (int i = JreCompat.getInstance().strip(value).length(); i <
length; i++) {
buf.append(ch);
}
if (left) {
- buf.append(value.trim());
+ buf.append(JreCompat.getInstance().strip(value));
}
return buf.toString();
}
diff --git a/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
b/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
index a883d2b4d2..e6203d3ed6 100644
--- a/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
+++ b/test/org/apache/catalina/valves/TestExtendedAccessLogValve.java
@@ -41,6 +41,7 @@ import org.apache.catalina.Host;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
import org.apache.tomcat.util.http.Method;
@RunWith(Parameterized.class)
@@ -165,7 +166,7 @@ public class TestExtendedAccessLogValve extends
TomcatBaseTest {
int result = 0;
String[] lines = content.split("\\r?\\n");
for (String line : lines) {
- if (!line.startsWith("#") && !line.trim().isEmpty()) {
+ if (!line.startsWith("#") &&
!JreCompat.getInstance().strip(line).isEmpty()) {
result++;
}
}
@@ -179,7 +180,7 @@ public class TestExtendedAccessLogValve extends
TomcatBaseTest {
List<String> dataLines = new ArrayList<>();
for (String line : lines) {
if (!line.startsWith("#")) { // Skip directives
- dataLines.add(line.trim());
+ dataLines.add(JreCompat.getInstance().strip(line));
} else {
if (line.startsWith("#Fields: ")) {
Assert.assertEquals(line.substring("#Fields: ".length()),
logPattern);
diff --git a/test/org/apache/catalina/webresources/TestFileResource.java
b/test/org/apache/catalina/webresources/TestFileResource.java
index 315212a7ae..bc0df05b45 100644
--- a/test/org/apache/catalina/webresources/TestFileResource.java
+++ b/test/org/apache/catalina/webresources/TestFileResource.java
@@ -25,6 +25,7 @@ import org.junit.Test;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
public class TestFileResource extends TomcatBaseTest {
@@ -40,6 +41,7 @@ public class TestFileResource extends TomcatBaseTest {
// Build the expected location the same way the webapp base dir is
built
File f = new File("test/webapp/WEB-INF/classes");
- Assert.assertEquals(f.getCanonicalFile().toURI().toURL().toString(),
out.toString().trim());
+ Assert.assertEquals(f.getCanonicalFile().toURI().toURL().toString(),
+ JreCompat.getInstance().strip(out.toString()));
}
}
diff --git a/test/org/apache/el/TesterFunctions.java
b/test/org/apache/el/TesterFunctions.java
index ad962c1b15..5502b8d29c 100644
--- a/test/org/apache/el/TesterFunctions.java
+++ b/test/org/apache/el/TesterFunctions.java
@@ -20,9 +20,11 @@ import java.lang.reflect.Method;
import javax.el.FunctionMapper;
+import org.apache.tomcat.util.compat.JreCompat;
+
public class TesterFunctions {
public static String trim(String input) {
- return input.trim();
+ return JreCompat.getInstance().strip(input);
}
public static String concat(String... inputs) {
diff --git a/test/org/apache/jasper/compiler/TestEncodingDetector.java
b/test/org/apache/jasper/compiler/TestEncodingDetector.java
index 6d4f07eef5..e3f234dd31 100644
--- a/test/org/apache/jasper/compiler/TestEncodingDetector.java
+++ b/test/org/apache/jasper/compiler/TestEncodingDetector.java
@@ -29,6 +29,7 @@ import org.junit.runners.Parameterized.Parameters;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
@RunWith(Parameterized.class)
public class TestEncodingDetector extends TomcatBaseTest {
@@ -83,7 +84,7 @@ public class TestEncodingDetector extends TomcatBaseTest {
if (expectedResponseCode == 200) {
// trim() to remove whitespace like new lines
- String bodyText = responseBody.toString().trim();
+ String bodyText =
JreCompat.getInstance().strip(responseBody.toString());
if (responseBodyOK.booleanValue()) {
Assert.assertEquals("OK", bodyText);
} else {
diff --git a/test/org/apache/jasper/compiler/TestGenerator.java
b/test/org/apache/jasper/compiler/TestGenerator.java
index f0754bca34..07accedf19 100644
--- a/test/org/apache/jasper/compiler/TestGenerator.java
+++ b/test/org/apache/jasper/compiler/TestGenerator.java
@@ -715,7 +715,7 @@ public class TestGenerator extends TomcatBaseTest {
throw new IllegalSelectorException();
} else {
try {
- if (!state.trim().isEmpty()) {
+ if (!JreCompat.getInstance().strip(state).isEmpty()) {
pageContext.getOut().print(state);
pageContext.getOut().print("-");
}
@@ -736,7 +736,7 @@ public class TestGenerator extends TomcatBaseTest {
throw new IllegalSelectorException();
} else {
try {
- if (!state.trim().isEmpty()) {
+ if (!JreCompat.getInstance().strip(state).isEmpty()) {
pageContext.getOut().print(state);
pageContext.getOut().print("-");
}
diff --git a/test/org/apache/jasper/compiler/TestJspUtil.java
b/test/org/apache/jasper/compiler/TestJspUtil.java
index bab260d24c..6fe174c411 100644
--- a/test/org/apache/jasper/compiler/TestJspUtil.java
+++ b/test/org/apache/jasper/compiler/TestJspUtil.java
@@ -23,6 +23,7 @@ import org.junit.Test;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
public class TestJspUtil extends TomcatBaseTest {
@@ -37,7 +38,7 @@ public class TestJspUtil extends TomcatBaseTest {
String[] lines = body.split("\n");
for (String line : lines) {
- line = line.trim();
+ line = JreCompat.getInstance().strip(line);
if (line.startsWith("<p>")) {
line = line.substring(3, line.length() - 4);
String[] parts = line.split(":");
diff --git a/test/org/apache/juli/TestPerWebappJuliIntegration.java
b/test/org/apache/juli/TestPerWebappJuliIntegration.java
index a32d1f8014..d0c5d30f4b 100644
--- a/test/org/apache/juli/TestPerWebappJuliIntegration.java
+++ b/test/org/apache/juli/TestPerWebappJuliIntegration.java
@@ -43,6 +43,7 @@ import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
public class TestPerWebappJuliIntegration extends TomcatBaseTest {
@Before
@@ -60,8 +61,8 @@ public class TestPerWebappJuliIntegration extends
TomcatBaseTest {
tomcat.start();
ByteChunk res = getUrl("http://localhost:" + getPort() + "/juli" +
APP_ID_A + "/log_level");
ByteChunk res2 = getUrl("http://localhost:" + getPort() + "/juli" +
APP_ID_B + "/log_level");
- Assert.assertEquals(Level.FINE.toString(), res.toString().trim());
- Assert.assertEquals(Level.INFO.toString(), res2.toString().trim());
+ Assert.assertEquals(Level.FINE.toString(),
JreCompat.getInstance().strip(res.toString()));
+ Assert.assertEquals(Level.INFO.toString(),
JreCompat.getInstance().strip(res2.toString()));
tomcat.stop();
}
@Test
diff --git a/test/org/apache/naming/TestEnvEntry.java
b/test/org/apache/naming/TestEnvEntry.java
index 7efd9c89da..b42a2369d5 100644
--- a/test/org/apache/naming/TestEnvEntry.java
+++ b/test/org/apache/naming/TestEnvEntry.java
@@ -27,6 +27,7 @@ import org.apache.catalina.Context;
import org.apache.catalina.startup.Tomcat;
import org.apache.catalina.startup.TomcatBaseTest;
import org.apache.tomcat.util.buf.ByteChunk;
+import org.apache.tomcat.util.compat.JreCompat;
public class TestEnvEntry extends TomcatBaseTest {
@@ -106,7 +107,7 @@ public class TestEnvEntry extends TomcatBaseTest {
Assert.assertEquals(HttpServletResponse.SC_OK, rc);
// JSP has leading and trailing white-space
- String result = out.toString().trim();
+ String result = JreCompat.getInstance().strip(out.toString());
Assert.assertEquals(expected, result);
}
@@ -130,7 +131,7 @@ public class TestEnvEntry extends TomcatBaseTest {
Assert.assertEquals(HttpServletResponse.SC_OK, rc);
// JSP has leading and trailing white-space
- String result = out.toString().trim();
+ String result = JreCompat.getInstance().strip(out.toString());
Assert.assertEquals(expected, result);
}
}
diff --git a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
index 134ba8ee3e..9225176c20 100644
--- a/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
+++ b/test/org/apache/tomcat/util/net/openssl/ciphers/TesterOpenSSL.java
@@ -29,6 +29,7 @@ import java.util.Map;
import java.util.Set;
import org.apache.catalina.util.IOTools;
+import org.apache.tomcat.util.compat.JreCompat;
public class TesterOpenSSL {
@@ -250,7 +251,7 @@ public class TesterOpenSSL {
public static Set<String> getOpenSSLCiphersAsSet(String specification)
throws Exception {
- String[] ciphers = getOpenSSLCiphersAsExpression(specification,
true).trim().split(":");
+ String[] ciphers =
JreCompat.getInstance().strip(getOpenSSLCiphersAsExpression(specification,
true)).split(":");
Set<String> result = new HashSet<>(Arrays.asList(ciphers));
return result;
}
@@ -390,7 +391,7 @@ public class TesterOpenSSL {
System.err.println(errorText);
}
- return stdout.getText().trim();
+ return JreCompat.getInstance().strip(stdout.getText());
}
private static class InputStreamToText implements Runnable {
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index ca4dc20b2f..dc54ccb166 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -108,6 +108,14 @@
issues do not "pop up" wrt. others).
-->
<section name="Tomcat 9.0.124 (remm)" rtext="in development">
+ <subsection name="General">
+ <changelog>
+ <scode>
+ Switch to using <code>String.strip()</code> rather than
+ <code>String.trim()</code> where appropriate. (markt)
+ </scode>
+ </changelog>
+ </subsection>
<subsection name="Catalina">
<changelog>
<fix>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]