diff --git a/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java b/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java index 7c345d1c76d..10307745227 100644 --- a/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java +++ b/spring-core/src/main/java/org/springframework/core/convert/support/ArrayToArrayConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2022 the original author or authors. + * Copyright 2002-2024 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. @@ -34,6 +34,7 @@ import org.springframework.util.ObjectUtils; * * @author Keith Donald * @author Phillip Webb + * @author Sam Brannen * @since 3.0 */ final class ArrayToArrayConverter implements ConditionalGenericConverter { @@ -64,8 +65,8 @@ final class ArrayToArrayConverter implements ConditionalGenericConverter { public Object convert(@Nullable Object source, TypeDescriptor sourceType, TypeDescriptor targetType) { if (this.conversionService instanceof GenericConversionService genericConversionService) { TypeDescriptor targetElement = targetType.getElementTypeDescriptor(); - if (targetElement != null && genericConversionService.canBypassConvert( - sourceType.getElementTypeDescriptor(), targetElement)) { + if (targetElement != null && targetType.getType().isInstance(source) && + genericConversionService.canBypassConvert(sourceType.getElementTypeDescriptor(), targetElement)) { return source; } } diff --git a/spring-core/src/test/java/org/springframework/core/convert/converter/DefaultConversionServiceTests.java b/spring-core/src/test/java/org/springframework/core/convert/converter/DefaultConversionServiceTests.java index 6a90a8f4cf8..546e0914593 100644 --- a/spring-core/src/test/java/org/springframework/core/convert/converter/DefaultConversionServiceTests.java +++ b/spring-core/src/test/java/org/springframework/core/convert/converter/DefaultConversionServiceTests.java @@ -43,7 +43,6 @@ import java.util.UUID; import java.util.regex.Pattern; import java.util.stream.Stream; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.core.MethodParameter; @@ -640,8 +639,7 @@ class DefaultConversionServiceTests { assertThat(result).containsExactly(1, 2, 3); } - @Disabled("Primitive array to Object[] conversion is not currently supported") - @Test + @Test // gh-33212 void convertIntArrayToObjectArray() { Object[] result = conversionService.convert(new int[] {1, 2}, Object[].class); assertThat(result).containsExactly(1, 2);