From d2d8d207f036f2d07211861052ffdfc7a0fdf94d Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 12 Jun 2018 23:16:40 -0700 Subject: [PATCH] Refactor PDX Serialization enablement into a separate auto-configuration class to auto-configure PDX for both client and servers. --- .../ClientCacheAutoConfiguration.java | 6 --- .../PdxSerializationAutoConfiguration.java | 48 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 1 + 3 files changed, 49 insertions(+), 6 deletions(-) create mode 100644 geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/PdxSerializationAutoConfiguration.java diff --git a/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ClientCacheAutoConfiguration.java b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ClientCacheAutoConfiguration.java index 8ba80954..d0ad9fc5 100644 --- a/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ClientCacheAutoConfiguration.java +++ b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/ClientCacheAutoConfiguration.java @@ -24,15 +24,11 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.context.annotation.Configuration; import org.springframework.data.gemfire.client.ClientCacheFactoryBean; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; -import org.springframework.data.gemfire.config.annotation.EnablePdx; /** * Spring Boot {@link EnableAutoConfiguration auto-configuration} for bootstrapping an Apache Geode {@link ClientCache} * instance constructed, configured and initialized with Spring Data for Apache Geode. * - * Additionally, this configuration automatically enables Apache Geode PDX serialization to serialize data sent - * between the client and server(s) in the cluster when using the client/server topology. - * * @author John Blum * @see org.apache.geode.cache.GemFireCache * @see org.apache.geode.cache.client.ClientCache @@ -40,14 +36,12 @@ import org.springframework.data.gemfire.config.annotation.EnablePdx; * @see org.springframework.context.annotation.Configuration * @see org.springframework.data.gemfire.client.ClientCacheFactoryBean * @see org.springframework.data.gemfire.config.annotation.ClientCacheApplication - * @see org.springframework.data.gemfire.config.annotation.EnablePdx * @since 1.0.0 */ @Configuration @ConditionalOnClass({ ClientCacheFactoryBean.class, ClientCache.class }) @ConditionalOnMissingBean(GemFireCache.class) @ClientCacheApplication -@EnablePdx public class ClientCacheAutoConfiguration { } diff --git a/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/PdxSerializationAutoConfiguration.java b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/PdxSerializationAutoConfiguration.java new file mode 100644 index 00000000..f99f2d39 --- /dev/null +++ b/geode-spring-boot-autoconfigure/src/main/java/org/springframework/geode/boot/autoconfigure/PdxSerializationAutoConfiguration.java @@ -0,0 +1,48 @@ +/* + * Copyright 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package org.springframework.geode.boot.autoconfigure; + +import org.apache.geode.cache.Cache; +import org.apache.geode.cache.GemFireCache; +import org.apache.geode.cache.client.ClientCache; +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.Configuration; +import org.springframework.data.gemfire.config.annotation.EnablePdx; + +/** + * Spring Boot {@link EnableAutoConfiguration auto-configuration} enabling Apache Geode's PDX Serialization + * functionality in a either a {@link Cache peer cache} or {@link ClientCache} application. + * + * @author John Blum + * @see org.apache.geode.cache.Cache + * @see org.apache.geode.cache.GemFireCache + * @see org.apache.geode.cache.client.ClientCache + * @see org.springframework.boot.autoconfigure.EnableAutoConfiguration + * @see org.springframework.context.annotation.Configuration + * @see org.springframework.data.gemfire.config.annotation.EnablePdx + * @since 1.0.0 + */ +@Configuration +@ConditionalOnBean(GemFireCache.class) +@ConditionalOnMissingBean(name = { "clientCachePdxConfigurer", "peerCachePdxConfigurer" }, + type = "org.springframework.data.gemfire.config.support.PdxDiskStoreAwareBeanFactoryPostProcessor") +@EnablePdx +public class PdxSerializationAutoConfiguration { + +} diff --git a/geode-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories b/geode-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories index 22298234..bc138331 100644 --- a/geode-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/geode-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories @@ -5,6 +5,7 @@ org.springframework.geode.boot.autoconfigure.CachingProviderAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.ClientSecurityAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.ContinuousQueryAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.FunctionExecutionAutoConfiguration,\ +org.springframework.geode.boot.autoconfigure.PdxSerializationAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.PeerSecurityAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.RepositoriesAutoConfiguration,\ org.springframework.geode.boot.autoconfigure.SslAutoConfiguration