From c7662af8eb5e76d511e7cb4b0f0fb3f36143bc62 Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 4 Apr 2022 12:40:12 -0700 Subject: [PATCH] Rename SpringUtils to SpringExtensions. * Add additional tests for the getOrder(:Object) method. * Annotate API with Spring's @NonNull and @Nullable annotations. * Edit Javadoc. * Implement the getOrder(:Object) method in terms of the org.springframework.core.annotation.OrderUtils class as well. --- .../data/gemfire/CacheFactoryBean.java | 4 +- .../data/gemfire/GemfireTemplate.java | 6 +- .../data/gemfire/PeerRegionFactoryBean.java | 6 +- .../gemfire/ResolvableRegionFactoryBean.java | 6 +- .../client/ClientCacheFactoryBean.java | 22 +- .../client/ClientRegionFactoryBean.java | 4 +- .../DefaultableDelegatingPoolAdapter.java | 4 +- .../ApacheShiroSecurityConfiguration.java | 4 +- .../annotation/CompressionConfiguration.java | 4 +- .../EntityDefinedRegionsConfiguration.java | 6 +- .../annotation/ExpirationConfiguration.java | 4 +- ...cyStructuringBeanFactoryPostProcessor.java | 6 +- ...ientCachePoolBeanFactoryPostProcessor.java | 4 +- ...entRegionPoolBeanFactoryPostProcessor.java | 4 +- ...iskStoreAwareBeanFactoryPostProcessor.java | 4 +- .../config/xml/AsyncEventQueueParser.java | 4 +- .../gemfire/config/xml/CacheServerParser.java | 4 +- .../config/xml/FunctionServiceParser.java | 4 +- .../config/xml/GatewayReceiverParser.java | 4 +- .../config/xml/GatewaySenderParser.java | 4 +- .../data/gemfire/config/xml/ParsingUtils.java | 4 +- .../FunctionExecutionConfiguration.java | 4 +- .../execution/AbstractFunctionExecution.java | 6 +- .../ContinuousQueryListenerContainer.java | 6 +- .../support/GemfireRepositoryFactoryBean.java | 4 +- .../support/SimpleGemfireRepository.java | 4 +- .../gemfire/search/lucene/LuceneAccessor.java | 2 +- .../search/lucene/LuceneIndexFactoryBean.java | 4 +- .../gemfire/support/ConnectionEndpoint.java | 4 +- .../support/GemfireBeanFactoryLocator.java | 2 +- .../SmartCacheResolverFactoryBean.java | 4 +- .../gemfire/util/DistributedSystemUtils.java | 28 +- ...SpringUtils.java => SpringExtensions.java} | 52 ++-- .../wan/AsyncEventQueueFactoryBean.java | 4 +- ...onContextBeanOrderingIntegrationTests.java | 4 +- .../xml/MultipleCacheIntegrationTests.java | 6 +- .../gemfire/fork/CqCacheServerProcess.java | 4 +- .../FunctionExecutionIntegrationTests.java | 4 +- .../ListenerContainerIntegrationTests.java | 4 +- .../LuceneOperationsIntegrationTests.java | 4 +- ...eExceptionTranslationIntegrationTests.java | 4 +- ...tstrappingInitializerIntegrationTests.java | 4 +- ...LauncherCacheProviderIntegrationTests.java | 4 +- .../data/gemfire/test/model/Person.java | 4 +- ...ts.java => SpringExtensionsUnitTests.java} | 251 ++++++++++-------- 45 files changed, 291 insertions(+), 238 deletions(-) rename spring-data-geode/src/main/java/org/springframework/data/gemfire/util/{SpringUtils.java => SpringExtensions.java} (89%) rename spring-data-geode/src/test/java/org/springframework/data/gemfire/util/{SpringUtilsUnitTests.java => SpringExtensionsUnitTests.java} (60%) diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/CacheFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/CacheFactoryBean.java index 1b754c40..cf10bf2d 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/CacheFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/CacheFactoryBean.java @@ -38,7 +38,7 @@ import org.springframework.beans.factory.FactoryBean; import org.springframework.data.gemfire.config.annotation.PeerCacheConfigurer; import org.springframework.data.gemfire.util.ArrayUtils; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -278,7 +278,7 @@ public class CacheFactoryBean extends AbstractResolvableCacheFactoryBean { jndiDataSource.getAttributes().put("type", jndiDataSourceType.getName()); - SpringUtils.safeRunOperation(() -> + SpringExtensions.safeRunOperation(() -> JNDIInvoker.mapDatasource(jndiDataSource.getAttributes(), jndiDataSource.getProps())); }); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/GemfireTemplate.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/GemfireTemplate.java index 93318c52..35b487cd 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/GemfireTemplate.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/GemfireTemplate.java @@ -38,7 +38,7 @@ import org.apache.geode.cache.query.SelectResults; import org.springframework.dao.DataAccessException; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.gemfire.util.RegionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; @@ -428,13 +428,13 @@ public class GemfireTemplate extends GemfireAccessor implements GemfireOperation if (RegionUtils.isLocal(region)) { - SpringUtils.ValueReturningThrowableOperation hasServerProxyMethod = () -> + SpringExtensions.ValueReturningThrowableOperation hasServerProxyMethod = () -> Optional.ofNullable(ReflectionUtils.findMethod(region.getClass(), "hasServerProxy")) .map(method -> ReflectionUtils.invokeMethod(method, region)) .map(Boolean.FALSE::equals) .orElse(false); - return SpringUtils.safeGetValue(hasServerProxyMethod, false); + return SpringExtensions.safeGetValue(hasServerProxyMethod, false); } return false; diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/PeerRegionFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/PeerRegionFactoryBean.java index fcb8cbdc..f989b937 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/PeerRegionFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/PeerRegionFactoryBean.java @@ -59,7 +59,7 @@ import org.springframework.data.gemfire.expiration.ExpiringRegionFactoryBean; import org.springframework.data.gemfire.util.ArrayUtils; import org.springframework.data.gemfire.util.CollectionUtils; import org.springframework.data.gemfire.util.RegionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -535,7 +535,7 @@ public abstract class PeerRegionFactoryBean extends ConfigurableRegionFact */ boolean isUserSpecifiedEvictionAttributes(RegionAttributes regionAttributes) { - SpringUtils.ValueReturningThrowableOperation hasEvictionAttributes = () -> + SpringExtensions.ValueReturningThrowableOperation hasEvictionAttributes = () -> Optional.ofNullable(regionAttributes) .map(Object::getClass) .map(type -> ReflectionUtils.findMethod(type, "hasEvictionAttributes")) @@ -543,7 +543,7 @@ public abstract class PeerRegionFactoryBean extends ConfigurableRegionFact .map(Boolean.TRUE::equals) .orElse(false); - return SpringUtils.safeGetValue(hasEvictionAttributes, false); + return SpringExtensions.safeGetValue(hasEvictionAttributes, false); } /* diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/ResolvableRegionFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/ResolvableRegionFactoryBean.java index 1a5883c2..167eee7a 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/ResolvableRegionFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/ResolvableRegionFactoryBean.java @@ -31,7 +31,7 @@ import org.springframework.core.io.Resource; import org.springframework.data.gemfire.client.ClientRegionFactoryBean; import org.springframework.data.gemfire.support.AbstractFactoryBeanSupport; import org.springframework.data.gemfire.support.GemfireFunctions; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -178,13 +178,13 @@ public abstract class ResolvableRegionFactoryBean extends AbstractFactoryB if (snapshot != null) { - SpringUtils.VoidReturningThrowableOperation operation = + SpringExtensions.VoidReturningThrowableOperation operation = () -> region.loadSnapshot(snapshot.getInputStream()); Function exceptionHandler = cause -> newRuntimeException(cause, "Failed to load snapshot [%s]", snapshot); - SpringUtils.safeRunOperation(operation, exceptionHandler); + SpringExtensions.safeRunOperation(operation, exceptionHandler); } return region; diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientCacheFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientCacheFactoryBean.java index 454b1825..607a3811 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientCacheFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientCacheFactoryBean.java @@ -52,7 +52,8 @@ import org.springframework.data.gemfire.support.ConnectionEndpoint; import org.springframework.data.gemfire.support.ConnectionEndpointList; import org.springframework.data.gemfire.util.ArrayUtils; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.PropertiesBuilder; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -79,6 +80,7 @@ import org.springframework.util.StringUtils; * @see org.springframework.context.event.ApplicationContextEvent * @see org.springframework.context.event.ContextRefreshedEvent * @see org.springframework.data.gemfire.CacheFactoryBean + * @see org.springframework.data.gemfire.client.support.PoolManagerPoolResolver * @see org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer * @since 1.0.0 */ @@ -219,9 +221,9 @@ public class ClientCacheFactoryBean extends CacheFactoryBean implements Applicat DistributedSystem distributedSystem = distributedSystemSupplier.get(); if (GemfireUtils.isConnected(distributedSystem)) { - Properties distributedSystemProperties = (Properties) distributedSystem.getProperties().clone(); - distributedSystemProperties.putAll(gemfireProperties); - gemfireProperties = distributedSystemProperties; + gemfireProperties = PropertiesBuilder.from(distributedSystem.getProperties()) + .add(gemfireProperties) + .build(); } GemfireUtils.configureDurableClient(gemfireProperties, getDurableClientId(), getDurableClientTimeout()); @@ -360,7 +362,7 @@ public class ClientCacheFactoryBean extends CacheFactoryBean implements Applicat if (pool == null && isPoolNameResolvable(poolName)) { - String dereferencedPoolName = SpringUtils.dereferenceBean(poolName); + String dereferencedPoolName = SpringExtensions.dereferenceBean(poolName); PoolFactoryBean poolFactoryBean = getBeanFactory().getBean(dereferencedPoolName, PoolFactoryBean.class); @@ -412,8 +414,8 @@ public class ClientCacheFactoryBean extends CacheFactoryBean implements Applicat } /** - * Inform the Apache Geode cluster that this {@link ClientCache} is ready to receive events - * iff the client is non-durable. + * Inform the Apache Geode cluster of servers that this {@link ClientCache} is ready to receive events and updates + * iff the client is durable. * * @param event {@link ApplicationContextEvent} fired when the {@link ApplicationContext} is refreshed. * @see org.apache.geode.cache.client.ClientCache#readyForEvents() @@ -429,13 +431,13 @@ public class ClientCacheFactoryBean extends CacheFactoryBean implements Applicat } catch (IllegalStateException | CacheClosedException ignore) { // Exceptions are thrown when ClientCache.readyForEvents() is called on a non-durable client - // or the ClientCache is closing. + // or when the ClientCache is closing. } } } /** - * Null-safe internal method used to close the {@link ClientCache} and preserve durability. + * Null-safe method used to {@link GemFireCache#close()} the {@link ClientCache} and preserve durability. * * @param cache {@link GemFireCache} to close. * @see org.apache.geode.cache.client.ClientCache#close(boolean) @@ -768,7 +770,7 @@ public class ClientCacheFactoryBean extends CacheFactoryBean implements Applicat Boolean readyForEvents = getReadyForEvents(); return readyForEvents != null ? Boolean.TRUE.equals(readyForEvents) - : SpringUtils.safeGetValue(() -> GemfireUtils.isDurable(fetchCache()), false); + : SpringExtensions.safeGetValue(() -> GemfireUtils.isDurable(fetchCache()), false); } public void setRetryAttempts(Integer retryAttempts) { diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java index 37b86d27..ff9d47e8 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java @@ -50,7 +50,7 @@ import org.springframework.data.gemfire.eviction.EvictingRegionFactoryBean; import org.springframework.data.gemfire.expiration.ExpiringRegionFactoryBean; import org.springframework.data.gemfire.support.SmartLifecycleSupport; import org.springframework.data.gemfire.util.RegionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -298,7 +298,7 @@ public class ClientRegionFactoryBean extends ConfigurableRegionFactoryBean return Optional.ofNullable(getPoolResolver().resolve(poolName)) .map(it -> true) .orElseGet(() -> - SpringUtils.safeGetValue(() -> + SpringExtensions.safeGetValue(() -> getBeanFactory().getBean(poolName, Pool.class) != null, false)); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/support/DefaultableDelegatingPoolAdapter.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/support/DefaultableDelegatingPoolAdapter.java index cc660c1e..47d846d4 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/support/DefaultableDelegatingPoolAdapter.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/client/support/DefaultableDelegatingPoolAdapter.java @@ -26,7 +26,7 @@ import org.apache.geode.cache.client.SocketFactory; import org.apache.geode.cache.query.QueryService; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; /** @@ -69,7 +69,7 @@ public abstract class DefaultableDelegatingPoolAdapter { protected T defaultIfNull(T defaultValue, Supplier valueProvider) { - return prefersPool() ? SpringUtils.defaultIfNull(valueProvider.get(), defaultValue) + return prefersPool() ? SpringExtensions.defaultIfNull(valueProvider.get(), defaultValue) : defaultValue != null ? defaultValue : valueProvider.get(); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java index e84db0aa..80184268 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ApacheShiroSecurityConfiguration.java @@ -47,7 +47,7 @@ import org.springframework.core.env.Environment; import org.springframework.core.type.AnnotatedTypeMetadata; import org.springframework.data.gemfire.config.annotation.support.AbstractAnnotationConfigSupport; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; @@ -123,7 +123,7 @@ public class ApacheShiroSecurityConfiguration extends AbstractAnnotationConfigSu public BeanFactoryPostProcessor shiroGemFireBeanFactoryPostProcessor() { return configurableListableBeanFactory -> - SpringUtils.addDependsOn(configurableListableBeanFactory.getBeanDefinition("gemfireCache"), + SpringExtensions.addDependsOn(configurableListableBeanFactory.getBeanDefinition("gemfireCache"), "shiroSecurityManager"); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/CompressionConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/CompressionConfiguration.java index ed2abc71..c9da386e 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/CompressionConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/CompressionConfiguration.java @@ -43,7 +43,7 @@ import org.springframework.core.type.AnnotationMetadata; import org.springframework.data.gemfire.ResolvableRegionFactoryBean; import org.springframework.data.gemfire.config.annotation.support.AbstractAnnotationConfigSupport; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.StringUtils; /** @@ -134,7 +134,7 @@ public class CompressionConfiguration extends AbstractAnnotationConfigSupport im stream(nullSafeArray(beanFactory.getBeanDefinitionNames(), String.class)).forEach(beanName -> Optional.of(beanFactory.getBeanDefinition(beanName)) .filter(beanDefinition -> isTargetedRegionBean(beanName, beanDefinition, beanFactory)) - .ifPresent(beanDefinition -> SpringUtils.setPropertyReference( + .ifPresent(beanDefinition -> SpringExtensions.setPropertyReference( beanDefinition, "compressor", resolvedCompressorBeanName))); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/EntityDefinedRegionsConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/EntityDefinedRegionsConfiguration.java index ff8e56cc..abf85c1a 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/EntityDefinedRegionsConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/EntityDefinedRegionsConfiguration.java @@ -68,7 +68,7 @@ import org.springframework.data.gemfire.mapping.annotation.LocalRegion; import org.springframework.data.gemfire.mapping.annotation.PartitionRegion; import org.springframework.data.gemfire.mapping.annotation.ReplicateRegion; import org.springframework.data.gemfire.support.CompositeTypeFilter; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -289,7 +289,7 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS */ private String[] nullSafeGetPatterns(AnnotationAttributes filterAttributes) { - return SpringUtils.safeGetValue(() -> + return SpringExtensions.safeGetValue(() -> nullSafeArray(filterAttributes.getStringArray("pattern"), String.class), () -> new String[0]); } @@ -319,7 +319,7 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS protected @NonNull GemfireMappingContext resolveMappingContext() { if (this.mappingContext == null) { - this.mappingContext = SpringUtils.safeGetValue(() -> + this.mappingContext = SpringExtensions.safeGetValue(() -> getBeanFactory().getBean(GemfireMappingContext.class), GemfireMappingContext::new); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ExpirationConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ExpirationConfiguration.java index 1fff730f..8ade1ab3 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ExpirationConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/annotation/ExpirationConfiguration.java @@ -54,7 +54,7 @@ import org.springframework.data.gemfire.expiration.ExpirationActionType; import org.springframework.data.gemfire.expiration.ExpiringRegionFactoryBean; import org.springframework.data.gemfire.util.ArrayUtils; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.util.Assert; @@ -602,7 +602,7 @@ public class ExpirationConfiguration extends AbstractAnnotationConfigSupport imp AttributesMutator regionAttributesMutator = region.getAttributesMutator(); - if (SpringUtils.areNotNull(regionAttributes, regionAttributesMutator)) { + if (SpringExtensions.areNotNull(regionAttributes, regionAttributesMutator)) { CustomExpiry customEntryIdleTimeout = regionAttributes.getCustomEntryIdleTimeout(); CustomExpiry customEntryTimeToLive = regionAttributes.getCustomEntryTimeToLive(); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/AbstractDependencyStructuringBeanFactoryPostProcessor.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/AbstractDependencyStructuringBeanFactoryPostProcessor.java index c0efd0e3..1a1186e4 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/AbstractDependencyStructuringBeanFactoryPostProcessor.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/AbstractDependencyStructuringBeanFactoryPostProcessor.java @@ -35,7 +35,7 @@ import org.springframework.data.gemfire.ReplicatedRegionFactoryBean; import org.springframework.data.gemfire.client.ClientCacheFactoryBean; import org.springframework.data.gemfire.client.ClientRegionFactoryBean; import org.springframework.data.gemfire.client.PoolFactoryBean; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -56,11 +56,11 @@ import org.springframework.util.StringUtils; public abstract class AbstractDependencyStructuringBeanFactoryPostProcessor implements BeanFactoryPostProcessor { protected BeanDefinition addDependsOn(BeanDefinition beanDefinition, String... beanNames) { - return SpringUtils.addDependsOn(beanDefinition, beanNames); + return SpringExtensions.addDependsOn(beanDefinition, beanNames); } protected Optional getPropertyValue(BeanDefinition beanDefinition, String propertyName) { - return SpringUtils.getPropertyValue(beanDefinition, propertyName); + return SpringExtensions.getPropertyValue(beanDefinition, propertyName); } protected boolean isBeanDefinitionOfType(BeanDefinition beanDefinition, Class type) { diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientCachePoolBeanFactoryPostProcessor.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientCachePoolBeanFactoryPostProcessor.java index 6e236ab1..1bfdd1f0 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientCachePoolBeanFactoryPostProcessor.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientCachePoolBeanFactoryPostProcessor.java @@ -22,7 +22,7 @@ import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.data.gemfire.config.xml.GemfireConstants; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * The ClientCachePoolBeanFactoryPostProcessor class... @@ -40,7 +40,7 @@ public class ClientCachePoolBeanFactoryPostProcessor extends AbstractDependencyS BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName); if (isPoolBean(beanDefinition)) { - SpringUtils.addDependsOn(beanDefinition, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); + SpringExtensions.addDependsOn(beanDefinition, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); } }); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientRegionPoolBeanFactoryPostProcessor.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientRegionPoolBeanFactoryPostProcessor.java index 9d8ab402..2771c06c 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientRegionPoolBeanFactoryPostProcessor.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/ClientRegionPoolBeanFactoryPostProcessor.java @@ -29,7 +29,7 @@ import org.springframework.beans.PropertyValue; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * {@link ClientRegionPoolBeanFactoryPostProcessor} is a Spring {@link BeanFactoryPostProcessor} implementation @@ -77,7 +77,7 @@ public class ClientRegionPoolBeanFactoryPostProcessor extends AbstractDependency String poolName = getPoolName(clientRegionBean); if (poolBeanNames.contains(poolName)) { - SpringUtils.addDependsOn(clientRegionBean, poolName); + SpringExtensions.addDependsOn(clientRegionBean, poolName); } }); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/PdxDiskStoreAwareBeanFactoryPostProcessor.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/PdxDiskStoreAwareBeanFactoryPostProcessor.java index 48622d4b..226e6c1c 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/PdxDiskStoreAwareBeanFactoryPostProcessor.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/support/PdxDiskStoreAwareBeanFactoryPostProcessor.java @@ -29,7 +29,7 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.data.gemfire.util.ArrayUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; /** @@ -145,6 +145,6 @@ public class PdxDiskStoreAwareBeanFactoryPostProcessor implements BeanFactoryPos * @see org.springframework.beans.factory.config.BeanDefinition#getDependsOn() */ private String[] getDependsOn(BeanDefinition beanDefinition) { - return SpringUtils.defaultIfNull(beanDefinition.getDependsOn(), EMPTY_STRING_ARRAY); + return SpringExtensions.defaultIfNull(beanDefinition.getDependsOn(), EMPTY_STRING_ARRAY); } } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java index f0bb6207..30641cf2 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/AsyncEventQueueParser.java @@ -22,7 +22,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser; import org.springframework.beans.factory.xml.BeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.gemfire.wan.AsyncEventQueueFactoryBean; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; @@ -128,7 +128,7 @@ class AsyncEventQueueParser extends AbstractSingleBeanDefinitionParser { private void parseCache(Element element, BeanDefinitionBuilder builder) { String cacheRefAttribute = element.getAttribute("cache-ref"); - String cacheName = SpringUtils.defaultIfEmpty(cacheRefAttribute, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); + String cacheName = SpringExtensions.defaultIfEmpty(cacheRefAttribute, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); builder.addConstructorArgReference(cacheName); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/CacheServerParser.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/CacheServerParser.java index f22dcfac..0c34b92a 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/CacheServerParser.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/CacheServerParser.java @@ -23,7 +23,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.data.gemfire.server.CacheServerFactoryBean; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; @@ -70,7 +70,7 @@ class CacheServerParser extends AbstractSimpleBeanDefinitionParser { String cacheRefAttribute = element.getAttribute(ParsingUtils.CACHE_REF_ATTRIBUTE_NAME); - builder.addPropertyReference("cache", SpringUtils.defaultIfEmpty( + builder.addPropertyReference("cache", SpringExtensions.defaultIfEmpty( cacheRefAttribute, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME)); String groupsAttribute = element.getAttribute("groups"); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java index 29b7c0c0..d339939e 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/FunctionServiceParser.java @@ -24,7 +24,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; import org.springframework.data.gemfire.function.FunctionServiceFactoryBean; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.xml.DomUtils; /** @@ -71,6 +71,6 @@ class FunctionServiceParser extends AbstractSimpleBeanDefinitionParser { String resolvedId = super.resolveId(element, beanDefinition, parserContext); - return SpringUtils.defaultIfEmpty(resolvedId, GemfireConstants.DEFAULT_GEMFIRE_FUNCTION_SERVICE_NAME); + return SpringExtensions.defaultIfEmpty(resolvedId, GemfireConstants.DEFAULT_GEMFIRE_FUNCTION_SERVICE_NAME); } } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewayReceiverParser.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewayReceiverParser.java index 9ff22cb3..ffaed0b4 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewayReceiverParser.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewayReceiverParser.java @@ -21,7 +21,7 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.gemfire.wan.GatewayReceiverFactoryBean; /** @@ -49,7 +49,7 @@ class GatewayReceiverParser extends AbstractSimpleBeanDefinitionParser { protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String cacheRef = element.getAttribute(ParsingUtils.CACHE_REF_ATTRIBUTE_NAME); - builder.addConstructorArgReference(SpringUtils.defaultIfEmpty( + builder.addConstructorArgReference(SpringExtensions.defaultIfEmpty( cacheRef, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME)); builder.setLazyInit(false); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java index 52eed28e..31b02760 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/GatewaySenderParser.java @@ -21,7 +21,7 @@ import org.w3c.dom.Element; import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.ParserContext; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.gemfire.wan.GatewaySenderFactoryBean; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; @@ -51,7 +51,7 @@ class GatewaySenderParser extends AbstractSimpleBeanDefinitionParser { protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { String cacheRef = element.getAttribute(ParsingUtils.CACHE_REF_ATTRIBUTE_NAME); - builder.addConstructorArgReference(SpringUtils.defaultIfEmpty( + builder.addConstructorArgReference(SpringExtensions.defaultIfEmpty( cacheRef, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME)); ParsingUtils.setPropertyValue(element, builder, NAME_ATTRIBUTE); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java index 99f38495..d2135cc0 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/config/xml/ParsingUtils.java @@ -33,7 +33,7 @@ import org.springframework.data.gemfire.SubscriptionAttributesFactoryBean; import org.springframework.data.gemfire.config.support.GemfireFeature; import org.springframework.data.gemfire.eviction.EvictionAttributesFactoryBean; import org.springframework.data.gemfire.expiration.ExpirationAttributesFactoryBean; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; @@ -478,7 +478,7 @@ abstract class ParsingUtils { } static String resolveCacheReference(String cacheReference) { - return SpringUtils.defaultIfEmpty(cacheReference, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); + return SpringExtensions.defaultIfEmpty(cacheReference, GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME); } static void setRegionReference(Element element, BeanDefinitionBuilder builder) { diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/config/FunctionExecutionConfiguration.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/config/FunctionExecutionConfiguration.java index 8e56d6a4..ddf632fe 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/config/FunctionExecutionConfiguration.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/config/FunctionExecutionConfiguration.java @@ -18,7 +18,7 @@ package org.springframework.data.gemfire.function.config; import org.springframework.context.annotation.ScannedGenericBeanDefinition; import org.springframework.core.annotation.AnnotationAttributes; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; /** @@ -65,7 +65,7 @@ class FunctionExecutionConfiguration { boolean valid = this.functionExecutionInterface != null && this.functionExecutionInterface.isInterface(); Assert.isTrue(valid, String.format("The annotation [%1$s] only applies to an interface; It is not valid for type [%2$s]", - annotationType, SpringUtils.nullSafeName(this.functionExecutionInterface))); + annotationType, SpringExtensions.nullSafeName(this.functionExecutionInterface))); } String getAnnotationType() { diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/AbstractFunctionExecution.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/AbstractFunctionExecution.java index ba6f5456..e63edf48 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/AbstractFunctionExecution.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/function/execution/AbstractFunctionExecution.java @@ -30,8 +30,8 @@ import org.apache.geode.cache.execute.ResultCollector; import org.springframework.data.gemfire.function.ExecutionTimeoutFunctionException; import org.springframework.data.gemfire.function.UncategorizedFunctionException; -import org.springframework.data.gemfire.util.SpringUtils; -import org.springframework.data.gemfire.util.SpringUtils.ValueReturningThrowableOperation; +import org.springframework.data.gemfire.util.SpringExtensions; +import org.springframework.data.gemfire.util.SpringExtensions.ValueReturningThrowableOperation; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -185,7 +185,7 @@ abstract class AbstractFunctionExecution { try { Object result = timeout > 0 - ? SpringUtils.safeGetValue(getResultWithTimeoutThrowableOperation(resultCollector, timeout), + ? SpringExtensions.safeGetValue(getResultWithTimeoutThrowableOperation(resultCollector, timeout), newFunctionAndInterruptedExceptionHandler(timeout)) : resultCollector.getResult(); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java index 363e9c8b..20a38c7a 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java @@ -62,7 +62,7 @@ import org.springframework.data.gemfire.config.annotation.ContinuousQueryListene 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.data.gemfire.util.SpringExtensions; import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.ErrorHandler; @@ -219,7 +219,7 @@ public class ContinuousQueryListenerContainer implements BeanFactoryAware, BeanN .filter(StringUtils::hasText) .orElseGet(() -> Optional.ofNullable(getBeanFactory()) - .filter(it -> SpringUtils.isMatchingBean(it, GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME, Pool.class)) + .filter(it -> SpringExtensions.isMatchingBean(it, GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME, Pool.class)) .map(it -> GemfireConstants.DEFAULT_GEMFIRE_POOL_NAME) .orElse(GemfireUtils.DEFAULT_POOL_NAME)); } @@ -246,7 +246,7 @@ public class ContinuousQueryListenerContainer implements BeanFactoryAware, BeanN }; return Optional.ofNullable(getBeanFactory()) - .filter(it -> SpringUtils.isMatchingBean(it, poolName, Pool.class)) + .filter(it -> SpringExtensions.isMatchingBean(it, poolName, Pool.class)) .map(it -> { try { it.getBean(poolName, Pool.class); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java index d3acef19..3f5185e9 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/GemfireRepositoryFactoryBean.java @@ -42,7 +42,7 @@ import org.springframework.data.gemfire.mapping.GemfirePersistentProperty; import org.springframework.data.gemfire.repository.query.GemfireRepositoryQuery; import org.springframework.data.gemfire.repository.query.QueryPostProcessor; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.mapping.context.MappingContext; import org.springframework.data.repository.Repository; import org.springframework.data.repository.RepositoryDefinition; @@ -257,7 +257,7 @@ public class GemfireRepositoryFactoryBean, S, ID> * @see org.springframework.data.mapping.context.MappingContext */ protected MappingContext, GemfirePersistentProperty> resolveGemfireMappingContext() { - return SpringUtils.requireObject(this::getGemfireMappingContext, "GemfireMappingContext must not be null"); + return SpringExtensions.requireObject(this::getGemfireMappingContext, "GemfireMappingContext must not be null"); } protected class QueryPostProcessorRegistrationOnQueryCreationListener diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/SimpleGemfireRepository.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/SimpleGemfireRepository.java index 8d8e8d4d..81b075af 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/SimpleGemfireRepository.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/repository/support/SimpleGemfireRepository.java @@ -43,7 +43,7 @@ import org.springframework.data.gemfire.repository.query.QueryString; import org.springframework.data.gemfire.repository.query.support.PagingUtils; import org.springframework.data.gemfire.util.CollectionUtils; import org.springframework.data.gemfire.util.RegionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.repository.CrudRepository; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.core.EntityInformation; @@ -333,7 +333,7 @@ public class SimpleGemfireRepository implements GemfireRepository doRegionClear(region); } else { - SpringUtils.safeDoOperation(() -> region.clear(), () -> doRegionClear(region)); + SpringExtensions.safeDoOperation(() -> region.clear(), () -> doRegionClear(region)); } return null; diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java index 73b1c174..847be0b4 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneAccessor.java @@ -17,7 +17,7 @@ package org.springframework.data.gemfire.search.lucene; -import static org.springframework.data.gemfire.util.SpringUtils.safeGetValue; +import static org.springframework.data.gemfire.util.SpringExtensions.safeGetValue; import java.util.Optional; diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java index a8f384e8..76c9edca 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/search/lucene/LuceneIndexFactoryBean.java @@ -47,7 +47,7 @@ import org.springframework.beans.factory.InitializingBean; import org.springframework.data.gemfire.config.annotation.IndexConfigurer; import org.springframework.data.gemfire.support.AbstractFactoryBeanSupport; import org.springframework.data.gemfire.util.CacheUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -356,7 +356,7 @@ public class LuceneIndexFactoryBean extends AbstractFactoryBeanSupport Optional.ofNullable(getBeanFactory()) - .map(it -> SpringUtils.safeGetValue(() -> it.getBean(LuceneService.class), (LuceneService) null)) + .map(it -> SpringExtensions.safeGetValue(() -> it.getBean(LuceneService.class), (LuceneService) null)) .orElseGet(() -> resolveLuceneService(resolveCache()))); } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/support/ConnectionEndpoint.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/support/ConnectionEndpoint.java index af4d8d04..94329519 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/support/ConnectionEndpoint.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/support/ConnectionEndpoint.java @@ -17,7 +17,7 @@ package org.springframework.data.gemfire.support; import java.net.InetSocketAddress; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -167,7 +167,7 @@ public class ConnectionEndpoint implements Cloneable, Comparable orderedCacheResolvers = - SpringUtils.getOrderedStreamOfBeansByType(beanFactory, CacheResolver.class) + SpringExtensions.getOrderedStreamOfBeansByType(beanFactory, CacheResolver.class) .collect(Collectors.toList()); setConfiguredCacheResolvers(orderedCacheResolvers); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/DistributedSystemUtils.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/DistributedSystemUtils.java index 6ce9b7a4..77a82b08 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/DistributedSystemUtils.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/DistributedSystemUtils.java @@ -26,6 +26,8 @@ import org.apache.geode.distributed.internal.InternalDistributedSystem; import org.apache.geode.distributed.internal.InternalLocator; import org.springframework.data.gemfire.GemFireProperties; +import org.springframework.lang.NonNull; +import org.springframework.lang.Nullable; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -40,7 +42,7 @@ import org.springframework.util.StringUtils; * @since 1.7.0 */ @SuppressWarnings("unused") -public abstract class DistributedSystemUtils extends SpringUtils { +public abstract class DistributedSystemUtils extends SpringExtensions { public static final int DEFAULT_CACHE_SERVER_PORT = CacheServer.DEFAULT_PORT; public static final int DEFAULT_LOCATOR_PORT = 10334; @@ -50,8 +52,8 @@ public abstract class DistributedSystemUtils extends SpringUtils { public static final String GEMFIRE_PREFIX = GemFireProperties.GEMFIRE_PROPERTY_NAME_PREFIX; public static final String NAME_PROPERTY_NAME = GemFireProperties.NAME.getName(); - public static Properties configureDurableClient(Properties gemfireProperties, - String durableClientId, Integer durableClientTimeout) { + public static @NonNull Properties configureDurableClient(@NonNull Properties gemfireProperties, + @Nullable String durableClientId, @Nullable Integer durableClientTimeout) { if (StringUtils.hasText(durableClientId)) { @@ -67,26 +69,32 @@ public abstract class DistributedSystemUtils extends SpringUtils { return gemfireProperties; } - public static boolean isConnected(DistributedSystem distributedSystem) { - return Optional.ofNullable(distributedSystem).filter(DistributedSystem::isConnected).isPresent(); + public static boolean isConnected(@Nullable DistributedSystem distributedSystem) { + + return Optional.ofNullable(distributedSystem) + .filter(DistributedSystem::isConnected) + .isPresent(); } - public static boolean isNotConnected(DistributedSystem distributedSystem) { + public static boolean isNotConnected(@Nullable DistributedSystem distributedSystem) { return !isConnected(distributedSystem); } @SuppressWarnings("unchecked") - public static T getDistributedSystem() { + public static @Nullable T getDistributedSystem() { return (T) InternalDistributedSystem.getAnyInstance(); } @SuppressWarnings("unchecked") - public static T getDistributedSystem(GemFireCache gemfireCache) { - return (T) Optional.ofNullable(gemfireCache).map(GemFireCache::getDistributedSystem).orElse(null); + public static @Nullable T getDistributedSystem(GemFireCache gemfireCache) { + + return (T) Optional.ofNullable(gemfireCache) + .map(GemFireCache::getDistributedSystem) + .orElse(null); } @SuppressWarnings("unchecked") - public static T getLocator() { + public static @Nullable T getLocator() { return (T) InternalLocator.getLocator(); } } diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringUtils.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringExtensions.java similarity index 89% rename from spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringUtils.java rename to spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringExtensions.java index a8cf3327..79bbd67a 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringUtils.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/util/SpringExtensions.java @@ -66,12 +66,12 @@ import org.springframework.util.StringUtils; * @since 1.8.0 */ @SuppressWarnings("unused") -public abstract class SpringUtils { +public abstract class SpringExtensions { /** - * Determines whether all the {@link Object} values in the array are {@literal non-null} + * Determines whether all the {@link Object} values in the array are {@literal non-null}. * - * @param values array of {@link Object Objects} to evaluate. + * @param values array of {@link Object values} to evaluate for {@literal null}. * @return a boolean value indicating whether all of the {@link Object} values * in the array are {@literal non-null}. */ @@ -89,34 +89,34 @@ public abstract class SpringUtils { } /** - * Determines whether a given bean registered in the {@link BeanFactory Spring container} matches by - * both {@link String name} and {@link Class type}. + * Determines whether a given bean registered in the Spring {@link BeanFactory} matches by {@link String name} + * and {@link Class type}. * - * @param beanFactory {@link BeanFactory Spring container} in which to resolve the bean; - * must not be {@literal null}. + * @param beanFactory Spring {@link BeanFactory} used to resolve the bean; must not be {@literal null}. * @param beanName {@link String name} of the bean. * @param beanType {@link Class type} of the bean. - * @return a boolean value indicating whether the {@link BeanFactory Spring container} contains a bean - * matching by both {@link String name} and {@link Class type}. + * @return a boolean value indicating whether the Spring {@link BeanFactory} contains a bean matching by + * {@link String name} and {@link Class type}. * @see org.springframework.beans.factory.BeanFactory - * @see java.lang.Class * @see java.lang.String + * @see java.lang.Class */ - public static boolean isMatchingBean(@NonNull BeanFactory beanFactory, String beanName, Class beanType) { + public static boolean isMatchingBean(@NonNull BeanFactory beanFactory, + @NonNull String beanName, @Nullable Class beanType) { + return beanFactory.containsBean(beanName) && beanFactory.isTypeMatch(beanName, beanType); } /** - * Adds an array of bean dependencies (by name) to the given {@link BeanDefinition}. + * Adds an array of bean dependencies (by {@link String name}) to the given {@link BeanDefinition}. * - * @param beanDefinition {@link BeanDefinition} to add the bean dependencies to; must not be {@literal null}. - * @param beanNames {@link String} array containing names of beans for which the {@link BeanDefinition} - * depends on (or has a dependency). + * @param beanDefinition {@link BeanDefinition} to add the bean dependencies; must not be {@literal null}. + * @param beanNames array of {@link String names} of beans for which the {@link BeanDefinition} + * depends on, or will have a dependency. * @return the given {@link BeanDefinition}. * @see org.springframework.beans.factory.config.BeanDefinition */ - @NonNull - public static BeanDefinition addDependsOn(@NonNull BeanDefinition beanDefinition, @Nullable String... beanNames) { + public static @NonNull BeanDefinition addDependsOn(@NonNull BeanDefinition beanDefinition, String... beanNames) { List dependsOnList = new ArrayList<>(); @@ -173,7 +173,7 @@ public abstract class SpringUtils { // Handles @Order annotated beans and beans implementing the Ordered interface List> orderedBeansOfType = beansOfType.entrySet().stream() - .map(SpringUtils::toOrderedBeanWrapper) + .map(SpringExtensions::toOrderedBeanWrapper) .filter(Objects::nonNull) .collect(Collectors.toList()); @@ -246,7 +246,10 @@ public abstract class SpringUtils { * @see org.springframework.core.Ordered */ public static @Nullable Integer getOrder(@Nullable Object target) { - return target instanceof Ordered ? ((Ordered) target).getOrder() : null; + + return target instanceof Ordered ? Integer.valueOf(((Ordered) target).getOrder()) + : target != null ? OrderUtils.getOrder(target.getClass()) + : null; } /** @@ -269,7 +272,8 @@ public abstract class SpringUtils { return beanFactory.getBeanProvider(beanType).orderedStream(); } - public static Optional getPropertyValue(BeanDefinition beanDefinition, String propertyName) { + public static Optional getPropertyValue(@Nullable BeanDefinition beanDefinition, + @Nullable String propertyName) { return Optional.ofNullable(beanDefinition) .map(BeanDefinition::getPropertyValues) @@ -277,16 +281,16 @@ public abstract class SpringUtils { .map(PropertyValue::getValue); } - public static BeanDefinition setPropertyReference(BeanDefinition beanDefinition, - String propertyName, String beanName) { + public static BeanDefinition setPropertyReference(@NonNull BeanDefinition beanDefinition, + @NonNull String propertyName, @NonNull String beanName) { beanDefinition.getPropertyValues().addPropertyValue(propertyName, new RuntimeBeanReference(beanName)); return beanDefinition; } - public static BeanDefinition setPropertyValue(BeanDefinition beanDefinition, - String propertyName, Object propertyValue) { + public static BeanDefinition setPropertyValue(@NonNull BeanDefinition beanDefinition, + @NonNull String propertyName, @Nullable Object propertyValue) { beanDefinition.getPropertyValues().addPropertyValue(propertyName, propertyValue); diff --git a/spring-data-geode/src/main/java/org/springframework/data/gemfire/wan/AsyncEventQueueFactoryBean.java b/spring-data-geode/src/main/java/org/springframework/data/gemfire/wan/AsyncEventQueueFactoryBean.java index 4f7cb17e..8955c32f 100644 --- a/spring-data-geode/src/main/java/org/springframework/data/gemfire/wan/AsyncEventQueueFactoryBean.java +++ b/spring-data-geode/src/main/java/org/springframework/data/gemfire/wan/AsyncEventQueueFactoryBean.java @@ -30,7 +30,7 @@ import org.apache.geode.cache.wan.GatewaySender; import org.springframework.beans.factory.FactoryBean; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; /** @@ -154,7 +154,7 @@ public class AsyncEventQueueFactoryBean extends AbstractWANComponentFactoryBean< public void destroy() { if (!getCache().isClosed()) { - SpringUtils.safeDoOperation(() -> this.asyncEventListener.close()); + SpringExtensions.safeDoOperation(() -> this.asyncEventListener.close()); } } diff --git a/spring-data-geode/src/test/java/org/springframework/context/ApplicationContextBeanOrderingIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/context/ApplicationContextBeanOrderingIntegrationTests.java index 13c35d31..0119844e 100644 --- a/spring-data-geode/src/test/java/org/springframework/context/ApplicationContextBeanOrderingIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/context/ApplicationContextBeanOrderingIntegrationTests.java @@ -45,7 +45,7 @@ import org.springframework.core.annotation.Order; import org.springframework.core.annotation.OrderUtils; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.data.gemfire.util.StreamUtils; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; @@ -233,7 +233,7 @@ public class ApplicationContextBeanOrderingIntegrationTests extends IntegrationT public void expectBeansToBeOrderedByOrderAnnotationAndOrderedInterfaceUsingSpringUtils() { List orderedBeans = CollectionUtils - .nullSafeList(SpringUtils.getBeansOfTypeOrdered(this.applicationContext.getBeanFactory(), NamedBean.class)); + .nullSafeList(SpringExtensions.getBeansOfTypeOrdered(this.applicationContext.getBeanFactory(), NamedBean.class)); Stream orderedBeanStream = StreamUtils.nullSafeStream(orderedBeans.stream()); diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/xml/MultipleCacheIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/xml/MultipleCacheIntegrationTests.java index 0b17980a..5066be9b 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/xml/MultipleCacheIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/config/xml/MultipleCacheIntegrationTests.java @@ -23,7 +23,7 @@ import org.apache.geode.cache.Region; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * Integration Tests for multiple Apache Geode {@link GemFireCache caches}. @@ -78,8 +78,8 @@ public class MultipleCacheIntegrationTests extends IntegrationTestsSupport { final ConfigurableApplicationContext applicationContextOneRef = applicationContextOne; final ConfigurableApplicationContext applicationContextTwoRef = applicationContextTwo; - SpringUtils.safeDoOperation(() -> closeApplicationContext(applicationContextOneRef)); - SpringUtils.safeDoOperation(() -> closeApplicationContext(applicationContextTwoRef)); + SpringExtensions.safeDoOperation(() -> closeApplicationContext(applicationContextOneRef)); + SpringExtensions.safeDoOperation(() -> closeApplicationContext(applicationContextTwoRef)); } } } diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/fork/CqCacheServerProcess.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/fork/CqCacheServerProcess.java index 3f989149..085b94bc 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/fork/CqCacheServerProcess.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/fork/CqCacheServerProcess.java @@ -25,7 +25,7 @@ import org.apache.geode.cache.RegionFactory; import org.apache.geode.cache.RegionShortcut; import org.apache.geode.cache.server.CacheServer; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * @author Costin Leau @@ -79,7 +79,7 @@ public class CqCacheServerProcess { private static Cache registerShutdownHook(Cache gemfireCache) { - Runtime.getRuntime().addShutdownHook(new Thread(() -> SpringUtils.safeDoOperation(() -> gemfireCache.close()))); + Runtime.getRuntime().addShutdownHook(new Thread(() -> SpringExtensions.safeDoOperation(() -> gemfireCache.close()))); return gemfireCache; } diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/function/execution/FunctionExecutionIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/function/execution/FunctionExecutionIntegrationTests.java index 7af81573..8b7a7ad7 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/function/execution/FunctionExecutionIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/function/execution/FunctionExecutionIntegrationTests.java @@ -31,7 +31,7 @@ import org.springframework.data.gemfire.client.PoolResolver; import org.springframework.data.gemfire.client.support.PoolManagerPoolResolver; import org.springframework.data.gemfire.fork.FunctionCacheServerProcess; import org.springframework.data.gemfire.tests.integration.ForkingClientServerIntegrationTestsSupport; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * Integration Tests for SDG Function support. @@ -85,7 +85,7 @@ public class FunctionExecutionIntegrationTests extends ForkingClientServerIntegr @After public void tearDownGemFireClient() { - Optional.ofNullable(this.gemfireCache).ifPresent(cache -> SpringUtils.safeDoOperation(() -> cache.close())); + Optional.ofNullable(this.gemfireCache).ifPresent(cache -> SpringExtensions.safeDoOperation(() -> cache.close())); } @Test diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/listener/ListenerContainerIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/listener/ListenerContainerIntegrationTests.java index a82d93f5..6167ece8 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/listener/ListenerContainerIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/listener/ListenerContainerIntegrationTests.java @@ -36,7 +36,7 @@ import org.springframework.data.gemfire.fork.CqCacheServerProcess; import org.springframework.data.gemfire.listener.adapter.ContinuousQueryListenerAdapter; import org.springframework.data.gemfire.tests.integration.ForkingClientServerIntegrationTestsSupport; import org.springframework.data.gemfire.tests.process.ProcessWrapper; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * @author Costin Leau @@ -87,7 +87,7 @@ public class ListenerContainerIntegrationTests extends ForkingClientServerIntegr public void closeGemFireClient() { Optional.ofNullable(this.gemfireCache) - .ifPresent(cache -> SpringUtils.safeDoOperation(() -> cache.close())); + .ifPresent(cache -> SpringExtensions.safeDoOperation(() -> cache.close())); } @Test diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsIntegrationTests.java index 7d5eda97..4614437a 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/search/lucene/LuceneOperationsIntegrationTests.java @@ -44,7 +44,7 @@ import org.springframework.data.annotation.Id; import org.springframework.data.gemfire.PartitionedRegionFactoryBean; import org.springframework.data.gemfire.config.annotation.PeerCacheApplication; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; @@ -183,7 +183,7 @@ public class LuceneOperationsIntegrationTests extends IntegrationTestsSupport { LuceneService luceneService = event.getApplicationContext().getBean("luceneService", LuceneService.class); - boolean flushed = SpringUtils.safeGetValue(() -> { + boolean flushed = SpringExtensions.safeGetValue(() -> { try { return luceneService.waitUntilFlushed("PersonTitleIndex", "/People", 15L, TimeUnit.SECONDS); } diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/GemfirePersistenceExceptionTranslationIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/GemfirePersistenceExceptionTranslationIntegrationTests.java index d0e8f0b1..2e2a163d 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/GemfirePersistenceExceptionTranslationIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/GemfirePersistenceExceptionTranslationIntegrationTests.java @@ -33,7 +33,7 @@ import org.springframework.data.gemfire.GemfireQueryException; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; import org.springframework.data.gemfire.tests.mock.annotation.EnableGemFireMockObjects; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.stereotype.Repository; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; @@ -60,7 +60,7 @@ public class GemfirePersistenceExceptionTranslationIntegrationTests extends Inte private TestGemFireRepository gemfireRepository; @SuppressWarnings("all") - private void handleExceptionThrowingCall(SpringUtils.VoidReturningThrowableOperation operation) { + private void handleExceptionThrowingCall(SpringExtensions.VoidReturningThrowableOperation operation) { try { operation.run(); diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringContextBootstrappingInitializerIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringContextBootstrappingInitializerIntegrationTests.java index 5140a011..c9dd678d 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringContextBootstrappingInitializerIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringContextBootstrappingInitializerIntegrationTests.java @@ -48,7 +48,7 @@ import org.springframework.data.gemfire.support.sample.TestUserDao; import org.springframework.data.gemfire.support.sample.TestUserService; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; import org.springframework.data.gemfire.tests.support.DataSourceAdapter; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; /** @@ -84,7 +84,7 @@ public class SpringContextBootstrappingInitializerIntegrationTests extends Integ @Before @After public void testSetupAndTearDown() { - SpringUtils.safeDoOperation(() -> + SpringExtensions.safeDoOperation(() -> closeApplicationContext(SpringContextBootstrappingInitializer.getApplicationContext())); UserDataStoreCacheLoader.INSTANCE.set(null); diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringServerLauncherCacheProviderIntegrationTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringServerLauncherCacheProviderIntegrationTests.java index b63a09d2..a51bde19 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringServerLauncherCacheProviderIntegrationTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/support/SpringServerLauncherCacheProviderIntegrationTests.java @@ -27,7 +27,7 @@ import org.apache.geode.distributed.ServerLauncher.ServerState; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; /** * Integration Tests {@link SpringServerLauncherCacheProvider} class. @@ -50,7 +50,7 @@ public class SpringServerLauncherCacheProviderIntegrationTests extends Integrati @After public void tearDown() { - SpringUtils.safeDoOperation(() -> + SpringExtensions.safeDoOperation(() -> closeApplicationContext(SpringContextBootstrappingInitializer.getApplicationContext())); SpringContextBootstrappingInitializer.destroy(); diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/test/model/Person.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/test/model/Person.java index c905b166..3551741b 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/test/model/Person.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/test/model/Person.java @@ -28,7 +28,7 @@ import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.gemfire.mapping.annotation.Indexed; import org.springframework.data.gemfire.mapping.annotation.Region; import org.springframework.data.gemfire.tests.support.IdentifierSequence; -import org.springframework.data.gemfire.util.SpringUtils; +import org.springframework.data.gemfire.util.SpringExtensions; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -172,7 +172,7 @@ public class Person implements Comparable, Serializable { Person that = (Person) obj; - return SpringUtils.equalsIgnoreNull(this.getId(), that.getId()) + return SpringExtensions.equalsIgnoreNull(this.getId(), that.getId()) && (ObjectUtils.nullSafeEquals(this.getBirthDate(), that.getBirthDate())) && (ObjectUtils.nullSafeEquals(this.getFirstName(), that.getFirstName()) && (ObjectUtils.nullSafeEquals(this.getGender(), that.getGender())) diff --git a/spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringUtilsUnitTests.java b/spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringExtensionsUnitTests.java similarity index 60% rename from spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringUtilsUnitTests.java rename to spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringExtensionsUnitTests.java index e4183e12..405fe6fb 100644 --- a/spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringUtilsUnitTests.java +++ b/spring-data-geode/src/test/java/org/springframework/data/gemfire/util/SpringExtensionsUnitTests.java @@ -52,12 +52,14 @@ import org.springframework.beans.PropertyValue; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; import org.springframework.dao.InvalidDataAccessApiUsageException; import org.springframework.data.gemfire.test.model.Person; -import org.springframework.data.gemfire.util.SpringUtils.ValueReturningThrowableOperation; +import org.springframework.data.gemfire.util.SpringExtensions.ValueReturningThrowableOperation; /** - * Unit Tests for {@link SpringUtils}. + * Unit Tests for {@link SpringExtensions}. * * @author John Blum * @see java.util.function.Function @@ -68,36 +70,36 @@ import org.springframework.data.gemfire.util.SpringUtils.ValueReturningThrowable * @see org.mockito.junit.MockitoJUnitRunner * @see org.springframework.beans.factory.BeanFactory * @see org.springframework.beans.factory.config.BeanDefinition - * @see org.springframework.data.gemfire.util.SpringUtils + * @see SpringExtensions * @since 1.9.0 */ @RunWith(MockitoJUnitRunner.class) -public class SpringUtilsUnitTests { +public class SpringExtensionsUnitTests { @Mock private BeanDefinition mockBeanDefinition; - @Test - public void areNotNullIsNullSafe() { - assertThat(SpringUtils.areNotNull((Object[]) null)).isTrue(); - } - @Test public void areNotNullWithAllNullValuesReturnsFalse() { - assertThat(SpringUtils.areNotNull(null, null, null)).isFalse(); + assertThat(SpringExtensions.areNotNull(null, null, null)).isFalse(); } @Test - public void areNotNullWithNoNullValuesReturnsTrue() { - assertThat(SpringUtils.areNotNull(1, 2, 3)).isTrue(); + public void areNotNullWithNullArrayIsNullSafe() { + assertThat(SpringExtensions.areNotNull((Object[]) null)).isTrue(); + } + + @Test + public void areNotNullWithNonNullArrayAndNoNullValuesReturnsTrue() { + assertThat(SpringExtensions.areNotNull(1, 2, 3)).isTrue(); } @Test public void areNotNullWithOneNullValueIsFalse() { - assertThat(SpringUtils.areNotNull(null, 2, 3)).isFalse(); - assertThat(SpringUtils.areNotNull(1, null, 3)).isFalse(); - assertThat(SpringUtils.areNotNull(1, 2, null)).isFalse(); + assertThat(SpringExtensions.areNotNull(null, 2, 3)).isFalse(); + assertThat(SpringExtensions.areNotNull(1, null, 3)).isFalse(); + assertThat(SpringExtensions.areNotNull(1, 2, null)).isFalse(); } @Test @@ -108,7 +110,7 @@ public class SpringUtilsUnitTests { when(mockBeanFactory.containsBean(anyString())).thenReturn(true); when(mockBeanFactory.isTypeMatch(anyString(), any(Class.class))).thenReturn(true); - assertThat(SpringUtils.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isTrue(); + assertThat(SpringExtensions.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isTrue(); verify(mockBeanFactory, times(1)).containsBean(eq("TestPool")); verify(mockBeanFactory, times(1)).isTypeMatch(eq("TestPool"), eq(Pool.class)); @@ -121,7 +123,7 @@ public class SpringUtilsUnitTests { when(mockBeanFactory.containsBean(anyString())).thenReturn(false); - assertThat(SpringUtils.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isFalse(); + assertThat(SpringExtensions.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isFalse(); verify(mockBeanFactory, times(1)).containsBean(eq("TestPool")); verify(mockBeanFactory, never()).isTypeMatch(anyString(), any(Class.class)); @@ -135,7 +137,7 @@ public class SpringUtilsUnitTests { when(mockBeanFactory.containsBean(anyString())).thenReturn(true); when(mockBeanFactory.isTypeMatch(anyString(), any(Class.class))).thenReturn(false); - assertThat(SpringUtils.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isFalse(); + assertThat(SpringExtensions.isMatchingBean(mockBeanFactory, "TestPool", Pool.class)).isFalse(); verify(mockBeanFactory, times(1)).containsBean(eq("TestPool")); verify(mockBeanFactory, times(1)).isTypeMatch(eq("TestPool"), eq(Pool.class)); @@ -147,7 +149,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getDependsOn()) .thenReturn(asArray("testBeanNameOne", "testBeanNameTwo")); - assertThat(SpringUtils.addDependsOn(this.mockBeanDefinition, "testBeanNameThree")) + assertThat(SpringExtensions.addDependsOn(this.mockBeanDefinition, "testBeanNameThree")) .isSameAs(this.mockBeanDefinition); verify(this.mockBeanDefinition, times(1)).getDependsOn(); @@ -160,7 +162,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getDependsOn()).thenReturn(null); - assertThat(SpringUtils.addDependsOn(this.mockBeanDefinition, "testBeanName")) + assertThat(SpringExtensions.addDependsOn(this.mockBeanDefinition, "testBeanName")) .isSameAs(this.mockBeanDefinition); verify(this.mockBeanDefinition, times(1)).getDependsOn(); @@ -172,7 +174,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getDependsOn()).thenReturn(asArray("testBeanNameOne", "testBeanNameTwo")); - assertThat(SpringUtils.addDependsOn(this.mockBeanDefinition, "testBeanNameThree", "testBeanNameFour")) + assertThat(SpringExtensions.addDependsOn(this.mockBeanDefinition, "testBeanNameThree", "testBeanNameFour")) .isSameAs(this.mockBeanDefinition); verify(this.mockBeanDefinition, times(1)).getDependsOn(); @@ -180,6 +182,26 @@ public class SpringUtilsUnitTests { .setDependsOn("testBeanNameOne", "testBeanNameTwo", "testBeanNameThree", "testBeanNameFour"); } + @Test + public void getOrderFromOrderAnnotatedBean() { + assertThat(SpringExtensions.getOrder(new OrderAnnotatedBean())).isEqualTo(4); + } + + @Test + public void getOrderFromOrderedBean() { + assertThat(SpringExtensions.getOrder(new OrderedBean(2))).isEqualTo(2); + } + + @Test + public void getOrderFromNonOrderedBean() { + assertThat(SpringExtensions.getOrder("TEST")).isNull(); + } + + @Test + public void getOrderFromNullIsNullSafe() { + assertThat(SpringExtensions.getOrder(null)).isNull(); + } + @Test public void getPropertyValueForExistingPropertyHavingValueReturnsValue() { @@ -188,7 +210,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getPropertyValues()).thenReturn(propertyValues); - assertThat(SpringUtils.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) + assertThat(SpringExtensions.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) .isEqualTo("testValue"); verify(this.mockBeanDefinition, times(1)).getPropertyValues(); @@ -204,7 +226,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getPropertyValues()).thenReturn(testPropertyValues); doReturn(testPropertyValue).when(testPropertyValues).getPropertyValue(anyString()); - assertThat(SpringUtils.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) + assertThat(SpringExtensions.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) .isNull(); verify(this.mockBeanDefinition, times(1)).getPropertyValues(); @@ -219,7 +241,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getPropertyValues()).thenReturn(testPropertyValues); - assertThat(SpringUtils.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) + assertThat(SpringExtensions.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) .isNull(); verify(this.mockBeanDefinition, times(1)).getPropertyValues(); @@ -231,7 +253,7 @@ public class SpringUtilsUnitTests { when(this.mockBeanDefinition.getPropertyValues()).thenReturn(null); - assertThat(SpringUtils.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) + assertThat(SpringExtensions.getPropertyValue(this.mockBeanDefinition, "testProperty").orElse(null)) .isNull(); verify(this.mockBeanDefinition, times(1)).getPropertyValues(); @@ -239,7 +261,7 @@ public class SpringUtilsUnitTests { @Test public void getPropertyValueWithNullBeanDefinitionReturnsNull() { - assertThat(SpringUtils.getPropertyValue(null, "testProperty").orElse(null)) + assertThat(SpringExtensions.getPropertyValue(null, "testProperty").orElse(null)) .isNull(); } @@ -252,7 +274,7 @@ public class SpringUtilsUnitTests { assertThat(mutablePropertyValues.size()).isEqualTo(0); - SpringUtils.setPropertyReference(this.mockBeanDefinition, "testProperty", "testBean"); + SpringExtensions.setPropertyReference(this.mockBeanDefinition, "testProperty", "testBean"); assertThat(mutablePropertyValues.size()).isEqualTo(1); assertThat(mutablePropertyValues.getPropertyValue("testProperty")).isNotNull(); @@ -271,7 +293,7 @@ public class SpringUtilsUnitTests { assertThat(mutablePropertyValues.size()).isEqualTo(0); - SpringUtils.setPropertyValue(this.mockBeanDefinition, "testProperty", "testValue"); + SpringExtensions.setPropertyValue(this.mockBeanDefinition, "testProperty", "testValue"); assertThat(mutablePropertyValues.size()).isEqualTo(1); assertThat(mutablePropertyValues.getPropertyValue("testProperty")).isNotNull(); @@ -282,42 +304,42 @@ public class SpringUtilsUnitTests { @Test public void defaultIfEmptyReturnsValue() { - assertThat(SpringUtils.defaultIfEmpty("test", "DEFAULT")).isEqualTo("test"); - assertThat(SpringUtils.defaultIfEmpty("abc123", "DEFAULT")).isEqualTo("abc123"); - assertThat(SpringUtils.defaultIfEmpty("123", "DEFAULT")).isEqualTo("123"); - assertThat(SpringUtils.defaultIfEmpty("X", "DEFAULT")).isEqualTo("X"); - assertThat(SpringUtils.defaultIfEmpty("$", "DEFAULT")).isEqualTo("$"); - assertThat(SpringUtils.defaultIfEmpty("_", "DEFAULT")).isEqualTo("_"); - assertThat(SpringUtils.defaultIfEmpty("nil", "DEFAULT")).isEqualTo("nil"); - assertThat(SpringUtils.defaultIfEmpty("null", "DEFAULT")).isEqualTo("null"); + assertThat(SpringExtensions.defaultIfEmpty("test", "DEFAULT")).isEqualTo("test"); + assertThat(SpringExtensions.defaultIfEmpty("abc123", "DEFAULT")).isEqualTo("abc123"); + assertThat(SpringExtensions.defaultIfEmpty("123", "DEFAULT")).isEqualTo("123"); + assertThat(SpringExtensions.defaultIfEmpty("X", "DEFAULT")).isEqualTo("X"); + assertThat(SpringExtensions.defaultIfEmpty("$", "DEFAULT")).isEqualTo("$"); + assertThat(SpringExtensions.defaultIfEmpty("_", "DEFAULT")).isEqualTo("_"); + assertThat(SpringExtensions.defaultIfEmpty("nil", "DEFAULT")).isEqualTo("nil"); + assertThat(SpringExtensions.defaultIfEmpty("null", "DEFAULT")).isEqualTo("null"); } @Test public void defaultIfEmptyReturnsDefault() { - assertThat(SpringUtils.defaultIfEmpty(" ", "DEFAULT")).isEqualTo("DEFAULT"); - assertThat(SpringUtils.defaultIfEmpty("", "DEFAULT")).isEqualTo("DEFAULT"); - assertThat(SpringUtils.defaultIfEmpty(null, "DEFAULT")).isEqualTo("DEFAULT"); + assertThat(SpringExtensions.defaultIfEmpty(" ", "DEFAULT")).isEqualTo("DEFAULT"); + assertThat(SpringExtensions.defaultIfEmpty("", "DEFAULT")).isEqualTo("DEFAULT"); + assertThat(SpringExtensions.defaultIfEmpty(null, "DEFAULT")).isEqualTo("DEFAULT"); } @Test public void defaultIfNullReturnsValue() { - assertThat(SpringUtils.defaultIfNull(true, false)).isTrue(); - assertThat(SpringUtils.defaultIfNull('x', 'A')).isEqualTo('x'); - assertThat(SpringUtils.defaultIfNull(1, 2)).isEqualTo(1); - assertThat(SpringUtils.defaultIfNull(Math.PI, 2.0d)).isEqualTo(Math.PI); - assertThat(SpringUtils.defaultIfNull("test", "DEFAULT")).isEqualTo("test"); + assertThat(SpringExtensions.defaultIfNull(true, false)).isTrue(); + assertThat(SpringExtensions.defaultIfNull('x', 'A')).isEqualTo('x'); + assertThat(SpringExtensions.defaultIfNull(1, 2)).isEqualTo(1); + assertThat(SpringExtensions.defaultIfNull(Math.PI, 2.0d)).isEqualTo(Math.PI); + assertThat(SpringExtensions.defaultIfNull("test", "DEFAULT")).isEqualTo("test"); } @Test public void defaultIfNullReturnsDefault() { - assertThat(SpringUtils.defaultIfNull(null, false)).isFalse(); - assertThat(SpringUtils.defaultIfNull(null, 'A')).isEqualTo('A'); - assertThat(SpringUtils.defaultIfNull(null, 2)).isEqualTo(2); - assertThat(SpringUtils.defaultIfNull(null, 2.0d)).isEqualTo(2.0d); - assertThat(SpringUtils.defaultIfNull(null, "DEFAULT")).isEqualTo("DEFAULT"); + assertThat(SpringExtensions.defaultIfNull(null, false)).isFalse(); + assertThat(SpringExtensions.defaultIfNull(null, 'A')).isEqualTo('A'); + assertThat(SpringExtensions.defaultIfNull(null, 2)).isEqualTo(2); + assertThat(SpringExtensions.defaultIfNull(null, 2.0d)).isEqualTo(2.0d); + assertThat(SpringExtensions.defaultIfNull(null, "DEFAULT")).isEqualTo("DEFAULT"); } @Test @@ -326,7 +348,7 @@ public class SpringUtilsUnitTests { Supplier mockSupplier = mock(Supplier.class); - assertThat(SpringUtils.defaultIfNull("value", mockSupplier)).isEqualTo("value"); + assertThat(SpringExtensions.defaultIfNull("value", mockSupplier)).isEqualTo("value"); verify(mockSupplier, never()).get(); } @@ -339,137 +361,137 @@ public class SpringUtilsUnitTests { when(mockSupplier.get()).thenReturn("supplier"); - assertThat(SpringUtils.defaultIfNull(null, mockSupplier)).isEqualTo("supplier"); + assertThat(SpringExtensions.defaultIfNull(null, mockSupplier)).isEqualTo("supplier"); verify(mockSupplier, times(1)).get(); } @Test public void dereferenceBean() { - assertThat(SpringUtils.dereferenceBean("example")).isEqualTo("&example"); + assertThat(SpringExtensions.dereferenceBean("example")).isEqualTo("&example"); } @Test public void equalsIgnoreNullIsTrue() { - assertThat(SpringUtils.equalsIgnoreNull(null, null)).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull(true, true)).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull('x', 'x')).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull(1, 1)).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull(Math.PI, Math.PI)).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull("null", "null")).isTrue(); - assertThat(SpringUtils.equalsIgnoreNull("test", "test")).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull(null, null)).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull(true, true)).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull('x', 'x')).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull(1, 1)).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull(Math.PI, Math.PI)).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull("null", "null")).isTrue(); + assertThat(SpringExtensions.equalsIgnoreNull("test", "test")).isTrue(); } @Test public void equalsIgnoreNullIsFalse() { - assertThat(SpringUtils.equalsIgnoreNull(null, "null")).isFalse(); - assertThat(SpringUtils.equalsIgnoreNull(true, false)).isFalse(); - assertThat(SpringUtils.equalsIgnoreNull('x', 'X')).isFalse(); - assertThat(SpringUtils.equalsIgnoreNull(1, 2)).isFalse(); - assertThat(SpringUtils.equalsIgnoreNull(3.14159d, Math.PI)).isFalse(); - assertThat(SpringUtils.equalsIgnoreNull("nil", "null")).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull(null, "null")).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull(true, false)).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull('x', 'X')).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull(1, 2)).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull(3.14159d, Math.PI)).isFalse(); + assertThat(SpringExtensions.equalsIgnoreNull("nil", "null")).isFalse(); } @Test public void nullOrEqualsWithEqualObjectsIsTrue() { - assertThat(SpringUtils.nullOrEquals("test", "test")).isTrue(); + assertThat(SpringExtensions.nullOrEquals("test", "test")).isTrue(); } @Test public void nullOrEqualsWithNonNullObjectAndNullIsFalse() { - assertThat(SpringUtils.nullOrEquals("test", null)).isFalse(); + assertThat(SpringExtensions.nullOrEquals("test", null)).isFalse(); } @Test public void nullOrEqualsWithNullIsTrue() { - assertThat(SpringUtils.nullOrEquals(null, "test")).isTrue(); + assertThat(SpringExtensions.nullOrEquals(null, "test")).isTrue(); } @Test public void nullOrEqualsWithUnequalObjectsIsFalse() { - assertThat(SpringUtils.nullOrEquals("test", "mock")).isFalse(); + assertThat(SpringExtensions.nullOrEquals("test", "mock")).isFalse(); } @Test public void nullSafeEqualsWithEqualObjectsIsTrue() { - assertThat(SpringUtils.nullSafeEquals("test", "test")).isTrue(); + assertThat(SpringExtensions.nullSafeEquals("test", "test")).isTrue(); } @Test public void nullSafeEqualsWithNullObjectsIsFalse() { - assertThat(SpringUtils.nullSafeEquals(null, "test")).isFalse(); - assertThat(SpringUtils.nullSafeEquals("test", null)).isFalse(); + assertThat(SpringExtensions.nullSafeEquals(null, "test")).isFalse(); + assertThat(SpringExtensions.nullSafeEquals("test", null)).isFalse(); } @Test public void nullSafeEqualsWithUnequalObjectsIsFalse() { - assertThat(SpringUtils.nullSafeEquals("test", "mock")).isFalse(); + assertThat(SpringExtensions.nullSafeEquals("test", "mock")).isFalse(); } @Test public void nullSafeNameWithType() { - assertThat(SpringUtils.nullSafeName(Boolean.class)).isEqualTo(Boolean.class.getName()); - assertThat(SpringUtils.nullSafeName(Integer.class)).isEqualTo(Integer.class.getName()); - assertThat(SpringUtils.nullSafeName(Double.class)).isEqualTo(Double.class.getName()); - assertThat(SpringUtils.nullSafeName(String.class)).isEqualTo(String.class.getName()); - assertThat(SpringUtils.nullSafeName(Time.class)).isEqualTo(Time.class.getName()); - assertThat(SpringUtils.nullSafeName(Person.class)).isEqualTo(Person.class.getName()); + assertThat(SpringExtensions.nullSafeName(Boolean.class)).isEqualTo(Boolean.class.getName()); + assertThat(SpringExtensions.nullSafeName(Integer.class)).isEqualTo(Integer.class.getName()); + assertThat(SpringExtensions.nullSafeName(Double.class)).isEqualTo(Double.class.getName()); + assertThat(SpringExtensions.nullSafeName(String.class)).isEqualTo(String.class.getName()); + assertThat(SpringExtensions.nullSafeName(Time.class)).isEqualTo(Time.class.getName()); + assertThat(SpringExtensions.nullSafeName(Person.class)).isEqualTo(Person.class.getName()); } @Test public void nullSafeNameWithNull() { - assertThat(SpringUtils.nullSafeName(null)).isNull(); + assertThat(SpringExtensions.nullSafeName(null)).isNull(); } @Test public void nullSafeSimpleNameWithType() { - assertThat(SpringUtils.nullSafeSimpleName(Boolean.class)).isEqualTo(Boolean.class.getSimpleName()); - assertThat(SpringUtils.nullSafeSimpleName(Integer.class)).isEqualTo(Integer.class.getSimpleName()); - assertThat(SpringUtils.nullSafeSimpleName(Double.class)).isEqualTo(Double.class.getSimpleName()); - assertThat(SpringUtils.nullSafeSimpleName(String.class)).isEqualTo(String.class.getSimpleName()); - assertThat(SpringUtils.nullSafeSimpleName(Time.class)).isEqualTo(Time.class.getSimpleName()); - assertThat(SpringUtils.nullSafeSimpleName(Person.class)).isEqualTo(Person.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(Boolean.class)).isEqualTo(Boolean.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(Integer.class)).isEqualTo(Integer.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(Double.class)).isEqualTo(Double.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(String.class)).isEqualTo(String.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(Time.class)).isEqualTo(Time.class.getSimpleName()); + assertThat(SpringExtensions.nullSafeSimpleName(Person.class)).isEqualTo(Person.class.getSimpleName()); } @Test public void nullSafeSimpleNameWithNull() { - assertThat(SpringUtils.nullSafeSimpleName(null)).isNull(); + assertThat(SpringExtensions.nullSafeSimpleName(null)).isNull(); } @Test public void nullSafeTypeWithObject() { - assertThat(SpringUtils.nullSafeType(new Object())).isEqualTo(Object.class); + assertThat(SpringExtensions.nullSafeType(new Object())).isEqualTo(Object.class); } @Test public void nullSafeTypeWithObjectAndDefaultType() { - assertThat(SpringUtils.nullSafeType("test", Person.class)).isEqualTo(String.class); + assertThat(SpringExtensions.nullSafeType("test", Person.class)).isEqualTo(String.class); } @Test public void nullSafeTypeWithNull() { - assertThat(SpringUtils.nullSafeType(null)).isNull(); + assertThat(SpringExtensions.nullSafeType(null)).isNull(); } @Test public void nullSafeTypeWithNullAndDefaultType() { - assertThat(SpringUtils.nullSafeType(null, Person.class)).isEqualTo(Person.class); + assertThat(SpringExtensions.nullSafeType(null, Person.class)).isEqualTo(Person.class); } @Test public void requireObjectReturnsObject() { - assertThat(SpringUtils.requireObject("TEST", "Test Object must not be null")).isEqualTo("TEST"); + assertThat(SpringExtensions.requireObject("TEST", "Test Object must not be null")).isEqualTo("TEST"); } @Test(expected = IllegalStateException.class) public void requireObjectWithNullObjectThrowsIllegalStateException() { try { - SpringUtils.requireObject(null, "Test Object must not be null"); + SpringExtensions.requireObject(null, "Test Object must not be null"); } catch (IllegalStateException expected) { @@ -485,13 +507,13 @@ public class SpringUtilsUnitTests { AtomicReference operationValue = new AtomicReference<>(); - assertThat(SpringUtils.safeDoOperation(() -> operationValue.set("TEST"))).isTrue(); + assertThat(SpringExtensions.safeDoOperation(() -> operationValue.set("TEST"))).isTrue(); assertThat(operationValue.get()).isEqualTo("TEST"); } @Test public void safeDoOperationWithThrowingOperation() { - assertThat(SpringUtils.safeDoOperation(() -> { throw new RuntimeException("TEST"); })).isFalse(); + assertThat(SpringExtensions.safeDoOperation(() -> { throw new RuntimeException("TEST"); })).isFalse(); } @Test @@ -501,7 +523,7 @@ public class SpringUtilsUnitTests { Runnable mockRunnable = mock(Runnable.class); - assertThat(SpringUtils.safeDoOperation(() -> operationValue.set("MOCK"), mockRunnable)).isTrue(); + assertThat(SpringExtensions.safeDoOperation(() -> operationValue.set("MOCK"), mockRunnable)).isTrue(); assertThat(operationValue.get()).isEqualTo("MOCK"); verifyNoInteractions(mockRunnable); @@ -512,7 +534,7 @@ public class SpringUtilsUnitTests { Runnable mockRunnable = mock(Runnable.class); - assertThat(SpringUtils.safeDoOperation(() -> { throw new RuntimeException("TEST"); }, mockRunnable)).isFalse(); + assertThat(SpringExtensions.safeDoOperation(() -> { throw new RuntimeException("TEST"); }, mockRunnable)).isFalse(); verify(mockRunnable, times(1)).run(); verifyNoMoreInteractions(mockRunnable); @@ -520,17 +542,17 @@ public class SpringUtilsUnitTests { @Test public void safeGetValueReturnsSuppliedValue() { - assertThat(SpringUtils.safeGetValue(() -> "test")).isEqualTo("test"); + assertThat(SpringExtensions.safeGetValue(() -> "test")).isEqualTo("test"); } @Test public void safeGetValueReturnsNull() { - assertThat(SpringUtils.safeGetValue(() -> { throw newRuntimeException("error"); })).isNull(); + assertThat(SpringExtensions.safeGetValue(() -> { throw newRuntimeException("error"); })).isNull(); } @Test public void safeGetValueReturnsDefaultValue() { - assertThat(SpringUtils.safeGetValue(() -> { throw newRuntimeException("error"); }, "test")) + assertThat(SpringExtensions.safeGetValue(() -> { throw newRuntimeException("error"); }, "test")) .isEqualTo("test"); } @@ -542,7 +564,7 @@ public class SpringUtilsUnitTests { Supplier defaultValueSupplier = () -> "test"; - assertThat(SpringUtils.safeGetValue(exceptionThrowingOperation, defaultValueSupplier)).isEqualTo("test"); + assertThat(SpringExtensions.safeGetValue(exceptionThrowingOperation, defaultValueSupplier)).isEqualTo("test"); } @Test @@ -560,7 +582,7 @@ public class SpringUtilsUnitTests { return "test"; }; - assertThat(SpringUtils.safeGetValue(exceptionThrowingOperation, exceptionHandler)).isEqualTo("test"); + assertThat(SpringExtensions.safeGetValue(exceptionThrowingOperation, exceptionHandler)).isEqualTo("test"); } @Test(expected = IllegalStateException.class) @@ -579,7 +601,7 @@ public class SpringUtilsUnitTests { }; try { - SpringUtils.safeGetValue(exceptionThrowingOperation, exceptionHandler); + SpringExtensions.safeGetValue(exceptionThrowingOperation, exceptionHandler); } catch (IllegalStateException expected) { @@ -597,7 +619,7 @@ public class SpringUtilsUnitTests { AtomicBoolean operationRan = new AtomicBoolean(false); - SpringUtils.safeRunOperation(() -> operationRan.set(true)); + SpringExtensions.safeRunOperation(() -> operationRan.set(true)); assertThat(operationRan.get()).isTrue(); } @@ -606,7 +628,7 @@ public class SpringUtilsUnitTests { public void safeRunOperationThrowsInvalidDataAccessApiUsageException() { try { - SpringUtils.safeRunOperation(() -> { throw new Exception("TEST"); }); + SpringExtensions.safeRunOperation(() -> { throw new Exception("TEST"); }); } catch (InvalidDataAccessApiUsageException expected) { @@ -623,7 +645,7 @@ public class SpringUtilsUnitTests { public void safeRunOperationThrowsCustomRuntimeException() { try { - SpringUtils.safeRunOperation(() -> { throw new Exception("TEST"); }, + SpringExtensions.safeRunOperation(() -> { throw new Exception("TEST"); }, cause -> new IllegalStateException("FOO", cause)); } catch (IllegalStateException expected) { @@ -636,4 +658,21 @@ public class SpringUtilsUnitTests { throw expected; } } + + @Order(value = 4) + static final class OrderAnnotatedBean { } + + static final class OrderedBean implements Ordered { + + private final int order; + + public OrderedBean(int order) { + this.order = order; + } + + @Override + public int getOrder() { + return this.order; + } + } }