diff --git a/spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java b/spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java index 98856256e7..cee3877232 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/AbstractDelegatingSmartContextLoader.java @@ -229,13 +229,14 @@ public abstract class AbstractDelegatingSmartContextLoader implements SmartConte @Override public ApplicationContext loadContext(MergedContextConfiguration mergedConfig) throws Exception { Assert.notNull(mergedConfig, "mergedConfig must not be null"); - List candidates = Arrays.asList(getXmlLoader(), getAnnotationConfigLoader()); Assert.state(!(mergedConfig.hasLocations() && mergedConfig.hasClasses()), () -> String.format( "Neither %s nor %s supports loading an ApplicationContext from %s: " + "declare either 'locations' or 'classes' but not both.", name(getXmlLoader()), name(getAnnotationConfigLoader()), mergedConfig)); + SmartContextLoader[] candidates = {getXmlLoader(), getAnnotationConfigLoader()}; + for (SmartContextLoader loader : candidates) { // Determine if each loader can load a context from the mergedConfig. If it // can, let it; otherwise, keep iterating. diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java b/spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java index 3716c3c340..eff95e4268 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/InitBinderDataBinderFactory.java @@ -23,6 +23,7 @@ import java.util.List; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.support.DefaultDataBinderFactory; @@ -81,8 +82,8 @@ public class InitBinderDataBinderFactory extends DefaultDataBinderFactory { protected boolean isBinderMethodApplicable(HandlerMethod binderMethod, WebDataBinder binder) { InitBinder ann = binderMethod.getMethodAnnotation(InitBinder.class); Assert.state(ann != null, "No InitBinder annotation"); - Collection names = Arrays.asList(ann.value()); - return (names.isEmpty() || names.contains(binder.getObjectName())); + String[] names = ann.value(); + return ObjectUtils.isEmpty(names) || Arrays.asList(names).contains(binder.getObjectName()); } } diff --git a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java index 1d60564fc9..f60e827e8e 100644 --- a/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java +++ b/spring-webflux/src/main/java/org/springframework/web/reactive/result/method/annotation/InitBinderBindingContext.java @@ -22,6 +22,7 @@ import java.util.List; import org.springframework.lang.Nullable; import org.springframework.util.Assert; +import org.springframework.util.ObjectUtils; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.support.SessionStatus; import org.springframework.web.bind.support.SimpleSessionStatus; @@ -78,8 +79,8 @@ class InitBinderBindingContext extends BindingContext { .filter(binderMethod -> { InitBinder ann = binderMethod.getMethodAnnotation(InitBinder.class); Assert.state(ann != null, "No InitBinder annotation"); - Collection names = Arrays.asList(ann.value()); - return (names.isEmpty() || names.contains(dataBinder.getObjectName())); + String[] names = ann.value(); + return ObjectUtils.isEmpty(names) || Arrays.asList(names).contains(dataBinder.getObjectName()); }) .forEach(method -> invokeBinderMethod(dataBinder, exchange, method)); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java index 85f1292c5e..6b28128822 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/HandlersBeanDefinitionParser.java @@ -122,7 +122,7 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser { @Override public void addMapping(Element element, ManagedMap urlMap, ParserContext context) { String pathAttribute = element.getAttribute("path"); - List mappings = Arrays.asList(StringUtils.tokenizeToStringArray(pathAttribute, ",")); + String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ","); RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler")); ConstructorArgumentValues cargs = new ConstructorArgumentValues(); @@ -153,7 +153,7 @@ class HandlersBeanDefinitionParser implements BeanDefinitionParser { @Override public void addMapping(Element element, ManagedMap urlMap, ParserContext context) { String pathAttribute = element.getAttribute("path"); - List mappings = Arrays.asList(StringUtils.tokenizeToStringArray(pathAttribute, ",")); + String[] mappings = StringUtils.tokenizeToStringArray(pathAttribute, ","); RuntimeBeanReference handlerReference = new RuntimeBeanReference(element.getAttribute("handler")); ConstructorArgumentValues cargs = new ConstructorArgumentValues();