<?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 | |
http://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/1.0.0" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/changes/1.0.0 http://maven.apache.org/xsd/changes-1.0.0.xsd"> | |
<properties> | |
<title>Apache Commons Exec Release Notes</title> | |
</properties> | |
<body> | |
<release version="1.4.1" date="20YY-MM-DD" description="Maintenance and feature Release (Java 8 or above)"> | |
<!-- ADD --> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add Maven property project.build.outputTimestamp for build reproducibility.</action> | |
<!-- FIX --> | |
<action dev="ggregory" type="fix" issue="EXEC-122" due-to="Marcono1234">Document PumpStreamHandler stream thread-safety requirements.</action> | |
<action dev="ggregory" type="fix" due-to="Marcono1234">Fix CI only running on Ubuntu & improve OS-specific tests #143.</action> | |
<!-- UPDATE --> | |
<action dev="ggregory" type="update" due-to="Dependabot">Bump org.apache.commons:commons-parent from 65 to 69 #174.</action> | |
</release> | |
<release version="1.4.0" date="2024-01-01" description="Maintenance and feature Release (Java 8 or above)"> | |
<!-- ADD --> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add ShutdownHookProcessDestroyer.isEmpty().</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add DefaultExecuteResultHandler.waitFor(Duration).</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add Watchdog.Watchdog(Duration).</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add ExecuteWatchdog.ExecuteWatchdog(Duration).</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add PumpStreamHandler.setStopTimeout(Duration) and deprecate PumpStreamHandler.setStopTimeout(long).</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add DefaultExecutor.Builder.</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add DaemonExecutor.Builder.</action> | |
<action dev="ggregory" type="add" due-to="Gary Gregory">Add ExecuteWatchdog.Builder.</action> | |
<action dev="ggregory" type="add" 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 dev="ggregory" type="fix" due-to="nullptr">Java-style Array declaration and remove empty finally block #26.</action> | |
<action dev="ggregory" type="fix" due-to="John Patrick">Use JUnit 5 assertThrows() #72.</action> | |
<action dev="ggregory" type="fix" due-to="step-security-bot, Gary Gregory">[StepSecurity] ci: Harden GitHub Actions #107.</action> | |
<action dev="ggregory" type="fix" due-to="Gary Gregory">Port from JUnit 4 to 5.</action> | |
<action dev="ggregory" type="fix" due-to="ArdenL-Liu, Gary Gregory">[Javadoc] CommandLine.toCleanExecutable(final String dirtyExecutable) IllegalArgumentException #61.</action> | |
<action dev="ggregory" type="fix" due-to="Gary Gregory">ExecuteException propagates its cause to its IOException superclass.</action> | |
<action dev="ggregory" type="fix" due-to="Gary Gregory">Propagate exception in DebugUtils.handleException(String, Exception).</action> | |
<action dev="ggregory" type="fix" 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 dev="ggregory" type="fix" due-to="Gary Gregory">Avoid NullPointerException in MapUtils.prefix(Map, String).</action> | |
<!-- REMOVE --> | |
<action dev="ggregory" type="remove" due-to="Gary Gregory">Deprecate DefaultExecuteResultHandler.waitFor(long).</action> | |
<action dev="ggregory" type="remove" due-to="Gary Gregory">Deprecate ExecuteWatchdog.ExecuteWatchdog(long).</action> | |
<action dev="ggregory" type="remove" due-to="Gary Gregory">Deprecate Watchdog.Watchdog(long).</action> | |
<action dev="ggregory" type="remove" due-to="Gary Gregory">Drop obsolete and unmaintained Ant build.</action> | |
<action dev="ggregory" type="remove" due-to="Gary Gregory">Drop CLIRR plugin, replaced by JApiCmp.</action> | |
<!-- UPDATE --> | |
<action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">Bump github actions #52.</action> | |
<action issue="EXEC-111" dev="ggregory" type="update" due-to="Gary Gregory">Update from Java 5 to 6.</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory">Update from Java 7 to 8.</action> | |
<action dev="ggregory" type="update" due-to="Gary Gregory">Bump actions/cache from 2 to 3.0.11 #48, #51, #55, #69.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump actions/checkout from 2.3.2 to 3.1.0 #24, #46, #68.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump actions/setup-java from 1.4.0 to 3.8.0 #21, #50, #70, #78.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot">Bump junit from 4.13 to 5.9.1 Vintage #23, #33.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot">Bump maven-pmd-plugin from 2.7.1 to 3.19.0 #45, #62.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot">Bump maven-checkstyle-plugin from 2.13 to 3.2.0 #29, #60.</action> | |
<action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">Bump commons-parent from 52 to 65, #49, #65, #79, #88, #105, #137.</action> | |
<action dev="ggregory" type="update" 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" dev="ggregory" type="add" due-to="Richard Atkins, Michael Vorburger"> | |
DefaultExecutor async execute prevents shutdown hooks running. | |
</action> | |
<action issue="EXEC-81" dev="ggregory" type="fix" date="2014-02-04" due-to="Stephen Compall"> | |
Remove remaining raw types, unchecked conversions | |
</action> | |
<action issue="EXEC-80" dev="ggregory" type="fix" 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" dev="ggregory" type="fix" 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> |