| <?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 94.</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<Watchdog>.</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<String, String>, 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> |