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.
This commit is contained in:
John Blum
2022-04-04 12:40:12 -07:00
parent edc8d4c789
commit c7662af8eb
45 changed files with 291 additions and 238 deletions

View File

@@ -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()));
});

View File

@@ -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<Boolean> hasServerProxyMethod = () ->
SpringExtensions.ValueReturningThrowableOperation<Boolean> 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;

View File

@@ -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<K, V> extends ConfigurableRegionFact
*/
boolean isUserSpecifiedEvictionAttributes(RegionAttributes<?, ?> regionAttributes) {
SpringUtils.ValueReturningThrowableOperation<Boolean> hasEvictionAttributes = () ->
SpringExtensions.ValueReturningThrowableOperation<Boolean> hasEvictionAttributes = () ->
Optional.ofNullable(regionAttributes)
.map(Object::getClass)
.map(type -> ReflectionUtils.findMethod(type, "hasEvictionAttributes"))
@@ -543,7 +543,7 @@ public abstract class PeerRegionFactoryBean<K, V> extends ConfigurableRegionFact
.map(Boolean.TRUE::equals)
.orElse(false);
return SpringUtils.safeGetValue(hasEvictionAttributes, false);
return SpringExtensions.safeGetValue(hasEvictionAttributes, false);
}
/*

View File

@@ -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<K, V> extends AbstractFactoryB
if (snapshot != null) {
SpringUtils.VoidReturningThrowableOperation operation =
SpringExtensions.VoidReturningThrowableOperation operation =
() -> region.loadSnapshot(snapshot.getInputStream());
Function<Throwable, RuntimeException> exceptionHandler =
cause -> newRuntimeException(cause, "Failed to load snapshot [%s]", snapshot);
SpringUtils.safeRunOperation(operation, exceptionHandler);
SpringExtensions.safeRunOperation(operation, exceptionHandler);
}
return region;

View File

@@ -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) {

View File

@@ -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<K, V> extends ConfigurableRegionFactoryBean
return Optional.ofNullable(getPoolResolver().resolve(poolName))
.map(it -> true)
.orElseGet(() ->
SpringUtils.safeGetValue(() ->
SpringExtensions.safeGetValue(() ->
getBeanFactory().getBean(poolName, Pool.class) != null, false));
}

View File

@@ -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> T defaultIfNull(T defaultValue, Supplier<T> valueProvider) {
return prefersPool() ? SpringUtils.defaultIfNull(valueProvider.get(), defaultValue)
return prefersPool() ? SpringExtensions.defaultIfNull(valueProvider.get(), defaultValue)
: defaultValue != null ? defaultValue
: valueProvider.get();
}

View File

@@ -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");
}

View File

@@ -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)));
}

View File

@@ -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.<String[]>safeGetValue(() ->
return SpringExtensions.<String[]>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.<GemfireMappingContext>safeGetValue(() ->
this.mappingContext = SpringExtensions.<GemfireMappingContext>safeGetValue(() ->
getBeanFactory().getBean(GemfireMappingContext.class), GemfireMappingContext::new);
}

View File

@@ -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();

View File

@@ -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<Object> getPropertyValue(BeanDefinition beanDefinition, String propertyName) {
return SpringUtils.getPropertyValue(beanDefinition, propertyName);
return SpringExtensions.getPropertyValue(beanDefinition, propertyName);
}
protected boolean isBeanDefinitionOfType(BeanDefinition beanDefinition, Class<?> type) {

View File

@@ -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);
}
});
}

View File

@@ -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);
}
});
}

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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");

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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) {

View File

@@ -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() {

View File

@@ -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.<T>safeGetValue(getResultWithTimeoutThrowableOperation(resultCollector, timeout),
? SpringExtensions.<T>safeGetValue(getResultWithTimeoutThrowableOperation(resultCollector, timeout),
newFunctionAndInterruptedExceptionHandler(timeout))
: resultCollector.getResult();

View File

@@ -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);

View File

@@ -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<T extends Repository<S, ID>, S, ID>
* @see org.springframework.data.mapping.context.MappingContext
*/
protected MappingContext<? extends GemfirePersistentEntity<?>, 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

View File

