Adapt to API changes in Spring Data for Apache Geode.

This commit is contained in:
John Blum
2022-09-23 19:10:15 -07:00
parent a491713a04
commit 486f9ac2ad
6 changed files with 25 additions and 22 deletions

View File

@@ -23,6 +23,8 @@ import java.util.Properties;
import org.apache.geode.cache.GemFireCache;
import org.apache.geode.cache.client.ClientCache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
@@ -36,22 +38,17 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.cloud.CloudPlatform;
import org.springframework.boot.env.EnvironmentPostProcessor;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.ConfigurableEnvironment;
import org.springframework.core.env.Environment;
import org.springframework.core.env.PropertySource;
import org.springframework.data.gemfire.client.ClientCacheFactoryBean;
import org.springframework.data.gemfire.config.annotation.EnableSecurity;
import org.springframework.data.gemfire.config.annotation.support.AutoConfiguredAuthenticationInitializer;
import org.springframework.geode.core.env.VcapPropertySource;
import org.springframework.geode.core.env.support.CloudCacheService;
import org.springframework.geode.core.env.support.User;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Spring Boot {@link EnableAutoConfiguration auto-configuration} enabling Apache Geode's Security functionality,
* and specifically Authentication between a client and server using Spring Data Geode Security annotations.
@@ -113,11 +110,8 @@ public class ClientSecurityAutoConfiguration {
private static final String POOL_LOCATORS_PROPERTY = "spring.data.gemfire.pool.locators";
private static final String SECURITY_USERNAME_PROPERTY =
AutoConfiguredAuthenticationInitializer.SDG_SECURITY_USERNAME_PROPERTY;
private static final String SECURITY_PASSWORD_PROPERTY =
AutoConfiguredAuthenticationInitializer.SDG_SECURITY_PASSWORD_PROPERTY;
private static final String SECURITY_USERNAME_PROPERTY = "spring.data.gemfire.security.username";
private static final String SECURITY_PASSWORD_PROPERTY = "spring.data.gemfire.security.password";
private static final String SSL_USE_DEFAULT_CONTEXT_PROPERTY =
"spring.data.gemfire.security.ssl.use-default-context";

View File

@@ -47,7 +47,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.context.event.EventListener;
import org.springframework.core.type.StandardMethodMetadata;
@@ -58,8 +57,8 @@ import org.springframework.data.gemfire.ResolvableRegionFactoryBean;
import org.springframework.data.gemfire.config.xml.GemfireConstants;
import org.springframework.data.gemfire.util.ArrayUtils;
import org.springframework.data.gemfire.util.CollectionUtils;
import org.springframework.data.gemfire.util.SpringUtils;
import org.springframework.geode.config.annotation.support.TypelessAnnotationConfigSupport;
import org.springframework.geode.core.util.SpringExtensions;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
@@ -137,7 +136,7 @@ public class RegionTemplateAutoConfiguration extends TypelessAnnotationConfigSup
userRegionTemplateNames.add(beanName);
}
else if (isBeanWithGemfireTemplateDependency(beanFactory, beanDefinition)) {
SpringUtils.addDependsOn(beanDefinition, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME);
SpringExtensions.addDependsOn(beanDefinition, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME);
}
}
}
@@ -213,7 +212,7 @@ public class RegionTemplateAutoConfiguration extends TypelessAnnotationConfigSup
this.autoConfiguredRegionTemplateBeanNames.stream()
.map(registry::getBeanDefinition)
.forEach(beanDefinition -> SpringUtils.addDependsOn(beanDefinition, dependencyBeanNamesArray));
.forEach(beanDefinition -> SpringExtensions.addDependsOn(beanDefinition, dependencyBeanNamesArray));
}
// Required by @EnableClusterDefinedRegions & Native-Defined Regions (e.g. Regions defined in "cache.xml").

View File

@@ -17,6 +17,9 @@ package org.springframework.geode.config.annotation;
import java.util.Properties;
import org.apache.geode.cache.Cache;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationListener;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.ContextRefreshedEvent;
@@ -46,9 +49,11 @@ public class SecurityManagerProxyConfiguration implements ApplicationListener<Co
@Override
public void onApplicationEvent(ContextRefreshedEvent event) {
ApplicationContext applicationContext = event.getApplicationContext();
SecurityManagerProxy securityManagerProxy = SecurityManagerProxy.getInstance();
securityManagerProxy.setBeanFactory(event.getApplicationContext().getAutowireCapableBeanFactory());
securityManagerProxy.init(new Properties());
securityManagerProxy.setBeanFactory(applicationContext.getAutowireCapableBeanFactory());
securityManagerProxy.initialize(applicationContext.getBean(Cache.class), new Properties());
}
}

View File

@@ -22,6 +22,8 @@ import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
@@ -38,15 +40,12 @@ import org.springframework.context.annotation.ScopeMetadataResolver;
import org.springframework.context.support.AbstractRefreshableConfigApplicationContext;
import org.springframework.data.gemfire.config.annotation.PeerCacheApplication;
import org.springframework.data.gemfire.util.ArrayUtils;
import org.springframework.data.gemfire.util.SpringUtils;
import org.springframework.geode.core.util.SpringExtensions;
import org.springframework.lang.NonNull;
import org.springframework.lang.Nullable;
import org.springframework.util.ClassUtils;
import org.springframework.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* A {@literal refreshable} {@link ApplicationContext} capable of loading {@link Class component classes} used for
* {@link Annotation} based configuration in addition to scanning {@link String configuration locations}, and then
@@ -314,7 +313,7 @@ public class RefreshableAnnotationConfigApplicationContext extends AbstractRefre
*/
@Override
protected void prepareRefresh() {
this.beanFactory = (DefaultListableBeanFactory) SpringUtils.safeGetValue(this::getBeanFactory);
this.beanFactory = (DefaultListableBeanFactory) SpringExtensions.safeGetValue(this::getBeanFactory);
super.prepareRefresh();
}

View File

@@ -34,10 +34,11 @@ import org.springframework.util.StringUtils;
* @see org.springframework.beans.factory.config.BeanDefinition
* @see org.springframework.beans.factory.support.BeanDefinitionRegistry
* @see org.springframework.context.ApplicationContext
* @see org.springframework.data.gemfire.util.SpringExtensions
* @since 1.6.0
*/
@SuppressWarnings("unused")
public abstract class SpringExtensions {
public abstract class SpringExtensions extends org.springframework.data.gemfire.util.SpringExtensions {
public static final String BEAN_DEFINITION_METADATA_JSON = "{\n"
+ "\t'beanName': '%1$s',%n"

View File

@@ -171,6 +171,11 @@ public class SecurityManagerProxy extends LazyWiringDeclarableSupport
INSTANCE.set(null);
}
@Override
public void init(Properties props) {
super.init(props);
}
@Override
protected BeanFactory locateBeanFactory() {
return this.beanFactory != null ? this.beanFactory : super.locateBeanFactory();