This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.0.x by this push: new 2ce60aec39 Fix BZ 66277 - fix regressions in Stack -> Deque refactoring 2ce60aec39 is described below commit 2ce60aec3937560871284edfe80e01bece5b3607 Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Sep 27 10:03:06 2022 +0100 Fix BZ 66277 - fix regressions in Stack -> Deque refactoring --- java/org/apache/catalina/core/StandardContext.java | 6 +++--- .../apache/catalina/servlets/WebdavServlet.java | 10 +++++----- .../apache/jasper/compiler/ParserController.java | 8 ++++---- .../apache/tomcat/util/log/SystemLogHandler.java | 7 ++++--- .../apache/catalina/core/TestStandardContext.java | 23 ++++++++++++++++++++++ webapps/docs/changelog.xml | 8 ++++++++ 6 files changed, 47 insertions(+), 15 deletions(-) diff --git a/java/org/apache/catalina/core/StandardContext.java b/java/org/apache/catalina/core/StandardContext.java index 15a1135427..329e9e70c0 100644 --- a/java/org/apache/catalina/core/StandardContext.java +++ b/java/org/apache/catalina/core/StandardContext.java @@ -28,6 +28,7 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Deque; import java.util.Enumeration; import java.util.EventListener; import java.util.HashMap; @@ -37,7 +38,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; -import java.util.Queue; import java.util.Set; import java.util.TreeMap; import java.util.concurrent.ConcurrentHashMap; @@ -5873,10 +5873,10 @@ public class StandardContext extends ContainerBase if (parent == null) { namingContextName = getName(); } else { - Queue<String> stk = new ArrayDeque<>(); + Deque<String> stk = new ArrayDeque<>(); StringBuilder buff = new StringBuilder(); while (parent != null) { - stk.add(parent.getName()); + stk.addFirst(parent.getName()); parent = parent.getParent(); } while (!stk.isEmpty()) { diff --git a/java/org/apache/catalina/servlets/WebdavServlet.java b/java/org/apache/catalina/servlets/WebdavServlet.java index 405a281b48..a93492c606 100644 --- a/java/org/apache/catalina/servlets/WebdavServlet.java +++ b/java/org/apache/catalina/servlets/WebdavServlet.java @@ -29,12 +29,12 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Collections; import java.util.Date; +import java.util.Deque; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Queue; import java.util.TimeZone; import java.util.concurrent.ConcurrentHashMap; @@ -618,11 +618,11 @@ public class WebdavServlet extends DefaultServlet { parseProperties(req, generatedXML, path, type, properties); } else { // The stack always contains the object of the current level - Queue<String> stack = new ArrayDeque<>(); - stack.add(path); + Deque<String> stack = new ArrayDeque<>(); + stack.addFirst(path); // Stack of the objects one level below - Queue<String> stackBelow = new ArrayDeque<>(); + Deque<String> stackBelow = new ArrayDeque<>(); while ((!stack.isEmpty()) && (depth >= 0)) { @@ -640,7 +640,7 @@ public class WebdavServlet extends DefaultServlet { newPath += "/"; } newPath += entry; - stackBelow.add(newPath); + stackBelow.addFirst(newPath); } // Displaying the lock-null resources present in that diff --git a/java/org/apache/jasper/compiler/ParserController.java b/java/org/apache/jasper/compiler/ParserController.java index 362e5ae2f4..e32d24c1bf 100644 --- a/java/org/apache/jasper/compiler/ParserController.java +++ b/java/org/apache/jasper/compiler/ParserController.java @@ -21,7 +21,7 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; -import java.util.Queue; +import java.util.Deque; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; @@ -56,7 +56,7 @@ class ParserController implements TagConstants { * A stack to keep track of the 'current base directory' * for include directives that refer to relative paths. */ - private final Queue<String> baseDirStack = new ArrayDeque<>(); + private final Deque<String> baseDirStack = new ArrayDeque<>(); private boolean isEncodingSpecifiedInProlog; private boolean isBomPresent; @@ -519,9 +519,9 @@ class ParserController implements TagConstants { private String resolveFileName(String inFileName) { String fileName = inFileName.replace('\\', '/'); boolean isAbsolute = fileName.startsWith("/"); - fileName = isAbsolute ? fileName : baseDirStack.peek() + fileName; + fileName = isAbsolute ? fileName : baseDirStack.peekFirst() + fileName; String baseDir = fileName.substring(0, fileName.lastIndexOf('/') + 1); - baseDirStack.add(baseDir); + baseDirStack.addFirst(baseDir); return fileName; } diff --git a/java/org/apache/tomcat/util/log/SystemLogHandler.java b/java/org/apache/tomcat/util/log/SystemLogHandler.java index 746ae4ffb0..2293f349af 100644 --- a/java/org/apache/tomcat/util/log/SystemLogHandler.java +++ b/java/org/apache/tomcat/util/log/SystemLogHandler.java @@ -19,6 +19,7 @@ package org.apache.tomcat.util.log; import java.io.IOException; import java.io.PrintStream; import java.util.ArrayDeque; +import java.util.Deque; import java.util.EmptyStackException; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; @@ -62,7 +63,7 @@ public class SystemLogHandler extends PrintStream { /** * Thread <-> CaptureLog associations. */ - private static final ThreadLocal<Queue<CaptureLog>> logs = new ThreadLocal<>(); + private static final ThreadLocal<Deque<CaptureLog>> logs = new ThreadLocal<>(); /** @@ -88,12 +89,12 @@ public class SystemLogHandler extends PrintStream { } else { log = new CaptureLog(); } - Queue<CaptureLog> stack = logs.get(); + Deque<CaptureLog> stack = logs.get(); if (stack == null) { stack = new ArrayDeque<>(); logs.set(stack); } - stack.add(log); + stack.addFirst(log); } diff --git a/test/org/apache/catalina/core/TestStandardContext.java b/test/org/apache/catalina/core/TestStandardContext.java index c8daacce8d..94194fe020 100644 --- a/test/org/apache/catalina/core/TestStandardContext.java +++ b/test/org/apache/catalina/core/TestStandardContext.java @@ -19,6 +19,7 @@ package org.apache.catalina.core; import java.io.File; import java.io.IOException; import java.io.PrintWriter; +import java.lang.reflect.Method; import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -52,6 +53,7 @@ import org.junit.Assert; import org.junit.Test; import org.apache.catalina.Context; +import org.apache.catalina.Engine; import org.apache.catalina.Host; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; @@ -1043,4 +1045,25 @@ public class TestStandardContext extends TomcatBaseTest { resp.getWriter().print("OK"); } } + + + @Test + public void testNamingContextName() throws Exception { + Engine engine = new StandardEngine(); + engine.setName("engine"); + + Host host = new StandardHost(); + host.setName("host"); + host.setParent(engine); + + Context context = new StandardContext(); + context.setName("context"); + context.setParent(host); + + Method m = StandardContext.class.getDeclaredMethod("getNamingContextName"); + m.setAccessible(true); + String result = (String) m.invoke(context); + + Assert.assertEquals("/engine/hostcontext", result); + } } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 35d514f0e1..73af52e761 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -113,6 +113,14 @@ </fix> </changelog> </subsection> + <subsection name="Jasper"> + <changelog> + <fix> + <bug>66277</bug>: Fix regressions in refactoring from <code>Stack</code> + <code>ArrayDeque</code>. + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 10.0.26 (markt)" rtext="release in progress"> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org