(tomcat) branch 9.0.x updated: Align web.xml logged output with urlPatternsProvidedInDecodedForm

[email protected]
Newsgroups gmane.comp.jakarta.tomcat.devel
Message-ID <178712389785.566014.14801248428529941233@gitbox3-he-fi.apache.org>
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 c22ce22d7b Align web.xml logged output with urlPatternsProvidedInDecodedForm
c22ce22d7b is described below

commit c22ce22d7b1badbfa31fc1b05c3c7048b02665a7
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Aug 19 07:59:13 2026 +0100

    Align web.xml logged output with urlPatternsProvidedInDecodedForm
---
 .../apache/tomcat/util/descriptor/web/WebXml.java  | 27 ++++++++++++++++------
 webapps/docs/changelog.xml                         |  4 ++++
 2 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/java/org/apache/tomcat/util/descriptor/web/WebXml.java b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
index f712d62cfd..7fe0ed4728 100644
--- a/java/org/apache/tomcat/util/descriptor/web/WebXml.java
+++ b/java/org/apache/tomcat/util/descriptor/web/WebXml.java
@@ -1521,7 +1521,10 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
                     sb.append("    <url-pattern>*</url-pattern>\n");
                 } else {
                     for (String urlPattern : filterMap.getURLPatterns()) {
-                        appendElement(sb, INDENT4, "url-pattern", encodeUrl(urlPattern));
+                        if (!getUrlPatternsProvidedInDecodedForm()) {
+                            urlPattern = encodeUrl(urlPattern);
+                        }
+                        appendElement(sb, INDENT4, "url-pattern", urlPattern);
                     }
                 }
                 // dispatcher was added in Servlet 2.4
@@ -1607,7 +1610,11 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
         for (Map.Entry<String,String> entry : servletMappings.entrySet()) {
             sb.append("  <servlet-mapping>\n");
             appendElement(sb, INDENT4, "servlet-name", entry.getValue());
-            appendElement(sb, INDENT4, "url-pattern", encodeUrl(entry.getKey()));
+            if (getUrlPatternsProvidedInDecodedForm()) {
+                appendElement(sb, INDENT4, "url-pattern", entry.getKey());
+            } else {
+                appendElement(sb, INDENT4, "url-pattern", encodeUrl(entry.getKey()));
+            }
             sb.append("  </servlet-mapping>\n");
         }
         if (!servletMappings.isEmpty()) {
@@ -1667,7 +1674,7 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
             } else if (errorPage.getErrorCode() > 0) {
                 appendElement(sb, INDENT4, "error-code", Integer.toString(errorCode));
             }
-            appendElement(sb, INDENT4, "location", errorPage.getLocation(), true);
+            appendElement(sb, INDENT4, "location", errorPage.getLocation(), !getUrlPatternsProvidedInDecodedForm());
             sb.append("  </error-page>\n");
         }
         if (!errorPages.isEmpty()) {
@@ -1690,7 +1697,10 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
                 for (JspPropertyGroup jpg : jspPropertyGroups) {
                     sb.append("    <jsp-property-group>\n");
                     for (String urlPattern : jpg.getUrlPatterns()) {
-                        appendElement(sb, INDENT6, "url-pattern", encodeUrl(urlPattern));
+                        if (!getUrlPatternsProvidedInDecodedForm()) {
+                            urlPattern = encodeUrl(urlPattern);
+                        }
+                        appendElement(sb, INDENT6, "url-pattern", urlPattern);
                     }
                     appendElement(sb, INDENT6, "el-ignored", jpg.getElIgnored());
                     appendElement(sb, INDENT6, "page-encoding", jpg.getPageEncoding());
@@ -1770,7 +1780,10 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
                 appendElement(sb, INDENT6, "web-resource-name", collection.getName());
                 appendElement(sb, INDENT6, "description", collection.getDescription());
                 for (String urlPattern : collection.findPatterns()) {
-                    appendElement(sb, INDENT6, "url-pattern", encodeUrl(urlPattern));
+                    if (!getUrlPatternsProvidedInDecodedForm()) {
+                        urlPattern = encodeUrl(urlPattern);
+                    }
+                    appendElement(sb, INDENT6, "url-pattern", urlPattern);
                 }
                 for (String method : collection.findMethods()) {
                     appendElement(sb, INDENT6, "http-method", method);
@@ -1813,8 +1826,8 @@ public class WebXml extends XmlEncodingBase implements DocumentProperties.Charse
             appendElement(sb, INDENT4, "realm-name", loginConfig.getRealmName());
             if (loginConfig.getErrorPage() != null || loginConfig.getLoginPage() != null) {
                 sb.append("    <form-login-config>\n");
-                appendElement(sb, INDENT6, "form-login-page", loginConfig.getLoginPage(), true);
-                appendElement(sb, INDENT6, "form-error-page", loginConfig.getErrorPage(), true);
+                appendElement(sb, INDENT6, "form-login-page", loginConfig.getLoginPage(), !getUrlPatternsProvidedInDecodedForm());
+                appendElement(sb, INDENT6, "form-error-page", loginConfig.getErrorPage(), !getUrlPatternsProvidedInDecodedForm());
                 sb.append("    </form-login-config>\n");
             }
             sb.append("  </login-config>\n\n");
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 8736828a97..53899a777c 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -127,6 +127,10 @@
         active sessions, swap out the least recently used eligible sessions
         first. Pull request <pr>1045</pr> provided by sainadh777. (markt)
       </fix>
+      <fix>
+        Align web.xml logging output with the new <code>Context</code> attribute
+        <code>urlPatternsProvidedInDecodedForm</code>. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.