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.
This commit is contained in:
John Blum
2018-06-12 22:49:13 -07:00
parent 9ef2ca4bd4
commit deb90386db
3 changed files with 46 additions and 29 deletions

View File

@@ -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

View File

@@ -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<String> 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<String> getBasePackages() {
return AutoConfigurationPackages.get(getBeanFactory());
}
};
}
}

View File

@@ -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