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

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

    Route JspC context logging through Ant
---
 java/org/apache/jasper/JspC.java     | 10 +++++++--
 test/org/apache/jasper/TestJspC.java | 39 ++++++++++++++++++++++++++++++++++++
 webapps/docs/changelog.xml           |  8 ++++++++
 3 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/java/org/apache/jasper/JspC.java b/java/org/apache/jasper/JspC.java
index 3e1bab03f2..4e6f0278b5 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;
 
@@ -1817,8 +1819,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 9014039394..b4fd22620c 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;
@@ -103,6 +109,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());
@@ -143,4 +171,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 2e68bc2367..80a8af37d5 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -164,6 +164,14 @@
       </fix>
     </changelog>
   </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        Route <code>JspC</code> servlet context logging through Ant when used 
as
+        an Ant task. (sainadh777)
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Web applications">
     <changelog>
       <add>


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

Reply via email to