Merge pull request #7469 from vpavic:gh-4918
* pr/7469: Polish "Add auto-configuration support for Hazelcast client" Add auto-configuration support for Hazelcast clientpull/2934/merge
commit
39a1c5e6ea
@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.hazelcast;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.hazelcast.client.HazelcastClient;
|
||||
import com.hazelcast.client.config.ClientConfig;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
/**
|
||||
* Configuration for Hazelcast client.
|
||||
*
|
||||
* @author Vedran Pavic
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@ConditionalOnClass(HazelcastClient.class)
|
||||
@ConditionalOnMissingBean(HazelcastInstance.class)
|
||||
class HazelcastClientConfiguration {
|
||||
|
||||
static final String CONFIG_SYSTEM_PROPERTY = "hazelcast.client.config";
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnMissingBean(ClientConfig.class)
|
||||
@Conditional(ConfigAvailableCondition.class)
|
||||
static class HazelcastClientConfigFileConfiguration {
|
||||
|
||||
@Bean
|
||||
public HazelcastInstance hazelcastInstance(HazelcastProperties properties)
|
||||
throws IOException {
|
||||
Resource config = properties.resolveConfigLocation();
|
||||
if (config != null) {
|
||||
return new HazelcastClientFactory(config).getHazelcastInstance();
|
||||
}
|
||||
return HazelcastClient.newHazelcastClient();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnSingleCandidate(ClientConfig.class)
|
||||
static class HazelcastClientConfigConfiguration {
|
||||
|
||||
@Bean
|
||||
public HazelcastInstance hazelcastInstance(ClientConfig config) {
|
||||
return new HazelcastClientFactory(config).getHazelcastInstance();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link HazelcastConfigResourceCondition} that checks if the
|
||||
* {@code spring.hazelcast.config} configuration key is defined.
|
||||
*/
|
||||
static class ConfigAvailableCondition extends HazelcastConfigResourceCondition {
|
||||
|
||||
ConfigAvailableCondition() {
|
||||
super(CONFIG_SYSTEM_PROPERTY, "file:./hazelcast-client.xml",
|
||||
"classpath:/hazelcast-client.xml");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.hazelcast;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
import com.hazelcast.client.HazelcastClient;
|
||||
import com.hazelcast.client.config.ClientConfig;
|
||||
import com.hazelcast.client.config.XmlClientConfigBuilder;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Factory that can be used to create a client {@link HazelcastInstance}.
|
||||
*
|
||||
* @author Vedran Pavic
|
||||
* @since 2.0.0
|
||||
*/
|
||||
public class HazelcastClientFactory {
|
||||
|
||||
private final ClientConfig clientConfig;
|
||||
|
||||
/**
|
||||
* Create a {@link HazelcastClientFactory} for the specified configuration location.
|
||||
* @param clientConfigLocation the location of the configuration file
|
||||
* @throws IOException if the configuration location could not be read
|
||||
*/
|
||||
public HazelcastClientFactory(Resource clientConfigLocation) throws IOException {
|
||||
this.clientConfig = getClientConfig(clientConfigLocation);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a {@link HazelcastClientFactory} for the specified configuration.
|
||||
* @param clientConfig the configuration
|
||||
*/
|
||||
public HazelcastClientFactory(ClientConfig clientConfig) {
|
||||
Assert.notNull(clientConfig, "ClientConfig must not be null");
|
||||
this.clientConfig = clientConfig;
|
||||
}
|
||||
|
||||
|
||||
private ClientConfig getClientConfig(Resource clientConfigLocation)
|
||||
throws IOException {
|
||||
URL configUrl = clientConfigLocation.getURL();
|
||||
return new XmlClientConfigBuilder(configUrl).build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the {@link HazelcastInstance}.
|
||||
* @return the {@link HazelcastInstance}
|
||||
*/
|
||||
public HazelcastInstance getHazelcastInstance() {
|
||||
if (StringUtils.hasText(this.clientConfig.getInstanceName())) {
|
||||
return HazelcastClient.getHazelcastClientByName(
|
||||
this.clientConfig.getInstanceName());
|
||||
}
|
||||
return HazelcastClient.newHazelcastClient(this.clientConfig);
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,84 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.hazelcast;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.hazelcast.config.Config;
|
||||
import com.hazelcast.core.Hazelcast;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.Resource;
|
||||
|
||||
/**
|
||||
* Configuration for Hazelcast server.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
* @author Vedran Pavic
|
||||
*/
|
||||
@ConditionalOnMissingBean(HazelcastInstance.class)
|
||||
class HazelcastServerConfiguration {
|
||||
|
||||
static final String CONFIG_SYSTEM_PROPERTY = "hazelcast.config";
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnMissingBean(Config.class)
|
||||
@Conditional(ConfigAvailableCondition.class)
|
||||
static class HazelcastServerConfigFileConfiguration {
|
||||
|
||||
@Bean
|
||||
public HazelcastInstance hazelcastInstance(HazelcastProperties properties)
|
||||
throws IOException {
|
||||
Resource config = properties.resolveConfigLocation();
|
||||
if (config != null) {
|
||||
return new HazelcastInstanceFactory(config).getHazelcastInstance();
|
||||
}
|
||||
return Hazelcast.newHazelcastInstance();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@ConditionalOnSingleCandidate(Config.class)
|
||||
static class HazelcastServerConfigConfiguration {
|
||||
|
||||
@Bean
|
||||
public HazelcastInstance hazelcastInstance(Config config) {
|
||||
return new HazelcastInstanceFactory(config).getHazelcastInstance();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link HazelcastConfigResourceCondition} that checks if the
|
||||
* {@code spring.hazelcast.config} configuration key is defined.
|
||||
*/
|
||||
static class ConfigAvailableCondition extends HazelcastConfigResourceCondition {
|
||||
|
||||
ConfigAvailableCondition() {
|
||||
super(CONFIG_SYSTEM_PROPERTY, "file:./hazelcast.xml",
|
||||
"classpath:/hazelcast.xml");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,159 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.hazelcast;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.hazelcast.client.config.ClientConfig;
|
||||
import com.hazelcast.client.impl.HazelcastClientProxy;
|
||||
import com.hazelcast.config.Config;
|
||||
import com.hazelcast.core.Hazelcast;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
import org.junit.After;
|
||||
import org.junit.AfterClass;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.boot.test.util.EnvironmentTestUtils;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link HazelcastAutoConfiguration} specific to the client.
|
||||
*
|
||||
* @author Vedran Pavic
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class HazelcastAutoConfigurationClientTests {
|
||||
|
||||
@Rule
|
||||
public final ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
/**
|
||||
* Servers the test clients will connect to.
|
||||
*/
|
||||
private static HazelcastInstance hazelcastServer;
|
||||
|
||||
@BeforeClass
|
||||
public static void init() {
|
||||
hazelcastServer = Hazelcast.newHazelcastInstance();
|
||||
}
|
||||
|
||||
@AfterClass
|
||||
public static void close() {
|
||||
if (hazelcastServer != null) {
|
||||
hazelcastServer.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@After
|
||||
public void closeContext() {
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void systemProperty() throws IOException {
|
||||
System.setProperty(HazelcastClientConfiguration.CONFIG_SYSTEM_PROPERTY,
|
||||
"classpath:org/springframework/boot/autoconfigure/hazelcast/" +
|
||||
"hazelcast-client-specific.xml");
|
||||
try {
|
||||
load();
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
|
||||
assertThat(hazelcastInstance.getName()).startsWith("hz.client_");
|
||||
}
|
||||
finally {
|
||||
System.clearProperty(HazelcastClientConfiguration.CONFIG_SYSTEM_PROPERTY);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitConfigFile() throws IOException {
|
||||
load("spring.hazelcast.config=org/springframework/boot/autoconfigure/"
|
||||
+ "hazelcast/hazelcast-client-specific.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
|
||||
assertThat(hazelcastInstance.getName()).startsWith("hz.client_");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitConfigUrl() throws IOException {
|
||||
load("spring.hazelcast.config=hazelcast-client-default.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
|
||||
assertThat(hazelcastInstance.getName()).startsWith("hz.client_");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unknownConfigFile() {
|
||||
this.thrown.expect(BeanCreationException.class);
|
||||
this.thrown.expectMessage("foo/bar/unknown.xml");
|
||||
load("spring.hazelcast.config=foo/bar/unknown.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void clientConfigTakesPrecedence() {
|
||||
load(HazelcastServerAndClientConfig.class, "spring.hazelcast.config=this-is-ignored.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance).isInstanceOf(HazelcastClientProxy.class);
|
||||
}
|
||||
|
||||
private void load(String... environment) {
|
||||
load(null, environment);
|
||||
}
|
||||
|
||||
private void load(Class<?> config, String... environment) {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
EnvironmentTestUtils.addEnvironment(applicationContext, environment);
|
||||
if (config != null) {
|
||||
applicationContext.register(config);
|
||||
}
|
||||
applicationContext.register(HazelcastAutoConfiguration.class);
|
||||
applicationContext.refresh();
|
||||
this.context = applicationContext;
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class HazelcastServerAndClientConfig {
|
||||
|
||||
@Bean
|
||||
public Config config() {
|
||||
return new Config();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public ClientConfig clientConfig() {
|
||||
return new ClientConfig();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,184 @@
|
||||
/*
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.autoconfigure.hazelcast;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
import com.hazelcast.config.Config;
|
||||
import com.hazelcast.config.QueueConfig;
|
||||
import com.hazelcast.core.Hazelcast;
|
||||
import com.hazelcast.core.HazelcastInstance;
|
||||
import org.junit.After;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import org.springframework.beans.factory.BeanCreationException;
|
||||
import org.springframework.boot.junit.runner.classpath.ClassPathExclusions;
|
||||
import org.springframework.boot.junit.runner.classpath.ModifiedClassPathRunner;
|
||||
import org.springframework.boot.test.util.EnvironmentTestUtils;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.ClassPathResource;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Tests for {@link HazelcastAutoConfiguration} when the client library is not present.
|
||||
*
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
@RunWith(ModifiedClassPathRunner.class)
|
||||
@ClassPathExclusions("hazelcast-client-*.jar")
|
||||
public class HazelcastAutoConfigurationServerTests {
|
||||
|
||||
@Rule
|
||||
public final ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
private AnnotationConfigApplicationContext context;
|
||||
|
||||
@After
|
||||
public void closeContext() {
|
||||
if (this.context != null) {
|
||||
this.context.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void defaultConfigFile() throws IOException {
|
||||
load(); // hazelcast.xml present in root classpath
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance.getConfig().getConfigurationUrl())
|
||||
.isEqualTo(new ClassPathResource("hazelcast.xml").getURL());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void systemProperty() throws IOException {
|
||||
System.setProperty(HazelcastServerConfiguration.CONFIG_SYSTEM_PROPERTY,
|
||||
"classpath:org/springframework/boot/autoconfigure/hazelcast/hazelcast-specific.xml");
|
||||
try {
|
||||
load();
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
Map<String, QueueConfig> queueConfigs = hazelcastInstance.getConfig()
|
||||
.getQueueConfigs();
|
||||
assertThat(queueConfigs).hasSize(1).containsKey("foobar");
|
||||
}
|
||||
finally {
|
||||
System.clearProperty(HazelcastServerConfiguration.CONFIG_SYSTEM_PROPERTY);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitConfigFile() throws IOException {
|
||||
load("spring.hazelcast.config=org/springframework/boot/autoconfigure/hazelcast/"
|
||||
+ "hazelcast-specific.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance.getConfig().getConfigurationFile()).isEqualTo(
|
||||
new ClassPathResource("org/springframework/boot/autoconfigure/hazelcast"
|
||||
+ "/hazelcast-specific.xml").getFile());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void explicitConfigUrl() throws IOException {
|
||||
load("spring.hazelcast.config=hazelcast-default.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance.getConfig().getConfigurationUrl())
|
||||
.isEqualTo(new ClassPathResource("hazelcast-default.xml").getURL());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void unknownConfigFile() {
|
||||
this.thrown.expect(BeanCreationException.class);
|
||||
this.thrown.expectMessage("foo/bar/unknown.xml");
|
||||
load("spring.hazelcast.config=foo/bar/unknown.xml");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configInstanceWithName() {
|
||||
Config config = new Config("my-test-instance");
|
||||
HazelcastInstance existingHazelcastInstance = Hazelcast
|
||||
.newHazelcastInstance(config);
|
||||
try {
|
||||
load(HazelcastConfigWithName.class,
|
||||
"spring.hazelcast.config=this-is-ignored.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
assertThat(hazelcastInstance.getConfig().getInstanceName())
|
||||
.isEqualTo("my-test-instance");
|
||||
// Should reuse any existing instance by default.
|
||||
assertThat(hazelcastInstance).isEqualTo(existingHazelcastInstance);
|
||||
}
|
||||
finally {
|
||||
existingHazelcastInstance.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configInstanceWithoutName() {
|
||||
load(HazelcastConfigNoName.class, "spring.hazelcast.config=this-is-ignored.xml");
|
||||
HazelcastInstance hazelcastInstance = this.context
|
||||
.getBean(HazelcastInstance.class);
|
||||
Map<String, QueueConfig> queueConfigs = hazelcastInstance.getConfig()
|
||||
.getQueueConfigs();
|
||||
assertThat(queueConfigs).hasSize(1).containsKey("another-queue");
|
||||
}
|
||||
|
||||
private void load(String... environment) {
|
||||
load(null, environment);
|
||||
}
|
||||
|
||||
private void load(Class<?> config, String... environment) {
|
||||
AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext();
|
||||
EnvironmentTestUtils.addEnvironment(applicationContext, environment);
|
||||
if (config != null) {
|
||||
applicationContext.register(config);
|
||||
}
|
||||
applicationContext.register(HazelcastAutoConfiguration.class);
|
||||
applicationContext.refresh();
|
||||
this.context = applicationContext;
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class HazelcastConfigWithName {
|
||||
|
||||
@Bean
|
||||
public Config myHazelcastConfig() {
|
||||
return new Config("my-test-instance");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Configuration
|
||||
static class HazelcastConfigNoName {
|
||||
|
||||
@Bean
|
||||
public Config anotherHazelcastConfig() {
|
||||
Config config = new Config();
|
||||
config.addQueueConfig(new QueueConfig("another-queue"));
|
||||
return config;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<hazelcast-client xmlns="http://www.hazelcast.com/schema/client-config"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.hazelcast.com/schema/client-config hazelcast-client-config-3.8.xsd">
|
||||
|
||||
</hazelcast-client>
|
Loading…
Reference in New Issue