Uploaded image for project: 'Commons Jelly'
  1. Commons Jelly
  2. JELLY-209

Ant tags do not redirect stderr ou stdout to Ant tag

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.0
    • 1.0-RC2
    • taglib.ant
    • None
    • Sun JDK 1.4.2_07, commons-jelly-1.0-RC1.jar, commons-jelly-tags-ant-1.0.jar

    Description

      Ant tag (org.apache.commons.jelly.tags.ant.AntTag) does not redirect System.out and System.err to the target Ant tag (through the Ant Project). Due to this, System.out and System.err are not handled by Ant tasks (e.g. JunitTask should output in TEST-xxx.xml stdout and stderr).

      Sample of code to redirect stdout and stderr in org.apache.tools.ant.Main#runBuild(ClassLoader), version 1.6.2 :
      System.setOut(new PrintStream(new DemuxOutputStream(project, false)));
      System.setErr(new PrintStream(new DemuxOutputStream(project, true)));

      Patch :
      To patch this problem, I modified org.apache.commons.jelly.tags.ant.AntTag to redirect stdout and stderr before calling "task.perform()" and, after the task execution, reset stdout an stderr to their initial values.

      Diff of org.apache.commons.jelly.tags.ant.AntTag
      (It does not seem to be possible to attach files in Jira)

      Index: AntTag.java
      ===================================================================
      RCS file: /home/cvspublic/jakarta-commons/jelly/jelly-tags/ant/src/java/org/apache/commons/jelly/tags/ant/AntTag.java,v
      retrieving revision 1.34
      diff -r1.34 AntTag.java
      18a19
      > import java.io.PrintStream;
      36a38
      > import org.apache.tools.ant.DemuxOutputStream;
      185c187,199
      < task.perform();

      > // according to org.apache.tools.ant.Main, redirect stdout and stderr
      > PrintStream initialOut = System.out;
      > PrintStream initialErr = System.err;
      > PrintStream newOut = new PrintStream(new DemuxOutputStream(project, false));
      > PrintStream newErr = new PrintStream(new DemuxOutputStream(project, true));
      > try

      { > System.setOut(newOut); > System.setErr(newErr); > task.perform(); > }

      finally

      { > System.setOut(initialOut); > System.setErr(initialErr); > }

      Attachments

        1. AntTag.java.diff
          1 kB
          Cyrille Le Clerc
        2. a-path-for-JELLY-209-commons-jelly-tags-ant-1.0.jar
          11 kB
          Cyrille Le Clerc

        Activity

          People

            Unassigned Unassigned
            cleclerc Cyrille Le Clerc
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: