From 8e30b4ddd29349466d9d38500bed64c6ab8cbb75 Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 12 Sep 2019 14:28:59 -0700 Subject: [PATCH] Improve CQ Auto-configuration by assessing the availability of a server or cluster first before enabling and auto-configuring CQ functionality. This added capabilities relies on the new ClusterAwareConditions. Resolves gh-53. --- .../boot/autoconfigure/ContinuousQueryAutoConfiguration.java | 5 +++++ .../app/caching/lookaside/config/GeodeConfiguration.java | 1 + .../config/annotation/ClusterAvailableConfiguration.java | 4 ++-- .../config/annotation/ClusterNotAvailableConfiguration.java | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/spring-geode-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ContinuousQueryAutoConfiguration.java b/spring-geode-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ContinuousQueryAutoConfiguration.java index 8f0545e4..ab1240b4 100644 --- a/spring-geode-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ContinuousQueryAutoConfiguration.java +++ b/spring-geode-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ContinuousQueryAutoConfiguration.java @@ -21,10 +21,12 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Configuration; import org.springframework.data.gemfire.client.ClientCacheFactoryBean; import org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer; import org.springframework.data.gemfire.config.annotation.EnableContinuousQueries; +import org.springframework.geode.config.annotation.ClusterAvailableConfiguration; /** * Spring Boot {@link EnableAutoConfiguration auto-configuration} enabling Apache Geode's Continuous Query (CQ) @@ -34,13 +36,16 @@ import org.springframework.data.gemfire.config.annotation.EnableContinuousQuerie * @see org.apache.geode.cache.client.ClientCache * @see org.springframework.boot.autoconfigure.EnableAutoConfiguration * @see org.springframework.context.annotation.Bean + * @see org.springframework.context.annotation.Conditional * @see org.springframework.context.annotation.Configuration * @see org.springframework.data.gemfire.client.ClientCacheFactoryBean * @see org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer * @see org.springframework.data.gemfire.config.annotation.EnableContinuousQueries + * @see org.springframework.geode.config.annotation.ClusterAvailableConfiguration.ClusterAvailableCondition * @since 1.0.0 */ @Configuration +@Conditional(ClusterAvailableConfiguration.ClusterAvailableCondition.class) @ConditionalOnBean(ClientCacheFactoryBean.class) @ConditionalOnMissingBean(name = "continuousQueryBeanPostProcessor", type = "org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer") diff --git a/spring-geode-samples/caching/look-aside/src/main/java/example/app/caching/lookaside/config/GeodeConfiguration.java b/spring-geode-samples/caching/look-aside/src/main/java/example/app/caching/lookaside/config/GeodeConfiguration.java index c17be836..891d66d6 100644 --- a/spring-geode-samples/caching/look-aside/src/main/java/example/app/caching/lookaside/config/GeodeConfiguration.java +++ b/spring-geode-samples/caching/look-aside/src/main/java/example/app/caching/lookaside/config/GeodeConfiguration.java @@ -16,6 +16,7 @@ package example.app.caching.lookaside.config; import org.apache.geode.cache.client.ClientRegionShortcut; + import org.springframework.context.annotation.Configuration; import org.springframework.data.gemfire.config.annotation.EnableCachingDefinedRegions; import org.springframework.data.gemfire.config.annotation.EnableLogging; diff --git a/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterAvailableConfiguration.java b/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterAvailableConfiguration.java index 5955c3a4..bbb7d57d 100644 --- a/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterAvailableConfiguration.java +++ b/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterAvailableConfiguration.java @@ -32,8 +32,8 @@ import org.springframework.data.gemfire.config.annotation.EnableClusterConfigura @Configuration @Conditional(ClusterAvailableConfiguration.ClusterAvailableCondition.class) @EnableClusterConfiguration(requireHttps = false, useHttp = true) -class ClusterAvailableConfiguration { +public class ClusterAvailableConfiguration { - static final class ClusterAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { } + public static final class ClusterAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { } } diff --git a/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterNotAvailableConfiguration.java b/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterNotAvailableConfiguration.java index a5c4d8d5..9436a840 100644 --- a/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterNotAvailableConfiguration.java +++ b/spring-geode/src/main/java/org/springframework/geode/config/annotation/ClusterNotAvailableConfiguration.java @@ -97,7 +97,7 @@ public class ClusterNotAvailableConfiguration { return clientRegion; } - static final class CusterNotAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { + public static final class CusterNotAvailableCondition extends ClusterAwareConfiguration.ClusterAwareCondition { @Override public synchronized boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {