parent
							
								
									508d0af453
								
							
						
					
					
						commit
						a780e87e9c
					
				| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
<hazelcast
 | 
					<hazelcast
 | 
				
			||||||
		xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-4.0.xsd"
 | 
							xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-5.0.xsd"
 | 
				
			||||||
		xmlns="http://www.hazelcast.com/schema/config"
 | 
							xmlns="http://www.hazelcast.com/schema/config"
 | 
				
			||||||
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
							xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
				
			||||||
	<map name="defaultCache" />
 | 
						<map name="defaultCache" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
<hazelcast xmlns="http://www.hazelcast.com/schema/config"
 | 
					<hazelcast xmlns="http://www.hazelcast.com/schema/config"
 | 
				
			||||||
		   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
							   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
		   xsi:schemaLocation="http://www.hazelcast.com/schema/config
 | 
							   xsi:schemaLocation="http://www.hazelcast.com/schema/config
 | 
				
			||||||
           http://www.hazelcast.com/schema/config/hazelcast-config-4.0.xsd">
 | 
					           http://www.hazelcast.com/schema/config/hazelcast-config-5.0.xsd">
 | 
				
			||||||
	<instance-name>actuator-hazelcast</instance-name>
 | 
						<instance-name>actuator-hazelcast</instance-name>
 | 
				
			||||||
	<map name="defaultCache" />
 | 
						<map name="defaultCache" />
 | 
				
			||||||
	<network>
 | 
						<network>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
<hazelcast
 | 
					<hazelcast
 | 
				
			||||||
	xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-4.0.xsd"
 | 
						xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-5.0.xsd"
 | 
				
			||||||
	xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
						xmlns="http://www.hazelcast.com/schema/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
				
			||||||
	<instance-name>default-instance</instance-name>
 | 
						<instance-name>default-instance</instance-name>
 | 
				
			||||||
	<map name="defaultCache" />
 | 
						<map name="defaultCache" />
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,4 +1,4 @@
 | 
				
			||||||
