SGF-543 - Register the DiskStoreDirectoryBeanPostProcessor for the new Annotation config model.

(cherry picked from commit 402e916427e16eb24eaf65e354a92c95c65c1026)
Signed-off-by: John Blum <jblum@pivotal.io>
This commit is contained in:
John Blum
2016-10-04 21:09:40 -07:00
parent eb0df3d0ef
commit 6d95846b55
4 changed files with 24 additions and 25 deletions

View File

@@ -50,6 +50,7 @@ import org.springframework.core.type.AnnotationMetadata;
import org.springframework.data.gemfire.CacheFactoryBean;
import org.springframework.data.gemfire.config.support.CustomEditorBeanFactoryPostProcessor;
import org.springframework.data.gemfire.config.support.DefinedIndexesApplicationListener;
import org.springframework.data.gemfire.config.support.DiskStoreDirectoryBeanPostProcessor;
import org.springframework.data.gemfire.util.PropertiesBuilder;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
@@ -81,6 +82,7 @@ public abstract class AbstractCacheConfiguration implements BeanFactoryAware, Be
private static final AtomicBoolean CUSTOM_EDITORS_REGISTERED = new AtomicBoolean(false);
private static final AtomicBoolean DEFINED_INDEXES_APPLICATION_LISTENER_REGISTERED = new AtomicBoolean(false);
private static final AtomicBoolean DISK_STORE_DIRECTORY_BEAN_POST_PROCESSOR_REGISTERED = new AtomicBoolean(false);
protected static final boolean DEFAULT_CLOSE = true;
protected static final boolean DEFAULT_COPY_ON_READ = false;
@@ -256,6 +258,7 @@ public abstract class AbstractCacheConfiguration implements BeanFactoryAware, Be
protected void configureInfrastructure(AnnotationMetadata importMetadata) {
registerCustomEditorBeanFactoryPostProcessor();
registerDefinedIndexesApplicationListener();
registerDiskStoreDirectoryBeanPostProcessor();
}
/**
@@ -328,22 +331,24 @@ public abstract class AbstractCacheConfiguration implements BeanFactoryAware, Be
/* (non-Javadoc) */
protected void registerCustomEditorBeanFactoryPostProcessor() {
if (CUSTOM_EDITORS_REGISTERED.compareAndSet(false, true)) {
BeanDefinitionBuilder customEditorBeanFactoryPostProcessor =
BeanDefinitionBuilder.rootBeanDefinition(CustomEditorBeanFactoryPostProcessor.class);
customEditorBeanFactoryPostProcessor.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
register(customEditorBeanFactoryPostProcessor.getBeanDefinition());
register(BeanDefinitionBuilder.rootBeanDefinition(CustomEditorBeanFactoryPostProcessor.class)
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition());
}
}
/* (non-Javadoc) */
protected void registerDefinedIndexesApplicationListener() {
if (DEFINED_INDEXES_APPLICATION_LISTENER_REGISTERED.compareAndSet(false, true)) {
BeanDefinitionBuilder definedIndexesApplicationListener =
BeanDefinitionBuilder.rootBeanDefinition(DefinedIndexesApplicationListener.class);
register(BeanDefinitionBuilder.rootBeanDefinition(DefinedIndexesApplicationListener.class)
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition());
}
}
definedIndexesApplicationListener.setRole(BeanDefinition.ROLE_INFRASTRUCTURE);
register(definedIndexesApplicationListener.getBeanDefinition());
/* (non-Javadoc) */
protected void registerDiskStoreDirectoryBeanPostProcessor() {
if (DISK_STORE_DIRECTORY_BEAN_POST_PROCESSOR_REGISTERED.compareAndSet(false, true)) {
register(BeanDefinitionBuilder.rootBeanDefinition(DiskStoreDirectoryBeanPostProcessor.class)
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition());
}
}

View File

