diff --git a/src/main/java/io/appium/java_client/AppiumBy.java b/src/main/java/io/appium/java_client/AppiumBy.java index 297e9a9b3..7e067287d 100644 --- a/src/main/java/io/appium/java_client/AppiumBy.java +++ b/src/main/java/io/appium/java_client/AppiumBy.java @@ -25,6 +25,7 @@ import java.io.Serializable; import java.util.List; +import java.util.Objects; public abstract class AppiumBy extends By implements Remotable { @@ -253,6 +254,27 @@ protected ByIosNsPredicate(String locatorString) { super("-ios predicate string", locatorString, "iOSNsPredicate"); } } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + AppiumBy appiumBy = (AppiumBy) o; + return Objects.equals(remoteParameters, appiumBy.remoteParameters) + && Objects.equals(locatorName, appiumBy.locatorName); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), remoteParameters, locatorName); + } } diff --git a/src/main/java/io/appium/java_client/CommandExecutionHelper.java b/src/main/java/io/appium/java_client/CommandExecutionHelper.java index 0a41f17b6..7abfef612 100644 --- a/src/main/java/io/appium/java_client/CommandExecutionHelper.java +++ b/src/main/java/io/appium/java_client/CommandExecutionHelper.java @@ -17,6 +17,8 @@ package io.appium.java_client; import com.google.common.collect.ImmutableMap; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.openqa.selenium.remote.Response; import javax.annotation.Nullable; @@ -26,6 +28,7 @@ import static org.openqa.selenium.remote.DriverCommand.EXECUTE_SCRIPT; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class CommandExecutionHelper { @Nullable diff --git a/src/main/java/io/appium/java_client/ErrorCodesMobile.java b/src/main/java/io/appium/java_client/ErrorCodesMobile.java index 6e7e66d69..473c014d9 100644 --- a/src/main/java/io/appium/java_client/ErrorCodesMobile.java +++ b/src/main/java/io/appium/java_client/ErrorCodesMobile.java @@ -43,6 +43,7 @@ public class ErrorCodesMobile extends ErrorCodes { * @param statusCode The status code to convert. * @return The exception type that corresponds to the provided status */ + @Override public Class getExceptionType(int statusCode) { switch (statusCode) { case NO_SUCH_CONTEXT: @@ -60,6 +61,7 @@ public Class getExceptionType(int statusCode) { * @return The exception type that corresponds to the provided error message or {@code null} if * there are no matching mobile exceptions. */ + @Override public Class getExceptionType(String message) { for (Map.Entry entry : statusToState.entrySet()) { if (message.contains(entry.getValue())) { @@ -75,6 +77,7 @@ public Class getExceptionType(String message) { * @param thrown The thrown error. * @return The corresponding status code for the given thrown error. */ + @Override public int toStatusCode(Throwable thrown) { if (thrown instanceof NoSuchContextException) { return NO_SUCH_CONTEXT; diff --git a/src/main/java/io/appium/java_client/InteractsWithApps.java b/src/main/java/io/appium/java_client/InteractsWithApps.java index 45f1c285d..d61f85b19 100644 --- a/src/main/java/io/appium/java_client/InteractsWithApps.java +++ b/src/main/java/io/appium/java_client/InteractsWithApps.java @@ -75,7 +75,7 @@ default void installApp(String appPath, @Nullable BaseInstallApplicationOptions Map args = ImmutableMap.builder() .put("appPath", appPath) .putAll(Optional.ofNullable(options).map( - (opts) -> ImmutableMap.of("options", opts.build()) + opts -> ImmutableMap.of("options", opts.build()) ).orElseGet(ImmutableMap::of)) .build(); CommandExecutionHelper.execute( @@ -169,7 +169,7 @@ default boolean removeApp(String bundleId, @Nullable BaseRemoveApplicationOption Map args = ImmutableMap.builder() .put("bundleId", bundleId) .putAll(Optional.ofNullable(options).map( - (opts) -> ImmutableMap.of("options", opts.build()) + opts -> ImmutableMap.of("options", opts.build()) ).orElseGet(ImmutableMap::of)) .build(); //noinspection RedundantCast @@ -214,7 +214,7 @@ default void activateApp(String bundleId, @Nullable BaseActivateApplicationOptio Map args = ImmutableMap.builder() .put("bundleId", bundleId) .putAll(Optional.ofNullable(options).map( - (opts) -> ImmutableMap.of("options", opts.build()) + opts -> ImmutableMap.of("options", opts.build()) ).orElseGet(ImmutableMap::of)) .build(); CommandExecutionHelper.execute( @@ -290,7 +290,7 @@ default boolean terminateApp(String bundleId, @Nullable BaseTerminateApplication Map args = ImmutableMap.builder() .put("bundleId", bundleId) .putAll(Optional.ofNullable(options).map( - (opts) -> ImmutableMap.of("options", opts.build()) + opts -> ImmutableMap.of("options", opts.build()) ).orElseGet(ImmutableMap::of)) .build(); //noinspection RedundantCast diff --git a/src/main/java/io/appium/java_client/ScreenshotState.java b/src/main/java/io/appium/java_client/ScreenshotState.java index 8c88397e5..1747a1e41 100644 --- a/src/main/java/io/appium/java_client/ScreenshotState.java +++ b/src/main/java/io/appium/java_client/ScreenshotState.java @@ -175,7 +175,7 @@ private ScreenshotState checkState(Function checkerFunc, Durati * @throws ScreenshotComparisonError if {@link #remember()} method has not been invoked yet */ public ScreenshotState verifyChanged(Duration timeout, double minScore) { - return checkState((x) -> x < minScore, timeout); + return checkState(x -> x < minScore, timeout); } /** @@ -190,7 +190,7 @@ public ScreenshotState verifyChanged(Duration timeout, double minScore) { * @throws ScreenshotComparisonError if {@link #remember()} method has not been invoked yet */ public ScreenshotState verifyNotChanged(Duration timeout, double minScore) { - return checkState((x) -> x >= minScore, timeout); + return checkState(x -> x >= minScore, timeout); } /** diff --git a/src/main/java/io/appium/java_client/Setting.java b/src/main/java/io/appium/java_client/Setting.java index b5b84ca16..cc1f44cd1 100644 --- a/src/main/java/io/appium/java_client/Setting.java +++ b/src/main/java/io/appium/java_client/Setting.java @@ -65,6 +65,7 @@ public enum Setting { this.name = name; } + @Override public String toString() { return this.name; } diff --git a/src/main/java/io/appium/java_client/android/options/app/IntentOptions.java b/src/main/java/io/appium/java_client/android/options/app/IntentOptions.java index e651a4b91..67f09f2b5 100644 --- a/src/main/java/io/appium/java_client/android/options/app/IntentOptions.java +++ b/src/main/java/io/appium/java_client/android/options/app/IntentOptions.java @@ -261,7 +261,7 @@ public IntentOptions withEi(Map ei) { private Map convertMapValues(Map map, Function converter) { return map.entrySet().stream() .collect(Collectors.toMap( - Map.Entry::getKey, (entry) -> converter.apply(String.valueOf(entry.getValue()))) + Map.Entry::getKey, entry -> converter.apply(String.valueOf(entry.getValue()))) ); } @@ -272,7 +272,7 @@ private Map convertMapValues(Map map, Function> getEi() { Optional> value = getOptionValue("ei"); - return value.map((v) -> convertMapValues(v, Integer::parseInt)); + return value.map(v -> convertMapValues(v, Integer::parseInt)); } /** @@ -292,7 +292,7 @@ public IntentOptions withEl(Map el) { */ public Optional> getEl() { Optional> value = getOptionValue("el"); - return value.map((v) -> convertMapValues(v, Long::parseLong)); + return value.map(v -> convertMapValues(v, Long::parseLong)); } /** @@ -312,7 +312,7 @@ public IntentOptions withEf(Map ef) { */ public Optional> getEf() { Optional> value = getOptionValue("ef"); - return value.map((v) -> convertMapValues(v, Float::parseFloat)); + return value.map(v -> convertMapValues(v, Float::parseFloat)); } /** @@ -356,7 +356,7 @@ public Optional> getEcn() { private static Map mergeValues(Map map) { return map.entrySet().stream() .collect( - Collectors.toMap(Map.Entry::getKey, (entry) -> ((List) entry.getValue()).stream() + Collectors.toMap(Map.Entry::getKey, entry -> ((List) entry.getValue()).stream() .map(String::valueOf) .collect(Collectors.joining(","))) ); diff --git a/src/main/java/io/appium/java_client/android/options/app/SupportsActivityOptionsOption.java b/src/main/java/io/appium/java_client/android/options/app/SupportsActivityOptionsOption.java index 393ee51c5..59d5fe520 100644 --- a/src/main/java/io/appium/java_client/android/options/app/SupportsActivityOptionsOption.java +++ b/src/main/java/io/appium/java_client/android/options/app/SupportsActivityOptionsOption.java @@ -48,6 +48,6 @@ default T setActivityOptions(ActivityOptions options) { default Optional getActivityOptions() { //noinspection unchecked return Optional.ofNullable(getCapability(ACTIVITY_OPTIONS_OPTION)) - .map((v) -> new ActivityOptions((Map) v)); + .map(v -> new ActivityOptions((Map) v)); } } diff --git a/src/main/java/io/appium/java_client/android/options/app/SupportsIntentOptionsOption.java b/src/main/java/io/appium/java_client/android/options/app/SupportsIntentOptionsOption.java index 91c2b49a2..3c0fab894 100644 --- a/src/main/java/io/appium/java_client/android/options/app/SupportsIntentOptionsOption.java +++ b/src/main/java/io/appium/java_client/android/options/app/SupportsIntentOptionsOption.java @@ -48,6 +48,6 @@ default T setIntentOptions(IntentOptions options) { default Optional getIntentOptions() { //noinspection unchecked return Optional.ofNullable(getCapability(INTENT_OPTIONS_OPTION)) - .map((v) -> new IntentOptions((Map) v)); + .map(v -> new IntentOptions((Map) v)); } } diff --git a/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdArgsOption.java b/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdArgsOption.java index 7843393e4..bca9866c0 100644 --- a/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdArgsOption.java +++ b/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdArgsOption.java @@ -56,7 +56,7 @@ default T setAvdArgs(String args) { default Optional, String>> getAvdArgs() { //noinspection unchecked return Optional.ofNullable(getCapability(AVD_ARGS_OPTION)) - .map((v) -> v instanceof List + .map(v -> v instanceof List ? Either.left((List) v) : Either.right(String.valueOf(v)) ); diff --git a/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdEnvOption.java b/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdEnvOption.java index e6d083aee..9fadb6532 100644 --- a/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdEnvOption.java +++ b/src/main/java/io/appium/java_client/android/options/avd/SupportsAvdEnvOption.java @@ -45,6 +45,6 @@ default T setAvdEnv(Map env) { default Optional> getAvdEnv() { //noinspection unchecked return Optional.ofNullable(getCapability(AVD_ENV_OPTION)) - .map((v) -> (Map) v); + .map(v -> (Map) v); } } diff --git a/src/main/java/io/appium/java_client/android/options/localization/SupportsAppLocaleOption.java b/src/main/java/io/appium/java_client/android/options/localization/SupportsAppLocaleOption.java index 40447d749..d8fafba02 100644 --- a/src/main/java/io/appium/java_client/android/options/localization/SupportsAppLocaleOption.java +++ b/src/main/java/io/appium/java_client/android/options/localization/SupportsAppLocaleOption.java @@ -51,6 +51,6 @@ default T setAppLocale(AppLocale locale) { default Optional getAppLocale() { //noinspection unchecked return Optional.ofNullable(getCapability(APP_LOCALE_OPTION)) - .map((v) -> new AppLocale((Map) v)); + .map(v -> new AppLocale((Map) v)); } } diff --git a/src/main/java/io/appium/java_client/android/options/server/EspressoBuildConfig.java b/src/main/java/io/appium/java_client/android/options/server/EspressoBuildConfig.java index 2044f0bd1..24adc5675 100644 --- a/src/main/java/io/appium/java_client/android/options/server/EspressoBuildConfig.java +++ b/src/main/java/io/appium/java_client/android/options/server/EspressoBuildConfig.java @@ -51,7 +51,7 @@ private EspressoBuildConfig assignToolsVersionsField(String name, Object value) private Optional getToolsVersionsFieldValue(String name) { Optional> toolsVersionsOptional = getOptionValue(TOOLS_VERSION); //noinspection unchecked - return toolsVersionsOptional.map((v) -> (R) v.getOrDefault(name, null)); + return toolsVersionsOptional.map(v -> (R) v.getOrDefault(name, null)); } /** diff --git a/src/main/java/io/appium/java_client/android/options/server/SupportsEspressoBuildConfigOption.java b/src/main/java/io/appium/java_client/android/options/server/SupportsEspressoBuildConfigOption.java index 93eb19831..a916ec35b 100644 --- a/src/main/java/io/appium/java_client/android/options/server/SupportsEspressoBuildConfigOption.java +++ b/src/main/java/io/appium/java_client/android/options/server/SupportsEspressoBuildConfigOption.java @@ -61,7 +61,7 @@ default T setEspressoBuildConfig(EspressoBuildConfig config) { default Optional> getEspressoBuildConfig() { return Optional.ofNullable(getCapability(ESPRESSO_BUILD_CONFIG_OPTION)) .map(String::valueOf) - .map((v) -> v.trim().startsWith("{") + .map(v -> v.trim().startsWith("{") ? Either.left(new EspressoBuildConfig(v)) : Either.right(v) ); diff --git a/src/main/java/io/appium/java_client/chromium/options/SupportsBuildCheckOption.java b/src/main/java/io/appium/java_client/chromium/options/SupportsBuildCheckOption.java index d9e95f065..204967bca 100644 --- a/src/main/java/io/appium/java_client/chromium/options/SupportsBuildCheckOption.java +++ b/src/main/java/io/appium/java_client/chromium/options/SupportsBuildCheckOption.java @@ -33,11 +33,11 @@ public interface SupportsBuildCheckOption> extends * Unless disable build check preference has been user-set, the capability * is not present because the default value is false. * - * @param BuildCheckDisabled flag for --disable-build-check. + * @param buildCheckDisabled flag for --disable-build-check. * @return self instance for chaining. */ - default T setBuildCheckDisabled(boolean BuildCheckDisabled) { - return amend(DISABLE_BUILD_CHECK, BuildCheckDisabled); + default T setBuildCheckDisabled(boolean buildCheckDisabled) { + return amend(DISABLE_BUILD_CHECK, buildCheckDisabled); } /** diff --git a/src/main/java/io/appium/java_client/imagecomparison/OccurrenceMatchingResult.java b/src/main/java/io/appium/java_client/imagecomparison/OccurrenceMatchingResult.java index 256a1636a..510f64b8e 100644 --- a/src/main/java/io/appium/java_client/imagecomparison/OccurrenceMatchingResult.java +++ b/src/main/java/io/appium/java_client/imagecomparison/OccurrenceMatchingResult.java @@ -65,7 +65,7 @@ public List getMultiple() { //noinspection unchecked List> multiple = (List>) getCommandResult().get(MULTIPLE); return multiple.stream() - .map((m) -> new OccurrenceMatchingResult(m, false)) + .map(m -> new OccurrenceMatchingResult(m, false)) .collect(Collectors.toList()); } } diff --git a/src/main/java/io/appium/java_client/internal/CapabilityHelpers.java b/src/main/java/io/appium/java_client/internal/CapabilityHelpers.java index 3645a7520..5280b8e17 100644 --- a/src/main/java/io/appium/java_client/internal/CapabilityHelpers.java +++ b/src/main/java/io/appium/java_client/internal/CapabilityHelpers.java @@ -16,6 +16,8 @@ package io.appium.java_client.internal; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.openqa.selenium.Capabilities; import javax.annotation.Nullable; @@ -26,6 +28,7 @@ import java.util.List; import java.util.function.Function; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class CapabilityHelpers { public static final String APPIUM_PREFIX = "appium:"; diff --git a/src/main/java/io/appium/java_client/internal/Config.java b/src/main/java/io/appium/java_client/internal/Config.java index fd9ef73c1..83bfb7995 100644 --- a/src/main/java/io/appium/java_client/internal/Config.java +++ b/src/main/java/io/appium/java_client/internal/Config.java @@ -58,7 +58,7 @@ public T getValue(String key, Class valueType) { * @throws ClassCastException if the retrieved value cannot be cast to `valueType` type */ public Optional getOptionalValue(String key, Class valueType) { - final Properties cachedProps = cache.computeIfAbsent(configName, (k) -> { + final Properties cachedProps = cache.computeIfAbsent(configName, k -> { try (InputStream configFileStream = getClass().getClassLoader().getResourceAsStream(configName)) { final Properties p = new Properties(); p.load(configFileStream); diff --git a/src/main/java/io/appium/java_client/internal/ReflectionHelpers.java b/src/main/java/io/appium/java_client/internal/ReflectionHelpers.java index cbaa7c796..abe16a170 100644 --- a/src/main/java/io/appium/java_client/internal/ReflectionHelpers.java +++ b/src/main/java/io/appium/java_client/internal/ReflectionHelpers.java @@ -16,19 +16,22 @@ package io.appium.java_client.internal; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.openqa.selenium.WebDriverException; import java.lang.reflect.Field; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class ReflectionHelpers { /** * Sets the given value to a private instance field. * - * @param cls The target class or a superclass. - * @param target Target instance. + * @param cls The target class or a superclass. + * @param target Target instance. * @param fieldName Target field name. - * @param newValue The value to be set. + * @param newValue The value to be set. * @return The same instance for chaining. */ public static T setPrivateFieldValue(Class cls, T target, String fieldName, Object newValue) { @@ -45,8 +48,8 @@ public static T setPrivateFieldValue(Class cls, T target, String fieldNam /** * Fetches the value of a private instance field. * - * @param cls The target class or a superclass. - * @param target Target instance. + * @param cls The target class or a superclass. + * @param target Target instance. * @param fieldName Target field name. * @param fieldType Field type. * @return The retrieved field value. diff --git a/src/main/java/io/appium/java_client/internal/SessionHelpers.java b/src/main/java/io/appium/java_client/internal/SessionHelpers.java index b3b9f0eca..c028bdfb5 100644 --- a/src/main/java/io/appium/java_client/internal/SessionHelpers.java +++ b/src/main/java/io/appium/java_client/internal/SessionHelpers.java @@ -16,7 +16,9 @@ package io.appium.java_client.internal; +import lombok.AccessLevel; import lombok.Data; +import lombok.NoArgsConstructor; import org.openqa.selenium.InvalidArgumentException; import org.openqa.selenium.WebDriverException; @@ -25,6 +27,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class SessionHelpers { private static final Pattern SESSION = Pattern.compile("/session/([^/]+)"); diff --git a/src/main/java/io/appium/java_client/ios/options/other/SupportsCommandTimeoutsOption.java b/src/main/java/io/appium/java_client/ios/options/other/SupportsCommandTimeoutsOption.java index 0afd1a9a8..4461985c1 100644 --- a/src/main/java/io/appium/java_client/ios/options/other/SupportsCommandTimeoutsOption.java +++ b/src/main/java/io/appium/java_client/ios/options/other/SupportsCommandTimeoutsOption.java @@ -62,7 +62,7 @@ default T setCommandTimeouts(Duration timeout) { default Optional> getCommandTimeouts() { return Optional.ofNullable(getCapability(COMMAND_TIMEOUTS_OPTION)) .map(String::valueOf) - .map((v) -> v.trim().startsWith("{") + .map(v -> v.trim().startsWith("{") ? Either.left(new CommandTimeouts(v)) : Either.right(toDuration(v)) ); diff --git a/src/main/java/io/appium/java_client/ios/options/simulator/SupportsPermissionsOption.java b/src/main/java/io/appium/java_client/ios/options/simulator/SupportsPermissionsOption.java index e3a4b36c2..3f55a335c 100644 --- a/src/main/java/io/appium/java_client/ios/options/simulator/SupportsPermissionsOption.java +++ b/src/main/java/io/appium/java_client/ios/options/simulator/SupportsPermissionsOption.java @@ -44,6 +44,6 @@ default T setPermissions(Permissions permissions) { */ default Optional getPermissions() { return Optional.ofNullable(getCapability(PERMISSIONS_OPTION)) - .map((v) -> new Permissions(String.valueOf(v))); + .map(v -> new Permissions(String.valueOf(v))); } } diff --git a/src/main/java/io/appium/java_client/ios/options/simulator/SupportsSimulatorPasteboardAutomaticSyncOption.java b/src/main/java/io/appium/java_client/ios/options/simulator/SupportsSimulatorPasteboardAutomaticSyncOption.java index 7f99af2e0..665c4d368 100644 --- a/src/main/java/io/appium/java_client/ios/options/simulator/SupportsSimulatorPasteboardAutomaticSyncOption.java +++ b/src/main/java/io/appium/java_client/ios/options/simulator/SupportsSimulatorPasteboardAutomaticSyncOption.java @@ -47,6 +47,6 @@ default T setSimulatorPasteboardAutomaticSync(PasteboardSyncState state) { */ default Optional getSimulatorPasteboardAutomaticSync() { return Optional.ofNullable(getCapability(SIMULATOR_PASTEBOARD_AUTOMATIC_SYNC)) - .map((v) -> PasteboardSyncState.valueOf(String.valueOf(v).toUpperCase())); + .map(v -> PasteboardSyncState.valueOf(String.valueOf(v).toUpperCase())); } } diff --git a/src/main/java/io/appium/java_client/ios/options/wda/ProcessArguments.java b/src/main/java/io/appium/java_client/ios/options/wda/ProcessArguments.java index c5ed74d22..08b06f9f8 100644 --- a/src/main/java/io/appium/java_client/ios/options/wda/ProcessArguments.java +++ b/src/main/java/io/appium/java_client/ios/options/wda/ProcessArguments.java @@ -49,8 +49,8 @@ public ProcessArguments(Map env) { */ public Map toMap() { Map result = new HashMap<>(); - Optional.ofNullable(args).ifPresent((v) -> result.put("args", v)); - Optional.ofNullable(env).ifPresent((v) -> result.put("env", v)); + Optional.ofNullable(args).ifPresent(v -> result.put("args", v)); + Optional.ofNullable(env).ifPresent(v -> result.put("env", v)); return Collections.unmodifiableMap(result); } } diff --git a/src/main/java/io/appium/java_client/ios/options/wda/SupportsWaitForIdleTimeoutOption.java b/src/main/java/io/appium/java_client/ios/options/wda/SupportsWaitForIdleTimeoutOption.java index 0d9ffda35..f9dd2401a 100644 --- a/src/main/java/io/appium/java_client/ios/options/wda/SupportsWaitForIdleTimeoutOption.java +++ b/src/main/java/io/appium/java_client/ios/options/wda/SupportsWaitForIdleTimeoutOption.java @@ -53,6 +53,6 @@ default T setWaitForIdleTimeout(Duration timeout) { default Optional getWaitForIdleTimeout() { return Optional.ofNullable(getCapability(WAIT_FOR_IDLE_TIMEOUT_OPTION)) .map(CapabilityHelpers::toDouble) - .map((d) -> toDuration((long) (d * 1000.0))); + .map(d -> toDuration((long) (d * 1000.0))); } } diff --git a/src/main/java/io/appium/java_client/ios/options/wda/SupportsWdaEventloopIdleDelayOption.java b/src/main/java/io/appium/java_client/ios/options/wda/SupportsWdaEventloopIdleDelayOption.java index 4d35bb5c4..3d48703b5 100644 --- a/src/main/java/io/appium/java_client/ios/options/wda/SupportsWdaEventloopIdleDelayOption.java +++ b/src/main/java/io/appium/java_client/ios/options/wda/SupportsWdaEventloopIdleDelayOption.java @@ -54,6 +54,6 @@ default T setWdaEventloopIdleDelay(Duration duration) { default Optional getWdaEventloopIdleDelay() { return Optional.ofNullable(getCapability(WDA_EVENTLOOP_IDLE_DELAY_OPTION)) .map(CapabilityHelpers::toDouble) - .map((d) -> toDuration((long) (d * 1000.0))); + .map(d -> toDuration((long) (d * 1000.0))); } } diff --git a/src/main/java/io/appium/java_client/ios/options/wda/SupportsXcodeCertificateOptions.java b/src/main/java/io/appium/java_client/ios/options/wda/SupportsXcodeCertificateOptions.java index fcecbab8c..45d437195 100644 --- a/src/main/java/io/appium/java_client/ios/options/wda/SupportsXcodeCertificateOptions.java +++ b/src/main/java/io/appium/java_client/ios/options/wda/SupportsXcodeCertificateOptions.java @@ -51,6 +51,6 @@ default Optional getXcodeCertificate() { String orgId = (String) getCapability(XCODE_ORG_ID_OPTION); String signingId = (String) getCapability(XCODE_SIGNING_ID_OPTION); return Optional.ofNullable(orgId) - .map((x) -> new XcodeCertificate(orgId, signingId)); + .map(x -> new XcodeCertificate(orgId, signingId)); } } diff --git a/src/main/java/io/appium/java_client/mac/options/Mac2Options.java b/src/main/java/io/appium/java_client/mac/options/Mac2Options.java index 37e31575a..5325ee284 100644 --- a/src/main/java/io/appium/java_client/mac/options/Mac2Options.java +++ b/src/main/java/io/appium/java_client/mac/options/Mac2Options.java @@ -83,7 +83,7 @@ public Mac2Options setPrerun(AppleScriptData script) { public Optional getPrerun() { //noinspection unchecked return Optional.ofNullable(getCapability(PRERUN_OPTION)) - .map((v) -> new AppleScriptData((Map) v)); + .map(v -> new AppleScriptData((Map) v)); } /** @@ -108,6 +108,6 @@ public Mac2Options setPostrun(AppleScriptData script) { public Optional getPostrun() { //noinspection unchecked return Optional.ofNullable(getCapability(POSTRUN_OPTION)) - .map((v) -> new AppleScriptData((Map) v)); + .map(v -> new AppleScriptData((Map) v)); } } diff --git a/src/main/java/io/appium/java_client/pagefactory/AppiumElementLocator.java b/src/main/java/io/appium/java_client/pagefactory/AppiumElementLocator.java index 3aba5bcdc..9e148a2c7 100644 --- a/src/main/java/io/appium/java_client/pagefactory/AppiumElementLocator.java +++ b/src/main/java/io/appium/java_client/pagefactory/AppiumElementLocator.java @@ -43,7 +43,7 @@ class AppiumElementLocator implements CacheableLocator { - private static final String exceptionMessageIfElementNotFound = "Can't locate an element by this strategy: %s"; + private static final String EXCEPTION_MESSAGE_IF_ELEMENT_NOT_FOUND = "Can't locate an element by this strategy: %s"; private final boolean shouldCache; private final By by; @@ -163,7 +163,7 @@ public WebElement findElement() { } return result; } catch (TimeoutException | StaleElementReferenceException e) { - throw new NoSuchElementException(format(exceptionMessageIfElementNotFound, bySearching.toString()), e); + throw new NoSuchElementException(format(EXCEPTION_MESSAGE_IF_ELEMENT_NOT_FOUND, bySearching.toString()), e); } } diff --git a/src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java b/src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java index c2f11f473..2d5daaa03 100644 --- a/src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java +++ b/src/main/java/io/appium/java_client/pagefactory/AppiumFieldDecorator.java @@ -170,7 +170,7 @@ protected boolean isDecoratableList(Field field) { ? Arrays.asList(((TypeVariable) listType).getBounds()) : Collections.emptyList(); return availableElementClasses.stream() - .anyMatch((webElClass) -> webElClass.equals(listType) || bounds.contains(webElClass)); + .anyMatch(webElClass -> webElClass.equals(listType) || bounds.contains(webElClass)); } }; } diff --git a/src/main/java/io/appium/java_client/pagefactory/OverrideWidgetReader.java b/src/main/java/io/appium/java_client/pagefactory/OverrideWidgetReader.java index be25f1c31..9f8b59c17 100644 --- a/src/main/java/io/appium/java_client/pagefactory/OverrideWidgetReader.java +++ b/src/main/java/io/appium/java_client/pagefactory/OverrideWidgetReader.java @@ -17,6 +17,8 @@ package io.appium.java_client.pagefactory; import io.appium.java_client.pagefactory.bys.ContentType; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Constructor; @@ -29,6 +31,7 @@ import static io.appium.java_client.remote.MobilePlatform.IOS; import static io.appium.java_client.remote.MobilePlatform.WINDOWS; +@NoArgsConstructor(access = AccessLevel.PRIVATE) class OverrideWidgetReader { private static final Class EMPTY = Widget.class; private static final String HTML = "html"; @@ -38,15 +41,15 @@ class OverrideWidgetReader { @SuppressWarnings("unchecked") private static Class getConvenientClass(Class declaredClass, - AnnotatedElement annotatedElement, String method) { + AnnotatedElement annotatedElement, String method) { Class convenientClass; OverrideWidget overrideWidget = annotatedElement.getAnnotation(OverrideWidget.class); try { if (overrideWidget == null || (convenientClass = - (Class) OverrideWidget.class - .getDeclaredMethod(method).invoke(overrideWidget)) - .equals(EMPTY)) { + (Class) OverrideWidget.class + .getDeclaredMethod(method).invoke(overrideWidget)) + .equals(EMPTY)) { convenientClass = declaredClass; } } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) { @@ -55,9 +58,9 @@ private static Class getConvenientClass(Class getConvenientClass(Class getDefaultOrHTMLWidgetClass( - Class declaredClass, AnnotatedElement annotatedElement) { + Class declaredClass, AnnotatedElement annotatedElement) { return getConvenientClass(declaredClass, annotatedElement, HTML); } static Class getMobileNativeWidgetClass(Class declaredClass, - AnnotatedElement annotatedElement, String platform) { + AnnotatedElement annotatedElement, String platform) { String transformedPlatform = String.valueOf(platform).toUpperCase().trim(); if (ANDROID.equalsIgnoreCase(transformedPlatform)) { @@ -89,26 +92,26 @@ static Class getMobileNativeWidgetClass(Class getConstructorOfADefaultOrHTMLWidget( - Class declaredClass, AnnotatedElement annotatedElement) { + Class declaredClass, AnnotatedElement annotatedElement) { Class clazz = - getDefaultOrHTMLWidgetClass(declaredClass, annotatedElement); + getDefaultOrHTMLWidgetClass(declaredClass, annotatedElement); return findConvenientConstructor(clazz); } private static Constructor getConstructorOfAMobileNativeWidgets( - Class declaredClass, AnnotatedElement annotatedElement, String platform) { + Class declaredClass, AnnotatedElement annotatedElement, String platform) { Class clazz = - getMobileNativeWidgetClass(declaredClass, annotatedElement, platform); + getMobileNativeWidgetClass(declaredClass, annotatedElement, platform); return findConvenientConstructor(clazz); } protected static Map> read( - Class declaredClass, AnnotatedElement annotatedElement, String platform) { + Class declaredClass, AnnotatedElement annotatedElement, String platform) { Map> result = new HashMap<>(); result.put(ContentType.HTML_OR_DEFAULT, - getConstructorOfADefaultOrHTMLWidget(declaredClass, annotatedElement)); + getConstructorOfADefaultOrHTMLWidget(declaredClass, annotatedElement)); result.put(ContentType.NATIVE_MOBILE_SPECIFIC, - getConstructorOfAMobileNativeWidgets(declaredClass, annotatedElement, platform)); + getConstructorOfAMobileNativeWidgets(declaredClass, annotatedElement, platform)); return result; } } diff --git a/src/main/java/io/appium/java_client/pagefactory/ThrowableUtil.java b/src/main/java/io/appium/java_client/pagefactory/ThrowableUtil.java index c025a53dd..f5b310702 100644 --- a/src/main/java/io/appium/java_client/pagefactory/ThrowableUtil.java +++ b/src/main/java/io/appium/java_client/pagefactory/ThrowableUtil.java @@ -16,11 +16,14 @@ package io.appium.java_client.pagefactory; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.openqa.selenium.InvalidSelectorException; import org.openqa.selenium.StaleElementReferenceException; import java.lang.reflect.InvocationTargetException; +@NoArgsConstructor(access = AccessLevel.PRIVATE) class ThrowableUtil { private static final String INVALID_SELECTOR_PATTERN = "Invalid locator strategy:"; diff --git a/src/main/java/io/appium/java_client/pagefactory/WithTimeout.java b/src/main/java/io/appium/java_client/pagefactory/WithTimeout.java index 0b95a50c1..0727bc2b3 100644 --- a/src/main/java/io/appium/java_client/pagefactory/WithTimeout.java +++ b/src/main/java/io/appium/java_client/pagefactory/WithTimeout.java @@ -16,6 +16,9 @@ package io.appium.java_client.pagefactory; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -43,6 +46,7 @@ */ ChronoUnit chronoUnit(); + @NoArgsConstructor(access = AccessLevel.PRIVATE) class DurationBuilder { static Duration build(WithTimeout withTimeout) { return Duration.of(withTimeout.time(), withTimeout.chronoUnit()); diff --git a/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java b/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java index fe7edf9b9..30bf58456 100644 --- a/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java +++ b/src/main/java/io/appium/java_client/pagefactory/bys/ContentMappedBy.java @@ -1,18 +1,18 @@ /* -* Licensed under the Apache License, Version 2.0 (the "License"); -* you may not use this file except in compliance with the License. -* See the NOTICE file distributed with this work for additional -* information regarding copyright ownership. -* You may obtain a copy of the License at -* -* http://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. -*/ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * See the NOTICE file distributed with this work for additional + * information regarding copyright ownership. + * You may obtain a copy of the License at + * + * http://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. + */ package io.appium.java_client.pagefactory.bys; @@ -23,6 +23,7 @@ import javax.annotation.Nonnull; import java.util.List; import java.util.Map; +import java.util.Objects; import static com.google.common.base.Preconditions.checkNotNull; import static io.appium.java_client.pagefactory.bys.ContentType.NATIVE_MOBILE_SPECIFIC; @@ -37,6 +38,7 @@ public ContentMappedBy(Map map) { /** * This method sets required content type for the further searching. + * * @param type required content type {@link ContentType} * @return self-reference. */ @@ -46,15 +48,38 @@ public By useContent(@Nonnull ContentType type) { return this; } - @Override public WebElement findElement(SearchContext context) { + @Override + public WebElement findElement(SearchContext context) { return context.findElement(map.get(currentContent)); } - @Override public List findElements(SearchContext context) { + @Override + public List findElements(SearchContext context) { return context.findElements(map.get(currentContent)); } - @Override public String toString() { + @Override + public String toString() { return map.get(currentContent).toString(); } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + ContentMappedBy that = (ContentMappedBy) o; + return Objects.equals(map, that.map) && currentContent == that.currentContent; + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), map, currentContent); + } } diff --git a/src/main/java/io/appium/java_client/pagefactory/bys/builder/AppiumByBuilder.java b/src/main/java/io/appium/java_client/pagefactory/bys/builder/AppiumByBuilder.java index 330362140..0e7146a0c 100644 --- a/src/main/java/io/appium/java_client/pagefactory/bys/builder/AppiumByBuilder.java +++ b/src/main/java/io/appium/java_client/pagefactory/bys/builder/AppiumByBuilder.java @@ -39,10 +39,10 @@ import static io.appium.java_client.remote.MobilePlatform.WINDOWS; /** - * It is the basic handler of Appium-specific page object annotations + * It is the basic handler of Appium-specific page object annotations. * About the Page Object design pattern please read these documents: - * - https://code.google.com/p/selenium/wiki/PageObjects - * - https://code.google.com/p/selenium/wiki/PageFactory + * - Selenium Page Object models + * - Selenium Page Factory */ public abstract class AppiumByBuilder extends AbstractAnnotations { protected static final Class[] DEFAULT_ANNOTATION_METHOD_ARGUMENTS = new Class[]{}; @@ -76,7 +76,7 @@ private static Method[] prepareAnnotationMethods(Class ann List targetAnnotationMethodNamesList = getMethodNames(annotation.getDeclaredMethods()); targetAnnotationMethodNamesList.removeAll(METHODS_TO_BE_EXCLUDED_WHEN_ANNOTATION_IS_READ); return targetAnnotationMethodNamesList.stream() - .map((methodName) -> { + .map(methodName -> { try { return annotation.getMethod(methodName, DEFAULT_ANNOTATION_METHOD_ARGUMENTS); } catch (NoSuchMethodException | SecurityException e) { @@ -87,13 +87,13 @@ private static Method[] prepareAnnotationMethods(Class ann private static String getFilledValue(Annotation mobileBy) { return Stream.of(prepareAnnotationMethods(mobileBy.getClass())) - .filter((method) -> String.class == method.getReturnType()) - .filter((method) -> { + .filter(method -> String.class == method.getReturnType()) + .filter(method -> { try { Object strategyParameter = method.invoke(mobileBy); return strategyParameter != null && !String.valueOf(strategyParameter).isEmpty(); } catch (IllegalAccessException | IllegalArgumentException - | InvocationTargetException e) { + | InvocationTargetException e) { throw new RuntimeException(e); } }) @@ -107,9 +107,9 @@ private static String getFilledValue(Annotation mobileBy) { private static By getMobileBy(Annotation annotation, String valueName) { return Stream.of(Strategies.values()) - .filter((strategy) -> strategy.returnValueName().equals(valueName)) + .filter(strategy -> strategy.returnValueName().equals(valueName)) .findFirst() - .map((strategy) -> strategy.getBy(annotation)) + .map(strategy -> strategy.getBy(annotation)) .orElseThrow(() -> new IllegalArgumentException( String.format("@%s: There is an unknown strategy %s", annotation.getClass().getSimpleName(), valueName) @@ -118,14 +118,14 @@ private static By getMobileBy(Annotation annotation, String valueName) { private static T getComplexMobileBy(Annotation[] annotations, Class requiredByClass) { By[] byArray = Stream.of(annotations) - .map((annotation) -> getMobileBy(annotation, getFilledValue(annotation))) + .map(annotation -> getMobileBy(annotation, getFilledValue(annotation))) .toArray(By[]::new); try { Constructor c = requiredByClass.getConstructor(By[].class); Object[] values = new Object[]{byArray}; return c.newInstance(values); } catch (InvocationTargetException | NoSuchMethodException | InstantiationException - | IllegalAccessException e) { + | IllegalAccessException e) { throw new RuntimeException(e); } } diff --git a/src/main/java/io/appium/java_client/pagefactory/bys/builder/Strategies.java b/src/main/java/io/appium/java_client/pagefactory/bys/builder/Strategies.java index a353e0257..452a8cda0 100644 --- a/src/main/java/io/appium/java_client/pagefactory/bys/builder/Strategies.java +++ b/src/main/java/io/appium/java_client/pagefactory/bys/builder/Strategies.java @@ -135,7 +135,7 @@ enum Strategies { } static List strategiesNames() { - return Stream.of(values()).map((s) -> s.valueName).collect(Collectors.toList()); + return Stream.of(values()).map(s -> s.valueName).collect(Collectors.toList()); } private static String getValue(Annotation annotation, Strategies strategy) { diff --git a/src/main/java/io/appium/java_client/pagefactory/utils/WebDriverUnpackUtility.java b/src/main/java/io/appium/java_client/pagefactory/utils/WebDriverUnpackUtility.java index 53ba1506c..9df129930 100644 --- a/src/main/java/io/appium/java_client/pagefactory/utils/WebDriverUnpackUtility.java +++ b/src/main/java/io/appium/java_client/pagefactory/utils/WebDriverUnpackUtility.java @@ -18,6 +18,8 @@ import io.appium.java_client.HasBrowserCheck; import io.appium.java_client.pagefactory.bys.ContentType; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.openqa.selenium.ContextAware; import org.openqa.selenium.SearchContext; import org.openqa.selenium.WebDriver; @@ -31,6 +33,7 @@ import static java.util.Optional.ofNullable; import static org.apache.commons.lang3.StringUtils.containsIgnoreCase; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class WebDriverUnpackUtility { private static final String NATIVE_APP_PATTERN = "NATIVE_APP"; diff --git a/src/main/java/io/appium/java_client/proxy/Interceptor.java b/src/main/java/io/appium/java_client/proxy/Interceptor.java index dce2fd807..aca474044 100644 --- a/src/main/java/io/appium/java_client/proxy/Interceptor.java +++ b/src/main/java/io/appium/java_client/proxy/Interceptor.java @@ -16,6 +16,8 @@ package io.appium.java_client.proxy; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import net.bytebuddy.implementation.bind.annotation.AllArguments; import net.bytebuddy.implementation.bind.annotation.Origin; import net.bytebuddy.implementation.bind.annotation.RuntimeType; @@ -29,6 +31,7 @@ import java.util.UUID; import java.util.concurrent.Callable; +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class Interceptor { private static final Logger logger = LoggerFactory.getLogger(Interceptor.class); 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 0085f457d..ee0e5a396 100644 --- a/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java +++ b/src/main/java/io/appium/java_client/remote/AppiumCommandExecutor.java @@ -180,7 +180,7 @@ private Response createSession(Command command) throws IOException { } ProtocolHandshake.Result result = new AppiumProtocolHandshake().createSession( - getClient().with((httpHandler) -> (req) -> { + getClient().with(httpHandler -> req -> { req.setHeader(HttpHeaders.USER_AGENT, AppiumUserAgentFilter.buildUserAgent(req.getHeader(HttpHeaders.USER_AGENT))); req.setHeader(IDEMPOTENCY_KEY_HEADER, UUID.randomUUID().toString().toLowerCase()); diff --git a/src/main/java/io/appium/java_client/remote/options/SupportsOrientationOption.java b/src/main/java/io/appium/java_client/remote/options/SupportsOrientationOption.java index 3bc8b16e0..be2dd1a5d 100644 --- a/src/main/java/io/appium/java_client/remote/options/SupportsOrientationOption.java +++ b/src/main/java/io/appium/java_client/remote/options/SupportsOrientationOption.java @@ -42,7 +42,7 @@ default T setOrientation(ScreenOrientation orientation) { */ default Optional getOrientation() { return Optional.ofNullable(getCapability(ORIENTATION_OPTION)) - .map((v) -> v instanceof ScreenOrientation + .map(v -> v instanceof ScreenOrientation ? (ScreenOrientation) v : ScreenOrientation.valueOf((String.valueOf(v)).toUpperCase()) ); diff --git a/src/main/java/io/appium/java_client/remote/options/SupportsProxyOption.java b/src/main/java/io/appium/java_client/remote/options/SupportsProxyOption.java index cb3de55e7..d69be4d2b 100644 --- a/src/main/java/io/appium/java_client/remote/options/SupportsProxyOption.java +++ b/src/main/java/io/appium/java_client/remote/options/SupportsProxyOption.java @@ -45,7 +45,7 @@ default T setProxy(Proxy proxy) { default Optional getProxy() { return Optional.ofNullable(getCapability(PROXY_OPTION)) .map(String::valueOf) - .map((v) -> new Gson().fromJson(v, Map.class)) + .map(v -> new Gson().fromJson(v, Map.class)) .map(Proxy::new); } } diff --git a/src/main/java/io/appium/java_client/remote/options/UnhandledPromptBehavior.java b/src/main/java/io/appium/java_client/remote/options/UnhandledPromptBehavior.java index 0068dfe42..3aa5f4add 100644 --- a/src/main/java/io/appium/java_client/remote/options/UnhandledPromptBehavior.java +++ b/src/main/java/io/appium/java_client/remote/options/UnhandledPromptBehavior.java @@ -38,7 +38,7 @@ public String toString() { */ public static UnhandledPromptBehavior fromString(String value) { return Arrays.stream(values()) - .filter((v) -> v.toString().equals(value)) + .filter(v -> v.toString().equals(value)) .findFirst() .orElseThrow(() -> new IllegalArgumentException( String.format("Unhandled prompt behavior '%s' is not supported. " 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 08f289289..f37b89e29 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 @@ -145,15 +145,15 @@ public boolean isRunning() { } private void ping(Duration timeout) throws UrlChecker.TimeoutException, MalformedURLException { - URL url = getUrl(); - String host = url.getHost(); + URL baseURL = getUrl(); + String host = baseURL.getHost(); // The operating system will block direct access to the universal broadcast IP address if (host.equals(BROADCAST_IP4_ADDRESS)) { - url = replaceHost(url, BROADCAST_IP4_ADDRESS, "127.0.0.1"); + baseURL = replaceHost(baseURL, BROADCAST_IP4_ADDRESS, "127.0.0.1"); } else if (host.equals(BROADCAST_IP6_ADDRESS)) { - url = replaceHost(url, BROADCAST_IP6_ADDRESS, "::1"); + baseURL = replaceHost(baseURL, BROADCAST_IP6_ADDRESS, "::1"); } - URL status = addSuffix(url, "/status"); + URL status = addSuffix(baseURL, "/status"); new UrlChecker().waitUntilAvailable(timeout.toMillis(), TimeUnit.MILLISECONDS, status); } @@ -163,6 +163,7 @@ private void ping(Duration timeout) throws UrlChecker.TimeoutException, Malforme * @throws AppiumServerHasNotBeenStartedLocallyException If an error occurs while spawning the child process. * @see #stop() */ + @Override public void start() throws AppiumServerHasNotBeenStartedLocallyException { lock.lock(); try { @@ -182,7 +183,7 @@ public void start() throws AppiumServerHasNotBeenStartedLocallyException { } catch (Exception e) { final Optional output = Optional.ofNullable(process) .map(CommandLine::getStdOut) - .filter((o) -> !StringUtils.isBlank(o)); + .filter(o -> !StringUtils.isBlank(o)); destroyProcess(); List errorLines = new ArrayList<>(); errorLines.add("The local appium server has not been started"); @@ -197,7 +198,7 @@ public void start() throws AppiumServerHasNotBeenStartedLocallyException { String.format("Node.js executable path: %s", nodeJSExec.getAbsolutePath()) ); errorLines.add(String.format("Arguments: %s", nodeJSArgs)); - output.ifPresent((o) -> errorLines.add(String.format("Output: %s", o))); + output.ifPresent(o -> errorLines.add(String.format("Output: %s", o))); throw new AppiumServerHasNotBeenStartedLocallyException( StringUtils.joinWith("\n", errorLines), e ); @@ -302,8 +303,8 @@ public void addOutPutStream(OutputStream outputStream) { */ public void addOutPutStreams(List outputStreams) { checkNotNull(outputStreams, "outputStreams parameter is NULL!"); - for (OutputStream stream : outputStreams) { - addOutPutStream(stream); + for (OutputStream outputStream : outputStreams) { + addOutPutStream(outputStream); } } diff --git a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java index 0e354d441..774399a9c 100644 --- a/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java +++ b/src/main/java/io/appium/java_client/service/local/AppiumServiceBuilder.java @@ -81,9 +81,9 @@ public final class AppiumServiceBuilder private String ipAddress = BROADCAST_IP4_ADDRESS; private Capabilities capabilities; private boolean autoQuoteCapabilitiesOnWindows = false; - private static final Function APPIUM_JS_NOT_EXIST_ERROR = (fullPath) -> String.format( + private static final Function APPIUM_JS_NOT_EXIST_ERROR = fullPath -> String.format( "The main Appium script does not exist at '%s'", fullPath.getAbsolutePath()); - private static final Function NODE_JS_NOT_EXIST_ERROR = (fullPath) -> + private static final Function NODE_JS_NOT_EXIST_ERROR = fullPath -> String.format("The main NodeJS executable does not exist at '%s'", fullPath.getAbsolutePath()); private static final List PATH_CAPABILITIES = ImmutableList.of(AndroidMobileCapabilityType.KEYSTORE_PATH, 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 89820f70a..7173963ad 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 @@ -53,12 +53,14 @@ Optional remove(OutputStream stream) { } } + @Override public void flush() throws IOException { for (OutputStream stream : streams) { stream.flush(); } } + @Override public void close() throws IOException { for (OutputStream stream : streams) { stream.close(); diff --git a/src/main/java/io/appium/java_client/windows/options/WindowsOptions.java b/src/main/java/io/appium/java_client/windows/options/WindowsOptions.java index 8a1f0eb8f..fd4d125b0 100644 --- a/src/main/java/io/appium/java_client/windows/options/WindowsOptions.java +++ b/src/main/java/io/appium/java_client/windows/options/WindowsOptions.java @@ -28,7 +28,7 @@ import java.util.Optional; /** - * https://github.com/appium/appium-windows-driver#usage + * https://github.com/appium/appium-windows-driver#usage */ public class WindowsOptions extends BaseOptions implements SupportsAppOption, @@ -65,7 +65,7 @@ private void setCommonOptions() { * each key must be a valid PowerShell script or command to be * executed prior to the WinAppDriver session startup. * See - * https://github.com/appium/appium-windows-driver#power-shell-commands-execution + * https://github.com/appium/appium-windows-driver#power-shell-commands-execution * for more details. * * @param script E.g. {script: 'Get-Process outlook -ErrorAction SilentlyContinue'}. @@ -83,7 +83,7 @@ public WindowsOptions setPrerun(PowerShellData script) { public Optional getPrerun() { //noinspection unchecked return Optional.ofNullable(getCapability(PRERUN_OPTION)) - .map((v) -> new PowerShellData((Map) v)); + .map(v -> new PowerShellData((Map) v)); } /** @@ -91,7 +91,7 @@ public Optional getPrerun() { * each key must be a valid PowerShell script or command to be * executed after an WinAppDriver session is finished. * See - * https://github.com/appium/appium-windows-driver#power-shell-commands-execution + * https://github.com/appium/appium-windows-driver#power-shell-commands-execution * for more details. * * @param script E.g. {script: 'Get-Process outlook -ErrorAction SilentlyContinue'}. @@ -109,6 +109,6 @@ public WindowsOptions setPostrun(PowerShellData script) { public Optional getPostrun() { //noinspection unchecked return Optional.ofNullable(getCapability(POSTRUN_OPTION)) - .map((v) -> new PowerShellData((Map) v)); + .map(v -> new PowerShellData((Map) v)); } }