diff --git a/.config/checkstyle/checkstyle.xml b/.config/checkstyle/checkstyle.xml index 463a629..262c9f9 100644 --- a/.config/checkstyle/checkstyle.xml +++ b/.config/checkstyle/checkstyle.xml @@ -79,6 +79,11 @@ + + + + + diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index e96576b..9dc7a0f 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -146,7 +146,6 @@ - @@ -164,6 +163,7 @@ + @@ -208,6 +208,36 @@ + + +`Optional#get` can be interpreted as a getter by developers, however this is not the case as it throws an exception when empty. + +It should be replaced by +* doing a mapping directly using `.map` or `.ifPresent` +* using the preferred `.orElseThrow`, `.orElse` or `.or` methods + +Java Developer Brian Goetz also writes regarding this topic: + +> Java 8 was a huge improvement to the platform, but one of the few mistakes we made was the naming of `Optional.get()`, because the name just invites people to call it without calling `isPresent()`, undermining the whole point of using `Optional` in the first place. +> +> During the Java 9 time frame, we proposed to deprecate `Optional.get()`, but the public response to that was ... let's say cold. As a smaller step, we introduced `orElseThrow()` in 10 (see [JDK-8140281](https://bugs.openjdk.java.net/browse/JDK-8140281)) as a more transparently named synonym for the current pernicious behavior of `get()`. IDEs warn on unconditional use of `get()`, but not on `orElseThrow()`, which is a step forward in teaching people to code better. The question is, in a sense, a "glass half empty" view of the current situation; `get()` is still problematic. + + 3 + + + + + + + + + com.puppycrawl.tools checkstyle - 13.0.0 + 13.2.0 @@ -83,12 +83,12 @@ net.sourceforge.pmd pmd-core - 7.20.0 + 7.21.0 net.sourceforge.pmd pmd-java - 7.20.0 + 7.21.0 diff --git a/testcontainers-selenium-demo/pom.xml b/testcontainers-selenium-demo/pom.xml index b6e5e56..86a8701 100644 --- a/testcontainers-selenium-demo/pom.xml +++ b/testcontainers-selenium-demo/pom.xml @@ -34,7 +34,7 @@ org.seleniumhq.selenium selenium-dependencies-bom - 4.40.0 + 4.41.0 pom import @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.1 + 3.15.0 ${maven.compiler.release} diff --git a/testcontainers-selenium/pom.xml b/testcontainers-selenium/pom.xml index 4567910..36ec71e 100644 --- a/testcontainers-selenium/pom.xml +++ b/testcontainers-selenium/pom.xml @@ -70,7 +70,7 @@ org.seleniumhq.selenium selenium-api - 4.40.0 + 4.41.0 provided @@ -78,7 +78,7 @@ org.junit.jupiter junit-jupiter - 6.0.2 + 6.0.3 test @@ -90,7 +90,7 @@ org.seleniumhq.selenium selenium-remote-driver - 4.40.0 + 4.41.0 test @@ -108,13 +108,13 @@ org.seleniumhq.selenium selenium-support - 4.40.0 + 4.41.0 test org.seleniumhq.selenium selenium-firefox-driver - 4.40.0 + 4.41.0 test @@ -127,7 +127,7 @@ org.seleniumhq.selenium selenium-chrome-driver - 4.40.0 + 4.41.0 test @@ -187,7 +187,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.1 + 3.15.0 ${maven.compiler.release} @@ -231,7 +231,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.4 + 3.5.5 ${skipTests} @@ -320,7 +320,7 @@ com.puppycrawl.tools checkstyle - 13.0.0 + 13.2.0 @@ -358,12 +358,12 @@ net.sourceforge.pmd pmd-core - 7.20.0 + 7.21.0 net.sourceforge.pmd pmd-java - 7.20.0 + 7.21.0 diff --git a/testcontainers-selenium/src/main/java/software/xdev/testcontainers/selenium/containers/browser/CapabilitiesBrowserWebDriverContainer.java b/testcontainers-selenium/src/main/java/software/xdev/testcontainers/selenium/containers/browser/CapabilitiesBrowserWebDriverContainer.java index 5d75c29..4c92564 100644 --- a/testcontainers-selenium/src/main/java/software/xdev/testcontainers/selenium/containers/browser/CapabilitiesBrowserWebDriverContainer.java +++ b/testcontainers-selenium/src/main/java/software/xdev/testcontainers/selenium/containers/browser/CapabilitiesBrowserWebDriverContainer.java @@ -68,12 +68,14 @@ protected static DockerImageName getStandardImageForCapabilities( final String seleniumVersion, final Map browserDockerImages) { - return Optional.ofNullable(browserDockerImages.get(Optional.ofNullable(capabilities) - .map(Capabilities::getBrowserName) - .orElse(BrowserType.CHROME))) + final String browserName = Optional.ofNullable(capabilities) + .map(Capabilities::getBrowserName) + .orElse(BrowserType.CHROME); + return Optional.ofNullable(browserDockerImages.get(browserName)) .map(image -> image.withTag(seleniumVersion)) .orElseThrow(() -> new UnsupportedOperationException( - "Unsupported Browser name; Supported: " + String.join(", ", BROWSER_DOCKER_IMAGES.keySet()) + "Unsupported Browser name " + browserName + "; " + + "Supported: " + String.join(", ", BROWSER_DOCKER_IMAGES.keySet()) )); }