@@ -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<T, ID> implements GemfireRepository<T, ID>
doRegionClear(region);
}
else {
SpringUtils.safeDoOperation(() -> region.clear(), () -> doRegionClear(region));
SpringExtensions.safeDoOperation(() -> region.clear(), () -> doRegionClear(region));
}
return null;

View File

@@ -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;

View File

@@ -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<LuceneInd
return Optional.ofNullable(getLuceneService())
.orElseGet(() -> 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())));
}

View File

@@ -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<ConnectionEndpo
Assert.isTrue(isValidPort(port), String.format("port number [%d] must be between 0 and 65535", port));
this.host = SpringUtils.defaultIfEmpty(host, DEFAULT_HOST);
this.host = SpringExtensions.defaultIfEmpty(host, DEFAULT_HOST);
this.port = port;
}

View File

@@ -18,7 +18,7 @@ package org.springframework.data.gemfire.support;
import static org.springframework.data.gemfire.support.GemfireBeanFactoryLocator.BeanFactoryReference.newBeanFactoryReference;
import static org.springframework.data.gemfire.util.CollectionUtils.nullSafeSet;
import static org.springframework.data.gemfire.util.SpringUtils.nullOrEquals;
import static org.springframework.data.gemfire.util.SpringExtensions.nullOrEquals;
import java.util.Collections;
import java.util.Set;

View File

@@ -36,7 +36,7 @@ import org.springframework.data.gemfire.CacheResolver;
import org.springframework.data.gemfire.client.support.ClientCacheFactoryCacheResolver;
import org.springframework.data.gemfire.util.CacheUtils;
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;
@@ -272,7 +272,7 @@ public class SmartCacheResolverFactoryBean extends AbstractFactoryBeanSupport<Ca
CompositionStrategy.class.getSimpleName(), CompositionStrategy.USER_DEFINED.name()));
List<CacheResolver> orderedCacheResolvers =
SpringUtils.getOrderedStreamOfBeansByType(beanFactory, CacheResolver.class)
SpringExtensions.getOrderedStreamOfBeansByType(beanFactory, CacheResolver.class)
.collect(Collectors.toList());
setConfiguredCacheResolvers(orderedCacheResolvers);

View File

@@ -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 extends DistributedSystem> T getDistributedSystem() {
public static @Nullable <T extends DistributedSystem> T getDistributedSystem() {
return (T) InternalDistributedSystem.getAnyInstance();
}
@SuppressWarnings("unchecked")
public static <T extends DistributedSystem> T getDistributedSystem(GemFireCache gemfireCache) {
return (T) Optional.ofNullable(gemfireCache).map(GemFireCache::getDistributedSystem).orElse(null);
public static @Nullable <T extends DistributedSystem> T getDistributedSystem(GemFireCache gemfireCache) {
return (T) Optional.ofNullable(gemfireCache)
.map(GemFireCache::getDistributedSystem)
.orElse(null);
}
@SuppressWarnings("unchecked")
public static <T extends Locator> T getLocator() {
public static @Nullable <T extends Locator> T getLocator() {
return (T) InternalLocator.getLocator();
}
}

View File

@@ -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<String> dependsOnList = new ArrayList<>();
@@ -173,7 +173,7 @@ public abstract class SpringUtils {
// Handles @Order annotated beans and beans implementing the Ordered interface
List<OrderedBeanWrapper<T>> 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<Object> getPropertyValue(BeanDefinition beanDefinition, String propertyName) {
public static Optional<Object> 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);

View File

@@ -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());
}
}

View File

@@ -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<NamedBean> orderedBeans = CollectionUtils
.nullSafeList(SpringUtils.getBeansOfTypeOrdered(this.applicationContext.getBeanFactory(), NamedBean.class));
.nullSafeList(SpringExtensions.getBeansOfTypeOrdered(this.applicationContext.getBeanFactory(), NamedBean.class));
Stream<NamedBean> orderedBeanStream = StreamUtils.nullSafeStream(orderedBeans.stream());

View File

@@ -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));
}
}
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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();

View File

@@ -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<Person>, 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()))

View File

@@ -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<String> 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<Object> 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.<Object>safeGetValue(() -> { throw newRuntimeException("error"); })).isNull();
assertThat(SpringExtensions.<Object>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<String> 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;
}
}
}