From deb90386db5b27de3480622f3cf3b2a0d6d0db0c Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 12 Jun 2018 22:49:13 -0700 Subject: [PATCH] Move SDG Function annotation configuration extension classes to o.s.g.function.config. Remove the org.springframework.data.gemfire.function.config package. Rebase AbstractFunctionExecutionAutoConfigurationExtension on the new o.s.d.g.function.config.FunctionExecutionBeanDefinitionRegitrar by simply overriding the newAnnotationBasedFunctionExecutionConfigurationSource() method in order to configure the auto-configuration packages as the base packages used to search for POJO-based Function Execution interfaces. --- .../FunctionExecutionAutoConfiguration.java | 4 +- ...onExecutionAutoConfigurationExtension.java | 56 ++++++++++--------- ...onExecutionAutoConfigurationRegistrar.java | 15 ++++- 3 files changed, 46 insertions(+), 29 deletions(-) rename geode-spring-boot/src/main/java/org/springframework/{data/gemfire => geode}/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java (63%) rename geode-spring-boot/src/main/java/org/springframework/{data/gemfire => geode}/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java (54%) diff --git a/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/FunctionExecutionAutoConfiguration.java b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/FunctionExecutionAutoConfiguration.java index 9b0e830a..69687973 100644 --- a/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/FunctionExecutionAutoConfiguration.java +++ b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/FunctionExecutionAutoConfiguration.java @@ -24,8 +24,8 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.data.gemfire.function.config.EnableGemfireFunctions; -import org.springframework.data.gemfire.function.config.GemFireFunctionExecutionAutoConfigurationRegistrar; import org.springframework.data.gemfire.function.execution.GemfireFunctionOperations; +import org.springframework.geode.function.config.GemFireFunctionExecutionAutoConfigurationRegistrar; /** * Spring Boot {@link EnableAutoConfiguration auto-configuration} enabling Apache Geode's Function Execution @@ -38,7 +38,7 @@ import org.springframework.data.gemfire.function.execution.GemfireFunctionOperat * @see org.springframework.context.annotation.Import * @see org.springframework.data.gemfire.function.config.EnableGemfireFunctions * @see org.springframework.data.gemfire.function.config.EnableGemfireFunctionExecutions - * @see org.springframework.data.gemfire.function.config.GemFireFunctionExecutionAutoConfigurationRegistrar + * @see org.springframework.geode.function.config.GemFireFunctionExecutionAutoConfigurationRegistrar * @see org.springframework.data.gemfire.function.execution.GemfireFunctionOperations * @see org.springframework.geode.boot.autoconfigure.ClientCacheAutoConfiguration * @since 1.0.0 diff --git a/geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java b/geode-spring-boot/src/main/java/org/springframework/geode/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java similarity index 63% rename from geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java rename to geode-spring-boot/src/main/java/org/springframework/geode/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java index a5d84344..646fe780 100644 --- a/geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java +++ b/geode-spring-boot/src/main/java/org/springframework/geode/function/config/AbstractFunctionExecutionAutoConfigurationExtension.java @@ -14,53 +14,43 @@ * permissions and limitations under the License. */ -package org.springframework.data.gemfire.function.config; +package org.springframework.geode.function.config; import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newIllegalStateException; import java.util.Optional; +import org.apache.geode.cache.execute.Execution; +import org.apache.geode.cache.execute.Function; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; -import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.boot.autoconfigure.AutoConfigurationPackages; import org.springframework.core.type.AnnotationMetadata; import org.springframework.core.type.StandardAnnotationMetadata; +import org.springframework.data.gemfire.function.config.AbstractFunctionExecutionConfigurationSource; +import org.springframework.data.gemfire.function.config.AnnotationFunctionExecutionConfigurationSource; +import org.springframework.data.gemfire.function.config.FunctionExecutionBeanDefinitionRegistrar; /** - * The AbstractFunctionExecutionAutoConfigurationExtension class... + * The {@link AbstractFunctionExecutionAutoConfigurationExtension} class extends SDG's {@link FunctionExecutionBeanDefinitionRegistrar} + * to redefine the location of application POJO {@link Function} {@link Execution} interfaces. * * @author John Blum + * @see org.apache.geode.cache.execute.Execution + * @see org.apache.geode.cache.execute.Function + * @see org.springframework.beans.factory.BeanFactory + * @see org.springframework.beans.factory.BeanFactoryAware + * @see org.springframework.boot.autoconfigure.AutoConfigurationPackages + * @see org.springframework.core.type.AnnotationMetadata + * @see org.springframework.data.gemfire.function.config.FunctionExecutionBeanDefinitionRegistrar * @since 1.0.0 */ -// TODO replace this class once SD Lovelace is GA and SBDG is rebased on SD Lovelace public abstract class AbstractFunctionExecutionAutoConfigurationExtension extends FunctionExecutionBeanDefinitionRegistrar implements BeanFactoryAware { private BeanFactory beanFactory; - @Override - public void registerBeanDefinitions(AnnotationMetadata annotationMetadata, BeanDefinitionRegistry registry) { - registerBeanDefinitions(newAnnotationBasedFunctionExecutionConfigurationSource(annotationMetadata), registry); - } - - @SuppressWarnings("unused") - private AbstractFunctionExecutionConfigurationSource newAnnotationBasedFunctionExecutionConfigurationSource( - AnnotationMetadata annotationMetadata) { - - StandardAnnotationMetadata metadata = - new StandardAnnotationMetadata(getConfiguration(), true); - - return new AnnotationFunctionExecutionConfigurationSource(metadata) { - - @Override - public Iterable getBasePackages() { - return AutoConfigurationPackages.get(getBeanFactory()); - } - }; - } - @Override @SuppressWarnings("all") public void setBeanFactory(BeanFactory beanFactory) throws BeansException { @@ -76,4 +66,20 @@ public abstract class AbstractFunctionExecutionAutoConfigurationExtension protected abstract Class getConfiguration(); + @SuppressWarnings("unused") + @Override + protected AbstractFunctionExecutionConfigurationSource newAnnotationBasedFunctionExecutionConfigurationSource( + AnnotationMetadata annotationMetadata) { + + StandardAnnotationMetadata metadata = + new StandardAnnotationMetadata(getConfiguration(), true); + + return new AnnotationFunctionExecutionConfigurationSource(metadata) { + + @Override + public Iterable getBasePackages() { + return AutoConfigurationPackages.get(getBeanFactory()); + } + }; + } } diff --git a/geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java b/geode-spring-boot/src/main/java/org/springframework/geode/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java similarity index 54% rename from geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java rename to geode-spring-boot/src/main/java/org/springframework/geode/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java index d067a3b7..8bb043be 100644 --- a/geode-spring-boot/src/main/java/org/springframework/data/gemfire/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java +++ b/geode-spring-boot/src/main/java/org/springframework/geode/function/config/GemFireFunctionExecutionAutoConfigurationRegistrar.java @@ -14,12 +14,23 @@ * permissions and limitations under the License. */ -package org.springframework.data.gemfire.function.config; +package org.springframework.geode.function.config; + +import org.apache.geode.cache.execute.Execution; +import org.apache.geode.cache.execute.Function; +import org.springframework.context.annotation.ImportBeanDefinitionRegistrar; +import org.springframework.data.gemfire.function.config.EnableGemfireFunctionExecutions; /** - * The GemFireFunctionExecutionAutoConfigurationRegistrar class... + * The {@link GemFireFunctionExecutionAutoConfigurationRegistrar} class is a Spring {@link ImportBeanDefinitionRegistrar} + * used to register SDG POJO interfaces defining Apache Geode/Pivotal GemFire + * {@link Function} {@link Execution Executions} * * @author John Blum + * @see org.apache.geode.cache.execute.Execution + * @see org.apache.geode.cache.execute.Function + * @see org.springframework.data.gemfire.function.config.EnableGemfireFunctionExecutions + * @see org.springframework.geode.function.config.AbstractFunctionExecutionAutoConfigurationExtension * @since 1.0.0 */ public class GemFireFunctionExecutionAutoConfigurationRegistrar