This is an automated email from the ASF dual-hosted git repository. jchen21 pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push: new 49696f8 GEODE-6365: Group support for JDBC mapping logic in DestroyRegionCommand (#3202) 49696f8 is described below commit 49696f83c70606673758a19cf904b544d1df4346 Author: BenjaminPerryRoss <39068135+benjaminperryr...@users.noreply.github.com> AuthorDate: Tue Feb 19 12:04:17 2019 -0800 GEODE-6365: Group support for JDBC mapping logic in DestroyRegionCommand (#3202) Added server group support for the logic in destroy region which checks for an existing jdbc-mapping --- .../cli/commands/DestroyRegionCommand.java | 33 +++++++++++++--------- .../cli/commands/DestroyRegionCommandTest.java | 16 +++++++++-- 2 files changed, 34 insertions(+), 15 deletions(-) diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommand.java index c9ffcb9..6df293e 100644 --- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommand.java +++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommand.java @@ -14,6 +14,7 @@ */ package org.apache.geode.management.internal.cli.commands; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -95,19 +96,25 @@ public class DestroyRegionCommand extends InternalGfshCommand { if (ccService == null) { return; } - CacheConfig cacheConfig = ccService.getCacheConfig(null); - if (cacheConfig == null) { - return; - } - RegionConfig regionConfig = CacheElement.findElement(cacheConfig.getRegions(), regionName); - if (regionConfig == null) { - return; - } - CacheElement element = - CacheElement.findElement(regionConfig.getCustomRegionElements(), "jdbc-mapping"); - if (element != null) { - throw new IllegalStateException("Cannot destroy region \"" + regionName - + "\" because JDBC mapping exists. Use \"destroy jdbc-mapping\" first."); + + Set<String> groupNames = new HashSet<String>(); + groupNames.addAll(ccService.getGroups()); + groupNames.add("cluster"); + for (String groupName : groupNames) { + CacheConfig cacheConfig = ccService.getCacheConfig(groupName); + if (cacheConfig == null) { + return; + } + RegionConfig regionConfig = CacheElement.findElement(cacheConfig.getRegions(), regionName); + if (regionConfig == null) { + return; + } + CacheElement element = + CacheElement.findElement(regionConfig.getCustomRegionElements(), "jdbc-mapping"); + if (element != null) { + throw new IllegalStateException("Cannot destroy region \"" + regionName + + "\" because JDBC mapping exists. Use \"destroy jdbc-mapping\" first."); + } } } } diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java index 374eba1..46d069d 100644 --- a/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java +++ b/geode-core/src/test/java/org/apache/geode/management/internal/cli/commands/DestroyRegionCommandTest.java @@ -26,6 +26,7 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; @@ -165,7 +166,7 @@ public class DestroyRegionCommandTest { } private void setupJDBCMappingOnRegion(String regionName) { - doReturn(cacheConfig).when(ccService).getCacheConfig(null); + doReturn(cacheConfig).when(ccService).getCacheConfig("cluster"); doReturn(regionConfigList).when(cacheConfig).getRegions(); doReturn(regionName).when(regionConfig).getName(); doReturn(regionName).when(regionConfig).getId(); @@ -187,6 +188,17 @@ public class DestroyRegionCommandTest { command.checkForJDBCMapping("regionName"); } + @Test(expected = IllegalStateException.class) + public void checkForJDBCMappingWithRegionNameThrowsIllegalStateExceptionForGroup() { + Set<String> groups = new HashSet<String>(); + groups.add("Group1"); + doReturn(groups).when(ccService).getGroups(); + setupJDBCMappingOnRegion("regionName"); + doReturn(cacheConfig).when(ccService).getCacheConfig("Group1"); + + command.checkForJDBCMapping("regionName"); + } + @Test public void checkForJDBCMappingWithNoClusterConfigDoesNotThrowException() { setupJDBCMappingOnRegion("regionName"); @@ -198,7 +210,7 @@ public class DestroyRegionCommandTest { @Test public void checkForJDBCMappingWithNoCacheConfigDoesNotThrowException() { setupJDBCMappingOnRegion("regionName"); - doReturn(null).when(ccService).getCacheConfig(null); + doReturn(null).when(ccService).getCacheConfig("cluster"); command.checkForJDBCMapping("regionName"); }