@Test public void updateWithCacheListeners() { // suppose region has one cacheListener, and we want to replace the oldOne one with the new one CacheListener oldOne = mock(CacheListener.class); when(region.getCacheListeners()).thenReturn(new CacheListener[] {oldOne}); DeclarableType newCacheListenerType = mock(DeclarableType.class); when(newCacheListenerType.getClassName()).thenReturn(MyCacheListener.class.getName()); regionAttributes.getCacheListeners().add(newCacheListenerType); ArgumentCaptor<CacheListener> argument = ArgumentCaptor.forClass(CacheListener.class); function.alterRegion(cache, config); verify(mutator).removeCacheListener(oldOne); verify(mutator).addCacheListener(argument.capture()); assertThat(argument.getValue()).isInstanceOf(MyCacheListener.class); }
@Test public void updateWithEmptyCacheListeners() { // suppose region has on listener, and we want to delete that one CacheListener oldOne = mock(CacheListener.class); when(region.getCacheListeners()).thenReturn(new CacheListener[] {oldOne}); regionAttributes.getCacheListeners().add(DeclarableType.EMPTY); function.alterRegion(cache, config); verify(mutator).removeCacheListener(oldOne); verify(mutator, times(0)).addCacheListener(any()); }
@Test public void alterWithNoCacheListener() { RegionConfig deltaConfig = getDeltaRegionConfig("alter region --name=regionA --cache-listener=''"); List<DeclarableType> cacheListeners = deltaConfig.getRegionAttributes().getCacheListeners(); assertThat(cacheListeners).hasSize(1); assertThat(cacheListeners.get(0)).isEqualTo(DeclarableType.EMPTY); RegionAttributesType existingAttributes = new RegionAttributesType(); existingAttributes.getCacheListeners().add(new DeclarableType("ghi")); existingRegionConfig.setRegionAttributes(existingAttributes); command.updateConfigForGroup("cluster", cacheConfig, deltaConfig); List<DeclarableType> updatedCacheListeners = existingRegionConfig.getRegionAttributes().getCacheListeners(); assertThat(updatedCacheListeners).hasSize(0); }
@Test public void alterWithCacheListener() { RegionConfig deltaConfig = getDeltaRegionConfig("alter region --name=regionA --cache-listener=abc,def"); List<DeclarableType> cacheListeners = deltaConfig.getRegionAttributes().getCacheListeners(); assertThat(cacheListeners).hasSize(2); assertThat(cacheListeners.get(0).getClassName()).isEqualTo("abc"); assertThat(cacheListeners.get(1).getClassName()).isEqualTo("def"); // check that the combined the configuration is created as expected RegionAttributesType existingAttributes = new RegionAttributesType(); existingAttributes.getCacheListeners().add(new DeclarableType("ghi")); existingRegionConfig.setRegionAttributes(existingAttributes); command.updateConfigForGroup("cluster", cacheConfig, deltaConfig); List<DeclarableType> updatedCacheListeners = existingRegionConfig.getRegionAttributes().getCacheListeners(); assertThat(updatedCacheListeners).hasSize(2); assertThat(updatedCacheListeners.get(0).getClassName()).isEqualTo("abc"); assertThat(updatedCacheListeners.get(1).getClassName()).isEqualTo("def"); assertThat(existingRegionConfig.getRegionAttributes().getEntryIdleTime()).isNull(); }
@Test public void alterWithCacheLoader() { RegionConfig deltaConfig = getDeltaRegionConfig("alter region --name=regionA --cache-loader=abc"); RegionAttributesType deltaAttributes = deltaConfig.getRegionAttributes(); assertThat(deltaAttributes.getCacheWriter()).isNull(); assertThat(deltaAttributes.getCacheLoader().getClassName()).isEqualTo("abc"); assertThat(deltaAttributes.getCacheListeners()).isNotNull().isEmpty(); RegionAttributesType existingAttributes = new RegionAttributesType(); existingAttributes.getCacheListeners().add(new DeclarableType("def")); existingAttributes.setCacheLoader(new DeclarableType("def")); existingAttributes.setCacheWriter(new DeclarableType("def")); existingRegionConfig.setRegionAttributes(existingAttributes); command.updateConfigForGroup("cluster", cacheConfig, deltaConfig); // after update, the cache listeners remains the same assertThat(existingAttributes.getCacheListeners()).hasSize(1); assertThat(existingAttributes.getCacheListeners().get(0).getClassName()).isEqualTo("def"); // after update the cache writer remains the same assertThat(existingAttributes.getCacheWriter().getClassName()).isEqualTo("def"); // after update the cache loader is changed assertThat(existingAttributes.getCacheLoader().getClassName()).isEqualTo("abc"); }
@Test public void generatesWithCacheClasses() { cacheListeners = new HashSet<>(); cacheListeners.add(new ClassName<>("java.lang.String")); cacheLoader = new ClassName("java.lang.String"); cacheWriter = new ClassName("java.lang.String"); generate(); List<DeclarableType> cacheListeners = config.getRegionAttributes().getCacheListeners(); assertThat(cacheListeners).isNotNull(); assertThat(cacheListeners.get(0).getClassName()).isEqualTo("java.lang.String"); assertThat( config.getRegionAttributes().getCacheLoader().getClassName()) .isEqualTo("java.lang.String"); assertThat( config.getRegionAttributes().getCacheWriter().getClassName()) .isEqualTo("java.lang.String"); }
assertThat(regionAttributes.getCacheListeners().get(0)).isEqualTo(declarableWithString); assertThat(regionAttributes.getCompressor().toString()).isEqualTo("my.className"); assertThat(regionAttributes.getCacheLoader()).isEqualTo(declarableWithString);
@Test public void alterWithCloningEnabled() { RegionAttributesType regionAttributes = getDeltaRegionConfig("alter region --name=regionA --enable-cloning=false") .getRegionAttributes(); assertThat(regionAttributes.isCloningEnabled()).isFalse(); assertThat(regionAttributes.getAsyncEventQueueIds()).isNull(); assertThat(regionAttributes.getDataPolicy()).isNull(); assertThat(regionAttributes.getGatewaySenderIds()).isNull(); assertThat(regionAttributes.getCacheLoader()).isNull(); assertThat(regionAttributes.getCacheWriter()).isNull(); assertThat(regionAttributes.getCacheListeners()).isNotNull().isEmpty(); assertThat(regionAttributes.getEvictionAttributes()).isNull(); assertThat(regionAttributes.getEntryIdleTime()).isNull(); assertThat(regionAttributes.getEntryTimeToLive()).isNull(); assertThat(regionAttributes.getRegionIdleTime()).isNull(); assertThat(regionAttributes.getRegionTimeToLive()).isNull(); }
final List<DeclarableType> newCacheListeners = regionAttributes.getCacheListeners();
if (!deltaAttributes.getCacheListeners().isEmpty()) { existingAttributes.getCacheListeners().clear(); if (!deltaAttributes.getCacheListeners().get(0).equals(DeclarableType.EMPTY)) { existingAttributes.getCacheListeners().addAll(deltaAttributes.getCacheListeners());
regionAttributesType.getCacheListeners().addAll( Arrays.stream(cacheListeners) .map(l -> new DeclarableType(l.getClassName(), l.getInitProperties()))
if (regionAttributes.getCacheListeners() != null) { List<DeclarableType> configListeners = regionAttributes.getCacheListeners(); CacheListener[] listeners = new CacheListener[configListeners.size()]; for (int i = 0; i < configListeners.size(); i++) {