Plans for May releases
Hi all, I am currently working on a couple of platform specific test failures. I also want to try and fix the issue described in "Content type unknown after upgrading Tomcat 10.1.39 => 10.1.40" on the users list. I'm hopeful that I'll be able to tag 11.0.x later today or early tomorrow. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 69674] New: Poptropica: A Virtual World of Adventure, Learning, and Imagination
https://bz.apache.org/bugzilla/show_bug.cgi?id=69674 Bug ID: 69674 Summary: Poptropica: A Virtual World of Adventure, Learning, and Imagination Product: Tomcat 10 Version: 10.1.36 Hardware: PC Status: NEW Severity: normal Priority: P2 Component: Connectors Assignee: dev@tomcat.apache.org Reporter: ambitiou...@chefalicious.com Target Milestone: -- Since its launch in 2007, Poptropica (https://poptropica.io/) has captured the hearts and imaginations of millions of children around the world. Developed by Pearson Education’s Family Education Network and created by Jeff Kinney, the author of Diary of a Wimpy Kid, Poptropica quickly became one of the most beloved online virtual worlds for kids aged 6–15. Blending storytelling, education, and creativity, Poptropica offers a unique gaming experience that both entertains and teaches. This article explores the journey of Poptropica from its early days to the present, highlighting its gameplay, educational potential, and cultural influence. The Origin and Vision Behind Poptropica Poptropica was created in a time when online virtual worlds were booming. Sites like Club Penguin and Neopets were popular among children, but Poptropica stood out for its focus on adventure, storytelling, and critical thinking. Jeff Kinney envisioned a game that combined narrative-driven gameplay with the educational principles that could support cognitive development. The aim was to give children a safe, ad-free environment to explore new worlds, solve puzzles, and learn new concepts—all while having fun. Launched in September 2007, Poptropica was designed using Adobe Flash and was entirely free to play, although premium memberships were later introduced to unlock exclusive content and features. Unlike many other games at the time, Poptropica did not rely on chatting or social networking, ensuring a safer digital space for children. Gameplay Mechanics: How Poptropica (https://poptropica.io/) Works At its core, Poptropica is a side-scrolling 2D adventure game. Players create a customizable character known as a "Poptropican," choosing skin tone, hair style, clothing, and accessories. Once their avatar is ready, players embark on journeys to explore different "islands," each featuring a unique storyline, theme, and set of challenges. Each island functions as a standalone adventure with its own plot, characters, and puzzles. Players are usually tasked with solving mysteries, completing quests, and interacting with non-playable characters (NPCs) to progress through the story. Some islands are inspired by historical events (like Time Tangled Island), literature (like Mocktropica), mythology (like Mythology Island), or pop culture (like Reality TV Island). Gameplay involves exploring scenes, collecting items, and solving puzzles by using logic and observation. Players must often combine clues, items, and character interactions to complete tasks, similar to the mechanics of point-and-click adventure games. Iconic Islands and Their Stories One of Poptropica’s greatest strengths is its variety of well-crafted islands. Each island provides a self-contained story that typically takes 30–60 minutes to complete. Some of the most popular islands over the years include: Time Tangled Island: Players travel to different time periods to fix historical anomalies, meeting figures like Leonardo da Vinci and Thomas Edison. This island is both entertaining and educational. Mythology Island: Based on ancient Greek mythology, players must complete quests from gods like Zeus and Athena and battle mythical creatures like Medusa and the Minotaur. Spy Island: Players take on the role of a secret agent investigating the disappearance of other spies. The stealth elements and secret gadgets make this island particularly thrilling. Super Power Island: After a meteor strike grants villains superpowers, players must stop them and restore peace to the city. This island plays like a superhero comic book brought to life. Cryptids Island: Centered on cryptozoology, players explore urban legends like Bigfoot, the Loch Ness Monster, and the Jersey Devil while conducting investigations. Each island presents not just a challenge but also a narrative arc, character development, and thematic depth that teach children about topics ranging from science and history to literature and ethics. Visual Style and Sound Design Poptropica features a charming and minimalistic cartoon art style. The characters have large heads, simple bodies, and exaggerated features that make them endearing and easily recognizable. The visual humor is subtle but effective, and the animations are smooth despite the technical limitations of Adobe Flash. The sound design complements the gameplay with catchy background music, thematic soundtracks for each island, and amusing sound effects. The absence of voice a
Re: Plans for May releases
On Tue, May 6, 2025 at 9:48 AM Mark Thomas wrote: > > Hi all, > > I am currently working on a couple of platform specific test failures. I > also want to try and fix the issue described in "Content type unknown > after upgrading Tomcat 10.1.39 => 10.1.40" on the users list. I had missed it. It seems a bit difficult to solve. If you want to align with sun.net.www.URLConnection as per the comment, then the code is right. However, existing code which would only check for null will no longer work. > I'm hopeful that I'll be able to tag 11.0.x later today or early tomorrow. +1 Rémy > Mark > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 11.0.x updated: Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 11.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/11.0.x by this push: new e46996dc1c Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 e46996dc1c is described below commit e46996dc1c660b16ab1451e38a9efa697fe36021 Author: Mark Thomas AuthorDate: Tue May 6 19:33:59 2025 +0100 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 Tomcat's integration with the JDT compiler could not differentiate between the package org.apache.catalina.authenticator and the class org.apache.catalina.Authenticator on a case insensitive file system. --- java/org/apache/jasper/compiler/JDTCompiler.java | 21 +++-- webapps/docs/changelog.xml | 5 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 60f5ae4309..9c116a33c0 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.StringTokenizer; import org.apache.jasper.JasperException; +import org.apache.jasper.runtime.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.eclipse.jdt.core.compiler.IProblem; @@ -217,16 +218,24 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { +System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } -String resourceName = result.replace('.', '/') + ".class"; -try (InputStream is = classLoader.getResourceAsStream(resourceName)) { -return is == null; -} catch (IOException e) { -// we are here, since close on is failed. That means it was not null -return false; +/* + * This might look heavy-weight but, with only the ClassLoader API available, trying to load the + * resource as a class is the only reliable way found so far to differentiate between a class and a + * package. Other options, such as getResource(), fail for some edge cases on case insensitive file + * systems. As this code is only called at compile time, the performance impact is not a significant + * concern. + */ +try { +classLoader.loadClass(result); +} catch (Throwable t) { +ExceptionUtils.handleThrowable(t); +return true; } +return false; } @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index b7784d0178..800c206e6e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -150,6 +150,11 @@ activated via JSP servlet param useNonstandardTagOptimizations. (jengebr) + +Fix an edge case compilation bug for JSP and tag files on case +insensitive file systems that was exposed by the test case for +69635. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 10.1.x updated: Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 6c05f0aed2 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 6c05f0aed2 is described below commit 6c05f0aed2d921de2533a6edf0fa29120f59c43b Author: Mark Thomas AuthorDate: Tue May 6 19:33:59 2025 +0100 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 Tomcat's integration with the JDT compiler could not differentiate between the package org.apache.catalina.authenticator and the class org.apache.catalina.Authenticator on a case insensitive file system. --- java/org/apache/jasper/compiler/JDTCompiler.java | 21 +++-- webapps/docs/changelog.xml | 5 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 905b76c618..3eec132daf 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.StringTokenizer; import org.apache.jasper.JasperException; +import org.apache.jasper.runtime.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.eclipse.jdt.core.compiler.IProblem; @@ -217,16 +218,24 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { +System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } -String resourceName = result.replace('.', '/') + ".class"; -try (InputStream is = classLoader.getResourceAsStream(resourceName)) { -return is == null; -} catch (IOException e) { -// we are here, since close on is failed. That means it was not null -return false; +/* + * This might look heavy-weight but, with only the ClassLoader API available, trying to load the + * resource as a class is the only reliable way found so far to differentiate between a class and a + * package. Other options, such as getResource(), fail for some edge cases on case insensitive file + * systems. As this code is only called at compile time, the performance impact is not a significant + * concern. + */ +try { +classLoader.loadClass(result); +} catch (Throwable t) { +ExceptionUtils.handleThrowable(t); +return true; } +return false; } @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 58e87649eb..04ef6e47a3 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -167,6 +167,11 @@ activated via JSP servlet param useNonstandardTagOptimizations. (jengebr) + +Fix an edge case compilation bug for JSP and tag files on case +insensitive file systems that was exposed by the test case for +69635. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 9.0.x updated: Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635
This is an automated email from the ASF dual-hosted git repository. markt 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 a7b607bc91 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 a7b607bc91 is described below commit a7b607bc91ed1b2359ba9b185dba6d76f4b3fe33 Author: Mark Thomas AuthorDate: Tue May 6 19:33:59 2025 +0100 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 Tomcat's integration with the JDT compiler could not differentiate between the package org.apache.catalina.authenticator and the class org.apache.catalina.Authenticator on a case insensitive file system. --- java/org/apache/jasper/compiler/JDTCompiler.java | 21 +++-- webapps/docs/changelog.xml | 5 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index d57303d614..638a3b4e81 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.StringTokenizer; import org.apache.jasper.JasperException; +import org.apache.jasper.runtime.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.eclipse.jdt.core.compiler.IProblem; @@ -217,16 +218,24 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { +System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } -String resourceName = result.replace('.', '/') + ".class"; -try (InputStream is = classLoader.getResourceAsStream(resourceName)) { -return is == null; -} catch (IOException e) { -// we are here, since close on is failed. That means it was not null -return false; +/* + * This might look heavy-weight but, with only the ClassLoader API available, trying to load the + * resource as a class is the only reliable way found so far to differentiate between a class and a + * package. Other options, such as getResource(), fail for some edge cases on case insensitive file + * systems. As this code is only called at compile time, the performance impact is not a significant + * concern. + */ +try { +classLoader.loadClass(result); +} catch (Throwable t) { +ExceptionUtils.handleThrowable(t); +return true; } +return false; } @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 85267afd78..51fe4e542e 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -155,6 +155,11 @@ activated via JSP servlet param useNonstandardTagOptimizations. (jengebr) + +Fix an edge case compilation bug for JSP and tag files on case +insensitive file systems that was exposed by the test case for +69635. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch main updated (e47d8933e3 -> 5276c174c6)
This is an automated email from the ASF dual-hosted git repository. markt pushed a change to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git from e47d8933e3 Merge pull request #808 from Chenjp/webdav_specialpath_tc new 570f451f5e Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 new 5276c174c6 Remove debug code The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "add" were already present in the repository and have only been added to this reference. Summary of changes: java/org/apache/jasper/compiler/JDTCompiler.java | 20 ++-- webapps/docs/changelog.xml | 5 + 2 files changed, 19 insertions(+), 6 deletions(-) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 11.0.x updated: Remove debug code
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 11.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/11.0.x by this push: new 06667bef34 Remove debug code 06667bef34 is described below commit 06667bef34c92d37b855084cad018f7388a80c6d Author: Mark Thomas AuthorDate: Tue May 6 21:34:53 2025 +0100 Remove debug code --- java/org/apache/jasper/compiler/JDTCompiler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 9c116a33c0..e896b6d22c 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -218,7 +218,6 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { -System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 9.0.x updated: Remove debug code
This is an automated email from the ASF dual-hosted git repository. markt 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 cc88c8f436 Remove debug code cc88c8f436 is described below commit cc88c8f43666cb034b6bef2a3f922c2ed40a380d Author: Mark Thomas AuthorDate: Tue May 6 21:34:53 2025 +0100 Remove debug code --- java/org/apache/jasper/compiler/JDTCompiler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 638a3b4e81..4771dbda48 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -218,7 +218,6 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { -System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) 02/02: Remove debug code
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 5276c174c63aca143ab474bcd3ca8cd3be74f9c4 Author: Mark Thomas AuthorDate: Tue May 6 21:34:53 2025 +0100 Remove debug code --- java/org/apache/jasper/compiler/JDTCompiler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 9aa700ecc1..5d5cb011f3 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -217,7 +217,6 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { -System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) 01/02: Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git commit 570f451f5e4392943e869f5b462258c2892ba77d Author: Mark Thomas AuthorDate: Tue May 6 19:33:59 2025 +0100 Fix a JSP/tag file compilation bug exposed by the test case for BZ 69635 Tomcat's integration with the JDT compiler could not differentiate between the package org.apache.catalina.authenticator and the class org.apache.catalina.Authenticator on a case insensitive file system. --- java/org/apache/jasper/compiler/JDTCompiler.java | 21 +++-- webapps/docs/changelog.xml | 5 + 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 53b4efc076..9aa700ecc1 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -35,6 +35,7 @@ import java.util.Map; import java.util.StringTokenizer; import org.apache.jasper.JasperException; +import org.apache.jasper.runtime.ExceptionUtils; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.eclipse.jdt.core.compiler.IProblem; @@ -216,16 +217,24 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { +System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } -String resourceName = result.replace('.', '/') + ".class"; -try (InputStream is = classLoader.getResourceAsStream(resourceName)) { -return is == null; -} catch (IOException e) { -// we are here, since close on is failed. That means it was not null -return false; +/* + * This might look heavy-weight but, with only the ClassLoader API available, trying to load the + * resource as a class is the only reliable way found so far to differentiate between a class and a + * package. Other options, such as getResource(), fail for some edge cases on case insensitive file + * systems. As this code is only called at compile time, the performance impact is not a significant + * concern. + */ +try { +classLoader.loadClass(result); +} catch (Throwable t) { +ExceptionUtils.handleThrowable(t); +return true; } +return false; } @Override diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index f2c098f245..e359badf25 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -233,6 +233,11 @@ activated via JSP servlet param useNonstandardTagOptimizations. (jengebr) + +Fix an edge case compilation bug for JSP and tag files on case +insensitive file systems that was exposed by the test case for +69635. (markt) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
(tomcat) branch 10.1.x updated: Remove debug code
This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git The following commit(s) were added to refs/heads/10.1.x by this push: new 6f5741d561 Remove debug code 6f5741d561 is described below commit 6f5741d561629fe2cf0a49ace0974afe53cf9864 Author: Mark Thomas AuthorDate: Tue May 6 21:34:53 2025 +0100 Remove debug code --- java/org/apache/jasper/compiler/JDTCompiler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/java/org/apache/jasper/compiler/JDTCompiler.java b/java/org/apache/jasper/compiler/JDTCompiler.java index 3eec132daf..01d2375c69 100644 --- a/java/org/apache/jasper/compiler/JDTCompiler.java +++ b/java/org/apache/jasper/compiler/JDTCompiler.java @@ -218,7 +218,6 @@ public class JDTCompiler extends org.apache.jasper.compiler.Compiler { } private boolean isPackage(String result) { -System.out.println("isPackage(\"" + result + "\")"); if (result.equals(targetClassName) || result.startsWith(targetClassName + '$')) { return false; } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org