Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hazelcast auto-configuration recognizes hazelcast.xml and hazelcast.yaml files but not hazelcast.yml #32142

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -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
Expand Down
Expand Up @@ -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();
Expand Down
Expand Up @@ -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();
Expand Down Expand Up @@ -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");
}

}
Expand Down
Expand Up @@ -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/"
Expand All @@ -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
Expand All @@ -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")
Expand Down
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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<AssertableApplicationContext> assertSpecificHazelcastServer(String location) {
return (context) -> {
Config config = context.getBean(HazelcastInstance.class).getConfig();
Expand Down
Expand Up @@ -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());
Expand Down
@@ -0,0 +1,7 @@
hazelcast:
network:
join:
auto-detection:
enabled: false
multicast:
enabled: false
@@ -0,0 +1,3 @@
hazelcast-client:
client-labels:
- explicit-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