private boolean removeJdbcWriter(RegionAttributesType attributes) { DeclarableType cacheWriter = attributes.getCacheWriter(); if (cacheWriter != null) { if (JdbcWriter.class.getName().equals(cacheWriter.getClassName())) { attributes.setCacheWriter(null); return true; } } return false; }
private void setCacheWriter(RegionAttributesType attributes) { DeclarableType writer = new DeclarableType(); writer.setClassName(JdbcWriter.class.getName()); attributes.setCacheWriter(writer); } }
@Test public void updateClusterConfigWithSynchronousSetsTheCacheWriterOnTheMatchingRegion() { arguments[1] = true; List<RegionConfig> list = new ArrayList<>(); List<CacheElement> listCacheElements = new ArrayList<>(); when(matchingRegion.getCustomRegionElements()).thenReturn(listCacheElements); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); createRegionMappingCommand.updateConfigForGroup(null, cacheConfig, arguments); verify(matchingRegionAttributes).setCacheWriter(any()); }
@Test public void updateClusterConfigWithOneMatchingRegionAndJdbcWriterRemovesTheWriter() { List<RegionConfig> list = new ArrayList<>(); List<CacheElement> listCacheElements = new ArrayList<>(); RegionMapping matchingMapping = mock(RegionMapping.class); listCacheElements.add(matchingMapping); when(matchingRegion.getCustomRegionElements()).thenReturn(listCacheElements); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); DeclarableType cacheWriter = mock(DeclarableType.class); when(cacheWriter.getClassName()).thenReturn(JdbcWriter.class.getName()); when(matchingRegionAttributes.getCacheWriter()).thenReturn(cacheWriter); boolean modified = destroyRegionMappingCommand.updateConfigForGroup(null, cacheConfig, regionName); verify(matchingRegionAttributes, times(1)).setCacheWriter(null); assertThat(modified).isTrue(); }
@Test public void updateWithCacheWriter() { DeclarableType newCacheWriterDeclarable = mock(DeclarableType.class); when(newCacheWriterDeclarable.getClassName()).thenReturn(MyCacheWriter.class.getName()); regionAttributes.setCacheWriter(newCacheWriterDeclarable); function.alterRegion(cache, config); verify(mutator).setCacheWriter(notNull()); verify(mutator, times(0)).setCacheLoader(any()); }
@Test public void updateWithNoCacheWriter() { regionAttributes.setCacheWriter(DeclarableType.EMPTY); function.alterRegion(cache, config); verify(mutator).setCacheWriter(null); verify(mutator, times(0)).setCacheLoader(any()); } }
@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"); }
regionAttributesType.setCacheWriter( new DeclarableType(cacheLoader.getClassName(), cacheLoader.getInitProperties()));
existingAttributes.setCacheWriter(null); } else { existingAttributes.setCacheWriter(deltaAttributes.getCacheWriter());