DATAGEODE-244 - Guard against invalid Region names.

This commit is contained in:
John Blum
2020-04-01 18:08:24 -07:00
parent ff03c242ab
commit 1b7d710a33
2 changed files with 31 additions and 1 deletions

View File

@@ -63,7 +63,10 @@ public abstract class AbstractCachingRegionResolver extends CacheListenerAdapter
*/
@Nullable @Override @SuppressWarnings("unchecked")
public synchronized <K, V> Region<K, V> resolve(@Nullable String regionName) {
return this.nameToRegionCache.computeIfAbsent(regionName, this::doResolveAndRegisterResolverAsCacheListener);
return StringUtils.hasText(regionName)
? this.nameToRegionCache.computeIfAbsent(regionName, this::doResolveAndRegisterResolverAsCacheListener)
: null;
}
/**

View File

@@ -85,6 +85,33 @@ public class AbstractCachingRegionResolverUnitTests {
verifyNoMoreInteractions(mockRegion);
}
public void testResolveWithInvalidRegionName(String regionName) {
AbstractCachingRegionResolver regionResolver = spy(AbstractCachingRegionResolver.class);
when(regionResolver.resolve(any())).thenCallRealMethod();
assertThat(regionResolver.resolve(regionName)).isNull();
verify(regionResolver, never()).doResolveAndRegisterResolverAsCacheListener(anyString());
verify(regionResolver, never()).doResolve(anyString());
}
@Test
public void resolveWithBlankRegionNameReturnsNull() {
testResolveWithInvalidRegionName(" ");
}
@Test
public void resolveWithEmptyRegionNameReturnsNull() {
testResolveWithInvalidRegionName("");
}
@Test
public void resolveWithNullRegionNameReturnsNull() {
testResolveWithInvalidRegionName(null);
}
@Test
public void afterRegionDestroyClearsCacheEntryForCachedRegionWithName() {