Remove support of Apache Geode's Redis integration.

Closes #597.
This commit is contained in:
John Blum
2022-06-07 16:37:32 -07:00
parent 35a6a4ee94
commit c253feff2d
6 changed files with 2 additions and 242 deletions

View File

@@ -1,78 +0,0 @@
/*
* Copyright 2012-2022 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
*
* https://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.data.gemfire.config.annotation;
import java.lang.annotation.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
/**
* The {@link EnableRedisServer} annotation marks a Spring {@link Configuration @Configuration} annotated {@link Class}
* to embed the Redis service in this cluster member.
*
* The Redis service implements the Redis server protocol enabling Redis clients to connect to and inter-operate with
* Pivotal GemFire or Apache Geode.
*
* However, the embedded Pivotal GemFire/Apache Geode Redis Service can be enabled/disabled externally
* in {@literal application.properties} by using the {@literal spring.data.gemfire.service.redis.enabled} property
* even when this {@link Annotation} is present, thereby serving as a toggle.
*
* @author John Blum
* @see java.lang.annotation.Annotation
* @see org.springframework.context.annotation.Import
* @see org.springframework.data.gemfire.config.annotation.MemcachedServerConfiguration
* @since 1.9.0
* @deprecated Support for the Redis Server protocol in Apache Geode to service Redis clients is targeted
* to be removed in the Apache Geode project as of Apache Geode 1.15.
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Deprecated
@Import(RedisServerConfiguration.class)
@UsesGemFireProperties
@SuppressWarnings("unused")
public @interface EnableRedisServer {
/**
* Configures the Network bind-address on which the Redis server will accept connections.
*
* Defaults to {@literal localhost}.
*
* Use the {@literal spring.data.gemfire.service.redis.bind-address} property in {@literal application.properties}.
*/
String bindAddress() default "";
/**
* Configures the Network port on which the Redis server will listen for Redis client connections.
*
* Defaults to {@literal 6379}.
*
* Use the {@literal spring.data.gemfire.service.redis.port} property in {@literal application.properties}.
*/
int port() default RedisServerConfiguration.DEFAULT_REDIS_PORT;
}

View File

@@ -1,75 +0,0 @@
/*
* Copyright 2012-2022 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
*
* https://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.data.gemfire.config.annotation;
import java.lang.annotation.Annotation;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.data.gemfire.config.annotation.support.EmbeddedServiceConfigurationSupport;
import org.springframework.data.gemfire.util.PropertiesBuilder;
/**
* The {@link RedisServerConfiguration} class is a Spring {@link ImportBeanDefinitionRegistrar} that applies
* additional configuration using Pivotal GemFire/Apache Geode {@link Properties} to configure
* an embedded Redis server.
*
* @author John Blum
* @see org.springframework.context.annotation.ImportBeanDefinitionRegistrar
* @see org.springframework.data.gemfire.config.annotation.EnableRedisServer
* @see org.springframework.data.gemfire.config.annotation.support.EmbeddedServiceConfigurationSupport
* @since 1.9.0
* @deprecated Support for the Redis Server protocol in Apache Geode to service Redis clients is targeted
* to be removed in the Apache Geode project as of Apache Geode 1.15.
*/
@Deprecated
public class RedisServerConfiguration extends EmbeddedServiceConfigurationSupport {
protected static final int DEFAULT_REDIS_PORT = 6379;
/**
* Returns the {@link EnableRedisServer} {@link java.lang.annotation.Annotation} {@link Class} type.
*
* @return the {@link EnableRedisServer} {@link java.lang.annotation.Annotation} {@link Class} type.
* @see org.springframework.data.gemfire.config.annotation.EnableRedisServer
*/
@Override
protected Class<? extends Annotation> getAnnotationType() {
return EnableRedisServer.class;
}
@Override
protected Properties toGemFireProperties(Map<String, Object> annotationAttributes) {
return Optional.ofNullable(resolveProperty(redisServiceProperty("enabled"), Boolean.TRUE))
.filter(Boolean.TRUE::equals)
.map(enabled ->
PropertiesBuilder.create()
.setProperty("redis-bind-address",
resolveProperty(redisServiceProperty("bind-address"),
(String) annotationAttributes.get("bindAddress")))
.setProperty("redis-port",
resolvePort(resolveProperty(redisServiceProperty("port"),
(Integer) annotationAttributes.get("port")), DEFAULT_REDIS_PORT))
.build()
).orElseGet(Properties::new);
}
}

View File

@@ -805,10 +805,6 @@ public abstract class AbstractAnnotationConfigSupport
return String.format("%1$s%2$s", propertyName("service."), propertyNameSuffix);
}
protected String redisServiceProperty(String propertyNameSuffix) {
return String.format("%1$s%2$s", serviceProperty("redis."), propertyNameSuffix);
}
protected String memcachedServiceProperty(String propertyNameSuffix) {
return String.format("%1$s%2$s", serviceProperty("memcached."), propertyNameSuffix);
}

