
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.

Apache Commons Exec 1.6.0 Release Notes
---------------------------------------

The Apache Commons Exec team is pleased to announce the release of Apache Commons Exec 1.6.0.

Apache Commons Exec is a library that reliably executes external processes from within the JVM.

This is a feature and maintenance release. Java 8 or later is required.

Changes in this version include:

New features:
o            TimeoutObserver now extends Consumer<Watchdog>. Thanks to Gary Gregory.
o            Add org.apache.commons.exec.Watchdog.getTimeout(). Thanks to Gary Gregory.

Fixed Bugs:
o            Watchdog.builder().get() now uses a default timeout of 30 seconds instead of throwing a NullPointerException. Thanks to Gary Gregory.
o            ExecuteWatchdog.builder().get() now uses a default timeout of 30 seconds instead of throwing a NullPointerException. Thanks to Gary Gregory.
o            Calling org.apache.commons.exec.Watchdog.Builder.setTimeout(Duration) with null now resets to the default INFINITE_TIMEOUT_DURATION timeout. Thanks to Gary Gregory.
o            Calling org.apache.commons.exec.ExecuteWatchdog.Builder.setTimeout(Duration) with null now resets to the default INFINITE_TIMEOUT_DURATION timeout. Thanks to Gary Gregory.
o            Calling org.apache.commons.exec.Watchdog.Builder.setThreadFactory(ThreadFactory) with null now resets to the default java.util.concurrent.Executors.defaultThreadFactory(). Thanks to Gary Gregory.
o            Calling org.apache.commons.exec.ExecuteWatchdog.Builder.setThreadFactory(ThreadFactory) with null now resets to the default java.util.concurrent.Executors.defaultThreadFactory(). Thanks to Gary Gregory.
o            Fix Checkstyle issues. Thanks to Gary Gregory.
o            Fix StringUtils.quoteArgument(String) when input contains single and double quotes #309. Thanks to Xin Wang, Sebb, Gary Gregory.
o            Fix Apache RAT plugin console warnings. Thanks to Gary Gregory.

Changes:
o            Bump org.apache.commons:commons-parent from 83 to 93 #299, #308, #314, #316. Thanks to Dependabot, Gary Gregory.
o            Bump org.apache.commons:commons-lang3 from 3.17.0 to 3.20.0 #282. Thanks to Dependabot, Gary Gregory.


Historical list of changes: https://commons.apache.org/proper/commons-exec//changes.html

For complete information on Apache Commons Exec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Exec website:

https://commons.apache.org/proper/commons-exec/

Download page: https://commons.apache.org/proper/commons-exec//download_exec.cgi

Have fun!
-Apache Commons Team

=============================================================================

Apache Commons Exec 1.5.0 Release Notes
---------------------------------------

The Apache Commons Exec team is pleased to announce the release of Apache Commons Exec 1.5.0.

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Maintenance and feature Release (Java 8 or above)

Changes in this version include:

New features:
o            Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory.
o            Add CommandLine.CommandLine(Path). Thanks to Gary Gregory.
o            Add Executor.getWorkingDirectoryPath(). Thanks to Gary Gregory.
o            Add DefaultExecutor.Builder.setWorkingDirectory(Path). Thanks to Gary Gregory.
o            Add CommandLauncher.exec(CommandLine, Map<String, String>, Path). Thanks to Gary Gregory.

Fixed Bugs:
o EXEC-122:  Document PumpStreamHandler stream thread-safety requirements. Thanks to Marcono1234.
o            Fix CI only running on Ubuntu and improve OS-specific tests #143. Thanks to Marcono1234.
o            Fix PMD UnnecessaryFullyQualifiedName in DefaultExecutor. Thanks to Gary Gregory.
o            Fix PMD EmptyCatchBlock by allowing commented blocks. Thanks to Gary Gregory.
o            Fix PMD EmptyControlStatement by allowing commented blocks. Thanks to Gary Gregory.
o            Replace OS.OS_* use of Locale.ENGLISH with Locale.ROOT. Thanks to Gary Gregory.
o            Deprecate DebugUtils.DebugUtils(). Thanks to Gary Gregory.
o            Deprecate MapUtils.MapUtils(). Thanks to Gary Gregory.
o            Deprecate StringUtils.StringUtils(). Thanks to Gary Gregory.
o            Fix Javadoc warnings. Thanks to Gary Gregory.
o            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]. Thanks to Gary Gregory, SpotBugs.
o            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]. Thanks to Gary Gregory, SpotBugs.