<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-4.0.xsd"
 | 
					<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-5.0.xsd"
 | 
				
			||||||
		   xmlns="http://www.hazelcast.com/schema/config"
 | 
							   xmlns="http://www.hazelcast.com/schema/config"
 | 
				
			||||||
		   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
							   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -413,7 +413,7 @@ bom {
 | 
				
			||||||
			]
 | 
								]
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	library("Hazelcast", "4.2.4") {
 | 
						library("Hazelcast", "5.0.2") {
 | 
				
			||||||
		group("com.hazelcast") {
 | 
							group("com.hazelcast") {
 | 
				
			||||||
			modules = [
 | 
								modules = [
 | 
				
			||||||
				"hazelcast",
 | 
									"hazelcast",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -10,8 +10,8 @@ Spring Boot first attempts to create a client by checking the following configur
 | 
				
			||||||
* A `hazelcast-client.xml` in the working directory or at the root of the classpath.
 | 
					* A `hazelcast-client.xml` in the working directory or at the root of the classpath.
 | 
				
			||||||
* A `hazelcast-client.yaml` in the working directory or at the root of the classpath.
 | 
					* A `hazelcast-client.yaml` in the working directory or at the root of the classpath.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NOTE: Spring Boot supports both Hazelcast 4 and Hazelcast 3.
 | 
					WARNING: Hazelcast 3 support is deprecated.
 | 
				
			||||||
If you downgrade to Hazelcast 3, `hazelcast-client` should be added to the classpath to configure a client.
 | 
					If you still need to downgrade to Hazelcast 3, `hazelcast-client` should be added to the classpath to configure a client.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If a client can not be created, Spring Boot attempts to configure an embedded server.
 | 
					If a client can not be created, Spring Boot attempts to configure an embedded server.
 | 
				
			||||||
If you define a `com.hazelcast.config.Config` bean, Spring Boot uses that.
 | 
					If you define a `com.hazelcast.config.Config` bean, Spring Boot uses that.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,61 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2012-2020 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
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      https://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 smoketest.hazelcast3;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hazelcast.spring.cache.HazelcastCacheManager;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.beans.factory.annotation.Autowired;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.autoconfigure.web.reactive.AutoConfigureWebTestClient;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
 | 
				
			||||||
 | 
					import org.springframework.cache.CacheManager;
 | 
				
			||||||
 | 
					import org.springframework.test.web.reactive.server.WebTestClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.assertj.core.api.Assertions.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
 | 
				
			||||||
 | 
					@AutoConfigureWebTestClient
 | 
				
			||||||
 | 
					class SampleHazelcast3ApplicationTests {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private WebTestClient webClient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private CacheManager cacheManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Autowired
 | 
				
			||||||
 | 
						private CountryRepository countryRepository;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						void cacheManagerIsUsingHazelcast() {
 | 
				
			||||||
 | 
							assertThat(this.cacheManager).isInstanceOf(HazelcastCacheManager.class);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						void healthEndpointHasHazelcastContributor() {
 | 
				
			||||||
 | 
							this.webClient.get().uri("/actuator/health/hazelcast").exchange().expectStatus().isOk().expectBody()
 | 
				
			||||||
 | 
									.jsonPath("status").isEqualTo("UP").jsonPath("details.name").isNotEmpty().jsonPath("details.uuid")
 | 
				
			||||||
 | 
									.isNotEmpty();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Test
 | 
				
			||||||
 | 
						void metricsEndpointHasCacheMetrics() {
 | 
				
			||||||
 | 
							this.webClient.get().uri("/actuator/metrics/cache.entries").exchange().expectStatus().isOk();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,24 @@
 | 
				
			||||||
 | 
					plugins {
 | 
				
			||||||
 | 
						id "java"
 | 
				
			||||||
 | 
						id "org.springframework.boot.conventions"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					description = "Spring Boot Hazelcast 4 smoke test"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					configurations.all {
 | 
				
			||||||
 | 
						resolutionStrategy {
 | 
				
			||||||
 | 
							force "com.hazelcast:hazelcast:4.0.5"
 | 
				
			||||||
 | 
							force "com.hazelcast:hazelcast-spring:4.0.5"
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					dependencies {
 | 
				
			||||||
 | 
						implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-actuator"))
 | 
				
			||||||
 | 
						implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-cache"))
 | 
				
			||||||
 | 
						implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
 | 
				
			||||||
 | 
						implementation("com.hazelcast:hazelcast")
 | 
				
			||||||
 | 
						implementation("com.hazelcast:hazelcast-spring")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
 | 
				
			||||||
 | 
						testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-webflux"))
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,53 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2012-2022 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
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      https://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 smoketest.hazelcast4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SuppressWarnings("serial")
 | 
				
			||||||
 | 
					public class Country implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final String code;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public Country(String code) {
 | 
				
			||||||
 | 
							this.code = code;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public String getCode() {
 | 
				
			||||||
 | 
							return this.code;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean equals(Object o) {
 | 
				
			||||||
 | 
							if (this == o) {
 | 
				
			||||||
 | 
								return true;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							if (o == null || getClass() != o.getClass()) {
 | 
				
			||||||
 | 
								return false;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Country country = (Country) o;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							return this.code.equals(country.code);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public int hashCode() {
 | 
				
			||||||
 | 
							return this.code.hashCode();
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,33 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2012-2022 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
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      https://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 smoketest.hazelcast4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.cache.annotation.CacheConfig;
 | 
				
			||||||
 | 
					import org.springframework.cache.annotation.Cacheable;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Component;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@Component
 | 
				
			||||||
 | 
					@CacheConfig(cacheNames = "countries")
 | 
				
			||||||
 | 
					public class CountryRepository {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Cacheable
 | 
				
			||||||
 | 
						public Country findByCode(String code) {
 | 
				
			||||||
 | 
							System.out.println("---> Loading country with code '" + code + "'");
 | 
				
			||||||
 | 
							return new Country(code);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright 2012-2022 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
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *      https://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 smoketest.hazelcast4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.hazelcast.spring.cache.HazelcastCacheManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.boot.ApplicationRunner;
 | 
				
			||||||
 | 
					import org.springframework.boot.SpringApplication;
 | 
				
			||||||
 | 
					import org.springframework.boot.actuate.metrics.cache.CacheMetricsRegistrar;
 | 
				
			||||||
 | 
					import org.springframework.boot.autoconfigure.SpringBootApplication;
 | 
				
			||||||
 | 
					import org.springframework.cache.annotation.EnableCaching;
 | 
				
			||||||
 | 
					import org.springframework.context.annotation.Bean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@SpringBootApplication
 | 
				
			||||||
 | 
					@EnableCaching
 | 
				
			||||||
 | 
					public class SampleHazelcast4Application {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static void main(String[] args) {
 | 
				
			||||||
 | 
							SpringApplication.run(SampleHazelcast4Application.class, args);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Bean
 | 
				
			||||||
 | 
						public ApplicationRunner registerCache(CountryRepository repository, HazelcastCacheManager cacheManager,
 | 
				
			||||||
 | 
								CacheMetricsRegistrar registrar) {
 | 
				
			||||||
 | 
							return (args) -> {
 | 
				
			||||||
 | 
								repository.findByCode("BE");
 | 
				
			||||||
 | 
								registrar.bindCacheToRegistry(cacheManager.getCache("countries"));
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					management.endpoint.health.show-details=always
 | 
				
			||||||
 | 
					management.endpoints.web.exposure.include=*
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					<hazelcast xmlns="http://www.hazelcast.com/schema/config"
 | 
				
			||||||
 | 
							   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
							   xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-4.0.xsd">
 | 
				
			||||||
 | 
						<map name="countries">
 | 
				
			||||||
 | 
							<time-to-live-seconds>600</time-to-live-seconds>
 | 
				
			||||||
 | 
						</map>
 | 
				
			||||||
 | 
						<cache name="countries">
 | 
				
			||||||
 | 
							<eviction size="200"/>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							<statistics-enabled>true</statistics-enabled>
 | 
				
			||||||
 | 
							<management-enabled>true</management-enabled>
 | 
				
			||||||
 | 
						</cache>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<network>
 | 
				
			||||||
 | 
							<join>
 | 
				
			||||||
 | 
								<tcp-ip enabled="false"/>
 | 
				
			||||||
 | 
								<multicast enabled="false"/>
 | 
				
			||||||
 | 
							</join>
 | 
				
			||||||
 | 
						</network>
 | 
				
			||||||
 | 
					</hazelcast>
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright 2012-2020 the original author or authors.
 | 
					 * Copyright 2012-2022 the original author or authors.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 * you may not use this file except in compliance with the License.
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
| 
						 | 
					@ -14,7 +14,7 @@
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
package smoketest.hazelcast3;
 | 
					package smoketest.hazelcast4;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.hazelcast.spring.cache.HazelcastCacheManager;
 | 
					import com.hazelcast.spring.cache.HazelcastCacheManager;
 | 
				
			||||||
import org.junit.jupiter.api.Test;
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
		Loading…
	
		Reference in New Issue