Add registerDataSerializableSessionSerializer() method.
Refactor doInitialization() to delegate to registerDataSerializableSessionSerializer() when registering custom Spring Session DataSerializers/SessionSerializer implementations. Remove sessionRegionName configuration parameters and state.
This commit is contained in:
@@ -18,6 +18,7 @@ package org.springframework.session.data.gemfire.serialization.data.support;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.doNothing;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.never;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.times;
|
||||
@@ -59,7 +60,7 @@ import org.springframework.session.data.gemfire.serialization.data.provider.Data
|
||||
* @see org.springframework.session.data.gemfire.serialization.data.provider.DataSerializableSessionAttributesSerializer
|
||||
* @see org.springframework.session.data.gemfire.serialization.data.provider.DataSerializableSessionSerializer
|
||||
* @see org.springframework.session.data.gemfire.serialization.data.support.DataSerializableSessionSerializerInitializer
|
||||
* @since 1.0.0
|
||||
* @since 2.1.1
|
||||
*/
|
||||
@RunWith(MockitoJUnitRunner.class)
|
||||
public class DataSerializableSessionSerializerInitializerIntegrationTests extends AbstractGemFireIntegrationTests {
|
||||
@@ -99,7 +100,18 @@ public class DataSerializableSessionSerializerInitializerIntegrationTests extend
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeWithCacheAndPropertiesParametersSetGemFireCacheReferenceAndCallsDoInitialize() {
|
||||
public void ofFactoryMethodWithNullCache() {
|
||||
|
||||
DataSerializableSessionSerializerInitializer initializer =
|
||||
DataSerializableSessionSerializerInitializer.of(null);
|
||||
|
||||
assertThat(initializer).isNotNull();
|
||||
assertThat(initializer.getGemFireCache().orElse(null)).isNull();
|
||||
assertThat(initializer.getLogger()).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializeWithCacheAndPropertiesParametersSetsGemFireCacheReferenceAndCallsDoInitialize() {
|
||||
|
||||
DataSerializableSessionSerializerInitializer initializer =
|
||||
spy(DataSerializableSessionSerializerInitializer.of(null));
|
||||
@@ -116,6 +128,23 @@ public class DataSerializableSessionSerializerInitializerIntegrationTests extend
|
||||
verify(initializer, times(1)).doInitialization();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doInitializationResolvesGemFireCachesRegistersSessionSerializersAndConfiguresDataSerialization() {
|
||||
|
||||
DataSerializableSessionSerializerInitializer initializer =
|
||||
spy(DataSerializableSessionSerializerInitializer.of(null));
|
||||
|
||||
doReturn(this.mockCache).when(initializer).resolveGemFireCache();
|
||||
doNothing().when(initializer).registerDataSerializableSessionSerializer();
|
||||
doNothing().when(initializer).configureUseDataSerialization();
|
||||
|
||||
initializer.doInitialization();
|
||||
|
||||
verify(initializer, times(1)).resolveGemFireCache();
|
||||
verify(initializer, times(1)).registerDataSerializableSessionSerializer();
|
||||
verify(initializer, times(1)).configureUseDataSerialization();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doInitializationIsCorrect() {
|
||||
|
||||
@@ -159,6 +188,7 @@ public class DataSerializableSessionSerializerInitializerIntegrationTests extend
|
||||
assertThat(InitializingGemFireOperationsSessionRepository.INSTANCE.isDataSerializationConfigured()).isFalse();
|
||||
|
||||
verify(initializer, times(1)).resolveGemFireCache();
|
||||
verify(initializer, never()).registerDataSerializableSessionSerializer();
|
||||
verify(initializer, never()).configureUseDataSerialization();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.apache.geode.cache.GemFireCache;
|
||||
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.session.Session;
|
||||
import org.springframework.session.data.gemfire.config.annotation.web.http.GemFireHttpSessionConfiguration;
|
||||
import org.springframework.session.data.gemfire.serialization.data.provider.DataSerializableSessionSerializer;
|
||||
import org.springframework.session.data.gemfire.support.GemFireOperationsSessionRepositorySupport;
|
||||
|
||||
@@ -37,10 +36,10 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Register the Spring Session for Apache Geode/Pivotal GemFire {@link DataSerializableSessionSerializer}
|
||||
* with Apache Geode/Pivotal GemFire's DataSerialization framework as the {@link DataSerializer} used to handle
|
||||
* de/serialization of the {@link Session}, the {@literal Session Attributes} and any application
|
||||
* domain model objects contained in the {@link Session} (if necessary).
|
||||
* Register the custom Spring Session {@link DataSerializableSessionSerializer} with Apache Geode/Pivotal GemFire's
|
||||
* DataSerialization framework as the {@link DataSerializer} used to handle de/serialization of the {@link Session},
|
||||
* the {@link Session} Attributes and any application domain model objects contained in the {@link Session}
|
||||
* (if necessary).
|
||||
*
|
||||
* @author John Blum
|
||||
* @see java.util.Properties
|
||||
@@ -59,16 +58,9 @@ import org.slf4j.LoggerFactory;
|
||||
@SuppressWarnings("unused")
|
||||
public class DataSerializableSessionSerializerInitializer implements Declarable {
|
||||
|
||||
private static final String DEFAULT_SESSION_REGION_NAME =
|
||||
GemFireHttpSessionConfiguration.DEFAULT_SESSION_REGION_NAME;
|
||||
|
||||
private static final String SESSION_REGION_NAME_PROPERTY = "spring.session.data.gemfire.session.region.name";
|
||||
|
||||
private volatile GemFireCache gemfireCache;
|
||||
|
||||
private Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
private String sessionRegionName;
|
||||
private final Logger logger = LoggerFactory.getLogger(getClass());
|
||||
|
||||
/**
|
||||
* Factory method used to construct a new instance of {@link DataSerializableSessionSerializerInitializer}
|
||||
@@ -157,8 +149,8 @@ public class DataSerializableSessionSerializerInitializer implements Declarable
|
||||
public void doInitialization() {
|
||||
|
||||
resolveGemFireCache();
|
||||
registerDataSerializableSessionSerializer();
|
||||
configureUseDataSerialization();
|
||||
DataSerializableSessionSerializer.register();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -172,6 +164,16 @@ public class DataSerializableSessionSerializerInitializer implements Declarable
|
||||
return getGemFireCache().orElseGet(CacheFactory::getAnyInstance);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers the {@link DataSerializableSessionSerializer} with Apache Geode/Pivotal GemFire
|
||||
* in order to properly handle the Spring Session types.
|
||||
*
|
||||
* @see org.springframework.session.data.gemfire.serialization.data.provider.DataSerializableSessionSerializer#register()
|
||||
*/
|
||||
protected void registerDataSerializableSessionSerializer() {
|
||||
DataSerializableSessionSerializer.register();
|
||||
}
|
||||
|
||||
/**
|
||||
* Configures Spring Session (for Apache Geode/Pivotal GemFire) to "use" Apache Geode/Pivotal GemFire's
|
||||
* DataSerialization framework and Delta capable {@link DataSerializable} Session objects.
|
||||
|
||||
Reference in New Issue
Block a user