Changes:
o            Bump org.apache.commons:commons-parent from 65 to 83 #174, #204, #212, #214, #219, #223, #226, #233, #253. Thanks to Dependabot, Gary Gregory.

Removed:
o            Remove obsolete and unmaintained Ant build file. Thanks to Gary Gregory.

Historical list of changes: https://commons.apache.org/proper/commons-exec//changes.html

For complete information on Apache Commons Exec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Exec website:

https://commons.apache.org/proper/commons-exec/

Download page: https://commons.apache.org/proper/commons-exec//download_exec.cgi

Have fun!
-Apache Commons Team

=============================================================================

Apache Commons Exec
Version 1.4.0
Release Notes

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Maintenance and feature Release (Java 8 or above)

Changes in this version include:

New features:
o            Add ShutdownHookProcessDestroyer.isEmpty(). Thanks to Gary Gregory.
o            Add DefaultExecuteResultHandler.waitFor(Duration). Thanks to Gary Gregory.
o            Add Watchdog.Watchdog(Duration). Thanks to Gary Gregory.
o            Add ExecuteWatchdog.ExecuteWatchdog(Duration). Thanks to Gary Gregory.
o            Add PumpStreamHandler.setStopTimeout(Duration) and deprecate PumpStreamHandler.setStopTimeout(long). Thanks to Gary Gregory.
o            Add DefaultExecutor.Builder. Thanks to Gary Gregory.
o            Add DaemonExecutor.Builder. Thanks to Gary Gregory.
o            Add ExecuteWatchdog.Builder. Thanks to Gary Gregory.
o            Add Watchdog.Builder. Thanks to Gary Gregory.

Fixed Bugs:
o EXEC-105:  Fix code snippet in tutorial page. Thanks to Dimitrios Efthymiou.
o EXEC-100:  Sync org.apache.commons.exec.OS with the newest Ant source file.
o EXEC-64:   DefaultExecutor swallows IOException cause instead of propagating it (work-round for Java 1.5). Thanks to Michael Vorburger.
o            Java-style Array declaration and remove empty finally block #26. Thanks to nullptr.
o            Use JUnit 5 assertThrows() #72. Thanks to John Patrick.
o            [StepSecurity] ci: Harden GitHub Actions #107. Thanks to step-security-bot, Gary Gregory.
o            Port from JUnit 4 to 5. Thanks to Gary Gregory.
o            [Javadoc] CommandLine.toCleanExecutable(final String dirtyExecutable) IllegalArgumentException #61. Thanks to ArdenL-Liu, Gary Gregory.
o            ExecuteException propagates its cause to its IOException superclass. Thanks to Gary Gregory.
o            Propagate exception in DebugUtils.handleException(String, Exception). Thanks to Gary Gregory.
o            Deprecate StringUtils.toString(String[], String) in favor of String.join(CharSequence, CharSequence...). Thanks to Gary Gregory.
o EXEC-78:   No need to use System.class.getMethod("getenv",...) any more.
o EXEC-70:   Delegate thread creation to java.util.concurrent.ThreadFactory.
o            Avoid NullPointerException in MapUtils.prefix(Map, String). Thanks to Gary Gregory.

