// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/cache/AsyncCacheResolver.java
// public interface AsyncCacheResolver extends CacheResolver {
// 
// }
// 
// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/cache/jcache/JCacheBucket4jConfiguration.java
// @Configuration
// @ConditionalOnClass({ Caching.class, JCacheCacheManager.class })
// @ConditionalOnBean(CacheManager.class)
// public class JCacheBucket4jConfiguration {
// 	private CacheManager cacheManager;
// 	
// 	public JCacheBucket4jConfiguration(CacheManager cacheManager){
// 		this.cacheManager = cacheManager;
// 	}
// 
// 	@Bean
// 	public SyncCacheResolver bucket4jCacheResolver() {
// 		return new JCacheCacheResolver(cacheManager);
// 	}
// 	
// }


import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.giffing.bucket4j.spring.boot.starter.config.cache.AsyncCacheResolver;
import com.giffing.bucket4j.spring.boot.starter.config.cache.jcache.JCacheBucket4jConfiguration;
import com.hazelcast.core.HazelcastInstance;

package com.giffing.bucket4j.spring.boot.starter.config.cache.hazelcast;



/**
 * Configures the asynchronous support for Hazelcast. The synchronous support of Hazelcast
 * is already provided by the {@link JCacheBucket4jConfiguration}. It uses the {@link HazelcastInstance}
 * to access the {@link HazelcastInstance} to retrieve the cache.
 */
@Configuration
@ConditionalOnClass({ HazelcastInstance.class })
@ConditionalOnBean(HazelcastInstance.class)
public class HazelcastBucket4jCacheConfiguration {
	
	private HazelcastInstance hazelcastInstance;
	
	public HazelcastBucket4jCacheConfiguration(HazelcastInstance hazelcastInstance) {
		this.hazelcastInstance = hazelcastInstance;
	}
	
	@Bean

// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/cache/AsyncCacheResolver.java
// public interface AsyncCacheResolver extends CacheResolver {
// 
// }
// 
// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/cache/jcache/JCacheBucket4jConfiguration.java
// @Configuration
// @ConditionalOnClass({ Caching.class, JCacheCacheManager.class })
// @ConditionalOnBean(CacheManager.class)
// public class JCacheBucket4jConfiguration {
// 	private CacheManager cacheManager;
// 	
// 	public JCacheBucket4jConfiguration(CacheManager cacheManager){
// 		this.cacheManager = cacheManager;
// 	}
// 
// 	@Bean
// 	public SyncCacheResolver bucket4jCacheResolver() {
// 		return new JCacheCacheResolver(cacheManager);
// 	}
// 	
// }


// Path: bucket4j-spring-boot-starter/src/main/java/com/giffing/bucket4j/spring/boot/starter/config/cache/hazelcast/HazelcastBucket4jCacheConfiguration.java
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.giffing.bucket4j.spring.boot.starter.config.cache.AsyncCacheResolver;
import com.giffing.bucket4j.spring.boot.starter.config.cache.jcache.JCacheBucket4jConfiguration;
import com.hazelcast.core.HazelcastInstance;

package com.giffing.bucket4j.spring.boot.starter.config.cache.hazelcast;



/**
 * Configures the asynchronous support for Hazelcast. The synchronous support of Hazelcast
 * is already provided by the {@link JCacheBucket4jConfiguration}. It uses the {@link HazelcastInstance}
 * to access the {@link HazelcastInstance} to retrieve the cache.
 */
@Configuration
@ConditionalOnClass({ HazelcastInstance.class })
@ConditionalOnBean(HazelcastInstance.class)
public class HazelcastBucket4jCacheConfiguration {
	
	private HazelcastInstance hazelcastInstance;
	
	public HazelcastBucket4jCacheConfiguration(HazelcastInstance hazelcastInstance) {
		this.hazelcastInstance = hazelcastInstance;
	}
	
	@Bean

	public AsyncCacheResolver hazelcastCacheResolver() {
