package org.littlewings.hazelcast.partitions;
import java.util.stream.IntStream;
import java.util.stream.StreamSupport;
import javax.cache.Cache;
import javax.cache.CacheManager;
import javax.cache.Caching;
import javax.cache.configuration.Configuration;
import javax.cache.configuration.MutableConfiguration;
import javax.cache.spi.CachingProvider;
import com.hazelcast.cache.HazelcastCacheManager;
import com.hazelcast.cache.ICache;
import com.hazelcast.cache.impl.HazelcastServerCacheManager;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.core.IMap;
import com.hazelcast.core.Partition;
public class HazelcastCacheInterpreter extends HazelcastInterpreterSupport {
public static void main(String... args) {
new HazelcastCacheInterpreter().execute(args);
}
@Override
protected void execute(String... args) {
String name = "default";
Configuration<String, Integer> configuration =
new MutableConfiguration<String, Integer>()
.setTypes(String.class, Integer.class);
try (CachingProvider cachingProvider = Caching.getCachingProvider();
CacheManager cacheManager = cachingProvider.getCacheManager();
Cache<String, Integer> cache = cacheManager.createCache(name, configuration)) {
HazelcastCacheManager hazelcastCacheManager = cacheManager.unwrap(HazelcastServerCacheManager.class);
HazelcastInstance hazelcast = hazelcastCacheManager.getHazelcastInstance();
ICache<String, Integer> hazelcastCache = cache.unwrap(ICache.class);
if (args.length > 0) {
if ("master".equals(args[0])) {
IntStream.rangeClosed(1, 10).forEach(i -> hazelcastCache.put("key" + i, i));
}
}
readConsoleWhile(hazelcast,
name,
() -> {
StreamSupport.stream(hazelcastCache.spliterator(), false)
.forEach(entry -> {
String k = entry.getKey();
Partition partition = hazelcast.getPartitionService().getPartition(k);
show("key = %s, partitionId = %d, owner = %s.", k, partition.getPartitionId(), partition.getOwner());
});
return null;
},
hazelcastCache::size);
}
}
}