View File

@@ -39,10 +39,9 @@ import org.springframework.mock.env.MockPropertySource;
import org.springframework.util.StringUtils;
/**
* Integration tests for {@link EnableAuth}, {@link EnableGemFireProperties}, {@link EnableHttpService},
* Integration Tests for {@link EnableAuth}, {@link EnableGemFireProperties}, {@link EnableHttpService},
* {@link EnableLocator}, {@link EnableLogging}, {@link EnableManager}, {@link EnableMemcachedServer},
* {@link EnableOffHeap}, {@link EnableRedisServer}, {@link EnableSecurity}, {@link EnableSsl},
* {@link EnableStatistics}.
* {@link EnableOffHeap}, {@link EnableSecurity}, {@link EnableSsl}, {@link EnableStatistics}.
*
* @author John Blum
* @see java.util.Properties
@@ -330,29 +329,6 @@ public class EnableGemFirePropertiesIntegrationTests extends SpringApplicationCo
assertThat(gemfireCache.getPdxSerializer()).isEqualTo(mockPdxSerializer);
}
@Test
public void redisServerGemFirePropertiesConfiguration() {
PropertySource testPropertySource = new MockPropertySource("TestPropertySource")
.withProperty("spring.data.gemfire.service.redis.bind-address", "10.16.8.4")
.withProperty("spring.data.gemfire.service.redis.port", "13579");
newApplicationContext(testPropertySource, TestRedisServerGemFirePropertiesConfiguration.class);
assertThat(containsBean("gemfireCache")).isTrue();
GemFireCache gemfireCache = getBean("gemfireCache", GemFireCache.class);
assertThat(gemfireCache).isNotNull();
assertThat(gemfireCache.getDistributedSystem()).isNotNull();
Properties gemfireProperties = gemfireCache.getDistributedSystem().getProperties();
assertThat(gemfireProperties).isNotNull();
assertThat(gemfireProperties.getProperty("redis-bind-address")).isEqualTo("10.16.8.4");
assertThat(gemfireProperties.getProperty("redis-port")).isEqualTo("13579");
}
@Test
public void securityGemFirePropertiesConfiguration() {
@@ -536,12 +512,6 @@ public class EnableGemFirePropertiesIntegrationTests extends SpringApplicationCo
}
}
@EnableGemFireMockObjects
@PeerCacheApplication
@EnableGemFireProperties
@EnableRedisServer
static class TestRedisServerGemFirePropertiesConfiguration { }
@EnableGemFireMockObjects
@PeerCacheApplication
@EnableGemFireProperties

View File

@@ -157,34 +157,6 @@ See {sdg-javadoc}/org/springframework/data/gemfire/config/annotation/EnableMemca
See <<bootstrap-annotation-config-embedded-services-memcached>> for more details.
[[bootstap-annotations-quickstart-redisserver]]
== Configure the Embedded Redis Server
Annotate your Spring `@PeerCacheApplication` or `@CacheServerApplication` class with `@EnableRedisServer` to start
the embedded Redis server listening on port `6379`, as follows:
[source,java]
----
@SpringBootApplication
@CacheServerApplication
@EnableRedisServer
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
----
NOTE: `@EnableRedisServer` can only be used with {data-store-name} server applications.
WARNING: You must explicitly declare the `org.apache.geode:geode-redis` module on your Spring [Boot] application
classpath.
See {sdg-javadoc}/org/springframework/data/gemfire/config/annotation/EnableRedisServer.html[`@EnableRedisServer` Javadoc].
See <<bootstrap-annotation-config-embedded-services-redis>> for more details.
[[bootstap-annotations-quickstart-logging]]
== Configure Logging

View File

@@ -774,31 +774,6 @@ public class ServerApplication { .. }
More details on {data-store-name}'s Memcached service (called "Gemcached") can be found
{x-data-store-docs}/tools_modules/gemcached/chapter_overview.html[here].
[[bootstrap-annotation-config-embedded-services-redis]]
=== Configuring the Embedded Redis Server
{data-store-name} also implements the Redis server protocol, which enables Redis clients to connect to and communicate
with a cluster of {data-store-name} servers to issue Redis commands. As of this writing, the Redis server protocol
support in {data-store-name} is still experimental.
To enable the embedded Redis service, add the `@EnableRedisServer` annotation to any `@PeerCacheApplication`
or `@CacheServerApplication` annotated class, as follows:
.Spring `CacheServer` application running an embedded Redis server
[source, java]
----
@SpringBootApplication
@CacheServerApplication
@EnableRedisServer
public class ServerApplication { .. }
----
WARNING: You must explicitly declare the `org.apache.geode:geode-redis` module on your Spring [Boot] application
classpath.
More details on {data-store-name}'s Redis adapter can be found
{x-data-store-docs}/tools_modules/redis_adapter.html[here].
[[bootstrap-annotation-config-logging]]
== Configuring Logging