<?xml version="1.0" encoding="UTF-8"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one
 or more contributor license agreements.  See the NOTICE file
 distributed with this work for additional information
 regarding copyright ownership.  The ASF licenses this file
 to you under the Apache License, Version 2.0 (the
 "License"); you may not use this file except in compliance
 with the License.  You may obtain a copy of the License at

   https://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing,
 software distributed under the License is distributed on an
 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 KIND, either express or implied.  See the License for the
 specific language governing permissions and limitations
 under the License.
-->
<document xmlns="http://maven.apache.org/changes/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/changes/2.0.0 https://maven.apache.org/xsd/changes-2.0.0.xsd">
  <properties>
    <title>Apache Commons Exec Release Notes</title>
  </properties>
  <body>
    <release version="1.7.0" date="YYYY-MM-DD" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- FIX -->
      <!-- ADD -->
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump org.apache.commons:commons-parent from 93 to 96.</action>
    </release>
    <release version="1.6.0" date="2025-11-25" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- FIX -->
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Watchdog.builder().get() now uses a default timeout of 30 seconds instead of throwing a NullPointerException.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">ExecuteWatchdog.builder().get() now uses a default timeout of 30 seconds instead of throwing a NullPointerException.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Calling org.apache.commons.exec.Watchdog.Builder.setTimeout(Duration) with null now resets to the default INFINITE_TIMEOUT_DURATION timeout.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Calling org.apache.commons.exec.ExecuteWatchdog.Builder.setTimeout(Duration) with null now resets to the default INFINITE_TIMEOUT_DURATION timeout.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Calling org.apache.commons.exec.Watchdog.Builder.setThreadFactory(ThreadFactory) with null now resets to the default java.util.concurrent.Executors.defaultThreadFactory().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Calling org.apache.commons.exec.ExecuteWatchdog.Builder.setThreadFactory(ThreadFactory) with null now resets to the default java.util.concurrent.Executors.defaultThreadFactory().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Checkstyle issues.</action>
      <action type="fix" dev="ggregory" due-to="Xin Wang, Sebb, Gary Gregory">Fix StringUtils.quoteArgument(String) when input contains single and double quotes #309.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Apache RAT plugin console warnings.</action>
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="Gary Gregory">TimeoutObserver now extends Consumer&lt;Watchdog&gt;.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add org.apache.commons.exec.Watchdog.getTimeout().</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 83 to 93 #299, #308, #314, #316.</action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.20.0 #282.</action>
    </release>
    <release version="1.5.0" date="2025-05-16" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add CommandLine.CommandLine(Path).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Executor.getWorkingDirectoryPath().</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add DefaultExecutor.Builder.setWorkingDirectory(Path).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add CommandLauncher.exec(CommandLine, Map&lt;String, String&gt;, Path).</action>
      <!-- FIX -->
      <action type="fix" dev="ggregory" issue="EXEC-122" due-to="Marcono1234">Document PumpStreamHandler stream thread-safety requirements.</action>
      <action type="fix" dev="ggregory" due-to="Marcono1234">Fix CI only running on Ubuntu and improve OS-specific tests #143.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD UnnecessaryFullyQualifiedName in DefaultExecutor.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD EmptyCatchBlock by allowing commented blocks.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix PMD EmptyControlStatement by allowing commented blocks.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Replace OS.OS_* use of Locale.ENGLISH with Locale.ROOT.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate DebugUtils.DebugUtils().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate MapUtils.MapUtils().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate StringUtils.StringUtils().</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Fix Javadoc warnings.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory, SpotBugs">Fix SpotBugs AT_STALE_THREAD_WRITE_OF_PRIMITIVE: Shared primitive variable "shouldDestroy" in one thread may not yield the value of the most recent write from another thread [org.apache.commons.exec.ShutdownHookProcessDestroyer$ProcessDestroyerThread].</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory, SpotBugs">Fix SpotBugs AT_STALE_THREAD_WRITE_OF_PRIMITIVE: Shared primitive variable "added" in one thread may not yield the value of the most recent write from another thread [org.apache.commons.exec.ShutdownHookProcessDestroyer].</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump org.apache.commons:commons-parent from 65 to 83 #174, #204, #212, #214, #219, #223, #226, #233, #253.</action>
      <!-- REMOVE -->
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Remove obsolete and unmaintained Ant build file.</action>
    </release>
    <release version="1.4.0" date="2024-01-01" description="This is a feature and maintenance release. Java 8 or later is required.">
      <!-- ADD -->
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add ShutdownHookProcessDestroyer.isEmpty().</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add DefaultExecuteResultHandler.waitFor(Duration).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Watchdog.Watchdog(Duration).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add ExecuteWatchdog.ExecuteWatchdog(Duration).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add PumpStreamHandler.setStopTimeout(Duration) and deprecate PumpStreamHandler.setStopTimeout(long).</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add DefaultExecutor.Builder.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add DaemonExecutor.Builder.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add ExecuteWatchdog.Builder.</action>
      <action type="add" dev="ggregory" due-to="Gary Gregory">Add Watchdog.Builder.</action>
      <!-- FIX -->
      <action issue="EXEC-105" type="fix" due-to="Dimitrios Efthymiou">Fix code snippet in tutorial page.</action>
      <action issue="EXEC-100" dev="sgoeschl" type="fix" date="2016-01-11">Sync org.apache.commons.exec.OS with the newest Ant source file.</action>
      <action issue="EXEC-64" dev="sebb" type="fix" due-to="Michael Vorburger">DefaultExecutor swallows IOException cause instead of propagating it (work-round for Java 1.5).</action>
      <action type="fix" dev="ggregory" due-to="nullptr">Java-style Array declaration and remove empty finally block #26.</action>
      <action type="fix" dev="ggregory" due-to="John Patrick">Use JUnit 5 assertThrows() #72.</action>
      <action type="fix" dev="ggregory" due-to="step-security-bot, Gary Gregory">[StepSecurity] ci: Harden GitHub Actions #107.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Port from JUnit 4 to 5.</action>
      <action type="fix" dev="ggregory" due-to="ArdenL-Liu, Gary Gregory">[Javadoc] CommandLine.toCleanExecutable(final String dirtyExecutable) IllegalArgumentException #61.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">ExecuteException propagates its cause to its IOException superclass.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Propagate exception in DebugUtils.handleException(String, Exception).</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Deprecate StringUtils.toString(String[], String) in favor of String.join(CharSequence, CharSequence...).</action>
      <action issue="EXEC-78" dev="ggregory" type="fix">No need to use System.class.getMethod("getenv",...) any more.</action>
      <action issue="EXEC-70" dev="ggregory" type="fix">Delegate thread creation to java.util.concurrent.ThreadFactory.</action>
      <action type="fix" dev="ggregory" due-to="Gary Gregory">Avoid NullPointerException in MapUtils.prefix(Map, String).</action>
      <!-- REMOVE -->
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Deprecate DefaultExecuteResultHandler.waitFor(long).</action>
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Deprecate ExecuteWatchdog.ExecuteWatchdog(long).</action>
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Deprecate Watchdog.Watchdog(long).</action>
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Drop obsolete and unmaintained Ant build.</action>
      <action type="remove" dev="ggregory" due-to="Gary Gregory">Drop CLIRR plugin, replaced by JApiCmp.</action>
      <!-- UPDATE -->
      <action type="update" dev="ggregory" due-to="Gary Gregory, Dependabot">Bump github actions #52.</action>
      <action issue="EXEC-111" type="update" dev="ggregory" due-to="Gary Gregory">Update from Java 5 to 6.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">Update from Java 7 to 8.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump actions/cache from 2 to 3.0.11 #48, #51, #55, #69.</action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/checkout from 2.3.2 to 3.1.0 #24, #46, #68.</action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump actions/setup-java from 1.4.0 to 3.8.0 #21, #50, #70, #78.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump junit from 4.13 to 5.9.1 Vintage #23, #33.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-pmd-plugin from 2.7.1 to 3.19.0 #45, #62.</action>
      <action type="update" dev="ggregory" due-to="Dependabot">Bump maven-checkstyle-plugin from 2.13 to 3.2.0 #29, #60.</action>
      <action type="update" dev="ggregory" due-to="Dependabot, Gary Gregory">Bump commons-parent from 52 to 65, #49, #65, #79, #88, #105, #137.</action>
      <action type="update" dev="ggregory" due-to="Gary Gregory">Bump japicmp-maven-plugin from 0.15.6 to 0.16.0.</action>
    </release>
    <release version="1.3" date="2014-11-02" description="Maintenance and feature Release">
      <action issue="EXEC-69" type="add" dev="ggregory" due-to="Richard Atkins, Michael Vorburger">
                DefaultExecutor async execute prevents shutdown hooks running.
            </action>
      <action issue="EXEC-81" type="fix" dev="ggregory" date="2014-02-04" due-to="Stephen Compall">
                Remove remaining raw types, unchecked conversions
            </action>
      <action issue="EXEC-80" type="fix" dev="ggregory" date="2014-02-04">
                NullPointerException in EnvironmentUtils.toString(map)
            </action>
      <action issue="EXEC-78" dev="sebb" type="update" date="2014-01-11">
                No need to use System.class.getMethod("getenv",...) any more
            </action>
      <action issue="EXEC-77" dev="britter" type="update" date="2014-01-10">
                Update JUnit dependency to 4.11
            </action>
      <action issue="EXEC-76" dev="britter" type="update" date="2014-01-10">
                Update to Java 5
            </action>
    </release>
    <release version="1.2" date="2014-01-02" description="Maintenance and small feature Release">
      <action issue="EXEC-68" type="fix" dev="ggregory" date="2012-10-22" due-to="Joel McCance">
                Watchdog kills process immediately if timeout is too large.
            </action>
      <action issue="EXEC-57" dev="sgoeschl" type="fix" date="2011-10-10" due-to="Nickolay Martinov">
                Applied the patch from Nickolay Martinov but the timeout disguises the fact
                that the process might be still running. Therefore added a sanity check in
                order to throw an exception if the timeout for join() was exceeded.
            </action>
      <action issue="EXEC-60" dev="sgoeschl" type="fix" date="2011-10-09" due-to="Peter Kofler">
                Fixed deadlock by calling the timeout observers outside of the synchronized block thereby
                removing a prerequisite of a deadlock. Also added a test case to demonstrate that this
                problem is fixed (which of course can not guarantee the absence of a dead lock).
            </action>
      <action issue="EXEC-55" dev="sgoeschl" type="add" date="2011-02-21" due-to="Dominik Stadler">
                Set names for started threads.
            </action>
      <action issue="EXEC-52" dev="sebb" type="fix" date="2011-02-26" due-to="Nickolay Martinov">
                Tests fail on HP-UX, because it uses a different syntax for the ping command.
            </action>
      <action issue="EXEC-49" dev="sgoeschl" type="fix" date="2010-11-05" due-to="Kevin Telford">
                "Write dead end" IOException when using Piped streams w/PumpStreamHandler.
                When encountering a PipedOutputStream we will automatically close it to avoid
                the exception.
            </action>
      <action issue="EXEC-34" dev="simonetripodi" type="fix" date="2011-11-30" due-to="Marco Ferrante">
                Race condition prevent watchdog working using ExecuteStreamHandler.
                Patch submittd by Kristian Rosenvold.
            </action>
    </release>
    <release version="1.1" date="2010-10-08" description="Maintenance Release">
      <action dev="sebb" type="fix" date="2010-10-05">
                OpenVMS now uses symbols instead of logicals for environment variables.
            </action>
      <action dev="sgoeschl" type="add" date="2010-09-21">
                Adding 'Argument' class and quote the arguments after expansion.                
            </action>
      <action dev="sgoeschl" type="add" date="2010-09-02">
                Reverting changes of [EXEC-41] because the patch does not fix the problem.
                Also added test case for the broken patch.
            </action>
      <action dev="sgoeschl" type="add" date="2010-08-17">
                Added TutorialTest as a playground for new user and removed
                similar code from DefaultExecutorTest.
            </action>
      <action dev="sgoeschl" type="fix" date="2010-08-16">
                String substitution handles now java.io.File instances in order
                to create a cross-platform file name.            
            </action>
      <action dev="sgoeschl" type="fix" date="2010-08-16">
                The 'forever.bat' accidentally overwrite the 'forever.txt' instead of
                appending.
            </action>
      <action dev="sgoeschl" type="update" date="2010-08-16">
                DefaultExecutor() now sets the working directory with the current working
                directory.
            </action>
      <action dev="sgoeschl" type="update" date="2010-08-15">
                Added 'DefaultExecutorTest#testStdInHandling' to show how
                commons-exec can feed the 'stdin' of a child process.
            </action>
      <action dev="sgoeschl" type="update" date="2010-08-15" issue="EXEC-42" due-to="Konrad Windzus">
                Improved the documentation.
            </action>
      <action dev="sgoeschl" type="update" date="2010-08-15" issue="EXEC-41" due-to="Ernest Mishkin">
                Added a PumpStreamHandler.setAlwaysWaitForStreamThreads() which allows to skip
                joining with the pumper threads. Having said that - using that flag is for the
                desperate because it could leave up to three worker threads behind but there
                might be situations where this is the only escape.
            </action>
      <action dev="sgoeschl" type="fix" date="2010-08-15" issue="EXEC-46" due-to="Zimmermann Nir">
                Process.waitFor should clear interrupt status when throwing InterruptedException
            </action>
      <action dev="sgoeschl" type="update" date="2010-06-01">
                Added 'DefaultExecuteResultHandler'
            </action>
      <action dev="sgoeschl" type="update" date="2010-06-01" issue="EXEC-42" due-to="Pablo Hoertner">
                Added a new section to the tutorial to show working with asynchronous
                processes. Thanks to Pablo for providing this documentation update.
            </action>
      <action dev="sgoeschl" type="fix" date="2010-05-31" issue="EXEC-44">
                Because the ExecuteWatchdog is the only way to destroy asynchronous processes,
                it should be possible to set it to an infinite timeout, for processes which
                should not timeout, but manually destroyed under some circumstances.
            </action>
    </release>
    <release version="1.0.1" date="2009-09-28" description="Maintenance Release">
      <action dev="henrib" type="fix" date="2009-09-25" issue="EXEC-33">
                On a Mac, the unit tests never finish. Culprit is InputStreamPumper which
                sets its stop member in the run method; however, run might really be executed
                after the stopProcessing method is called if the process
                thread completes before the InputStreamPumper starts.
            </action>
      <action dev="sgoeschl" type="fix" due-to="Peter Henderson" issue="EXEC-40">
                Fixes NullPointerException in DefaultExecutor.setExitValues().
            </action>
      <action dev="sgoeschl" type="fix" due-to="Milos Kleint" issue="EXEC-33">
                Copies all data from an System.input stream to an output stream of
                the executed process.
            </action>
    </release>
    <release version="1.0" date="2009-03-15" description="First Public Release">
      <action dev="sgoeschl" type="fix" due-to="Sebastien Bazley" issue="EXEC-37">
                Removed useless synchronized statement in
                OpenVmsProcessingEnvironment.createProcEnvironment
            </action>
      <action dev="sgoeschl" type="fix" issue="EXEC-33">
                Using System.in for child process will actually hang your application -
                see JIRA for more details. Since there is no easy fix an
                IllegalRuntimeException is thrown when System.in is passed.
            </action>
      <action dev="sgoeschl" type="fix" due-to="Luc Maisonobe" issue="EXEC-35">
                Fixing a few findbugs issues.
            </action>
      <action dev="sgoeschl" type="fix" due-to="Marco Ferrante" issue="EXEC-32">
                Handle null streams consistently.
            </action>
      <action dev="sgoeschl" type="fix">
                After a long discussion we decided to stick to following groupId
                "org.apache.commons" instead of "commons-exec".
            </action>
      <action dev="sgoeschl" type="fix" due-to="Kevin Jackson">
                The Ant build now works even when junit is not on the classpath
            </action>
      <action dev="sgoeschl" type="fix">
                Fixed broken "groupId" from "org.apache.commons" to "commons-exec"
            </action>
      <action dev="sgoeschl" type="fix" issue="EXEC-27" due-to="Benjamin Bentmann">
                Renamed EnvironmentUtil to EnvironmentUtils to align with other classes
                in this project and commons in general. Please note that this change
                could break existing clients (but would be rather unlikely).
            </action>
      <action dev="sgoeschl" type="fix" issue="EXEC-30" due-to="Benjamin Bentmann">
                Make environment variables respect casing rules of platforms. Under Windows
                "PATH", "Path" and "path" would access the same environment variable whereas
                the real name is "Path".
            </action>
      <action dev="sgoeschl" type="fix" issue="EXEC-31" due-to="Benjamin Bentmann">
                Invoking DefaultExecutor.execute(CommandLine command, Map environment) using
                a 'null' Map results in inheriting all environment variables of the current
                process while passing an empty map implies starting the new process with no
                environment variables. In short 'null' is not the same as an empty map.
            </action>
      <action dev="sgoeschl" type="add" issue="EXEC-26" due-to="Benjamin Bentmann">
                Added one additional test : DefaultExecutorTest.testExecuteWithFancyArg
            </action>
      <action dev="sgoeschl" issue="EXEC-25" type="fix">
                Using variable substitution within CommandLine broke the regression tests
                under Windows. Found also another bug when calling CommandLine.getExecutable()
                the result was not substituted at all. As a general rule we do variable
                substitution and file separator fixing on the command line executable and
                variable substitution but NO file separator fixing for the command line
                arguments.
            </action>
      <action dev="sgoeschl" type="add">
                Added convinience method to add two parameters to the CommandLine
                using one method invocation.
            </action>
      <action dev="sgoeschl" type="fix">
                Implemented better regression test for OpenVMS affecting also
                the Executor and CommandLauncher interface.
            </action>
      <action dev="sebb" type="add">
                Added test scripts for OpenVMS - he seems to be the last human
                having access to an OpenVMS box ... :-)
            </action>
      <action dev="sgoeschl" type="add" due-to="Simone Gianni,Bindul Bhowmik,Niall Pemberton,Sebastian Bazley">
                With the help of the Apache Commons community I added the first results
                of cross-OS testing.
            </action>
      <action dev="sgoeschl" type="add">
                The regression tests now also works on Windows - so it should
                work now on Linux, Windows and Mac OS X
            </action>
      <action dev="sgoeschl" type="add">
                Added DebugUtils to improve cross-platform testing.
            </action>
      <action dev="sgoeschl" type="remove">
                Removed commons-logging integration
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-62" due-to="Jeremy Lacoste">
                Made DefaultExecutor.launch() protected to enable mocking.
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-107" due-to="Niklas Gustavsson">
                Made ProcessDestroyer optional and pluggable when using Executor.
            </action>
      <action dev="sgoeschl" type="add">
                CommandLine can now expand the given command line by a user-suppied
                map. This allows to execute something like "${JAVA_HOME}/bin/java -jar ${myapp}"
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-192" due-to="Reinhold Fuereder">
                Added methods to provide pre-quoted arguments.
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-193" due-to="Reinhold Fuereder">
                Exposing a ExecuteWatchdog.destroy() to kill an asynchrounous process
                manually. This formalizes a workaround described in the JIRA
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-203">
                Extending exit value handling to support applications returning an error
                code.
            </action>
      <action dev="sgoeschl" type="fix" issue="SANDBOX-204">
                Cleaned up the source code to get rid of javadoc errors and
                unused imports.
            </action>
      <action dev="sgoeschl" type="add" issue="SANDBOX-204">
                Added a few regression tests for the watchdog since they were missing.
            </action>
    </release>
  </body>
</document>
