From 2fda663a82f2196e6b9d713e0f3133d4d2a7d2e9 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 4 Oct 2016 21:39:39 -0700 Subject: [PATCH] SGF-545 - Register the ClientRegionPoolBeanFactoryPostProcessor for the new Annotation config model. (cherry picked from commit 61c46b504563c743eea4e0c8b9e8806c8090e7e7) Signed-off-by: John Blum --- .../annotation/CacheServerConfiguration.java | 3 +++ .../annotation/ClientCacheConfiguration.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/org/springframework/data/gemfire/config/annotation/CacheServerConfiguration.java b/src/main/java/org/springframework/data/gemfire/config/annotation/CacheServerConfiguration.java index d0177b03..da72f42f 100644 --- a/src/main/java/org/springframework/data/gemfire/config/annotation/CacheServerConfiguration.java +++ b/src/main/java/org/springframework/data/gemfire/config/annotation/CacheServerConfiguration.java @@ -135,6 +135,9 @@ public class CacheServerConfiguration extends PeerCacheConfiguration { } } + /** + * {@inheritDoc} + */ @Override protected Class getAnnotationType() { return CacheServerApplication.class; diff --git a/src/main/java/org/springframework/data/gemfire/config/annotation/ClientCacheConfiguration.java b/src/main/java/org/springframework/data/gemfire/config/annotation/ClientCacheConfiguration.java index 305bdead..6b34a0ba 100644 --- a/src/main/java/org/springframework/data/gemfire/config/annotation/ClientCacheConfiguration.java +++ b/src/main/java/org/springframework/data/gemfire/config/annotation/ClientCacheConfiguration.java @@ -18,13 +18,17 @@ package org.springframework.data.gemfire.config.annotation; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.type.AnnotationMetadata; import org.springframework.data.gemfire.CacheFactoryBean; import org.springframework.data.gemfire.client.ClientCacheFactoryBean; +import org.springframework.data.gemfire.config.support.ClientRegionPoolBeanFactoryPostProcessor; import org.springframework.data.gemfire.support.ConnectionEndpoint; import org.springframework.data.gemfire.support.ConnectionEndpointList; @@ -43,6 +47,9 @@ import org.springframework.data.gemfire.support.ConnectionEndpointList; @SuppressWarnings("unused") public class ClientCacheConfiguration extends AbstractCacheConfiguration { + private static final AtomicBoolean CLIENT_REGION_POOL_BEAN_FACTORY_POST_PROCESSOR_REGISTERED = + new AtomicBoolean(false); + protected static final boolean DEFAULT_READY_FOR_EVENTS = false; protected static final String DEFAULT_NAME = "SpringBasedCacheClientApplication"; @@ -118,6 +125,23 @@ public class ClientCacheConfiguration extends AbstractCacheConfiguration { return (T) new ClientCacheFactoryBean(); } + /** + * {@inheritDoc} + */ + @Override + protected void configureInfrastructure(AnnotationMetadata importMetadata) { + super.configureInfrastructure(importMetadata); + registerClientRegionPoolBeanFactoryPostProcessor(importMetadata); + } + + /* (non-Javadoc) */ + protected void registerClientRegionPoolBeanFactoryPostProcessor(AnnotationMetadata importMetadata) { + if (CLIENT_REGION_POOL_BEAN_FACTORY_POST_PROCESSOR_REGISTERED.compareAndSet(false, true)) { + register(BeanDefinitionBuilder.rootBeanDefinition(ClientRegionPoolBeanFactoryPostProcessor.class) + .setRole(BeanDefinition.ROLE_INFRASTRUCTURE).getBeanDefinition()); + } + } + /** * Configures GemFire {@link com.gemstone.gemfire.cache.client.ClientCache} specific settings. *