This is an automated email from the ASF dual-hosted git repository. remm pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new ef17c5bea6 Missing strings mostly ef17c5bea6 is described below commit ef17c5bea659bcdcb2ef97d248db9a757f280dd7 Author: remm <r...@apache.org> AuthorDate: Fri Feb 16 12:19:09 2024 +0100 Missing strings mostly --- java/org/apache/catalina/filters/CorsFilter.java | 11 +------ .../catalina/filters/LocalStrings.properties | 1 + java/org/apache/catalina/servlets/CGIServlet.java | 5 ++-- .../catalina/servlets/LocalStrings.properties | 2 ++ .../apache/catalina/session/DataSourceStore.java | 35 +++++++++++----------- .../catalina/session/LocalStrings.properties | 1 + .../catalina/storeconfig/LocalStrings.properties | 1 + .../apache/catalina/storeconfig/StoreRegistry.java | 2 +- .../membership/cloud/AbstractStreamProvider.java | 7 ++--- .../membership/cloud/CloudMembershipProvider.java | 3 +- .../membership/cloud/DNSMembershipProvider.java | 2 +- .../cloud/KubernetesMembershipProvider.java | 2 +- .../membership/cloud/LocalStrings.properties | 6 ++++ .../valves/CrawlerSessionManagerValve.java | 8 ++--- .../valves/rewrite/LocalStrings.properties | 5 ++++ .../catalina/valves/rewrite/Substitution.java | 23 +++++++------- .../apache/tomcat/util/net/AbstractEndpoint.java | 2 +- .../apache/tomcat/util/net/LocalStrings.properties | 1 + .../tomcat/websocket/LocalStrings.properties | 1 + 19 files changed, 64 insertions(+), 54 deletions(-) diff --git a/java/org/apache/catalina/filters/CorsFilter.java b/java/org/apache/catalina/filters/CorsFilter.java index 1f063aa4c4..bdc97ddb12 100644 --- a/java/org/apache/catalina/filters/CorsFilter.java +++ b/java/org/apache/catalina/filters/CorsFilter.java @@ -350,16 +350,7 @@ public class CorsFilter extends GenericFilter { response.resetBuffer(); if (log.isDebugEnabled()) { - // Debug so no need for i18n - StringBuilder message = new StringBuilder("Invalid CORS request; Origin="); - message.append(origin); - message.append(";Method="); - message.append(method); - if (accessControlRequestHeaders != null) { - message.append(";Access-Control-Request-Headers="); - message.append(accessControlRequestHeaders); - } - log.debug(message.toString()); + sm.getString("corsFilter.invalidRequest", origin, method, accessControlRequestHeaders); } } diff --git a/java/org/apache/catalina/filters/LocalStrings.properties b/java/org/apache/catalina/filters/LocalStrings.properties index be56650ae2..aab53ede4f 100644 --- a/java/org/apache/catalina/filters/LocalStrings.properties +++ b/java/org/apache/catalina/filters/LocalStrings.properties @@ -16,6 +16,7 @@ addDefaultCharset.unsupportedCharset=Specified character set [{0}] is not supported corsFilter.invalidPreflightMaxAge=Unable to parse preflightMaxAge +corsFilter.invalidRequest=Invalid CORS request; Origin [{0}] Method [{1}] Access-Control-Request-Headers [{2}] corsFilter.invalidSupportsCredentials=It is not allowed to configure supportsCredentials=[true] when allowedOrigins=[*] corsFilter.nullRequest=HttpServletRequest object is null corsFilter.nullRequestType=CORSRequestType object is null diff --git a/java/org/apache/catalina/servlets/CGIServlet.java b/java/org/apache/catalina/servlets/CGIServlet.java index c00d98bd4a..2f7cf2f64c 100644 --- a/java/org/apache/catalina/servlets/CGIServlet.java +++ b/java/org/apache/catalina/servlets/CGIServlet.java @@ -1438,7 +1438,7 @@ public final class CGIServlet extends HttpServlet { */ if (!isReady()) { - throw new IOException(this.getClass().getName() + ": not ready to run."); + throw new IOException(sm.getString("cgiServlet.notReady")); } if (log.isTraceEnabled()) { @@ -1447,8 +1447,7 @@ public final class CGIServlet extends HttpServlet { if ((command.contains(File.separator + "." + File.separator)) || (command.contains(File.separator + "..")) || (command.contains(".." + File.separator))) { - throw new IOException(this.getClass().getName() + "Illegal Character in CGI command path " + - "('.' or '..') detected. Not running CGI [" + command + "]."); + throw new IOException(sm.getString("cgiServlet.invalidCommand", command)); } /* diff --git a/java/org/apache/catalina/servlets/LocalStrings.properties b/java/org/apache/catalina/servlets/LocalStrings.properties index 1ce4990490..38807654a3 100644 --- a/java/org/apache/catalina/servlets/LocalStrings.properties +++ b/java/org/apache/catalina/servlets/LocalStrings.properties @@ -25,6 +25,8 @@ cgiServlet.find.location=Looking for a file at [{0}] cgiServlet.find.path=CGI script requested at path [{0}] relative to CGI location [{1}] cgiServlet.invalidArgumentDecoded=The decoded command line argument [{0}] did not match the configured cmdLineArgumentsDecoded pattern [{1}] cgiServlet.invalidArgumentEncoded=The encoded command line argument [{0}] did not match the configured cmdLineArgumentsEncoded pattern [{1}] +cgiServlet.invalidCommand=Illegal Character in CGI command path ('.' or '..') detected, not running CGI [{0}] +cgiServlet.notReady=CGI Servlet is not ready to run cgiServlet.runBadHeader=Bad header line [{0}] cgiServlet.runFail=I/O problems processing CGI cgiServlet.runHeaderReaderFail=I/O problems closing header reader diff --git a/java/org/apache/catalina/session/DataSourceStore.java b/java/org/apache/catalina/session/DataSourceStore.java index 07e957b691..0b99027fcf 100644 --- a/java/org/apache/catalina/session/DataSourceStore.java +++ b/java/org/apache/catalina/session/DataSourceStore.java @@ -365,7 +365,7 @@ public class DataSourceStore extends StoreBase { } } } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e)); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.SQLException", e)); keys = new String[0]; // Close the connection so that it gets reopened next time } finally { @@ -407,7 +407,7 @@ public class DataSourceStore extends StoreBase { numberOfTries = 0; } } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e)); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.SQLException", e)); } finally { release(_conn); } @@ -451,7 +451,7 @@ public class DataSourceStore extends StoreBase { if (rst.next()) { try (ObjectInputStream ois = getObjectInputStream(rst.getBinaryStream(2))) { if (contextLog.isTraceEnabled()) { - contextLog.trace(sm.getString(getStoreName() + ".loading", id, sessionTable)); + contextLog.trace(sm.getString("dataSourceStore.loading", id, sessionTable)); } _session = (StandardSession) manager.createEmptySession(); @@ -459,13 +459,13 @@ public class DataSourceStore extends StoreBase { _session.setManager(manager); } } else if (context.getLogger().isDebugEnabled()) { - contextLog.debug(getStoreName() + ": No persisted data object found"); + contextLog.debug(sm.getString("dataSourceStore.noObject", id)); } // Break out after the finally block numberOfTries = 0; } } catch (SQLException e) { - contextLog.error(sm.getString(getStoreName() + ".SQLException", e)); + contextLog.error(sm.getString("dataSourceStore.SQLException", e)); } finally { context.unbind(oldThreadContextCL); release(_conn); @@ -499,7 +499,7 @@ public class DataSourceStore extends StoreBase { // Break out after the finally block numberOfTries = 0; } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e)); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.SQLException", e)); } finally { release(_conn); } @@ -507,7 +507,7 @@ public class DataSourceStore extends StoreBase { } if (manager.getContext().getLogger().isTraceEnabled()) { - manager.getContext().getLogger().trace(sm.getString(getStoreName() + ".removing", id, sessionTable)); + manager.getContext().getLogger().trace(sm.getString("dataSourceStore.removing", id, sessionTable)); } } @@ -552,7 +552,7 @@ public class DataSourceStore extends StoreBase { // Break out after the finally block numberOfTries = 0; } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e)); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.SQLException", e)); } finally { release(_conn); } @@ -608,7 +608,7 @@ public class DataSourceStore extends StoreBase { numberOfTries = 0; } } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".SQLException", e)); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.SQLException", e)); } catch (IOException e) { // Ignore } finally { @@ -620,7 +620,7 @@ public class DataSourceStore extends StoreBase { if (manager.getContext().getLogger().isTraceEnabled()) { manager.getContext().getLogger() - .trace(sm.getString(getStoreName() + ".saving", session.getIdInternal(), sessionTable)); + .trace(sm.getString("dataSourceStore.saving", session.getIdInternal(), sessionTable)); } } @@ -638,16 +638,16 @@ public class DataSourceStore extends StoreBase { try { conn = open(); if (conn == null || conn.isClosed()) { - manager.getContext().getLogger().info(sm.getString(getStoreName() + ".checkConnectionDBClosed")); + manager.getContext().getLogger().info(sm.getString("dataSourceStore.checkConnectionDBClosed")); conn = open(); if (conn == null || conn.isClosed()) { manager.getContext().getLogger() - .info(sm.getString(getStoreName() + ".checkConnectionDBReOpenFail")); + .info(sm.getString("dataSourceStore.checkConnectionDBReOpenFail")); } } } catch (SQLException ex) { manager.getContext().getLogger() - .error(sm.getString(getStoreName() + ".checkConnectionSQLException", ex.toString())); + .error(sm.getString("dataSourceStore.checkConnectionSQLException", ex)); } return conn; @@ -674,7 +674,7 @@ public class DataSourceStore extends StoreBase { Context envCtx = (Context) initCtx.lookup("java:comp/env"); this.dataSource = (DataSource) envCtx.lookup(this.dataSourceName); } catch (NamingException e) { - context.getLogger().error(sm.getString(getStoreName() + ".wrongDataSource", this.dataSourceName), e); + context.getLogger().error(sm.getString("dataSourceStore.wrongDataSource", this.dataSourceName), e); } finally { if (getLocalDataSource()) { context.unbind(oldThreadContextCL); @@ -685,7 +685,7 @@ public class DataSourceStore extends StoreBase { if (dataSource != null) { return dataSource.getConnection(); } else { - throw new IllegalStateException(sm.getString(getStoreName() + ".missingDataSource")); + throw new IllegalStateException(sm.getString("dataSourceStore.missingDataSource")); } } @@ -707,15 +707,14 @@ public class DataSourceStore extends StoreBase { dbConnection.commit(); } } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".commitSQLException"), e); + manager.getContext().getLogger().error(sm.getString("dataSourceStore.commitSQLException"), e); } // Close this database connection, and log any errors try { dbConnection.close(); } catch (SQLException e) { - manager.getContext().getLogger().error(sm.getString(getStoreName() + ".close", e.toString())); // Just log - // it here + manager.getContext().getLogger().error(sm.getString("dataSourceStore.close", e)); } } diff --git a/java/org/apache/catalina/session/LocalStrings.properties b/java/org/apache/catalina/session/LocalStrings.properties index 0d2c42405f..20c73e6d32 100644 --- a/java/org/apache/catalina/session/LocalStrings.properties +++ b/java/org/apache/catalina/session/LocalStrings.properties @@ -22,6 +22,7 @@ dataSourceStore.commitSQLException=SQLException committing connection before clo dataSourceStore.loading=Loading Session [{0}] from database [{1}] dataSourceStore.missingDataSource=No data source available dataSourceStore.missingDataSourceName=No valid JNDI name was given +dataSourceStore.noObject=No persisted data object found for session [{0}] dataSourceStore.removing=Removing Session [{0}] at database [{1}] dataSourceStore.saving=Saving Session [{0}] to database [{1}] dataSourceStore.wrongDataSource=Cannot open JNDI DataSource [{0}] diff --git a/java/org/apache/catalina/storeconfig/LocalStrings.properties b/java/org/apache/catalina/storeconfig/LocalStrings.properties index 4067b860b8..2facbe157c 100644 --- a/java/org/apache/catalina/storeconfig/LocalStrings.properties +++ b/java/org/apache/catalina/storeconfig/LocalStrings.properties @@ -26,6 +26,7 @@ globalNamingResourcesSF.noFactory=Cannot find NamingResources store factory globalNamingResourcesSF.wrongElement=Wrong element [{0}] registry.loadClassFailed=Failed to load class [{0}] +registry.noDescriptor=Can't find descriptor for key [{0}] standardContextSF.cannotWriteFile=Cannot write file at [{0}] standardContextSF.canonicalPathError=Failed to obtain the canonical path of the configuration file [{0}] diff --git a/java/org/apache/catalina/storeconfig/StoreRegistry.java b/java/org/apache/catalina/storeconfig/StoreRegistry.java index a4dea64261..4865171d14 100644 --- a/java/org/apache/catalina/storeconfig/StoreRegistry.java +++ b/java/org/apache/catalina/storeconfig/StoreRegistry.java @@ -132,7 +132,7 @@ public class StoreRegistry { log.trace("find descriptor " + id + "#" + desc.getTag() + "#" + desc.getStoreFactoryClass()); } else { - log.debug(("Can't find descriptor for key " + id)); + log.debug(sm.getString("registry.noDescriptor", id)); } } return desc; diff --git a/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java b/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java index 2c283890a7..68785e3243 100644 --- a/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java +++ b/java/org/apache/catalina/tribes/membership/cloud/AbstractStreamProvider.java @@ -75,7 +75,7 @@ public abstract class AbstractStreamProvider implements StreamProvider { */ public URLConnection openConnection(String url, Map<String, String> headers, int connectTimeout, int readTimeout) throws IOException { if (log.isDebugEnabled()) { - log.debug(String.format("%s opening connection: url [%s], headers [%s], connectTimeout [%s], readTimeout [%s]", + log.debug(sm.getString("abstractStream.connection", getClass().getSimpleName(), url, headers, Integer.toString(connectTimeout), Integer.toString(readTimeout))); } URLConnection connection; @@ -91,9 +91,8 @@ public abstract class AbstractStreamProvider implements StreamProvider { } } if (connectTimeout < 0 || readTimeout < 0) { - throw new IllegalArgumentException( - String.format("Neither connectTimeout [%s] nor readTimeout [%s] can be less than 0 for URLConnection.", - Integer.toString(connectTimeout), Integer.toString(readTimeout))); + throw new IllegalArgumentException(sm.getString("abstractStream.invalidTimeout", + Integer.toString(connectTimeout), Integer.toString(readTimeout))); } connection.setConnectTimeout(connectTimeout); connection.setReadTimeout(readTimeout); diff --git a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java index 4d86449252..aff9e13a34 100644 --- a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java +++ b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java @@ -150,7 +150,8 @@ public abstract class CloudMembershipProvider extends MembershipProviderBase imp return; } if (log.isDebugEnabled()) { - String message = add ? "Member added: " + member : "Member disappeared: " + member; + String message = add ? sm.getString("cloudMembershipProvider.add", member) + : sm.getString("cloudMembershipProvider.remove", member); log.debug(message); } Runnable r = () -> { diff --git a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java index a9b89e2573..56aa9ea019 100644 --- a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java +++ b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java @@ -126,7 +126,7 @@ public class DNSMembershipProvider extends CloudMembershipProvider { } if (log.isDebugEnabled()) { - log.debug(String.format("Namespace [%s] set; clustering enabled", dnsServiceName)); + log.debug(sm.getString("cloudMembershipProvider.start", dnsServiceName)); } dnsServiceName = URLEncoder.encode(dnsServiceName, "UTF-8"); diff --git a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java index 98dd6eccd8..6f0f4f244e 100644 --- a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java +++ b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java @@ -57,7 +57,7 @@ public class KubernetesMembershipProvider extends CloudMembershipProvider { String namespace = getNamespace(); if (log.isDebugEnabled()) { - log.debug(String.format("Namespace [%s] set; clustering enabled", namespace)); + log.debug(sm.getString("cloudMembershipProvider.start", namespace)); } String protocol = getEnv(CUSTOM_ENV_PREFIX + "MASTER_PROTOCOL", "KUBERNETES_MASTER_PROTOCOL"); diff --git a/java/org/apache/catalina/tribes/membership/cloud/LocalStrings.properties b/java/org/apache/catalina/tribes/membership/cloud/LocalStrings.properties index 33816e5b2f..77bc9bbdcc 100644 --- a/java/org/apache/catalina/tribes/membership/cloud/LocalStrings.properties +++ b/java/org/apache/catalina/tribes/membership/cloud/LocalStrings.properties @@ -14,11 +14,17 @@ # limitations under the License. abstractStream.CACertUndefined=CA cert file undefined +abstractStream.connection=[{0}] opening connection: url [{1}], headers [{2}], connectTimeout [{3}], readTimeout [{4}] abstractStream.fileNotFound=CA cert file [{0}] not found +abstractStream.invalidTimeout=Neither connectTimeout [{0}] nor readTimeout [{1}] can be less than 0 for URLConnection abstractStream.trustManagerError=Could not create trust manager for [{0}] certificateStream.clientCertError=Could not create key manager for [{0}] ([{1}]) +cloudMembershipProvider.add=Member [{0}] added +cloudMembershipProvider.remove=Member [{0}] disappeared +cloudMembershipProvider.start=Namespace [{0}] set; clustering enabled + cloudMembershipService.stopFail=Unable to stop the cloud membership service, level: [{0}] dnsMembershipProvider.dnsError=Error getting hosts address list for namespace [{0}] diff --git a/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java b/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java index 18cd9a26b4..21f032847f 100644 --- a/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java +++ b/java/org/apache/catalina/valves/CrawlerSessionManagerValve.java @@ -245,13 +245,13 @@ public class CrawlerSessionManagerValve extends ValveBase { new CrawlerHttpSessionBindingListener(clientIdSessionId, clientIdentifier)); s.setMaxInactiveInterval(sessionInactiveInterval); - if (log.isDebugEnabled()) { - log.debug(request.hashCode() + ": New bot session. SessionID=" + s.getId()); + if (log.isTraceEnabled()) { + log.trace(request.hashCode() + ": New bot session. SessionID=" + s.getId()); } } } else { - if (log.isDebugEnabled()) { - log.debug(request.hashCode() + ": Bot session accessed. SessionID=" + sessionId); + if (log.isTraceEnabled()) { + log.trace(request.hashCode() + ": Bot session accessed. SessionID=" + sessionId); } } } diff --git a/java/org/apache/catalina/valves/rewrite/LocalStrings.properties b/java/org/apache/catalina/valves/rewrite/LocalStrings.properties index db07290ebb..ffb6009f6d 100644 --- a/java/org/apache/catalina/valves/rewrite/LocalStrings.properties +++ b/java/org/apache/catalina/valves/rewrite/LocalStrings.properties @@ -26,3 +26,8 @@ rewriteValve.invalidMapClassName=Invalid map class name [{0}] rewriteValve.noConfiguration=No configuration resource found [{0}] rewriteValve.readConfiguration=Read configuration from [/WEB-INF/{0}] rewriteValve.readError=Error reading configuration + +substitution.badType=Bad type [{0}] in substitution [{1}] +substitution.invalid=Invalid substitution [{0}] +substitution.missingDigit=Substitution [{0}] is missing digit or curly brace +substitution.noMap=Map [{0}] not found in substitution [{1}] diff --git a/java/org/apache/catalina/valves/rewrite/Substitution.java b/java/org/apache/catalina/valves/rewrite/Substitution.java index 1e70de2fcd..b7e39158e6 100644 --- a/java/org/apache/catalina/valves/rewrite/Substitution.java +++ b/java/org/apache/catalina/valves/rewrite/Substitution.java @@ -22,9 +22,12 @@ import java.util.Map; import java.util.regex.Matcher; import org.apache.catalina.util.URLEncoder; +import org.apache.tomcat.util.res.StringManager; public class Substitution { + protected static final StringManager sm = StringManager.getManager(Substitution.class); + public abstract static class SubstitutionElement { public abstract String evaluate(Matcher rule, Matcher cond, Resolver resolver); } @@ -148,7 +151,7 @@ public class Substitution { elements.add(newElement); } else if (isFirstPos(backslashPos, dollarPos, percentPos)) { if (backslashPos + 1 == sub.length()) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } StaticElement newElement = new StaticElement(); newElement.value = sub.substring(pos, backslashPos) + sub.substring(backslashPos + 1, backslashPos + 2); @@ -157,7 +160,7 @@ public class Substitution { } else if (isFirstPos(dollarPos, percentPos)) { // $: back reference to rule or map lookup if (dollarPos + 1 == sub.length()) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } if (pos < dollarPos) { // Static text @@ -179,17 +182,17 @@ public class Substitution { int def = findMatchingColonOrBar(false, sub, open); int close = findMatchingBrace(sub, open); if (!(-1 < open && open < colon && colon < close)) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } newElement.map = maps.get(sub.substring(open + 1, colon)); if (newElement.map == null) { - throw new IllegalArgumentException(sub + ": No map: " + sub.substring(open + 1, colon)); + throw new IllegalArgumentException(sm.getString("substitution.noMap", sub.substring(open + 1, colon), sub)); } String key = null; String defaultValue = null; if (def > -1) { if (!(colon < def && def < close)) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } key = sub.substring(colon + 1, def); defaultValue = sub.substring(def + 1, close); @@ -203,12 +206,12 @@ public class Substitution { pos = close + 1; elements.add(newElement); } else { - throw new IllegalArgumentException(sub + ": missing digit or curly brace."); + throw new IllegalArgumentException(sm.getString("substitution.missingDigit", sub)); } } else { // %: back reference to condition or server variable if (percentPos + 1 == sub.length()) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } if (pos < percentPos) { // Static text @@ -229,7 +232,7 @@ public class Substitution { int colon = findMatchingColonOrBar(true, sub, open); int close = findMatchingBrace(sub, open); if (!(-1 < open && open < close)) { - throw new IllegalArgumentException(sub); + throw new IllegalArgumentException(sm.getString("substitution.invalid", sub)); } if (colon > -1 && open < colon && colon < close) { String type = sub.substring(open + 1, colon); @@ -243,7 +246,7 @@ public class Substitution { newElement = new ServerVariableHttpElement(); ((ServerVariableHttpElement) newElement).key = sub.substring(colon + 1, close); } else { - throw new IllegalArgumentException(sub + ": Bad type: " + type); + throw new IllegalArgumentException(sm.getString("substitution.badType", type, sub)); } } else { newElement = new ServerVariableElement(); @@ -252,7 +255,7 @@ public class Substitution { pos = close + 1; elements.add(newElement); } else { - throw new IllegalArgumentException(sub + ": missing digit or curly brace."); + throw new IllegalArgumentException(sm.getString("substitution.missingDigit", sub)); } } } diff --git a/java/org/apache/tomcat/util/net/AbstractEndpoint.java b/java/org/apache/tomcat/util/net/AbstractEndpoint.java index 09559b4f72..fb6080eaeb 100644 --- a/java/org/apache/tomcat/util/net/AbstractEndpoint.java +++ b/java/org/apache/tomcat/util/net/AbstractEndpoint.java @@ -414,7 +414,7 @@ public abstract class AbstractEndpoint<S,U> { try { sslContext = sslUtil.createSSLContext(negotiableProtocols); } catch (Exception e) { - throw new IllegalArgumentException(e.getMessage(), e); + throw new IllegalArgumentException(sm.getString("endpoint.errorCreatingSSLContext"), e); } certificate.setSslContextGenerated(sslContext); diff --git a/java/org/apache/tomcat/util/net/LocalStrings.properties b/java/org/apache/tomcat/util/net/LocalStrings.properties index b86d15566b..e7c5db9aad 100644 --- a/java/org/apache/tomcat/util/net/LocalStrings.properties +++ b/java/org/apache/tomcat/util/net/LocalStrings.properties @@ -68,6 +68,7 @@ endpoint.err.close=Caught exception trying to close socket endpoint.err.duplicateAccept=Duplicate socket accept detected. This is a known Linux kernel bug. The original connection has been processed normally and the duplicate has been ignored. The client should be unaffected. Updating the OS to a version that uses kernel 5.10 or later should fix the duplicate accept bug. endpoint.err.handshake=Handshake failed for client connection from IP address [{0}] and port [{1}] endpoint.err.unexpected=Unexpected error processing socket +endpoint.errorCreatingSSLContext=Error creating SSLContext endpoint.executor.fail=Executor rejected socket [{0}] for processing endpoint.getAttribute=[{0}] is [{1}] endpoint.init.bind=Socket bind failed: [{0}] [{1}] diff --git a/java/org/apache/tomcat/websocket/LocalStrings.properties b/java/org/apache/tomcat/websocket/LocalStrings.properties index 317b3e48e4..0998319ddb 100644 --- a/java/org/apache/tomcat/websocket/LocalStrings.properties +++ b/java/org/apache/tomcat/websocket/LocalStrings.properties @@ -98,6 +98,7 @@ wsRemoteEndpoint.closedDuringMessage=The remainder of the message will not be se wsRemoteEndpoint.closedOutputStream=This method may not be called as the OutputStream has been closed wsRemoteEndpoint.closedWriter=This method may not be called as the Writer has been closed wsRemoteEndpoint.encoderDestoryFailed=Failed to destroy the encoder of type [{0}] +wsRemoteEndpoint.encoderError=Encoding error [{0}] wsRemoteEndpoint.flushOnCloseFailed=Batched messages still enabled after session has been closed. Unable to flush remaining batched message. wsRemoteEndpoint.invalidEncoder=The specified encoder of type [{0}] could not be instantiated wsRemoteEndpoint.noEncoder=No encoder specified for object of class [{0}] --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org