Fix bug in Region expiration configuration to properly handle Session expiration.

This commit is contained in:
John Blum
2018-08-20 21:53:56 -07:00
parent c0c3ade687
commit 125877df89
2 changed files with 41 additions and 22 deletions

View File

@@ -376,8 +376,8 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
AnnotationAttributes.fromMap(importMetadata.getAnnotationAttributes(
EnableGemFireHttpSession.class.getName()));
ClientRegionShortcut defaultClientRegionShortcut = ClientRegionShortcut.class
.cast(enableGemFireHttpSessionAttributes.getEnum("clientRegionShortcut"));
ClientRegionShortcut defaultClientRegionShortcut =
enableGemFireHttpSessionAttributes.getEnum("clientRegionShortcut");
setClientRegionShortcut(resolveProperty(clientRegionShortcutPropertyName(),
ClientRegionShortcut.class, defaultClientRegionShortcut));
@@ -402,8 +402,8 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
setSessionRegionName(resolveProperty(sessionRegionNamePropertyName(), defaultSessionRegionName));
RegionShortcut defaultServerRegionShortcut = RegionShortcut.class
.cast(enableGemFireHttpSessionAttributes.getEnum("serverRegionShortcut"));
RegionShortcut defaultServerRegionShortcut =
enableGemFireHttpSessionAttributes.getEnum("serverRegionShortcut");
setServerRegionShortcut(resolveProperty(serverRegionShortcutPropertyName(),
RegionShortcut.class, defaultServerRegionShortcut));
@@ -597,9 +597,9 @@ public class GemFireHttpSessionConfiguration extends AbstractGemFireHttpSessionC
*/
boolean isExpirationAllowed(GemFireCache gemfireCache) {
return !GemFireUtils.isClient(gemfireCache)
return !(GemFireUtils.isClient(gemfireCache)
? GemFireUtils.isProxy(getClientRegionShortcut())
: GemFireUtils.isProxy(getServerRegionShortcut());
: GemFireUtils.isProxy(getServerRegionShortcut()));
}
/**

View File

@@ -494,49 +494,68 @@ public class GemFireHttpSessionConfigurationTests {
assertThat(entryIdleTimeoutExpiration.getAction()).isEqualTo(ExpirationAction.INVALIDATE);
assertThat(entryIdleTimeoutExpiration.getTimeout()).isEqualTo(0);
}
@Test
public void expirationIsAllowed() {
Cache mockCache = mock(Cache.class);
public void clientExpirationIsAllowed() {
ClientCache mockClientCache = mock(ClientCache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT_OVERFLOW);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.CACHING_PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL_PERSISTENT_OVERFLOW);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE_PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isTrue();
}
@Test
public void expirationIsNotAllowed() {
public void serverExpirationIsAllowed() {
Cache mockCache = mock(Cache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_REDUNDANT_PERSISTENT_OVERFLOW);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isTrue();
}
@Test
public void clientExpirationIsNotAllowed() {
ClientCache mockClientCache = mock(ClientCache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isFalse();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockClientCache)).isFalse();
}
@Test
public void serverExpirationIsNotAllowed() {
Cache mockCache = mock(Cache.class);
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.PROXY);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.PARTITION_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isFalse();
this.gemfireConfiguration.setClientRegionShortcut(ClientRegionShortcut.LOCAL);
this.gemfireConfiguration.setServerRegionShortcut(RegionShortcut.REPLICATE_PROXY);
assertThat(this.gemfireConfiguration.isExpirationAllowed(mockCache)).isFalse();
}
}