mirror of
https://github.com/spring-projects/spring-framework.git
synced 2026-09-25 08:19:01 +00:00
Replace isAssignableFrom() with isInstance() where feasible
Closes gh-36899 Signed-off-by: Yanming Zhou <zhouyanming@gmail.com>
This commit is contained in:
@@ -32,7 +32,7 @@ example writes notifications to the console:
|
||||
}
|
||||
|
||||
public boolean isNotificationEnabled(Notification notification) {
|
||||
return AttributeChangeNotification.class.isAssignableFrom(notification.getClass());
|
||||
return (notification instanceof AttributeChangeNotification);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ public class AspectJAfterThrowingAdvice extends AbstractAspectJAdvice
|
||||
* is only invoked if the thrown exception is a subtype of the given throwing type.
|
||||
*/
|
||||
private boolean shouldInvokeOnThrowing(Throwable ex) {
|
||||
return getDiscoveredThrowingType().isAssignableFrom(ex.getClass());
|
||||
return getDiscoveredThrowingType().isInstance(ex);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -159,7 +159,7 @@ public class SimpleInstantiationStrategy implements InstantiationStrategy {
|
||||
return result;
|
||||
}
|
||||
catch (IllegalArgumentException ex) {
|
||||
if (factoryBean != null && !factoryMethod.getDeclaringClass().isAssignableFrom(factoryBean.getClass())) {
|
||||
if (factoryBean != null && !factoryMethod.getDeclaringClass().isInstance(factoryBean)) {
|
||||
throw new BeanInstantiationException(factoryMethod,
|
||||
"Illegal factory instance for factory method '" + factoryMethod.getName() + "'; " +
|
||||
"instance: " + factoryBean.getClass().getName(), ex);
|
||||
|
||||
+1
-1
@@ -276,7 +276,7 @@ public class ComponentScanBeanDefinitionParser implements BeanDefinitionParser {
|
||||
strategyType.getName() + "]: a zero-argument constructor is required", ex);
|
||||
}
|
||||
|
||||
if (!strategyType.isAssignableFrom(result.getClass())) {
|
||||
if (!strategyType.isInstance(result)) {
|
||||
throw new IllegalArgumentException("Provided class name must be an implementation of " + strategyType);
|
||||
}
|
||||
return result;
|
||||
|
||||
@@ -768,7 +768,7 @@ public abstract class ReflectionUtils {
|
||||
public static void shallowCopyFieldState(final Object src, final Object dest) {
|
||||
Assert.notNull(src, "Source for field copy cannot be null");
|
||||
Assert.notNull(dest, "Destination for field copy cannot be null");
|
||||
if (!src.getClass().isAssignableFrom(dest.getClass())) {
|
||||
if (!src.getClass().isInstance(dest)) {
|
||||
throw new IllegalArgumentException("Destination class [" + dest.getClass().getName() +
|
||||
"] must be same or subclass as source class [" + src.getClass().getName() + "]");
|
||||
}
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ public class OperatorInstanceof extends Operator {
|
||||
result = BooleanTypedValue.FALSE; // null is not an instanceof anything
|
||||
}
|
||||
else {
|
||||
result = BooleanTypedValue.forValue(rightClass.isAssignableFrom(leftValue.getClass()));
|
||||
result = BooleanTypedValue.forValue(rightClass.isInstance(leftValue));
|
||||
}
|
||||
this.type = rightClass;
|
||||
if (rightOperand instanceof TypeReference) {
|
||||
|
||||
@@ -78,7 +78,7 @@ public class GeneratedKeyHolder implements KeyHolder {
|
||||
Iterator<Object> keyIter = this.keyList.get(0).values().iterator();
|
||||
if (keyIter.hasNext()) {
|
||||
Object key = keyIter.next();
|
||||
if (key == null || !(keyType.isAssignableFrom(key.getClass()))) {
|
||||
if (key == null || !(keyType.isInstance(key))) {
|
||||
throw new DataRetrievalFailureException(
|
||||
"The generated key type is not supported. " +
|
||||
"Unable to cast [" + (key != null ? key.getClass().getName() : null) +
|
||||
|
||||
+2
-2
@@ -45,11 +45,11 @@ class CustomSQLExceptionTranslatorRegistrarTests {
|
||||
|
||||
DataAccessException exFor4200 = sext.doTranslate("", "", new SQLException("Ouch", "42000", 42000));
|
||||
assertThat(exFor4200).as("Should have been translated").isNotNull();
|
||||
assertThat(BadSqlGrammarException.class.isAssignableFrom(exFor4200.getClass())).as("Should have been instance of BadSqlGrammarException").isTrue();
|
||||
assertThat(exFor4200).isInstanceOf(BadSqlGrammarException.class);
|
||||
|
||||
DataAccessException exFor2 = sext.doTranslate("", "", new SQLException("Ouch", "42000", 2));
|
||||
assertThat(exFor2).as("Should have been translated").isNotNull();
|
||||
assertThat(TransientDataAccessResourceException.class.isAssignableFrom(exFor2.getClass())).as("Should have been instance of TransientDataAccessResourceException").isTrue();
|
||||
assertThat(exFor2).isInstanceOf(TransientDataAccessResourceException.class);
|
||||
|
||||
DataAccessException exFor3 = sext.doTranslate("", "", new SQLException("Ouch", "42000", 3));
|
||||
assertThat(exFor3).as("Should not have been translated").isNull();
|
||||
|
||||
@@ -205,7 +205,7 @@ public class MessageHeaders implements Map<String, Object>, Serializable {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
if (!type.isAssignableFrom(value.getClass())) {
|
||||
if (!type.isInstance(value)) {
|
||||
throw new IllegalArgumentException("Incorrect type specified for header '" +
|
||||
key + "'. Expected [" + type + "] but actual type is [" + value.getClass() + "]");
|
||||
}
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ public class CompositeMessageCondition implements MessageCondition<CompositeMess
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends MessageCondition<T>> T getCondition(Class<T> messageConditionType) {
|
||||
for (MessageCondition<?> condition : this.messageConditions) {
|
||||
if (messageConditionType.isAssignableFrom(condition.getClass())) {
|
||||
if (messageConditionType.isInstance(condition)) {
|
||||
return (T) condition;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ public class HeadersMethodArgumentResolver implements SyncHandlerMethodArgumentR
|
||||
}
|
||||
else if (MessageHeaderAccessor.class.isAssignableFrom(paramType)) {
|
||||
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
|
||||
if (accessor != null && paramType.isAssignableFrom(accessor.getClass())) {
|
||||
if (accessor != null && paramType.isInstance(accessor)) {
|
||||
return accessor;
|
||||
}
|
||||
else {
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ public class HeadersMethodArgumentResolver implements HandlerMethodArgumentResol
|
||||
}
|
||||
else if (MessageHeaderAccessor.class.isAssignableFrom(paramType)) {
|
||||
MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class);
|
||||
if (accessor != null && paramType.isAssignableFrom(accessor.getClass())) {
|
||||
if (accessor != null && paramType.isInstance(accessor)) {
|
||||
return accessor;
|
||||
}
|
||||
else {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class MessageMethodArgumentResolver implements HandlerMethodArgumentResol
|
||||
Class<?> targetMessageType = parameter.getParameterType();
|
||||
Class<?> targetPayloadType = getPayloadType(parameter, message);
|
||||
|
||||
if (!targetMessageType.isAssignableFrom(message.getClass())) {
|
||||
if (!targetMessageType.isInstance(message)) {
|
||||
throw new MethodArgumentTypeMismatchException(message, parameter, "Actual message type '" +
|
||||
ClassUtils.getDescriptiveType(message) + "' does not match expected type '" +
|
||||
ClassUtils.getQualifiedName(targetMessageType) + "'");
|
||||
|
||||
+1
-1
@@ -95,7 +95,7 @@ public abstract class AbstractHeaderMapper<T> implements HeaderMapper<T> {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
if (!type.isAssignableFrom(value.getClass())) {
|
||||
if (!type.isInstance(value)) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
logger.debug("Skipping header '" + name + "': expected type [" + type + "], but got [" +
|
||||
value.getClass() + "]");
|
||||
|
||||
+1
-2
@@ -169,8 +169,7 @@ class PayloadMethodArgumentResolverTests {
|
||||
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
if (value != null) {
|
||||
Class<?> expectedType = param.getParameterType();
|
||||
assertThat(expectedType.isAssignableFrom(value.getClass())).as("Unexpected return value type: " + value).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
}
|
||||
return (T) value;
|
||||
}
|
||||
|
||||
+1
-2
@@ -163,8 +163,7 @@ class SimpMessagingTemplateTests {
|
||||
void processHeadersToSend() {
|
||||
Map<String, Object> map = this.messagingTemplate.processHeadersToSend(null);
|
||||
|
||||
assertThat(map).isNotNull();
|
||||
assertThat(MessageHeaders.class.isAssignableFrom(map.getClass())).as("Actual: " + map.getClass()).isTrue();
|
||||
assertThat(map).isInstanceOf(MessageHeaders.class);
|
||||
|
||||
SimpMessageHeaderAccessor headerAccessor =
|
||||
MessageHeaderAccessor.getAccessor((MessageHeaders) map, SimpMessageHeaderAccessor.class);
|
||||
|
||||
@@ -61,7 +61,7 @@ public abstract class ModelAndViewAssert {
|
||||
fail("Model attribute with name '" + modelName + "' is null");
|
||||
}
|
||||
assertTrue("Model attribute is not of expected type '" + expectedType.getName() + "' but rather of type '" +
|
||||
obj.getClass().getName() + "'", expectedType.isAssignableFrom(obj.getClass()));
|
||||
obj.getClass().getName() + "'", expectedType.isInstance(obj));
|
||||
return (T) obj;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ public abstract class TagUtils {
|
||||
}
|
||||
Tag ancestor = tag.getParent();
|
||||
while (ancestor != null) {
|
||||
if (ancestorTagClass.isAssignableFrom(ancestor.getClass())) {
|
||||
if (ancestorTagClass.isInstance(ancestor)) {
|
||||
return true;
|
||||
}
|
||||
ancestor = ancestor.getParent();
|
||||
|
||||
+1
-1
@@ -36,7 +36,7 @@ public class SimpleHandlerAdapter implements HandlerAdapter {
|
||||
|
||||
@Override
|
||||
public boolean supports(Object handler) {
|
||||
return WebHandler.class.isAssignableFrom(handler.getClass());
|
||||
return (handler instanceof WebHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+2
-2
@@ -65,10 +65,10 @@ public class ErrorsMethodArgumentResolver extends HandlerMethodArgumentResolverS
|
||||
// This is done to enable early argument resolution here. When the Mono actually
|
||||
// completes it is replaced in the model with the actual value.
|
||||
|
||||
if (Mono.class.isAssignableFrom(errors.getClass())) {
|
||||
if (errors instanceof Mono) {
|
||||
return ((Mono<?>) errors).cast(Object.class);
|
||||
}
|
||||
else if (Errors.class.isAssignableFrom(errors.getClass())) {
|
||||
else if (errors instanceof Errors) {
|
||||
return Mono.just(errors);
|
||||
}
|
||||
else {
|
||||
|
||||
+1
-1
@@ -76,7 +76,7 @@ public class RequestAttributeMethodArgumentResolver extends AbstractNamedValueSy
|
||||
parameter.getGenericParameterType() + " doesn't support empty values.");
|
||||
return toAdapter.fromPublisher(Mono.empty());
|
||||
}
|
||||
if (parameter.getParameterType().isAssignableFrom(value.getClass())) {
|
||||
if (parameter.getParameterType().isInstance(value)) {
|
||||
return value;
|
||||
}
|
||||
ReactiveAdapter fromAdapter = getAdapterRegistry().getAdapter(value.getClass());
|
||||
|
||||
+1
-1
@@ -99,7 +99,7 @@ public class WebSocketHandlerAdapter implements HandlerAdapter, Ordered {
|
||||
|
||||
@Override
|
||||
public boolean supports(Object handler) {
|
||||
return WebSocketHandler.class.isAssignableFrom(handler.getClass());
|
||||
return (handler instanceof WebSocketHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-2
@@ -274,8 +274,7 @@ class HttpEntityMethodArgumentResolverTests {
|
||||
Mono<Object> result = this.resolver.resolveArgument(param, new BindingContext(), exchange);
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
|
||||
assertThat(value).isNotNull();
|
||||
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).as("Unexpected return value type: " + value.getClass()).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
|
||||
return (T) value;
|
||||
}
|
||||
|
||||
+1
-2
@@ -294,8 +294,7 @@ class MessageReaderArgumentResolverTests {
|
||||
Mono<Object> result = this.resolver.readBody(param, true, this.bindingContext, exchange);
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
|
||||
assertThat(value).isNotNull();
|
||||
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).as("Unexpected return value type: " + value).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
|
||||
return (T) value;
|
||||
}
|
||||
|
||||
+2
-5
@@ -233,9 +233,7 @@ class RequestBodyMethodArgumentResolverTests {
|
||||
Mono<Object> result = this.resolver.readBody(param, true, new BindingContext(), exchange);
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
|
||||
assertThat(value).isNotNull();
|
||||
assertThat(param.getParameterType().isAssignableFrom(value.getClass()))
|
||||
.as("Unexpected return value type: " + value).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
|
||||
//no inspection unchecked
|
||||
return (T) value;
|
||||
@@ -248,8 +246,7 @@ class RequestBodyMethodArgumentResolverTests {
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
|
||||
if (value != null) {
|
||||
assertThat(param.getParameterType().isAssignableFrom(value.getClass()))
|
||||
.as("Unexpected parameter type: " + value).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
}
|
||||
|
||||
//no inspection unchecked
|
||||
|
||||
+1
-2
@@ -299,8 +299,7 @@ class RequestPartMethodArgumentResolverTests {
|
||||
Mono<Object> result = this.resolver.resolveArgument(param, new BindingContext(), exchange);
|
||||
Object value = result.block(Duration.ofSeconds(5));
|
||||
|
||||
assertThat(value).isNotNull();
|
||||
assertThat(param.getParameterType().isAssignableFrom(value.getClass())).isTrue();
|
||||
assertThat(value).isInstanceOf(param.getParameterType());
|
||||
return (T) value;
|
||||
}
|
||||
|
||||
|
||||
+2
-4
@@ -67,14 +67,12 @@ class WebSessionMethodArgumentResolverTests {
|
||||
|
||||
param = this.testMethod.arg(Mono.class, WebSession.class);
|
||||
actual = this.resolver.resolveArgument(param, context, exchange).block();
|
||||
assertThat(actual).isNotNull();
|
||||
assertThat(Mono.class.isAssignableFrom(actual.getClass())).isTrue();
|
||||
assertThat(actual).isInstanceOf(Mono.class);
|
||||
assertThat(((Mono<?>) actual).block()).isSameAs(session);
|
||||
|
||||
param = this.testMethod.arg(Single.class, WebSession.class);
|
||||
actual = this.resolver.resolveArgument(param, context, exchange).block();
|
||||
assertThat(actual).isNotNull();
|
||||
assertThat(Single.class.isAssignableFrom(actual.getClass())).isTrue();
|
||||
assertThat(actual).isInstanceOf(Single.class);
|
||||
assertThat(((Single<?>) actual).blockingGet()).isSameAs(session);
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -579,11 +579,11 @@ class ReactiveTypeHandler {
|
||||
|
||||
@SuppressWarnings("ReactiveStreamsUnusedPublisher")
|
||||
public Object writeReactorContext(Object returnValue) {
|
||||
if (Mono.class.isAssignableFrom(returnValue.getClass())) {
|
||||
if (returnValue instanceof Mono) {
|
||||
ContextSnapshot snapshot = this.snapshotFactory.captureAll();
|
||||
return ((Mono<?>) returnValue).contextWrite(snapshot::updateContext);
|
||||
}
|
||||
else if (Flux.class.isAssignableFrom(returnValue.getClass())) {
|
||||
else if (returnValue instanceof Flux) {
|
||||
ContextSnapshot snapshot = this.snapshotFactory.captureAll();
|
||||
return ((Flux<?>) returnValue).contextWrite(snapshot::updateContext);
|
||||
}
|
||||
|
||||
+1
-1
@@ -160,7 +160,7 @@ class RequestResponseBodyAdviceChain implements RequestBodyAdvice, ResponseBodyA
|
||||
}
|
||||
advice = adviceBean.resolveBean();
|
||||
}
|
||||
if (adviceType.isAssignableFrom(advice.getClass())) {
|
||||
if (adviceType.isInstance(advice)) {
|
||||
result.add((A) advice);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -251,7 +251,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
||||
|
||||
@Override
|
||||
public boolean supports(Object handler) {
|
||||
return handler != null && MyHandler.class.isAssignableFrom(handler.getClass());
|
||||
return (handler instanceof MyHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -268,7 +268,7 @@ public class ComplexWebApplicationContext extends StaticWebApplicationContext {
|
||||
|
||||
@Override
|
||||
public boolean supports(Object handler) {
|
||||
return handler != null && MyHandler.class.isAssignableFrom(handler.getClass());
|
||||
return (handler instanceof MyHandler);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ public class WebSocketExtension {
|
||||
if (this == other) {
|
||||
return true;
|
||||
}
|
||||
if (other == null || !WebSocketExtension.class.isAssignableFrom(other.getClass())) {
|
||||
if (other == null || !(other instanceof WebSocketExtension)) {
|
||||
return false;
|
||||
}
|
||||
WebSocketExtension otherExt = (WebSocketExtension) other;
|
||||
|
||||
Reference in New Issue
Block a user