Changes:
o            Bump github actions #52. Thanks to Gary Gregory, Dependabot.
o EXEC-111:  Update from Java 5 to 6. Thanks to Gary Gregory.
o            Update from Java 7 to 8. Thanks to Gary Gregory.
o            Bump actions/cache from 2 to 3.0.11 #48, #51, #55, #69. Thanks to Gary Gregory.
o            Bump actions/checkout from 2.3.2 to 3.1.0 #24, #46, #68. Thanks to Dependabot, Gary Gregory.
o            Bump actions/setup-java from 1.4.0 to 3.8.0 #21, #50, #70, #78. Thanks to Dependabot, Gary Gregory.
o            Bump junit from 4.13 to 5.9.1 Vintage #23, #33. Thanks to Dependabot.
o            Bump maven-pmd-plugin from 2.7.1 to 3.19.0 #45, #62. Thanks to Dependabot.
o            Bump maven-checkstyle-plugin from 2.13 to 3.2.0 #29, #60. Thanks to Dependabot.
o            Bump commons-parent from 52 to 65, #49, #65, #79, #88, #105, #137. Thanks to Dependabot, Gary Gregory.
o            Bump japicmp-maven-plugin from 0.15.6 to 0.16.0. Thanks to Gary Gregory.

Removed:
o            Deprecate DefaultExecuteResultHandler.waitFor(long). Thanks to Gary Gregory.
o            Deprecate ExecuteWatchdog.ExecuteWatchdog(long). Thanks to Gary Gregory.
o            Deprecate Watchdog.Watchdog(long). Thanks to Gary Gregory.
o            Drop obsolete and unmaintained Ant build. Thanks to Gary Gregory.
o            Drop CLIRR plugin, replaced by JApiCmp. Thanks to Gary Gregory.

Historical list of changes: https://commons.apache.org/proper/commons-exec/changes.html

For complete information on Apache Commons Exec, including instructions on how to submit bug reports,
patches, or suggestions for improvement, see the Apache Commons Exec website:

https://commons.apache.org/proper/commons-exec/

Download page: https://commons.apache.org/proper/commons-exec//download_exec.cgi

Have fun!
-Apache Commons Team

=============================================================================

              Apache Commons Exec 1.3 RELEASE NOTES

The Apache Commons Exec team is pleased to announce the commons-exec-1.3 release!

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Changes in this version include:

New features:
o DefaultExecutor async execute prevents shutdown hooks running.  
  Issue: EXEC-69. Thanks to Richard Atkins, Michael Vorburger. 

Fixed Bugs:
o Remove remaining raw types, unchecked conversions  
  Issue: EXEC-81. Thanks to Stephen Compall.
   
o NPE in EnvironmentUtils.toString(map)  
  Issue: EXEC-80. 

Changes:
o No need to use System.class.getMethod("getenv",...) any more  
  Issue: EXEC-78.
   
o Update JUnit dependency to 4.11  
  Issue: EXEC-77.
   
o Update to Java 5  
  Issue: EXEC-76. 


Have fun!
-Apache Commons Exec team

=============================================================================

              Apache Commons Exec 1.2 RELEASE NOTES

The Apache Commons Exec team is pleased to announce the Apache commons-exec-1.2 release!

Apache Commons Exec is a library to reliably execute external processes from within the JVM.

Feature and fix release. Requires a minimum of Java 1.3.

Changes in this version include:

New features:

o Set names for started threads.  Issue: EXEC-55. Thanks to Dominik Stadler. 

Fixed Bugs:

o Issue: EXEC-68. 
  Watchdog kills process immediately if timeout is too large. 
  Thanks to Joel McCance. 
  
o Issue: EXEC-57. 
  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. 
  Thanks to Nickolay Martinov.
   
o Issue: EXEC-60. 
  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). 
  Thanks to Peter Kofler.
   
o Issue: EXEC-52. 
  Tests fail on HP-UX, because it uses a different syntax for the ping command. 
  Thanks to Nickolay Martinov.
   
o Issue: EXEC-49. 
  "Write dead end" IOException when using Piped streams w/PumpStreamHandler.
  When encountering a PipedOutputStream we will automatically close it to avoid the exception.  
  Thanks to Kevin Telford. 
  
o Issue: EXEC-34. 
  Race condition prevent watchdog working using ExecuteStreamHandler.
  Patch submittd by Kristian Rosenvold. 
  Thanks to Marco Ferrante. 

For complete information on Apache Commons Exec, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Exec website:

https://commons.apache.org/proper/commons-exec/


Have fun!
-Apache Commons Exec team

=============================================================================

