From 2cfd7d6bb76d8fb8c52400b854c94f2f7a1372ff Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 4 Aug 2022 19:23:18 -0700 Subject: [PATCH 1/5] add creating a driver with client config --- .../io/appium/java_client/AppiumDriver.java | 5 ++++ .../java_client/android/AndroidDriver.java | 22 +++++++++++++++ .../io/appium/java_client/ios/IOSDriver.java | 22 +++++++++++++++ .../remote/AppiumCommandExecutor.java | 27 +++++++++++++------ 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/appium/java_client/AppiumDriver.java b/src/main/java/io/appium/java_client/AppiumDriver.java index 1616053ac..0f109af2c 100644 --- a/src/main/java/io/appium/java_client/AppiumDriver.java +++ b/src/main/java/io/appium/java_client/AppiumDriver.java @@ -41,6 +41,7 @@ import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.remote.Response; import org.openqa.selenium.remote.html5.RemoteLocationContext; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import org.openqa.selenium.remote.http.HttpMethod; @@ -83,6 +84,10 @@ public AppiumDriver(HttpCommandExecutor executor, Capabilities capabilities) { this.remoteAddress = executor.getAddressOfRemoteServer(); } + public AppiumDriver(ClientConfig clientConfig, Capabilities capabilities) { + this(new AppiumCommandExecutor(MobileCommand.commandRepository, clientConfig), capabilities); + } + public AppiumDriver(URL remoteAddress, Capabilities capabilities) { this(new AppiumCommandExecutor(MobileCommand.commandRepository, remoteAddress), capabilities); diff --git a/src/main/java/io/appium/java_client/android/AndroidDriver.java b/src/main/java/io/appium/java_client/android/AndroidDriver.java index 741a4b9f9..73dfd6761 100644 --- a/src/main/java/io/appium/java_client/android/AndroidDriver.java +++ b/src/main/java/io/appium/java_client/android/AndroidDriver.java @@ -51,6 +51,7 @@ import org.openqa.selenium.Platform; import org.openqa.selenium.remote.HttpCommandExecutor; import org.openqa.selenium.remote.html5.RemoteLocationContext; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -182,6 +183,27 @@ public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities capabili super(httpClientFactory, ensurePlatformName(capabilities, ANDROID_PLATFORM)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = UiAutomator2Options options = new UiAutomator2Options(); + * driver = new AndroidDriver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public AndroidDriver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensurePlatformName(capabilities, ANDROID_PLATFORM)); + } + /** * Creates a new instance based on {@code capabilities}. * diff --git a/src/main/java/io/appium/java_client/ios/IOSDriver.java b/src/main/java/io/appium/java_client/ios/IOSDriver.java index 01a848b87..7fef364e6 100644 --- a/src/main/java/io/appium/java_client/ios/IOSDriver.java +++ b/src/main/java/io/appium/java_client/ios/IOSDriver.java @@ -48,6 +48,7 @@ import org.openqa.selenium.remote.HttpCommandExecutor; import org.openqa.selenium.remote.Response; import org.openqa.selenium.remote.html5.RemoteLocationContext; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -171,6 +172,27 @@ public IOSDriver(HttpClient.Factory httpClientFactory, Capabilities capabilities super(httpClientFactory, ensurePlatformName(capabilities, PLATFORM_NAME)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = XCUITestOptions options = new XCUITestOptions(); + * driver = new IOSDriver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public IOSDriver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensurePlatformName(capabilities, PLATFORM_NAME)); + } + /** * Creates a new instance based on {@code capabilities}. * diff --git a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java index 463e14c38..2f2d87ebb 100644 --- a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java +++ b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java @@ -62,24 +62,35 @@ public class AppiumCommandExecutor extends HttpCommandExecutor { private AppiumCommandExecutor(Map additionalCommands, DriverService service, URL addressOfRemoteServer, - HttpClient.Factory httpClientFactory) { + HttpClient.Factory httpClientFactory, + ClientConfig clientConfig) { super(additionalCommands, - ClientConfig.defaultConfig() - .baseUrl(Require.nonNull("Server URL", ofNullable(service) - .map(DriverService::getUrl) - .orElse(addressOfRemoteServer))) - .readTimeout(DEFAULT_READ_TIMEOUT), httpClientFactory); + clientConfig != null ? + clientConfig : + ClientConfig.defaultConfig() + .baseUrl(Require.nonNull("Server URL", ofNullable(service) + .map(DriverService::getUrl) + .orElse(addressOfRemoteServer))) + .readTimeout(DEFAULT_READ_TIMEOUT), + httpClientFactory != null ? + httpClientFactory : + getDefaultClientFactory() + ); serviceOptional = ofNullable(service); } public AppiumCommandExecutor(Map additionalCommands, DriverService service, HttpClient.Factory httpClientFactory) { - this(additionalCommands, checkNotNull(service), null, httpClientFactory); + this(additionalCommands, checkNotNull(service), null, httpClientFactory, null); } public AppiumCommandExecutor(Map additionalCommands, URL addressOfRemoteServer, HttpClient.Factory httpClientFactory) { - this(additionalCommands, null, checkNotNull(addressOfRemoteServer), httpClientFactory); + this(additionalCommands, null, checkNotNull(addressOfRemoteServer), httpClientFactory, null); + } + + public AppiumCommandExecutor(Map additionalCommands, ClientConfig clientConfig) { + this(additionalCommands, null, checkNotNull(clientConfig.baseUrl()), null, clientConfig); } public AppiumCommandExecutor(Map additionalCommands, From 287e4327e9beec57cac1ddb97dc9e15318bb230c Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 4 Aug 2022 19:34:01 -0700 Subject: [PATCH 2/5] add others --- .../appium/java_client/gecko/GeckoDriver.java | 22 ++++++++++++++++++ .../io/appium/java_client/mac/Mac2Driver.java | 23 +++++++++++++++++++ .../java_client/safari/SafariDriver.java | 23 +++++++++++++++++++ .../java_client/windows/WindowsDriver.java | 23 +++++++++++++++++++ 4 files changed, 91 insertions(+) diff --git a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java index bd85fcfc9..b6139cd7f 100644 --- a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java +++ b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java @@ -22,6 +22,7 @@ import io.appium.java_client.service.local.AppiumServiceBuilder; import org.openqa.selenium.Capabilities; import org.openqa.selenium.remote.HttpCommandExecutor; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -73,6 +74,27 @@ public GeckoDriver(HttpClient.Factory httpClientFactory, Capabilities capabiliti super(httpClientFactory, ensureAutomationName(capabilities, AUTOMATION_NAME)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = GeckoOptions options = new GeckoOptions(); + * driver = new GeckoDriver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public GeckoDriver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensureAutomationName(capabilities, AUTOMATION_NAME)); + } + public GeckoDriver(Capabilities capabilities) { super(ensureAutomationName(capabilities, AUTOMATION_NAME)); } diff --git a/src/main/java/io/appium/java_client/mac/Mac2Driver.java b/src/main/java/io/appium/java_client/mac/Mac2Driver.java index a65497eaa..c74ff9559 100644 --- a/src/main/java/io/appium/java_client/mac/Mac2Driver.java +++ b/src/main/java/io/appium/java_client/mac/Mac2Driver.java @@ -25,6 +25,7 @@ import org.openqa.selenium.Capabilities; import org.openqa.selenium.Platform; import org.openqa.selenium.remote.HttpCommandExecutor; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -84,6 +85,28 @@ public Mac2Driver(HttpClient.Factory httpClientFactory, Capabilities capabilitie capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = Mac2Options options = new Mac2Options(); + * driver = new Mac2Driver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public Mac2Driver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensurePlatformAndAutomationNames( + capabilities, PLATFORM_NAME, AUTOMATION_NAME)); + } + public Mac2Driver(Capabilities capabilities) { super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } diff --git a/src/main/java/io/appium/java_client/safari/SafariDriver.java b/src/main/java/io/appium/java_client/safari/SafariDriver.java index c32d36b05..b7a24c314 100644 --- a/src/main/java/io/appium/java_client/safari/SafariDriver.java +++ b/src/main/java/io/appium/java_client/safari/SafariDriver.java @@ -23,6 +23,7 @@ import org.openqa.selenium.Capabilities; import org.openqa.selenium.Platform; import org.openqa.selenium.remote.HttpCommandExecutor; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -81,6 +82,28 @@ public SafariDriver(HttpClient.Factory httpClientFactory, Capabilities capabilit capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = SafariOptions options = new SafariOptions(); + * driver = new SafariDriver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public SafariDriver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensurePlatformAndAutomationNames( + capabilities, PLATFORM_NAME, AUTOMATION_NAME)); + } + public SafariDriver(Capabilities capabilities) { super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } diff --git a/src/main/java/io/appium/java_client/windows/WindowsDriver.java b/src/main/java/io/appium/java_client/windows/WindowsDriver.java index 00b21a1ed..811ef5807 100644 --- a/src/main/java/io/appium/java_client/windows/WindowsDriver.java +++ b/src/main/java/io/appium/java_client/windows/WindowsDriver.java @@ -28,6 +28,7 @@ import org.openqa.selenium.Capabilities; import org.openqa.selenium.Platform; import org.openqa.selenium.remote.HttpCommandExecutor; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import java.net.URL; @@ -79,6 +80,28 @@ public WindowsDriver(HttpClient.Factory httpClientFactory, Capabilities capabili capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } + /** + * Creates a new instance based on the given ClientConfig and {@code capabilities}. + * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * + * Example: + * + * ClientConfig clientConfig = ClientConfig.defaultConfig() + * .baseUri(URI.create("WebDriver URL")) + * .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080))) + * .readTimeout(Duration.ofMinutes(5)); + * options = WindowsOptions options = new WindowsOptions(); + * driver = new WindowsDriver(clientConfig, options); + * + * @param clientConfig take a look at {@link ClientConfig} + * @param capabilities take a look at {@link Capabilities} + * + */ + public WindowsDriver(ClientConfig clientConfig, Capabilities capabilities) { + super(clientConfig, ensurePlatformAndAutomationNames( + capabilities, PLATFORM_NAME, AUTOMATION_NAME)); + } + public WindowsDriver(Capabilities capabilities) { super(ensurePlatformAndAutomationNames(capabilities, PLATFORM_NAME, AUTOMATION_NAME)); } From 8b2a01269b45645c2dde6a8e903106b2542bcc6e Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 4 Aug 2022 19:53:20 -0700 Subject: [PATCH 3/5] fix lint --- .../remote/AppiumCommandExecutor.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java index 2f2d87ebb..46f465745 100644 --- a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java +++ b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java @@ -65,16 +65,16 @@ private AppiumCommandExecutor(Map additionalCommands, Drive HttpClient.Factory httpClientFactory, ClientConfig clientConfig) { super(additionalCommands, - clientConfig != null ? - clientConfig : - ClientConfig.defaultConfig() - .baseUrl(Require.nonNull("Server URL", ofNullable(service) - .map(DriverService::getUrl) - .orElse(addressOfRemoteServer))) - .readTimeout(DEFAULT_READ_TIMEOUT), - httpClientFactory != null ? - httpClientFactory : - getDefaultClientFactory() + clientConfig != null + ? clientConfig + : ClientConfig.defaultConfig() + .baseUrl(Require.nonNull("Server URL", ofNullable(service) + .map(DriverService::getUrl) + .orElse(addressOfRemoteServer))) + .readTimeout(DEFAULT_READ_TIMEOUT), + httpClientFactory != null + ? httpClientFactory + : getDefaultClientFactory() ); serviceOptional = ofNullable(service); } From 8b82004cbf5989524db3afd3a731fd87175efdaf Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Thu, 4 Aug 2022 23:42:08 -0700 Subject: [PATCH 4/5] tweak javadocc --- .../java_client/android/AndroidDriver.java | 16 +++++++++------- .../io/appium/java_client/gecko/GeckoDriver.java | 16 +++++++++------- .../io/appium/java_client/ios/IOSDriver.java | 16 +++++++++------- .../io/appium/java_client/mac/Mac2Driver.java | 16 +++++++++------- .../appium/java_client/safari/SafariDriver.java | 16 +++++++++------- .../java_client/windows/WindowsDriver.java | 16 +++++++++------- 6 files changed, 54 insertions(+), 42 deletions(-) diff --git a/src/main/java/io/appium/java_client/android/AndroidDriver.java b/src/main/java/io/appium/java_client/android/AndroidDriver.java index 73dfd6761..76810cac3 100644 --- a/src/main/java/io/appium/java_client/android/AndroidDriver.java +++ b/src/main/java/io/appium/java_client/android/AndroidDriver.java @@ -186,15 +186,17 @@ public AndroidDriver(HttpClient.Factory httpClientFactory, Capabilities capabili /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = UiAutomator2Options options = new UiAutomator2Options();
-     *  driver = new AndroidDriver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * UiAutomator2Options options = new UiAutomator2Options();
+     * AndroidDriver driver = new AndroidDriver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} diff --git a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java index b6139cd7f..43d2072c8 100644 --- a/src/main/java/io/appium/java_client/gecko/GeckoDriver.java +++ b/src/main/java/io/appium/java_client/gecko/GeckoDriver.java @@ -77,15 +77,17 @@ public GeckoDriver(HttpClient.Factory httpClientFactory, Capabilities capabiliti /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = GeckoOptions options = new GeckoOptions();
-     *  driver = new GeckoDriver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * GeckoOptions options = new GeckoOptions();
+     * GeckoDriver driver = new GeckoDriver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} diff --git a/src/main/java/io/appium/java_client/ios/IOSDriver.java b/src/main/java/io/appium/java_client/ios/IOSDriver.java index 7fef364e6..18ecf3065 100644 --- a/src/main/java/io/appium/java_client/ios/IOSDriver.java +++ b/src/main/java/io/appium/java_client/ios/IOSDriver.java @@ -175,15 +175,17 @@ public IOSDriver(HttpClient.Factory httpClientFactory, Capabilities capabilities /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = XCUITestOptions options = new XCUITestOptions();
-     *  driver = new IOSDriver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * XCUITestOptions options = new XCUITestOptions();
+     * IOSDriver driver = new IOSDriver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} diff --git a/src/main/java/io/appium/java_client/mac/Mac2Driver.java b/src/main/java/io/appium/java_client/mac/Mac2Driver.java index c74ff9559..b76de5943 100644 --- a/src/main/java/io/appium/java_client/mac/Mac2Driver.java +++ b/src/main/java/io/appium/java_client/mac/Mac2Driver.java @@ -88,15 +88,17 @@ public Mac2Driver(HttpClient.Factory httpClientFactory, Capabilities capabilitie /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = Mac2Options options = new Mac2Options();
-     *  driver = new Mac2Driver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * Mac2Options options = new Mac2Options();
+     * Mac2Driver driver = new Mac2Driver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} diff --git a/src/main/java/io/appium/java_client/safari/SafariDriver.java b/src/main/java/io/appium/java_client/safari/SafariDriver.java index b7a24c314..0b8a8400d 100644 --- a/src/main/java/io/appium/java_client/safari/SafariDriver.java +++ b/src/main/java/io/appium/java_client/safari/SafariDriver.java @@ -85,15 +85,17 @@ public SafariDriver(HttpClient.Factory httpClientFactory, Capabilities capabilit /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = SafariOptions options = new SafariOptions();
-     *  driver = new SafariDriver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * SafariOptions options = new SafariOptions();
+     * SafariDriver driver = new SafariDriver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} diff --git a/src/main/java/io/appium/java_client/windows/WindowsDriver.java b/src/main/java/io/appium/java_client/windows/WindowsDriver.java index 811ef5807..82af6e02d 100644 --- a/src/main/java/io/appium/java_client/windows/WindowsDriver.java +++ b/src/main/java/io/appium/java_client/windows/WindowsDriver.java @@ -83,15 +83,17 @@ public WindowsDriver(HttpClient.Factory httpClientFactory, Capabilities capabili /** * Creates a new instance based on the given ClientConfig and {@code capabilities}. * The HTTP client is default client generated by {@link HttpCommandExecutor#getDefaultClientFactory}. + * For example: * - * Example: + *
      *
-     *  ClientConfig clientConfig = ClientConfig.defaultConfig()
-     *    .baseUri(URI.create("WebDriver URL"))
-     *    .proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("your.proxy.ip", 8080)))
-     *    .readTimeout(Duration.ofMinutes(5));
-     *    options = WindowsOptions options = new WindowsOptions();
-     *  driver = new WindowsDriver(clientConfig, options);
+     * ClientConfig clientConfig = ClientConfig.defaultConfig()
+     *     .baseUri(URI.create("WebDriver URL"))
+     *     .readTimeout(Duration.ofMinutes(5));
+     * WindowsOptions options = new WindowsOptions();
+     * WindowsDriver driver = new WindowsDriver(clientConfig, options);
+     *
+     * 
* * @param clientConfig take a look at {@link ClientConfig} * @param capabilities take a look at {@link Capabilities} From bd780ce63472ff07231cceea15495c9b2fee3164 Mon Sep 17 00:00:00 2001 From: Kazuaki Matsuo Date: Fri, 5 Aug 2022 09:36:32 -0700 Subject: [PATCH 5/5] use ofNullable and orElse/Get --- .../remote/AppiumCommandExecutor.java | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java index 46f465745..01c551fb4 100644 --- a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java +++ b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java @@ -65,16 +65,14 @@ private AppiumCommandExecutor(Map additionalCommands, Drive HttpClient.Factory httpClientFactory, ClientConfig clientConfig) { super(additionalCommands, - clientConfig != null - ? clientConfig - : ClientConfig.defaultConfig() - .baseUrl(Require.nonNull("Server URL", ofNullable(service) - .map(DriverService::getUrl) - .orElse(addressOfRemoteServer))) - .readTimeout(DEFAULT_READ_TIMEOUT), - httpClientFactory != null - ? httpClientFactory - : getDefaultClientFactory() + ofNullable(clientConfig).orElse( + ClientConfig.defaultConfig() + .baseUrl(Require.nonNull("Server URL", ofNullable(service) + .map(DriverService::getUrl) + .orElse(addressOfRemoteServer))) + .readTimeout(DEFAULT_READ_TIMEOUT) + ), + ofNullable(httpClientFactory).orElseGet(HttpCommandExecutor::getDefaultClientFactory) ); serviceOptional = ofNullable(service); }