From 9fbc383f40bffeea13a128a175c697b4a1dc8305 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 28 May 2019 16:14:42 -0700 Subject: [PATCH] DATAGEODE-198 - Adapt EmbeddedServiceConfigurationSupport to honor new Configurer interface/contract. --- .../EmbeddedServiceConfigurationSupport.java | 62 ++++++++++++++----- 1 file changed, 48 insertions(+), 14 deletions(-) diff --git a/src/main/java/org/springframework/data/gemfire/config/annotation/support/EmbeddedServiceConfigurationSupport.java b/src/main/java/org/springframework/data/gemfire/config/annotation/support/EmbeddedServiceConfigurationSupport.java index 25b9f2cc..1c763082 100644 --- a/src/main/java/org/springframework/data/gemfire/config/annotation/support/EmbeddedServiceConfigurationSupport.java +++ b/src/main/java/org/springframework/data/gemfire/config/annotation/support/EmbeddedServiceConfigurationSupport.java @@ -14,7 +14,6 @@ * limitations under the License. * */ - package org.springframework.data.gemfire.config.annotation.support; import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newIllegalStateException; @@ -63,7 +62,7 @@ import org.springframework.util.StringUtils; */ @SuppressWarnings("unused") public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnotationConfigSupport - implements ImportBeanDefinitionRegistrar { + implements ImportBeanDefinitionRegistrar { public static final Integer DEFAULT_PORT = 0; public static final String DEFAULT_HOST = "localhost"; @@ -89,7 +88,7 @@ public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnota @Override public final void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, - BeanDefinitionRegistry registry) { + BeanDefinitionRegistry registry) { if (isAnnotationPresent(importingClassMetadata)) { Map annotationAttributes = getAnnotationAttributes(importingClassMetadata); @@ -100,15 +99,16 @@ public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnota @SuppressWarnings("unused") protected void registerBeanDefinitions(AnnotationMetadata importingClassMetaData, - Map annotationAttributes, BeanDefinitionRegistry registry) { + Map annotationAttributes, BeanDefinitionRegistry registry) { } protected void setGemFireProperties(AnnotationMetadata importingClassMetadata, - Map annotationAttributes, BeanDefinitionRegistry registry) { + Map annotationAttributes, BeanDefinitionRegistry registry) { Properties gemfireProperties = toGemFireProperties(annotationAttributes); if (hasProperties(gemfireProperties)) { + try { getCacheConfiguration().add(gemfireProperties); } @@ -126,7 +126,7 @@ public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnota } protected void registerGemFirePropertiesBeanPostProcessor(BeanDefinitionRegistry registry, - Properties customGemFireProperties) { + Properties customGemFireProperties) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(GemFirePropertiesBeanPostProcessor.class); @@ -138,8 +138,26 @@ public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnota protected void registerGemFirePropertiesConfigurer(BeanDefinitionRegistry registry, Properties gemfireProperties) { + registerClientGemFirePropertiesConfigurer(registry, gemfireProperties); + registerPeerGemFirePropertiesConfigurer(registry, gemfireProperties); + } + + protected void registerClientGemFirePropertiesConfigurer(BeanDefinitionRegistry registry, + Properties gemfireProperties) { + BeanDefinitionBuilder builder = - BeanDefinitionBuilder.genericBeanDefinition(GemFirePropertiesConfigurer.class); + BeanDefinitionBuilder.genericBeanDefinition(ClientGemFirePropertiesConfigurer.class); + + builder.addConstructorArgValue(gemfireProperties); + + BeanDefinitionReaderUtils.registerBeanDefinition(newBeanDefinitionHolder(builder), registry); + } + + protected void registerPeerGemFirePropertiesConfigurer(BeanDefinitionRegistry registry, + Properties gemfireProperties) { + + BeanDefinitionBuilder builder = + BeanDefinitionBuilder.genericBeanDefinition(PeerGemFirePropertiesConfigurer.class); builder.addConstructorArgValue(gemfireProperties); @@ -213,29 +231,45 @@ public abstract class EmbeddedServiceConfigurationSupport extends AbstractAnnota return Optional.ofNullable(port).orElse(defaultPort); } - protected static class GemFirePropertiesConfigurer implements PeerCacheConfigurer, ClientCacheConfigurer { + protected static class AbstractGemFirePropertiesConfigurer { private final Properties gemfireProperties; - public GemFirePropertiesConfigurer(Properties gemfireProperties) { + protected AbstractGemFirePropertiesConfigurer(Properties gemfireProperties) { Assert.notEmpty(gemfireProperties, "GemFire Properties are required"); this.gemfireProperties = gemfireProperties; } - @Override - public void configure(String beanName, CacheFactoryBean bean) { - configureGemFireProperties(bean); + protected void configureGemFireProperties(CacheFactoryBean bean) { + bean.getProperties().putAll(this.gemfireProperties); + } + } + + protected static class ClientGemFirePropertiesConfigurer extends AbstractGemFirePropertiesConfigurer + implements ClientCacheConfigurer { + + protected ClientGemFirePropertiesConfigurer(Properties gemfireProperties) { + super(gemfireProperties); } @Override public void configure(String beanName, ClientCacheFactoryBean bean) { configureGemFireProperties(bean); } + } - private void configureGemFireProperties(CacheFactoryBean bean) { - bean.getProperties().putAll(this.gemfireProperties); + protected static class PeerGemFirePropertiesConfigurer extends AbstractGemFirePropertiesConfigurer + implements PeerCacheConfigurer { + + protected PeerGemFirePropertiesConfigurer(Properties gemfireProperties) { + super(gemfireProperties); + } + + @Override + public void configure(String beanName, CacheFactoryBean bean) { + configureGemFireProperties(bean); } }