diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfigAvailableCondition.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfigAvailableCondition.java index d756be77fd01..06d35d8cbedd 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfigAvailableCondition.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfigAvailableCondition.java @@ -39,7 +39,8 @@ class HazelcastClientConfigAvailableCondition extends HazelcastConfigResourceCon HazelcastClientConfigAvailableCondition() { super(HazelcastClientConfiguration.CONFIG_SYSTEM_PROPERTY, "file:./hazelcast-client.xml", - "classpath:/hazelcast-client.xml", "file:./hazelcast-client.yaml", "classpath:/hazelcast-client.yaml"); + "classpath:/hazelcast-client.xml", "file:./hazelcast-client.yaml", "classpath:/hazelcast-client.yaml", + "file:./hazelcast-client.yml", "classpath:/hazelcast-client.yml"); } @Override diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfiguration.java index 897085d6df37..8613de869509 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastClientConfiguration.java @@ -72,7 +72,7 @@ HazelcastInstance hazelcastInstance(HazelcastProperties properties, ResourceLoad private ClientConfig loadClientConfig(Resource configLocation) throws IOException { URL configUrl = configLocation.getURL(); String configFileName = configUrl.getPath(); - if (configFileName.endsWith(".yaml")) { + if (configFileName.endsWith(".yaml") || configFileName.endsWith(".yml")) { return new YamlClientConfigBuilder(configUrl).build(); } return new XmlClientConfigBuilder(configUrl).build(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastServerConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastServerConfiguration.java index acfc128ea22f..bbb1d19ee7e1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastServerConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastServerConfiguration.java @@ -88,7 +88,7 @@ private Config loadConfig(Resource configLocation) throws IOException { private static Config loadConfig(URL configUrl) throws IOException { String configFileName = configUrl.getPath(); - if (configFileName.endsWith(".yaml")) { + if (configFileName.endsWith(".yaml") || configFileName.endsWith(".yml")) { return new YamlConfigBuilder(configUrl).build(); } return new XmlConfigBuilder(configUrl).build(); @@ -131,7 +131,7 @@ static class ConfigAvailableCondition extends HazelcastConfigResourceCondition { ConfigAvailableCondition() { super(CONFIG_SYSTEM_PROPERTY, "file:./hazelcast.xml", "classpath:/hazelcast.xml", "file:./hazelcast.yaml", - "classpath:/hazelcast.yaml"); + "classpath:/hazelcast.yaml", "file:./hazelcast.yml", "classpath:/hazelcast.yml"); } } diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationClientTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationClientTests.java index 27d98497a307..cc10dda71c2c 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationClientTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationClientTests.java @@ -81,6 +81,14 @@ void systemPropertyWithYaml() { .run(assertSpecificHazelcastClient("explicit-yaml")); } + @Test + void systemPropertyWithYml() { + this.contextRunner + .withSystemProperties(HazelcastClientConfiguration.CONFIG_SYSTEM_PROPERTY + + "=classpath:org/springframework/boot/autoconfigure/hazelcast/hazelcast-client-specific.yml") + .run(assertSpecificHazelcastClient("explicit-yml")); + } + @Test void explicitConfigFileWithXml() { this.contextRunner.withPropertyValues("spring.hazelcast.config=org/springframework/boot/autoconfigure/" @@ -95,6 +103,14 @@ void explicitConfigFileWithYaml() { .run(assertSpecificHazelcastClient("explicit-yaml")); } + @Test + void explicitConfigFileWithYml() { + this.contextRunner + .withPropertyValues("spring.hazelcast.config=org/springframework/boot/autoconfigure/" + + "hazelcast/hazelcast-client-specific.yml") + .run(assertSpecificHazelcastClient("explicit-yml")); + } + @Test void explicitConfigUrlWithXml() { this.contextRunner @@ -111,6 +127,14 @@ void explicitConfigUrlWithYaml() { .run(assertSpecificHazelcastClient("explicit-yaml")); } + @Test + void explicitConfigUrlWithYml() { + this.contextRunner + .withPropertyValues("spring.hazelcast.config=classpath:org/springframework/" + + "boot/autoconfigure/hazelcast/hazelcast-client-specific.yml") + .run(assertSpecificHazelcastClient("explicit-yml")); + } + @Test void unknownConfigFile() { this.contextRunner.withPropertyValues("spring.hazelcast.config=foo/bar/unknown.xml") diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationServerTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationServerTests.java index 3909ba702989..fdf0c59a9771 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationServerTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationServerTests.java @@ -87,6 +87,17 @@ void systemPropertyWithYaml() { }); } + @Test + void systemPropertyWithYml() { + this.contextRunner + .withSystemProperties(HazelcastServerConfiguration.CONFIG_SYSTEM_PROPERTY + + "=classpath:org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml") + .run((context) -> { + Config config = context.getBean(HazelcastInstance.class).getConfig(); + assertThat(config.getMapConfigs().keySet()).containsOnly("foobar"); + }); + } + @Test void explicitConfigFileWithXml() { this.contextRunner @@ -105,6 +116,15 @@ void explicitConfigFileWithYaml() { "org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yaml")); } + @Test + void explicitConfigFileWithYml() { + this.contextRunner + .withPropertyValues("spring.hazelcast.config=org/springframework/boot/autoconfigure/hazelcast/" + + "hazelcast-specific.yml") + .run(assertSpecificHazelcastServer( + "org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml")); + } + @Test void explicitConfigUrlWithXml() { this.contextRunner @@ -123,6 +143,15 @@ void explicitConfigUrlWithYaml() { "org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yaml")); } + @Test + void explicitConfigUrlWithYml() { + this.contextRunner + .withPropertyValues("spring.hazelcast.config=classpath:org/springframework/" + + "boot/autoconfigure/hazelcast/hazelcast-specific.yml") + .run(assertSpecificHazelcastServer( + "org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml")); + } + private ContextConsumer assertSpecificHazelcastServer(String location) { return (context) -> { Config config = context.getBean(HazelcastInstance.class).getConfig(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationTests.java index a4aae808a9bc..132595dc1d39 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/hazelcast/HazelcastAutoConfigurationTests.java @@ -40,7 +40,7 @@ class HazelcastAutoConfigurationTests { void defaultConfigFile() { // no hazelcast-client.xml and hazelcast.xml is present in root classpath // this also asserts that XML has priority over YAML - // as both hazelcast.yaml and hazelcast.xml in test classpath. + // as both hazelcast.yaml, hazelcast.yml and hazelcast.xml in test classpath. this.contextRunner.run((context) -> { Config config = context.getBean(HazelcastInstance.class).getConfig(); assertThat(config.getConfigurationUrl()).isEqualTo(new ClassPathResource("hazelcast.xml").getURL()); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/resources/hazelcast.yml b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/hazelcast.yml new file mode 100644 index 000000000000..686d75638a9c --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/hazelcast.yml @@ -0,0 +1,7 @@ +hazelcast: + network: + join: + auto-detection: + enabled: false + multicast: + enabled: false diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-client-specific.yml b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-client-specific.yml new file mode 100644 index 000000000000..a3e491628063 --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-client-specific.yml @@ -0,0 +1,3 @@ +hazelcast-client: + client-labels: + - explicit-yml diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml new file mode 100644 index 000000000000..933c34ffd0cd --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yml @@ -0,0 +1,12 @@ +hazelcast: + network: + join: + auto-detection: + enabled: false + multicast: + enabled: false + + map: + foobar: + time-to-live-seconds: 3600 + max-idle-seconds: 600