From 0a6d3f312e39f9a7d9ba0c53511500d7837d20b4 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Wed, 16 Oct 2024 13:08:21 -0700 Subject: [PATCH] Polish --- .../HazelcastClientInstanceConfiguration.java | 6 +- .../PropertiesHazelcastConnectionDetails.java | 10 ++-- .../platform/docker/type/Binding.java | 59 +++++++++---------- .../platform/docker/type/BindingTests.java | 16 ++--- 4 files changed, 45 insertions(+), 46 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientInstanceConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientInstanceConfiguration.java index f3f7acd0c9..824967cd79 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientInstanceConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientInstanceConfiguration.java @@ -37,10 +37,8 @@ class HazelcastClientInstanceConfiguration { @Bean HazelcastInstance hazelcastInstance(HazelcastConnectionDetails hazelcastConnectionDetails) { ClientConfig config = hazelcastConnectionDetails.getClientConfig(); - if (StringUtils.hasText(config.getInstanceName())) { - return HazelcastClient.getOrCreateHazelcastClient(config); - } - return HazelcastClient.newHazelcastClient(config); + return (!StringUtils.hasText(config.getInstanceName())) ? HazelcastClient.newHazelcastClient(config) + : HazelcastClient.getOrCreateHazelcastClient(config); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/PropertiesHazelcastConnectionDetails.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/PropertiesHazelcastConnectionDetails.java index 30eb82af32..dc07fc55a6 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/PropertiesHazelcastConnectionDetails.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/PropertiesHazelcastConnectionDetails.java @@ -55,14 +55,16 @@ class PropertiesHazelcastConnectionDetails implements HazelcastConnectionDetails try { URL configUrl = configLocation.getURL(); String configFileName = configUrl.getPath().toLowerCase(); - if (configFileName.endsWith(".yaml") || configFileName.endsWith(".yml")) { - return new YamlClientConfigBuilder(configUrl).build(); - } - return new XmlClientConfigBuilder(configUrl).build(); + return (!isYaml(configFileName)) ? new XmlClientConfigBuilder(configUrl).build() + : new YamlClientConfigBuilder(configUrl).build(); } catch (IOException ex) { throw new UncheckedIOException("Failed to load Hazelcast config", ex); } } + private boolean isYaml(String configFileName) { + return configFileName.endsWith(".yaml") || configFileName.endsWith(".yml"); + } + } diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/Binding.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/Binding.java index 4ba2509c40..7d08240af8 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/Binding.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/main/java/org/springframework/boot/buildpack/platform/docker/type/Binding.java @@ -65,36 +65,6 @@ public final class Binding { return this.value; } - /** - * Returns the container destination path. - * @return the container destination path - */ - String getContainerDestinationPath() { - List parts = split(this.value, ':', '\\'); - // Format is ::[] - Assert.state(parts.size() >= 2, () -> "Expected 2 or more parts, but found %d".formatted(parts.size())); - return parts.get(1); - } - - private List split(String input, char delimiter, char notFollowedBy) { - Assert.state(notFollowedBy != '\0', "notFollowedBy must not be the null terminator"); - List parts = new ArrayList<>(); - StringBuilder accumulator = new StringBuilder(); - for (int i = 0; i < input.length(); i++) { - char c = input.charAt(i); - char nextChar = (i + 1 < input.length()) ? input.charAt(i + 1) : '\0'; - if (c == delimiter && nextChar != notFollowedBy) { - parts.add(accumulator.toString()); - accumulator.setLength(0); - } - else { - accumulator.append(c); - } - } - parts.add(accumulator.toString()); - return parts; - } - /** * Whether the binding uses a sensitive container path. * @return whether the binding uses a sensitive container path @@ -104,6 +74,35 @@ public final class Binding { return SENSITIVE_CONTAINER_PATHS.contains(getContainerDestinationPath()); } + /** + * Returns the container destination path. + * @return the container destination path + */ + String getContainerDestinationPath() { + List parts = getParts(); + Assert.state(parts.size() >= 2, () -> "Expected 2 or more parts, but found %d".formatted(parts.size())); + return parts.get(1); + } + + private List getParts() { + // Format is ::[] + List parts = new ArrayList<>(); + StringBuilder buffer = new StringBuilder(); + for (int i = 0; i < this.value.length(); i++) { + char ch = this.value.charAt(i); + char nextChar = (i + 1 < this.value.length()) ? this.value.charAt(i + 1) : '\0'; + if (ch == ':' && nextChar != '\\') { + parts.add(buffer.toString()); + buffer.setLength(0); + } + else { + buffer.append(ch); + } + } + parts.add(buffer.toString()); + return parts; + } + /** * Create a {@link Binding} with the specified value containing a host source, * container destination, and options. diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/BindingTests.java b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/BindingTests.java index 94ba710f47..7f8d29c269 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/BindingTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/src/test/java/org/springframework/boot/buildpack/platform/docker/type/BindingTests.java @@ -107,14 +107,14 @@ class BindingTests { @ParameterizedTest @CsvSource(textBlock = """ - /cnb, true - /layers, true - /workspace, true - /something, false - c:\\cnb, true - c:\\layers, true - c:\\workspace, true - c:\\something, false + /cnb, true + /layers, true + /workspace, true + /something, false + c:\\cnb, true + c:\\layers, true + c:\\workspace, true + c:\\something, false """) void shouldDetectSensitiveContainerPaths(String containerPath, boolean sensitive) { Binding binding = Binding.from("/host", containerPath);