diff --git a/src/main/java/io/appium/java_client/service/local/AppiumDriverLocalService.java b/src/main/java/io/appium/java_client/service/local/AppiumDriverLocalService.java index cc1c77ad5..d4cedc033 100644 --- a/src/main/java/io/appium/java_client/service/local/AppiumDriverLocalService.java +++ b/src/main/java/io/appium/java_client/service/local/AppiumDriverLocalService.java @@ -44,6 +44,7 @@ import java.time.Duration; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantLock; import java.util.function.BiConsumer; @@ -70,7 +71,7 @@ public final class AppiumDriverLocalService extends DriverService { private final ListOutputStream stream = new ListOutputStream().add(System.out); private final URL url; private String basePath; - + private CommandLine process = null; AppiumDriverLocalService(String ipAddress, File nodeJSExec, @@ -294,6 +295,16 @@ public void addOutPutStreams(List outputStreams) { } } + /** + * Remove the outputStream which is receiving server output data. + * + * @return the outputStream has been removed if it is present + */ + public Optional removeOutPutStream(OutputStream outputStream) { + checkNotNull(outputStream, "outputStream parameter is NULL!"); + return stream.remove(outputStream); + } + /** * Remove all existing server output streams. * diff --git a/src/main/java/io/appium/java_client/service/local/ListOutputStream.java b/src/main/java/io/appium/java_client/service/local/ListOutputStream.java index 6586d5cc1..89820f70a 100644 --- a/src/main/java/io/appium/java_client/service/local/ListOutputStream.java +++ b/src/main/java/io/appium/java_client/service/local/ListOutputStream.java @@ -20,6 +20,7 @@ import java.io.OutputStream; import java.util.ArrayList; import java.util.List; +import java.util.Optional; class ListOutputStream extends OutputStream { @@ -30,6 +31,10 @@ ListOutputStream add(OutputStream stream) { return this; } + Optional remove(OutputStream stream) { + return streams.remove(stream) ? Optional.of(stream) : Optional.empty(); + } + @Override public void write(int i) throws IOException { for (OutputStream stream : streams) { stream.write(i);