/** * @param name the name for this region cache, which is also used to retrieve configuration/topic * @param hazelcastInstance the {@code HazelcastInstance} to which this region cache belongs, used to retrieve * configuration and to lookup an {@link ITopic} to register a {@link MessageListener} * with if {@code withTopic} is {@code true} (optional) * @param metadata metadata describing the cached data, used to compare data versions (optional) * @param withTopic {@code true} to register a {@link MessageListener} with the {@link ITopic} whose name * matches this region cache <i>if</i> a {@code HazelcastInstance} was provided to look * up the topic; otherwise, {@code false} not to register a listener even if an instance * was provided * @since 3.3 */ public LocalRegionCache(final String name, final HazelcastInstance hazelcastInstance, final CacheDataDescription metadata, final boolean withTopic) { this.hazelcastInstance = hazelcastInstance; try { config = hazelcastInstance != null ? hazelcastInstance.getConfig().findMapConfig(name) : null; } catch (UnsupportedOperationException ignored) { EmptyStatement.ignore(ignored); } versionComparator = metadata != null && metadata.isVersioned() ? metadata.getVersionComparator() : null; cache = new ConcurrentHashMap<Object, Expirable>(); markerIdCounter = new AtomicLong(); messageListener = createMessageListener(); if (withTopic && hazelcastInstance != null) { topic = hazelcastInstance.getTopic(name); topic.addMessageListener(messageListener); } else { topic = null; } }
public LocalRegionCache(final String name, final HazelcastInstance hazelcastInstance, final CacheDataDescription metadata) { try { config = hazelcastInstance != null ? hazelcastInstance.getConfig().findMatchingMapConfig(name) : null; } catch (UnsupportedOperationException ignored) { } versionComparator = metadata != null && metadata.isVersioned() ? metadata.getVersionComparator() : null; cache = new ConcurrentHashMap<Object, Value>(); messageListener = createMessageListener(); if (hazelcastInstance != null) { topic = hazelcastInstance.getTopic(name); topic.addMessageListener(messageListener); } else { topic = null; } }
public IMapRegionCache(final String name, final HazelcastInstance hazelcastInstance, final Properties props, final CacheDataDescription metadata) { this.name = name; this.hazelcastInstance = hazelcastInstance; this.versionComparator = metadata != null && metadata.isVersioned() ? metadata.getVersionComparator() : null; this.map = hazelcastInstance.getMap(this.name); lockTimeout = CacheEnvironment.getLockTimeoutInMillis(props); final long maxOperationTimeout = HazelcastTimestamper.getMaxOperationTimeout(hazelcastInstance); tryLockAndGetTimeout = Math.min(maxOperationTimeout, COMPARISON_VALUE); markerIdCounter = new AtomicLong(); }
@Override public CollectionRegion buildCollectionRegion(final String regionName, final Properties properties, final CacheDataDescription metadata) throws CacheException { final HazelcastCollectionRegion<LocalRegionCache> region = new HazelcastCollectionRegion<LocalRegionCache>(instance, regionName, properties, metadata, new LocalRegionCache(regionName, instance, metadata)); cleanupService.registerCache(region.getCache()); return region; }
@Override public EntityRegion buildEntityRegion(final String regionName, final Properties properties, final CacheDataDescription metadata) throws CacheException { final HazelcastEntityRegion<LocalRegionCache> region = new HazelcastEntityRegion<LocalRegionCache>(instance, regionName, properties, metadata, new LocalRegionCache(regionName, instance, metadata)); cleanupService.registerCache(region.getCache()); return region; }
@Test public void testConstructorIgnoresVersionComparatorForUnversionedData() { CacheDataDescription description = mock(CacheDataDescription.class); doThrow(AssertionError.class).when(description).getVersionComparator(); // Will fail the test if called new LocalRegionCache(CACHE_NAME, null, description); verify(description).isVersioned(); // Verify that the versioned flag was checked verifyNoMoreInteractions(description); }
@Test public void testConstructorSetsVersionComparatorForVersionedData() { Comparator<?> comparator = mock(Comparator.class); CacheDataDescription description = mock(CacheDataDescription.class); when(description.getVersionComparator()).thenReturn(comparator); when(description.isVersioned()).thenReturn(true); new LocalRegionCache(CACHE_NAME, null, description); verify(description).getVersionComparator(); verify(description).isVersioned(); }
public IMapRegionCache(final String name, final HazelcastInstance hazelcastInstance, final Properties props, final CacheDataDescription metadata) { this.name = name; this.hazelcastInstance = hazelcastInstance; this.versionComparator = metadata != null && metadata.isVersioned() ? metadata.getVersionComparator() : null; this.map = hazelcastInstance.getMap(this.name); lockTimeout = CacheEnvironment.getLockTimeoutInMillis(props); final long maxOperationTimeout = HazelcastTimestamper.getMaxOperationTimeout(hazelcastInstance); tryLockAndGetTimeout = Math.min(maxOperationTimeout, 500); explicitVersionCheckEnabled = CacheEnvironment.isExplicitVersionCheckEnabled(props); logger = createLogger(name, hazelcastInstance); }
@Override public EntityRegion buildEntityRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { return this.regionFactory.buildEntityRegion(regionName, properties, metadata); }
@Override public CollectionRegion buildCollectionRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { return this.regionFactory.buildCollectionRegion(regionName, properties, metadata); }
@Override public CollectionRegion buildCollectionRegion(final String regionName, final Properties properties, final CacheDataDescription metadata) throws CacheException { return new HazelcastCollectionRegion<IMapRegionCache>(instance, regionName, properties, metadata, new IMapRegionCache(regionName, instance, properties, metadata)); }
@Override public EntityRegion buildEntityRegion(final String regionName, final Properties properties, final CacheDataDescription metadata) throws CacheException { return new HazelcastEntityRegion<IMapRegionCache>(instance, regionName, properties, metadata, new IMapRegionCache(regionName, instance, properties, metadata)); }
protected AbstractTransactionalDataRegion(final HazelcastInstance instance, final String regionName, final Properties props, final CacheDataDescription metadata, final Cache cache) { super(instance, regionName, props); this.metadata = metadata; this.cache = cache; }
/** * @see org.hibernate.cache.TransactionalDataRegion#getCacheDataDescription() */ @Override public CacheDataDescription getCacheDataDescription() { return metadata; }
public HazelcastEntityRegion(final HazelcastInstance instance, final String regionName, final Properties props, final CacheDataDescription metadata, final Cache cache) { super(instance, regionName, props, metadata, cache); }
public HazelcastCollectionRegion(final HazelcastInstance instance, final String regionName, final Properties props, final CacheDataDescription metadata, final Cache cache) { super(instance, regionName, props, metadata, cache); }
public EntityRegion buildEntityRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { return this.regionFactory.buildEntityRegion(regionName, properties, metadata); }
public CollectionRegion buildCollectionRegion(String regionName, Properties properties, CacheDataDescription metadata) throws CacheException { return this.regionFactory.buildCollectionRegion(regionName, properties, metadata); }
public HazelcastEntityRegion(final HazelcastInstance instance, final String name, final Properties props, final CacheDataDescription metadata) { super(instance, name, props, metadata); }
protected AbstractTransactionalDataRegion(final HazelcastInstance instance, final String regionName, final Properties props, final CacheDataDescription metadata) { super(instance, regionName, props); this.metadata = metadata; }
/** * @see org.hibernate.cache.TransactionalDataRegion#getCacheDataDescription() */ public CacheDataDescription getCacheDataDescription() { return metadata; }
public HazelcastCollectionRegion(final HazelcastInstance instance, final String regionName, final Properties props, final CacheDataDescription metadata) { super(instance, regionName, props, metadata); }
/** * @param name the name for this region cache, which is also used to retrieve configuration/topic * @param hazelcastInstance the {@code HazelcastInstance} to which this region cache belongs, used to retrieve * configuration and to lookup an {@link ITopic} to register a {@link MessageListener} * with (optional) * @param metadata metadata describing the cached data, used to compare data versions (optional) */ public LocalRegionCache(final String name, final HazelcastInstance hazelcastInstance, final CacheDataDescription metadata) { this(name, hazelcastInstance, metadata, true); }