Changes Report

Release History

VersionDateDescription
1.1.1-SNAPSHOTTBABugfixing Release
1.12010-10-08Maintenance Release
1.0.12009-09-28Maintenance Release
1.02009-03-15First Public Release


Release 1.1.1-SNAPSHOT - TBA

TypeChangesBy
fixWatchdog kills process immediately if timeout is too large. Fixes EXEC-68. Thanks to Joel McCance.ggregory
fixApplied the patch from Nickolay Martinov but the timeout disguises the fact that the process might be still runnung - therefore added a sanity check in order to throw an exception if the the timeout for join() was exceeded. Fixes EXEC-57. Thanks to Nickolay Martinov.sgoeschl
fixFixed dead lock by calling the timeout observers outside of the synchronized block thereby removing on pre-requisite 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). Fixes EXEC-60. Thanks to Peter Kofler.sgoeschl
addSet names for started threads. Fixes EXEC-55. Thanks to Dominik Stadler.sgoeschl
fixTests fail on HP-UX, because it uses a different syntax for the ping command. Fixes EXEC-52. Thanks to Nickolay Martinov.sebb
fix"Write dead end" IOException when using Piped streams w/PumpStreamHandler. When encountering a PipedOutputStream we will automatically close it to avoid the exception. Fixes EXEC-49. Thanks to Kevin Telford.sgoeschl
fixRace condition prevent watchdog working using ExecuteStreamHandler. Patch submitted by Kristian Rosenvold. Fixes EXEC-34. Thanks to Marco Ferrante.simonetripodi

Release 1.1 - 2010-10-08

TypeChangesBy
fixOpenVMS now uses symbols instead of logicals for environment variables.sebb
addAdding 'Argument' class and quote the arguments after expansion.sgoeschl
addReverting changes of [EXEC-41] because the patch does not fix the problem. Also added test case for the broken patch.sgoeschl
addAdded TutorialTest as a playground for new user and removed similar code from DefaultExecutorTest.sgoeschl
fixString substitution handles now java.io.File instances in order to create a cross-platform file name.sgoeschl
fixThe 'forever.bat' accidentally overwrite the 'forever.txt' instead of appending.sgoeschl
updateDefaultExecutor() now sets the working directory with the current working directory.sgoeschl
updateAdded 'DefaultExecutorTest#testStdInHandling' to show how commons-exec can feed the 'stdin' of a child process.sgoeschl
updateImproved the documentation. Fixes EXEC-42. Thanks to Konrad Windzus.sgoeschl
updateAdded 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. Fixes EXEC-41. Thanks to Ernest Mishkin.sgoeschl
fixProcess.waitFor should clear interrupt status when throwing InterruptedException Fixes EXEC-46. Thanks to Zimmermann Nir.sgoeschl
updateAdded 'DefaultExecuteResultHandler'sgoeschl
updateAdded a new section to the tutorial to show working with asynchronous processes. Thanks to Pablo for providing this documentation update. Fixes EXEC-42. Thanks to Pablo Hoertner.sgoeschl
fixBecause 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. Fixes EXEC-44.sgoeschl

Release 1.0.1 - 2009-09-28

TypeChangesBy
fixOn 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. Fixes EXEC-33.henrib
fixFixes NPE in DefaultExecutor.setExitValues(). Fixes EXEC-40. Thanks to Peter Henderson.sgoeschl
fixCopies all data from an System.input stream to an output stream of the executed process. Fixes EXEC-33. Thanks to Milos Kleint.sgoeschl

Release 1.0 - 2009-03-15

TypeChangesBy
fixRemoved useless synchronized statement in OpenVmsProcessingEnvironment.createProcEnvironment Fixes EXEC-37. Thanks to Sebastien Bazley.sgoeschl
fixUsing 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. Fixes EXEC-33.sgoeschl
fixFixing a few findbugs issues. Fixes EXEC-35. Thanks to Luc Maisonobe.sgoeschl
fixHandle null streams consistently. Fixes EXEC-32. Thanks to Marco Ferrante.sgoeschl
fixAfter a long discussion we decided to stick to following groupId "org.apache.commons" instead of "commons-exec".sgoeschl
fixThe Ant build now works even when junit is not on the classpath Thanks to Kevin Jackson.sgoeschl
fixFixed broken "groupId" from "org.apache.commons" to "commons-exec"sgoeschl
fixRenamed 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). Fixes EXEC-27. Thanks to Benjamin Bentmann.sgoeschl
fixMake 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". Fixes EXEC-30. Thanks to Benjamin Bentmann.sgoeschl
fixInvoking 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. Fixes EXEC-31. Thanks to Benjamin Bentmann.sgoeschl
addAdded one additional test : DefaultExecutorTest.testExecuteWithFancyArg Fixes EXEC-26. Thanks to Benjamin Bentmann.sgoeschl
fixUsing 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. Fixes EXEC-25.sgoeschl
addAdded convinience method to add two parameters to the CommandLine using one method invocation.sgoeschl
fixImplemented better regression test for OpenVMS affecting also the Executor and CommandLauncher interface.sgoeschl
addAdded test scripts for OpenVMS - he seems to be the last human having access to an OpenVMS box ... :-)sebb
addWith the help of the Apache Commons community I added the first results of cross-OS testing. Thanks to Simone Gianni,Bindul Bhowmik,Niall Pemberton,Sebastian Bazley.sgoeschl
addThe regression tests now also works on Windows - so it should work now on Linux, Windows and Mac OS Xsgoeschl
addAdded DebugUtils to improve cross-platform testing.sgoeschl
removeRemoved commons-logging integrationsgoeschl
addMade DefaultExecutor.launch() protected to enable mocking. Fixes SANDBOX-62. Thanks to Jeremy Lacoste.sgoeschl
addMade ProcessDestroyer optional and pluggable when using Executor. Fixes SANDBOX-107. Thanks to Niklas Gustavsson.sgoeschl
addCommandLine can now expand the given command line by a user-suppied map. This allows to execute something like "${JAVA_HOME}/bin/java -jar ${myapp}"sgoeschl
addAdded methods to provide pre-quoted arguments. Fixes SANDBOX-192. Thanks to Reinhold Fuereder.sgoeschl
addExposing a ExecuteWatchdog.destroy() to kill an asynchrounous process manually. This formalizes a workaround described in the JIRA Fixes SANDBOX-193. Thanks to Reinhold Fuereder.sgoeschl
addExtending exit value handling to support applications returning an error code. Fixes SANDBOX-203.sgoeschl
fixCleaned up the source code to get rid of javadoc errors and unused imports. Fixes SANDBOX-204.sgoeschl
addAdded a few regression tests for the watchdog since they were missing. Fixes SANDBOX-204.sgoeschl