Add support for detecting .yml Hazelcast config files

See gh-32142
pull/32501/head
Neil Stevenson 2 years ago committed by Stephane Nicoll
parent cd61d69a2f
commit 5eaafdee9a

@ -39,7 +39,8 @@ class HazelcastClientConfigAvailableCondition extends HazelcastConfigResourceCon
HazelcastClientConfigAvailableCondition() { HazelcastClientConfigAvailableCondition() {
super(HazelcastClientConfiguration.CONFIG_SYSTEM_PROPERTY, "file:./hazelcast-client.xml", 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 @Override

@ -72,7 +72,7 @@ class HazelcastClientConfiguration {
private ClientConfig loadClientConfig(Resource configLocation) throws IOException { private ClientConfig loadClientConfig(Resource configLocation) throws IOException {
URL configUrl = configLocation.getURL(); URL configUrl = configLocation.getURL();
String configFileName = configUrl.getPath(); String configFileName = configUrl.getPath();
if (configFileName.endsWith(".yaml")) { if (configFileName.endsWith(".yaml") || configFileName.endsWith(".yml")) {
return new YamlClientConfigBuilder(configUrl).build(); return new YamlClientConfigBuilder(configUrl).build();
} }
return new XmlClientConfigBuilder(configUrl).build(); return new XmlClientConfigBuilder(configUrl).build();

@ -82,7 +82,7 @@ class HazelcastServerConfiguration {
private static Config loadConfig(URL configUrl) throws IOException { private static Config loadConfig(URL configUrl) throws IOException {
String configFileName = configUrl.getPath(); String configFileName = configUrl.getPath();
if (configFileName.endsWith(".yaml")) { if (configFileName.endsWith(".yaml") || configFileName.endsWith(".yml")) {
return new YamlConfigBuilder(configUrl).build(); return new YamlConfigBuilder(configUrl).build();
} }
return new XmlConfigBuilder(configUrl).build(); return new XmlConfigBuilder(configUrl).build();
@ -109,7 +109,7 @@ class HazelcastServerConfiguration {
ConfigAvailableCondition() { ConfigAvailableCondition() {
super(CONFIG_SYSTEM_PROPERTY, "file:./hazelcast.xml", "classpath:/hazelcast.xml", "file:./hazelcast.yaml", 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");
} }
} }

@ -81,6 +81,14 @@ class HazelcastAutoConfigurationClientTests {
.run(assertSpecificHazelcastClient("explicit-yaml")); .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 @Test
void explicitConfigFileWithXml() { void explicitConfigFileWithXml() {
this.contextRunner.withPropertyValues("spring.hazelcast.config=org/springframework/boot/autoconfigure/" this.contextRunner.withPropertyValues("spring.hazelcast.config=org/springframework/boot/autoconfigure/"
@ -95,6 +103,14 @@ class HazelcastAutoConfigurationClientTests {
.run(assertSpecificHazelcastClient("explicit-yaml")); .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 @Test
void explicitConfigUrlWithXml() { void explicitConfigUrlWithXml() {
this.contextRunner this.contextRunner
@ -111,6 +127,14 @@ class HazelcastAutoConfigurationClientTests {
.run(assertSpecificHazelcastClient("explicit-yaml")); .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 @Test
void unknownConfigFile() { void unknownConfigFile() {
this.contextRunner.withPropertyValues("spring.hazelcast.config=foo/bar/unknown.xml") this.contextRunner.withPropertyValues("spring.hazelcast.config=foo/bar/unknown.xml")

@ -79,6 +79,17 @@ class HazelcastAutoConfigurationServerTests {
}); });
} }
@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 @Test
void explicitConfigFileWithXml() { void explicitConfigFileWithXml() {
this.contextRunner this.contextRunner
@ -97,6 +108,15 @@ class HazelcastAutoConfigurationServerTests {
"org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yaml")); "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 @Test
void explicitConfigUrlWithXml() { void explicitConfigUrlWithXml() {
this.contextRunner this.contextRunner
@ -115,6 +135,15 @@ class HazelcastAutoConfigurationServerTests {
"org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.yaml")); "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<AssertableApplicationContext> assertSpecificHazelcastServer(String location) { private ContextConsumer<AssertableApplicationContext> assertSpecificHazelcastServer(String location) {
return (context) -> { return (context) -> {
Config config = context.getBean(HazelcastInstance.class).getConfig(); Config config = context.getBean(HazelcastInstance.class).getConfig();

@ -45,7 +45,7 @@ class HazelcastAutoConfigurationTests {
void defaultConfigFile() { void defaultConfigFile() {
// no hazelcast-client.xml and hazelcast.xml is present in root classpath // no hazelcast-client.xml and hazelcast.xml is present in root classpath
// this also asserts that XML has priority over YAML // 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) -> { this.contextRunner.run((context) -> {
Config config = context.getBean(HazelcastInstance.class).getConfig(); Config config = context.getBean(HazelcastInstance.class).getConfig();
assertThat(config.getConfigurationUrl()).isEqualTo(new ClassPathResource("hazelcast.xml").getURL()); assertThat(config.getConfigurationUrl()).isEqualTo(new ClassPathResource("hazelcast.xml").getURL());

@ -0,0 +1,7 @@
hazelcast:
network:
join:
auto-detection:
enabled: false
multicast:
enabled: false

@ -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
Loading…
Cancel
Save