diff --git a/spring-aop/src/main/java/org/springframework/aop/aspectj/TypePatternClassFilter.java b/spring-aop/src/main/java/org/springframework/aop/aspectj/TypePatternClassFilter.java index 9d2bc141c6f..d075741490f 100644 --- a/spring-aop/src/main/java/org/springframework/aop/aspectj/TypePatternClassFilter.java +++ b/spring-aop/src/main/java/org/springframework/aop/aspectj/TypePatternClassFilter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import org.springframework.util.StringUtils; * Spring AOP {@link ClassFilter} implementation using AspectJ type matching. * * @author Rod Johnson + * @author Juergen Hoeller * @since 2.0 */ public class TypePatternClassFilter implements ClassFilter { @@ -76,17 +77,21 @@ public class TypePatternClassFilter implements ClassFilter { * or is recognized as invalid */ public void setTypePattern(String typePattern) { - Assert.notNull(typePattern); + Assert.notNull(typePattern, "Type pattern must not be null"); this.typePattern = typePattern; this.aspectJTypePatternMatcher = PointcutParser.getPointcutParserSupportingAllPrimitivesAndUsingContextClassloaderForResolution(). parseTypePattern(replaceBooleanOperators(typePattern)); } + /** + * Return the AspectJ type pattern to match. + */ public String getTypePattern() { - return typePattern; + return this.typePattern; } + /** * Should the pointcut apply to the given interface or target class? * @param clazz candidate target class @@ -95,9 +100,7 @@ public class TypePatternClassFilter implements ClassFilter { */ @Override public boolean matches(Class> clazz) { - if (this.aspectJTypePatternMatcher == null) { - throw new IllegalStateException("No 'typePattern' has been set via ctor/setter."); - } + Assert.state(this.aspectJTypePatternMatcher != null, "No type pattern has been set"); return this.aspectJTypePatternMatcher.matches(clazz); } @@ -108,9 +111,8 @@ public class TypePatternClassFilter implements ClassFilter { *
This method converts back to {@code &&} for the AspectJ pointcut parser.
*/
private String replaceBooleanOperators(String pcExpr) {
- pcExpr = StringUtils.replace(pcExpr," and "," && ");
- pcExpr = StringUtils.replace(pcExpr, " or ", " || ");
- pcExpr = StringUtils.replace(pcExpr, " not ", " ! ");
- return pcExpr;
+ String result = StringUtils.replace(pcExpr," and "," && ");
+ result = StringUtils.replace(result, " or ", " || ");
+ return StringUtils.replace(result, " not ", " ! ");
}
}
diff --git a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java
index 92fc174bea6..d7a8d1168b7 100644
--- a/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java
+++ b/spring-aop/src/main/java/org/springframework/aop/framework/autoproxy/AbstractAdvisorAutoProxyCreator.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2015 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -54,7 +54,8 @@ public abstract class AbstractAdvisorAutoProxyCreator extends AbstractAutoProxyC
public void setBeanFactory(BeanFactory beanFactory) {
super.setBeanFactory(beanFactory);
if (!(beanFactory instanceof ConfigurableListableBeanFactory)) {
- throw new IllegalStateException("Cannot use AdvisorAutoProxyCreator without a ConfigurableListableBeanFactory");
+ throw new IllegalArgumentException(
+ "AdvisorAutoProxyCreator requires a ConfigurableListableBeanFactory: " + beanFactory);
}
initBeanFactory((ConfigurableListableBeanFactory) beanFactory);
}
diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java
index daf57d11aaf..de10ab87264 100644
--- a/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java
+++ b/spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -219,7 +219,7 @@ public class AutowiredAnnotationBeanPostProcessor extends InstantiationAwareBean
public void setBeanFactory(BeanFactory beanFactory) {
if (!(beanFactory instanceof ConfigurableListableBeanFactory)) {
throw new IllegalArgumentException(
- "AutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactory");
+ "AutowiredAnnotationBeanPostProcessor requires a ConfigurableListableBeanFactory: " + beanFactory);
}
this.beanFactory = (ConfigurableListableBeanFactory) beanFactory;
}
diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java b/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java
index aab69b17506..02141ce0985 100644
--- a/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java
+++ b/spring-beans/src/main/java/org/springframework/beans/factory/config/CustomScopeConfigurer.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -102,12 +102,12 @@ public class CustomScopeConfigurer implements BeanFactoryPostProcessor, BeanClas
}
else if (value instanceof Class) {
Class> scopeClass = (Class>) value;
- Assert.isAssignable(Scope.class, scopeClass);
+ Assert.isAssignable(Scope.class, scopeClass, "Invalid scope class");
beanFactory.registerScope(scopeKey, (Scope) BeanUtils.instantiateClass(scopeClass));
}
else if (value instanceof String) {
Class> scopeClass = ClassUtils.resolveClassName((String) value, this.beanClassLoader);
- Assert.isAssignable(Scope.class, scopeClass);
+ Assert.isAssignable(Scope.class, scopeClass, "Invalid scope class");
beanFactory.registerScope(scopeKey, (Scope) BeanUtils.instantiateClass(scopeClass));
}
else {
diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
index 94839bdb3f7..3e320f8515a 100644
--- a/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
+++ b/spring-beans/src/main/java/org/springframework/beans/factory/support/AbstractBeanFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -762,7 +762,7 @@ public abstract class AbstractBeanFactory extends FactoryBeanRegistrySupport imp
@Override
public void registerCustomEditor(Class> requiredType, Class extends PropertyEditor> propertyEditorClass) {
Assert.notNull(requiredType, "Required type must not be null");
- Assert.isAssignable(PropertyEditor.class, propertyEditorClass);
+ Assert.notNull(propertyEditorClass, "PropertyEditor class must not be null");
this.customEditors.put(requiredType, propertyEditorClass);
}
diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultCacheInvocationContext.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultCacheInvocationContext.java
index 64d4d2c2ee2..a54429203ba 100644
--- a/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultCacheInvocationContext.java
+++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/interceptor/DefaultCacheInvocationContext.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -44,14 +44,15 @@ class DefaultCacheInvocationContext
private final CacheInvocationParameter[] allParameters;
- public DefaultCacheInvocationContext(JCacheOperation operation,
- Object target, Object[] args) {
+
+ public DefaultCacheInvocationContext(JCacheOperation operation, Object target, Object[] args) {
this.operation = operation;
this.target = target;
this.args = args;
this.allParameters = operation.getAllParameters(args);
}
+
@Override
public JCacheOperation getOperation() {
return this.operation;
@@ -94,17 +95,19 @@ class DefaultCacheInvocationContext
@Override
public Requires JOpt version 4.3 or higher. Tested against JOpt up until 4.6.
+ * Requires JOpt Simple version 4.3 or higher. Tested against JOpt up until 5.0.
*
* @author Chris Beams
* @author Juergen Hoeller
@@ -98,7 +98,7 @@ public class JOptCommandLinePropertySource extends CommandLinePropertySource Note: Does not complain if the array is empty!
@@ -366,6 +292,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the object array contains a {@code null} element
+ * @since 5.0
*/
public static void noNullElements(Object[] array, Supplier Note: Does not complain if the array is empty!
- * Call {@link #isTrue} if you wish to throw an {@code IllegalArgumentException}
- * on an assertion failure.
- * Typically implemented by PreparedStatementCreators and
- * PreparedStatementSetters that support DisposableSqlTypeValue
- * objects (e.g. SqlLobValue) as parameters.
+ * Typically implemented by {@code PreparedStatementCreators} and
+ * {@code PreparedStatementSetters} that support {@link DisposableSqlTypeValue}
+ * objects (e.g. {@code SqlLobValue}) as parameters.
*
* @author Thomas Risberg
* @author Juergen Hoeller
@@ -38,9 +38,9 @@ public interface ParameterDisposer {
* Close the resources allocated by parameters that the implementing
* object holds, for example in case of a DisposableSqlTypeValue
* (like a SqlLobValue).
- * @see DisposableSqlTypeValue#cleanup
- * @see org.springframework.jdbc.core.support.SqlLobValue#cleanup
+ * @see DisposableSqlTypeValue#cleanup()
+ * @see org.springframework.jdbc.core.support.SqlLobValue#cleanup()
*/
- public void cleanupParameters();
+ void cleanupParameters();
}
diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java
index bc2d01d5bcb..99ff814643d 100644
--- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java
+++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandlerComposite.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -94,7 +94,9 @@ public class HandlerMethodReturnValueHandlerComposite implements AsyncHandlerMet
throws Exception {
HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType);
- Assert.notNull(handler, "No handler for return value type [" + returnType.getParameterType().getName() + "]");
+ if (handler == null) {
+ throw new IllegalStateException("No handler for return value type: " + returnType.getParameterType());
+ }
if (logger.isTraceEnabled()) {
logger.trace("Processing return value with " + handler);
}
@@ -104,14 +106,15 @@ public class HandlerMethodReturnValueHandlerComposite implements AsyncHandlerMet
@Override
public boolean isAsyncReturnValue(Object returnValue, MethodParameter returnType) {
HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType);
- return (handler != null && handler instanceof AsyncHandlerMethodReturnValueHandler &&
+ return (handler instanceof AsyncHandlerMethodReturnValueHandler &&
((AsyncHandlerMethodReturnValueHandler) handler).isAsyncReturnValue(returnValue, returnType));
}
@Override
public ListenableFuture> toListenableFuture(Object returnValue, MethodParameter returnType) {
HandlerMethodReturnValueHandler handler = getReturnValueHandler(returnType);
- Assert.isTrue(handler != null && handler instanceof AsyncHandlerMethodReturnValueHandler);
+ Assert.state(handler instanceof AsyncHandlerMethodReturnValueHandler,
+ "AsyncHandlerMethodReturnValueHandler required");
return ((AsyncHandlerMethodReturnValueHandler) handler).toListenableFuture(returnValue, returnType);
}
diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessagingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessagingTemplate.java
index 493f1224b21..0088adb7d84 100644
--- a/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessagingTemplate.java
+++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/SimpMessagingTemplate.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2014 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -58,10 +58,10 @@ public class SimpMessagingTemplate extends AbstractMessageSendingTemplate By default set to 15,000 (15 seconds).
*/
public void setReceiptTimeLimit(long receiptTimeLimit) {
- Assert.isTrue(receiptTimeLimit > 0);
+ Assert.isTrue(receiptTimeLimit > 0, "Receipt time limit must be larger than zero");
this.receiptTimeLimit = receiptTimeLimit;
}
diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompClientSupport.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompClientSupport.java
index 708f277b9cc..ea51cb93393 100644
--- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompClientSupport.java
+++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompClientSupport.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -126,7 +126,7 @@ public abstract class StompClientSupport {
* By default set to 15,000 (15 seconds).
*/
public void setReceiptTimeLimit(long receiptTimeLimit) {
- Assert.isTrue(receiptTimeLimit > 0);
+ Assert.isTrue(receiptTimeLimit > 0, "Receipt time limit must be larger than zero");
this.receiptTimeLimit = receiptTimeLimit;
}
diff --git a/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/AbstractMonoToListenableFutureAdapter.java b/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/AbstractMonoToListenableFutureAdapter.java
index 8b6cf5bcf74..cfd259b5d3a 100644
--- a/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/AbstractMonoToListenableFutureAdapter.java
+++ b/spring-messaging/src/main/java/org/springframework/messaging/tcp/reactor/AbstractMonoToListenableFutureAdapter.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -48,7 +48,7 @@ abstract class AbstractMonoToListenableFutureAdapter On CORS pre-flight requests this method should return a match not for
* the pre-flight request but for the expected actual request based on the URL
* path, the HTTP methods from the "Access-Control-Request-Method" header, and
* the headers from the "Access-Control-Request-Headers" header thus allowing
* the CORS configuration to be obtained via {@link #getCorsConfigurations},
- *
* @param exchange current exchange
* @return {@code Mono} for the matching handler, if any
*/
@@ -185,18 +185,15 @@ public abstract class AbstractHandlerMapping extends ApplicationObjectSupport
/**
* Retrieve the CORS configuration for the given handler.
- * @param handler the handler to check (never {@code null}).
+ * @param handler the handler to check (never {@code null})
* @param exchange the current exchange
- * @return the CORS configuration for the handler or {@code null}.
+ * @return the CORS configuration for the handler, or {@code null} if none
*/
protected CorsConfiguration getCorsConfiguration(Object handler, ServerWebExchange exchange) {
- if (handler != null && handler instanceof CorsConfigurationSource) {
+ if (handler instanceof CorsConfigurationSource) {
return ((CorsConfigurationSource) handler).getCorsConfiguration(exchange);
}
return null;
}
-
- private static final WebHandler REQUEST_HANDLED_HANDLER = exchange -> Mono.empty();
-
-}
\ No newline at end of file
+}
diff --git a/spring-web-reactive/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java b/spring-web-reactive/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java
index a937fb8a7b1..57122fd8aae 100644
--- a/spring-web-reactive/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java
+++ b/spring-web-reactive/src/main/java/org/springframework/web/reactive/handler/AbstractUrlHandlerMapping.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -44,6 +44,7 @@ import org.springframework.web.server.ServerWebExchange;
* path pattern that matches the current request path.
*
* @author Rossen Stoyanchev
+ * @author Juergen Hoeller
* @since 5.0
*/
public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping {
@@ -137,6 +138,7 @@ public abstract class AbstractUrlHandlerMapping extends AbstractHandlerMapping {
if (handler != null) {
return handleMatch(handler, urlPath, urlPath, exchange);
}
+
// Pattern match?
List For each registered handler method, a unique mapping is maintained with
* subclasses defining the details of the mapping type {@code Typical usage
+ *
* Configure and execute an {@code OptionParser} against the {@code String[]} of arguments
* supplied to the {@code main} method, and create a {@link JOptCommandLinePropertySource}
* using the resulting {@code OptionSet} object:
+ *
*
* public static void main(String[] args) {
* OptionParser parser = new OptionParser();
@@ -44,7 +44,7 @@ import org.springframework.util.Assert;
*
* See {@link CommandLinePropertySource} for complete general usage examples.
*
- * Assert.isTrue(i > 0);
- * @param expression a boolean expression
- * @throws IllegalArgumentException if {@code expression} is {@code false}
- */
- public static void isTrue(boolean expression) {
- isTrue(expression, "[Assertion failed] - this expression must be true");
- }
-
/**
* Assert that an object is {@code null}.
*
@@ -107,6 +97,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the object is not {@code null}
+ * @since 5.0
*/
public static void isNull(Object object, SupplierAssert.isNull(value);
- * @param object the object to check
- * @throws IllegalArgumentException if the object is not {@code null}
- */
- public static void isNull(Object object) {
- isNull(object, "[Assertion failed] - the object argument must be null");
- }
-
/**
* Assert that an object is not {@code null}.
*
@@ -146,6 +127,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the object is {@code null}
+ * @since 5.0
*/
public static void notNull(Object object, SupplierAssert.notNull(clazz);
- * @param object the object to check
- * @throws IllegalArgumentException if the object is {@code null}
- */
- public static void notNull(Object object) {
- notNull(object, "[Assertion failed] - this argument is required; it must not be null");
- }
-
/**
* Assert that the given String is not empty; that is,
* it must not be {@code null} and not the empty String.
@@ -187,6 +159,7 @@ public abstract class Assert {
* assertion fails
* @see StringUtils#hasLength
* @throws IllegalArgumentException if the text is empty
+ * @since 5.0
*/
public static void hasLength(String text, SupplierAssert.hasLength(name);
- * @param text the String to check
- * @see StringUtils#hasLength
- * @throws IllegalArgumentException if the text is empty
- */
- public static void hasLength(String text) {
- hasLength(text,
- "[Assertion failed] - this String argument must have length; it must not be null or empty");
- }
-
/**
* Assert that the given String contains valid text content; that is, it must not
* be {@code null} and must contain at least one non-whitespace character.
@@ -233,6 +193,7 @@ public abstract class Assert {
* assertion fails
* @see StringUtils#hasText
* @throws IllegalArgumentException if the text does not contain valid text content
+ * @since 5.0
*/
public static void hasText(String text, SupplierAssert.hasText(name, "'name' must not be empty");
- * @param text the String to check
- * @see StringUtils#hasText
- * @throws IllegalArgumentException if the text does not contain valid text content
- */
- public static void hasText(String text) {
- hasText(text,
- "[Assertion failed] - this String argument must have text; it must not be null, empty, or blank");
- }
-
/**
* Assert that the given text does not contain the given substring.
*
@@ -278,6 +226,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the text contains the substring
+ * @since 5.0
*/
public static void doesNotContain(String textToSearch, String substring, SupplierAssert.doesNotContain(name, "rod");
- * @param textToSearch the text to search
- * @param substring the substring to find within the text
- * @throws IllegalArgumentException if the text contains the substring
- */
- public static void doesNotContain(String textToSearch, String substring) {
- doesNotContain(textToSearch, substring,
- () -> "[Assertion failed] - this String argument must not contain the substring [" + substring + "]");
- }
-
/**
* Assert that an array contains elements; that is, it must not be
* {@code null} and must contain at least one element.
@@ -323,6 +260,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the object array is {@code null} or contains no elements
+ * @since 5.0
*/
public static void notEmpty(Object[] array, SupplierAssert.notEmpty(array);
- * @param array the array to check
- * @throws IllegalArgumentException if the object array is {@code null} or
- * contains no elements
- */
- public static void notEmpty(Object[] array) {
- notEmpty(array, "[Assertion failed] - this array must not be empty: it must contain at least 1 element");
- }
-
/**
* Assert that an array contains no {@code null} elements.
* Assert.noNullElements(array);
- * @param array the array to check
- * @throws IllegalArgumentException if the object array contains a {@code null} element
- */
- public static void noNullElements(Object[] array) {
- noNullElements(array, "[Assertion failed] - this array must not contain any null elements");
- }
-
/**
* Assert that a collection contains elements; that is, it must not be
* {@code null} and must contain at least one element.
@@ -417,6 +333,7 @@ public abstract class Assert {
* assertion fails
* @throws IllegalArgumentException if the collection is {@code null} or
* contains no elements
+ * @since 5.0
*/
public static void notEmpty(Collection> collection, SupplierAssert.notEmpty(collection, "Collection must contain elements");
- * @param collection the collection to check
- * @throws IllegalArgumentException if the collection is {@code null} or
- * contains no elements
- */
- public static void notEmpty(Collection> collection) {
- notEmpty(collection,
- "[Assertion failed] - this collection must not be empty: it must contain at least 1 element");
- }
-
/**
* Assert that a Map contains entries; that is, it must not be {@code null}
* and must contain at least one entry.
@@ -462,6 +366,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalArgumentException if the map is {@code null} or contains no entries
+ * @since 5.0
*/
public static void notEmpty(Map, ?> map, SupplierAssert.notEmpty(map);
- * @param map the map to check
- * @throws IllegalArgumentException if the map is {@code null} or contains no entries
- */
- public static void notEmpty(Map, ?> map) {
- notEmpty(map, "[Assertion failed] - this map must not be empty; it must contain at least one entry");
- }
-
- /**
- * Assert that the provided object is an instance of the provided class.
- * Assert.instanceOf(Foo.class, foo);
- * @param type the type to check against
- * @param obj the object to check
- * @throws IllegalArgumentException if the object is not an instance of type
- * @see Class#isInstance
- */
- public static void isInstanceOf(Class> type, Object obj) {
- isInstanceOf(type, obj, "");
- }
-
/**
* Assert that the provided object is an instance of the provided class.
*
@@ -519,11 +401,12 @@ public abstract class Assert {
* in ":" or "." so that the generated message looks OK when appended to it.
* @throws IllegalArgumentException if the object is not an instance of type
* @see Class#isInstance
+ * @since 5.0
*/
public static void isInstanceOf(Class> type, Object obj, SupplierAssert.isAssignable(Number.class, myClass);
- * @param superType the super type to check
- * @param subType the sub type to check
- * @throws IllegalArgumentException if the classes are not assignable
+ * Assert that the provided object is an instance of the provided class.
+ * Assert.instanceOf(Foo.class, foo);
+ * @param type the type to check against
+ * @param obj the object to check
+ * @throws IllegalArgumentException if the object is not an instance of type
+ * @see Class#isInstance
*/
- public static void isAssignable(Class> superType, Class> subType) {
- isAssignable(superType, subType, "");
+ public static void isInstanceOf(Class> type, Object obj) {
+ isInstanceOf(type, obj, "");
+ }
+
+ private static void instanceCheckFailed(Class> type, Object obj, String message) {
+ String className = (obj != null ? obj.getClass().getName() : "null");
+ throw new IllegalArgumentException(StringUtils.hasLength(message) ? message + ": " + className :
+ "Object of class [" + className + "] must be an instance of " + type);
}
/**
@@ -575,11 +458,12 @@ public abstract class Assert {
* by this method in order to provide further context. It should normally end
* in ":" or "." so that the generated message looks OK when appended to it.
* @throws IllegalArgumentException if the classes are not assignable
+ * @since 5.0
*/
public static void isAssignable(Class> superType, Class> subType, SupplierAssert.isAssignable(Number.class, myClass);
+ * @param superType the super type to check
+ * @param subType the sub type to check
+ * @throws IllegalArgumentException if the classes are not assignable
+ */
+ public static void isAssignable(Class> superType, Class> subType) {
+ isAssignable(superType, subType, "");
+ }
+
+ private static void assignableCheckFailed(Class> superType, Class> subType, String message) {
+ throw new IllegalArgumentException(StringUtils.hasLength(message) ? message + ": " + subType :
subType + " is not assignable to " + superType);
}
@@ -618,6 +513,7 @@ public abstract class Assert {
* @param messageSupplier a supplier for the exception message to use if the
* assertion fails
* @throws IllegalStateException if {@code expression} is {@code false}
+ * @since 5.0
*/
public static void state(boolean expression, SupplierAssert.state(id == null);
- * @param expression a boolean expression
- * @throws IllegalStateException if {@code expression} is {@code false}
- */
- public static void state(boolean expression) {
- state(expression, "[Assertion failed] - this state invariant must be true");
- }
-
private static String nullSafeGet(Supplier implements Listenable
protected AbstractMonoToListenableFutureAdapter(Mono mono) {
- Assert.notNull(mono, "'mono' must not be null");
+ Assert.notNull(mono, "Mono must not be null");
this.monoProcessor = mono
.doOnSuccess(result -> {
T adapted;
@@ -73,10 +73,8 @@ abstract class AbstractMonoToListenableFutureAdapter implements Listenable
}
@Override
- public T get(long timeout, TimeUnit unit)
- throws InterruptedException, ExecutionException, TimeoutException {
-
- Assert.notNull(unit);
+ public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException {
+ Assert.notNull(unit, "TimeUnit must not be null");
Duration duration = Duration.ofMillis(TimeUnit.MILLISECONDS.convert(timeout, unit));
S result = this.monoProcessor.block(duration);
return adapt(result);
@@ -112,6 +110,7 @@ abstract class AbstractMonoToListenableFutureAdapter implements Listenable
this.registry.addFailureCallback(failureCallback);
}
+
protected abstract T adapt(S result);
}
diff --git a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/ReactorNettyTcpStompClientTests.java b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/ReactorNettyTcpStompClientTests.java
index bdfe762af13..df9ea9a7b5c 100644
--- a/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/ReactorNettyTcpStompClientTests.java
+++ b/spring-messaging/src/test/java/org/springframework/messaging/simp/stomp/ReactorNettyTcpStompClientTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -159,7 +159,7 @@ public class ReactorNettyTcpStompClientTests {
private final List
- *
*
* @author Rossen Stoyanchev
@@ -106,6 +106,7 @@ public class FrameworkExtensionTests {
}
}
+
/**
* Test {@code MockMvcConfigurer}.
*/
@@ -126,6 +127,7 @@ public class FrameworkExtensionTests {
}
}
+
@Controller
@RequestMapping("/")
private static class SampleController {
@@ -133,16 +135,16 @@ public class FrameworkExtensionTests {
@RequestMapping(headers = "Foo")
@ResponseBody
public String handleFoo(Principal principal) {
- Assert.isTrue(principal != null);
+ Assert.notNull(principal, "Principal must not be null");
return "Foo";
}
@RequestMapping(headers = "Bar")
@ResponseBody
public String handleBar(Principal principal) {
- Assert.isTrue(principal != null);
+ Assert.notNull(principal, "Principal must not be null");
return "Bar";
}
}
-}
\ No newline at end of file
+}
diff --git a/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java b/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java
index 7e7ff1eda5d..d4b7d3084e5 100644
--- a/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java
+++ b/spring-tx/src/main/java/org/springframework/jca/support/ResourceAdapterFactoryBean.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2002-2016 the original author or authors.
+ * Copyright 2002-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,7 +26,6 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
-import org.springframework.util.Assert;
/**
* {@link org.springframework.beans.factory.FactoryBean} that bootstraps
@@ -66,9 +65,8 @@ public class ResourceAdapterFactoryBean implements FactoryBean