@@ -28,7 +28,7 @@ import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
/**
* The {@link DiskStoreBeanPostProcessor} processes any GemFire {@link com.gemstone.gemfire.cache.DiskStore},
* The {@link DiskStoreDirectoryBeanPostProcessor} processes any GemFire {@link com.gemstone.gemfire.cache.DiskStore},
* {@link DiskDir} Spring beans defined in the application context to ensure that the directory actually exists
* before creating the {@link com.gemstone.gemfire.cache.DiskStore}.
*
@@ -38,7 +38,7 @@ import org.springframework.util.ObjectUtils;
* @since 1.5.0
*/
@SuppressWarnings("unused")
public class DiskStoreBeanPostProcessor implements BeanPostProcessor {
public class DiskStoreDirectoryBeanPostProcessor implements BeanPostProcessor {
protected final Log log = LogFactory.getLog(getClass());

View File

@@ -28,7 +28,7 @@ import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.data.gemfire.DiskStoreFactoryBean;
import org.springframework.data.gemfire.DiskStoreFactoryBean.DiskDir;
import org.springframework.data.gemfire.config.support.DiskStoreBeanPostProcessor;
import org.springframework.data.gemfire.config.support.DiskStoreDirectoryBeanPostProcessor;
import org.springframework.util.CollectionUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
@@ -46,10 +46,10 @@ class DiskStoreParser extends AbstractSingleBeanDefinitionParser {
private static final AtomicBoolean REGISTERED = new AtomicBoolean(false);
/* (non-Javadoc) */
private static void registerDiskStoreBeanPostProcessor(ParserContext parserContext) {
private static void registerDiskStoreDirectoryBeanPostProcessor(ParserContext parserContext) {
if (REGISTERED.compareAndSet(false, true)) {
AbstractBeanDefinition diskStoreBeanPostProcessor = BeanDefinitionBuilder
.rootBeanDefinition(DiskStoreBeanPostProcessor.class)
.rootBeanDefinition(DiskStoreDirectoryBeanPostProcessor.class)
.setRole(BeanDefinition.ROLE_INFRASTRUCTURE)
.getBeanDefinition();
@@ -73,7 +73,7 @@ class DiskStoreParser extends AbstractSingleBeanDefinitionParser {
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
super.doParse(element, parserContext, builder);
registerDiskStoreBeanPostProcessor(parserContext);
registerDiskStoreDirectoryBeanPostProcessor(parserContext);
builder.setLazyInit(false);

View File

@@ -36,16 +36,16 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.util.FileSystemUtils;
/**
* Integration tests for {@link DiskStoreBeanPostProcessor}.
* Integration tests for {@link DiskStoreDirectoryBeanPostProcessor}.
*
* @author John Blum
* @see org.junit.Test
* @see org.springframework.data.gemfire.config.support.DiskStoreBeanPostProcessor
* @see org.springframework.data.gemfire.config.support.DiskStoreDirectoryBeanPostProcessor
* @since 1.5.0
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class DiskStoreBeanPostProcessorIntegrationTests {
public class DiskStoreDirectoryBeanPostProcessorIntegrationTests {
@BeforeClass
public static void testSuiteSetup() {
@@ -68,18 +68,12 @@ public class DiskStoreBeanPostProcessorIntegrationTests {
@PeerCacheApplication(logLevel = "warning")
@SuppressWarnings("unused")
static class DiskStoreBeanPostProcessorConfiguration {
static class DiskStoreDirectoryBeanPostProcessorConfiguration {
DiskStoreFactoryBean.DiskDir newDiskDir(String location) {
return new DiskStoreFactoryBean.DiskDir(location);
}
@Bean
// TODO remove when the Annotation config model includes support
DiskStoreBeanPostProcessor diskStoreBeanPostProcessor() {
return new DiskStoreBeanPostProcessor();
}
@Bean
DiskStoreFactoryBean diskStoreOne(GemFireCache gemfireCache) {
DiskStoreFactoryBean diskStoreOne = new DiskStoreFactoryBean();