From 0d2bd43c6506bbaaadb6d69e152e70cd9c007149 Mon Sep 17 00:00:00 2001 From: John Blum Date: Wed, 31 Aug 2022 09:28:28 -0700 Subject: [PATCH] Rename the SpringUtils class to SpringExtensions. --- .../data/gemfire/CacheFactoryBean.java | 4 +- .../data/gemfire/GemfireTemplate.java | 6 +- .../data/gemfire/PeerRegionFactoryBean.java | 6 +- .../gemfire/ResolvableRegionFactoryBean.java | 25 ++- .../client/ClientCacheFactoryBean.java | 6 +- .../client/ClientRegionFactoryBean.java | 4 +- .../DefaultableDelegatingPoolAdapter.java | 4 +- .../ApacheShiroSecurityConfiguration.java | 6 +- .../annotation/CompressionConfiguration.java | 4 +- .../EntityDefinedRegionsConfiguration.java | 26 +-- .../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 | 2 +- ...SpringUtils.java => SpringExtensions.java} | 7 +- .../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} | 202 +++++++++--------- 45 files changed, 216 insertions(+), 218 deletions(-) rename spring-data-geode/src/main/java/org/springframework/data/gemfire/util/{SpringUtils.java => SpringExtensions.java} (99%) rename spring-data-geode/src/test/java/org/springframework/data/gemfire/util/{SpringUtilsUnitTests.java => SpringExtensionsUnitTests.java} (63%) 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 fdf39525..494602ca 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; @@ -537,7 +537,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")) @@ -545,7 +545,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 b79a5452..8b4e9340 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 @@ -19,6 +19,7 @@ import static org.springframework.data.gemfire.util.RuntimeExceptionFactory.newR import java.io.InputStream; import java.util.Optional; +import java.util.function.Function; import org.apache.geode.cache.GemFireCache; import org.apache.geode.cache.Region; @@ -28,6 +29,8 @@ import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; import org.springframework.core.io.Resource; import org.springframework.data.gemfire.support.AbstractFactoryBeanSupport; +import org.springframework.data.gemfire.util.SpringExtensions; +import org.springframework.lang.NonNull; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -154,16 +157,20 @@ public abstract class ResolvableRegionFactoryBean extends AbstractFactoryB * @throws RuntimeException if the snapshot load fails. * @see org.apache.geode.cache.Region#loadSnapshot(InputStream) */ - protected Region loadSnapshot(Region region) { + protected @NonNull Region loadSnapshot(@NonNull Region region) { - Optional.ofNullable(this.snapshot).ifPresent(snapshot -> { - try { - region.loadSnapshot(snapshot.getInputStream()); - } - catch (Exception cause) { - throw newRuntimeException(cause, "Failed to load snapshot [%s]", snapshot); - } - }); + Resource snapshot = this.snapshot; + + if (snapshot != null) { + + SpringExtensions.VoidReturningThrowableOperation operation = + () -> region.loadSnapshot(snapshot.getInputStream()); + + Function exceptionHandler = + cause -> newRuntimeException(cause, "Failed to load snapshot [%s]", snapshot); + + 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 63a91c40..362ab5c7 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,7 @@ 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.SpringExtensions; import org.springframework.lang.NonNull; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -360,7 +360,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); @@ -768,7 +768,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 b46a7c1f..ede547a1 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; @@ -300,7 +300,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 32e27255..8d68449a 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; @@ -125,11 +125,11 @@ public class ApacheShiroSecurityConfiguration extends AbstractAnnotationConfigSu return configurableListableBeanFactory -> { if (configurableListableBeanFactory.containsBean("gemfireCache")) { - SpringUtils.addDependsOn(configurableListableBeanFactory.getBeanDefinition("gemfireCache"), + SpringExtensions.addDependsOn(configurableListableBeanFactory.getBeanDefinition("gemfireCache"), "shiroSecurityManager"); } else if (configurableListableBeanFactory.containsBean("locatorApplication")) { - SpringUtils.addDependsOn(configurableListableBeanFactory.getBeanDefinition("locatorApplication"), + SpringExtensions.addDependsOn(configurableListableBeanFactory.getBeanDefinition("locatorApplication"), "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 0769f8af..eee4cf68 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 @@ -69,7 +69,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.util.Assert; import org.springframework.util.ClassUtils; import org.springframework.util.ObjectUtils; @@ -286,7 +286,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]); } @@ -315,17 +315,12 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS */ protected GemfireMappingContext resolveMappingContext() { - return Optional.ofNullable(this.mappingContext).orElseGet(() -> { + if (this.mappingContext == null) { + this.mappingContext = SpringExtensions.safeGetValue(() -> + getBeanFactory().getBean(GemfireMappingContext.class), GemfireMappingContext::new); + } - try { - this.mappingContext = getBeanFactory().getBean(GemfireMappingContext.class); - } - catch (Throwable ignore) { - this.mappingContext = new GemfireMappingContext(); - } - - return this.mappingContext; - }); + return this.mappingContext; } /** @@ -356,8 +351,7 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS return Optional.ofNullable(this.regionConfigurers) .filter(regionConfigurers -> !regionConfigurers.isEmpty()) - .orElseGet(() -> - Collections.singletonList(LazyResolvingComposableRegionConfigurer.create(getBeanFactory()))); + .orElseGet(() -> Collections.singletonList(LazyResolvingComposableRegionConfigurer.create(getBeanFactory()))); } protected BeanDefinitionBuilder setRegionAttributes(BeanDefinitionBuilder regionFactoryBeanBuilder, @@ -599,7 +593,7 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS private ClientRegionShortcut clientRegionShortcut; - private GemfirePersistentEntity persistentEntity; + private final GemfirePersistentEntity persistentEntity; private RegionShortcut serverRegionShortcut; @@ -643,7 +637,7 @@ public class EntityDefinedRegionsConfiguration extends AbstractAnnotationConfigS protected Class getRegionKeyConstraint() { return Optional.ofNullable(resolvePersistentEntity().getIdProperty()) - .map(idProperty -> ((GemfirePersistentProperty) idProperty).getActualType()) + .map(GemfirePersistentProperty::getActualType) .orElse((Class) Object.class); } 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 dc39de71..79215326 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..5ae8733f 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 @@ -40,7 +40,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; 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 99% 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 71416373..eed7480f 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,7 +66,7 @@ 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} @@ -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()); @@ -451,11 +451,8 @@ public abstract class SpringUtils { } public interface OrderedBeanWrapper extends Ordered { - T getBean(); - String getBeanName(); - } @FunctionalInterface 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 cf8979fe..46cc40a5 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 f4a602b8..af4d6ff6 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 63% 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..c7be6a25 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 @@ -54,10 +54,10 @@ import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.beans.factory.config.RuntimeBeanReference; 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 +68,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(); + assertThat(SpringExtensions.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(); + 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 +108,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 +121,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 +135,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 +147,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 +160,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 +172,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(); @@ -188,7 +188,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 +204,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 +219,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 +231,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 +239,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 +252,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 +271,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 +282,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 +326,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 +339,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 +485,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 +501,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 +512,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 +520,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 +542,7 @@ public class SpringUtilsUnitTests { Supplier defaultValueSupplier = () -> "test"; - assertThat(SpringUtils.safeGetValue(exceptionThrowingOperation, defaultValueSupplier)).isEqualTo("test"); + assertThat(SpringExtensions.safeGetValue(exceptionThrowingOperation, defaultValueSupplier)).isEqualTo("test"); } @Test @@ -560,7 +560,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 +579,7 @@ public class SpringUtilsUnitTests { }; try { - SpringUtils.safeGetValue(exceptionThrowingOperation, exceptionHandler); + SpringExtensions.safeGetValue(exceptionThrowingOperation, exceptionHandler); } catch (IllegalStateException expected) { @@ -597,7 +597,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 +606,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 +623,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) {