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 checkForCacheWriter(String regionName, boolean synchronous, RegionConfig regionConfig) throws PreconditionException { if (synchronous) { RegionAttributesType writerAttributes = regionConfig.getRegionAttributes(); if (writerAttributes != null) { DeclarableType writerDeclarable = writerAttributes.getCacheWriter(); if (writerDeclarable != null) { throw new PreconditionException("The existing region " + regionName + " must not already have a cache-writer, but it has " + writerDeclarable.getClassName()); } } } }
@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 createMappingWithSynchronousReturnsStatusERRORWhenClusterConfigRegionHasWriter() { results.add(successFunctionResult); ConfigurationPersistenceService configurationPersistenceService = mock(ConfigurationPersistenceService.class); doReturn(configurationPersistenceService).when(createRegionMappingCommand) .getConfigurationPersistenceService(); when(configurationPersistenceService.getCacheConfig(null)).thenReturn(cacheConfig); List<RegionConfig> list = new ArrayList<>(); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); RegionAttributesType writerAttribute = mock(RegionAttributesType.class); DeclarableType writerDeclarable = mock(DeclarableType.class); when(writerDeclarable.getClassName()).thenReturn("MyCacheWriterClass"); when(writerAttribute.getCacheWriter()).thenReturn(writerDeclarable); when(matchingRegion.getRegionAttributes()).thenReturn(writerAttribute); ResultModel result = createRegionMappingCommand.createMapping(regionName, dataSourceName, tableName, pdxClass, true, null, null, null); assertThat(result.getStatus()).isSameAs(Result.Status.ERROR); assertThat(result.toString()).contains("The existing region " + regionName + " must not already have a cache-writer, but it has MyCacheWriterClass"); }
@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.getCompressor().toString()).isEqualTo("my.className"); assertThat(regionAttributes.getCacheLoader()).isEqualTo(declarableWithString); assertThat(regionAttributes.getCacheWriter()).isEqualTo(declarableWithString); assertThat(regionAttributes.getRegionTimeToLive().getCustomExpiry()) .isEqualTo(declarableWithString);
@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 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 DeclarableType cacheWriter = regionAttributes.getCacheWriter(); if (cacheWriter != null) { if (cacheWriter.equals(DeclarableType.EMPTY)) {
if (deltaAttributes.getCacheWriter() != null) { if (deltaAttributes.getCacheWriter().equals(DeclarableType.EMPTY)) { existingAttributes.setCacheWriter(null); } else { existingAttributes.setCacheWriter(deltaAttributes.getCacheWriter());
if (regionAttributes.getCacheWriter() != null) { ((RegionFactory<Object, Object>) factory) .setCacheWriter(DeclarableTypeInstantiator.newInstance(regionAttributes.getCacheWriter(), cache));