This is an automated email from the ASF dual-hosted git repository.

markt-asf 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 d8e4ce8683 Route JspC context logging through Ant
d8e4ce8683 is described below

commit d8e4ce86834e8047489ddb70c23fce952d154bf5
Author: sainadh777 <[email protected]>
AuthorDate: Mon Sep 28 11:45:53 2026 -0700

    Route JspC context logging through Ant
---
 TODO.md                              | 10 ---------
 java/org/apache/jasper/JspC.java     | 10 +++++++--
 test/org/apache/jasper/TestJspC.java | 39 ++++++++++++++++++++++++++++++++++++
 webapps/docs/changelog.xml           |  4 ++++
 4 files changed, 51 insertions(+), 12 deletions(-)

diff --git a/TODO.md b/TODO.md
index c289a1048b..bd5ca468d9 100644
--- a/TODO.md
+++ b/TODO.md
@@ -400,16 +400,6 @@ These are bugs, correctness issues, or missing 
functionality that may affect pro
 
 ---
 
-### 35. Jasper Ant Logging (1 item)
-
-| # | File:Line | Description | Fix Idea | Effort | Difficulty |
-|---|-----------|-------------|----------|--------|------------|
-| 35.1 | `JspC.java:1775` | Uses `System.out` instead of Ant Project log | 
Pass the Ant `Project` reference through to `initServletContext` and use 
`Project.log()` for output. | 0.5 day | Low |
-
-**Total estimated effort: 0.5 day, Low difficulty**
-
----
-
 ### 36. Jasper JspC ClassLoader / Filter Config (2 items)
 
 | # | File:Line | Description | Fix Idea | Effort | Difficulty |
diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java
index 0a8611510f..cf9ebd45b6 100644
--- a/java/org/apache/jasper/JspC.java
+++ b/java/org/apache/jasper/JspC.java
@@ -60,7 +60,9 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tools.ant.AntClassLoader;
 import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Project;
 import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.LogOutputStream;
 import org.apache.tools.ant.util.FileUtils;
 import org.xml.sax.SAXException;
 
@@ -1772,8 +1774,12 @@ public class JspC extends Task implements Options {
      * @throws JasperException If a JSP error occurs
      */
     protected void initServletContext(ClassLoader classLoader) throws 
IOException, JasperException {
-        // TODO: should we use the Ant Project's log?
-        PrintWriter log = new PrintWriter(System.out);
+        PrintWriter log;
+        if (getProject() == null) {
+            log = new PrintWriter(System.out);
+        } else {
+            log = new PrintWriter(new LogOutputStream(this, Project.MSG_INFO), 
true);
+        }
         URL resourceBase = new 
File(uriRoot).getCanonicalFile().toURI().toURL();
 
         context = new JspCServletContext(log, resourceBase, classLoader, 
isValidateXml(), isBlockExternal());
diff --git a/test/org/apache/jasper/TestJspC.java 
b/test/org/apache/jasper/TestJspC.java
index 435f4afaef..9ee699abd9 100644
--- a/test/org/apache/jasper/TestJspC.java
+++ b/test/org/apache/jasper/TestJspC.java
@@ -23,12 +23,18 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.SimpleFileVisitor;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.junit.After;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.DefaultLogger;
+import org.apache.tools.ant.Project;
+
 public class TestJspC {
 
     private JspC jspc;
@@ -135,6 +141,28 @@ public class TestJspC {
         verify(webappOut);
     }
 
+    @Test
+    public void servletContextUsesAntLog() throws Exception {
+        List<String> messages = new ArrayList<>();
+        Project project = new Project();
+        project.addBuildListener(new DefaultLogger() {
+            @Override
+            public void messageLogged(BuildEvent event) {
+                messages.add(event.getMessage());
+            }
+        });
+
+        TesterJspC testerJspC = new TesterJspC();
+        testerJspC.setProject(project);
+        testerJspC.setUriroot("test/webapp-2.2");
+        testerJspC.setValidateTld(false);
+        testerJspC.initServletContext();
+
+        String message = "JspCServletContext Ant log test";
+        testerJspC.logToServletContext(message);
+        Assert.assertTrue(messages.contains(message));
+    }
+
     private void verify(File webappOut) {
         // for now, just check some expected files exist
         Assert.assertTrue(new File(webappOut, "generated_web.xml").exists());
@@ -175,4 +203,15 @@ public class TestJspC {
             }
         });
     }
+
+    private static class TesterJspC extends JspC {
+
+        void initServletContext() throws IOException, JasperException {
+            initServletContext(getClass().getClassLoader());
+        }
+
+        void logToServletContext(String message) {
+            context.log(message);
+        }
+    }
 }
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index bc88be1694..cbd69f4a7f 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -391,6 +391,10 @@
         Add support for <code>java.util.Optional</code> to the empty operator.
         (markt)
       </add>
+      <fix>
+        Route <code>JspC</code> servlet context logging through Ant when used 
as
+        an Ant task. (sainadh777)
+      </fix>
       <!-- Entries for backport and removal before 12.0.0-M1 below this line 
-->
     </changelog>
   </subsection>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to