You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2022/09/27 09:10:23 UTC
[tomcat] branch 10.0.x updated: Fix BZ 66277 - fix regressions in Stack -> Deque refactoring
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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org