From dd2ce20687f14f1a501c54ef75eeb56d1bd501f5 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Mon, 22 Oct 2018 15:13:58 +0200 Subject: [PATCH] SpringFactoriesLoader tolerates whitespace around class names Issue: SPR-17413 --- .../core/io/support/SpringFactoriesLoader.java | 8 ++++---- .../core/io/support/SpringFactoriesLoaderTests.java | 11 +++++------ .../src/test/resources/META-INF/spring.factories | 4 ++-- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java b/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java index c53e162ee9d..e50ee46e4ce 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/SpringFactoriesLoader.java @@ -19,7 +19,6 @@ package org.springframework.core.io.support; import java.io.IOException; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.List; @@ -139,9 +138,10 @@ public final class SpringFactoriesLoader { UrlResource resource = new UrlResource(url); Properties properties = PropertiesLoaderUtils.loadProperties(resource); for (Map.Entry entry : properties.entrySet()) { - List factoryClassNames = Arrays.asList( - StringUtils.commaDelimitedListToStringArray((String) entry.getValue())); - result.addAll((String) entry.getKey(), factoryClassNames); + String factoryClassName = ((String) entry.getKey()).trim(); + for (String factoryName : StringUtils.commaDelimitedListToStringArray((String) entry.getValue())) { + result.add(factoryClassName, factoryName.trim()); + } } } cache.put(classLoader, result); diff --git a/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderTests.java b/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderTests.java index 4de87d2c727..56939b9cfc1 100644 --- a/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderTests.java +++ b/spring-core/src/test/java/org/springframework/core/io/support/SpringFactoriesLoaderTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2018 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. @@ -33,8 +33,7 @@ public class SpringFactoriesLoaderTests { @Test public void loadFactoriesInCorrectOrder() { - List factories = SpringFactoriesLoader - .loadFactories(DummyFactory.class, null); + List factories = SpringFactoriesLoader.loadFactories(DummyFactory.class, null); assertEquals(2, factories.size()); assertTrue(factories.get(0) instanceof MyDummyFactory1); assertTrue(factories.get(1) instanceof MyDummyFactory2); @@ -46,9 +45,9 @@ public class SpringFactoriesLoaderTests { } @Test - public void loadPackagePrivateFactory() throws Exception { - List factories = SpringFactoriesLoader - .loadFactories(DummyPackagePrivateFactory.class, null); + public void loadPackagePrivateFactory() { + List factories = + SpringFactoriesLoader.loadFactories(DummyPackagePrivateFactory.class, null); assertEquals(1, factories.size()); assertTrue((factories.get(0).getClass().getModifiers() & Modifier.PUBLIC) == 0); } diff --git a/spring-core/src/test/resources/META-INF/spring.factories b/spring-core/src/test/resources/META-INF/spring.factories index ab64ffe1b67..3c2c4e9d952 100644 --- a/spring-core/src/test/resources/META-INF/spring.factories +++ b/spring-core/src/test/resources/META-INF/spring.factories @@ -1,5 +1,5 @@ -org.springframework.core.io.support.DummyFactory=\ -org.springframework.core.io.support.MyDummyFactory2,\ +org.springframework.core.io.support.DummyFactory =\ +org.springframework.core.io.support.MyDummyFactory2, \ org.springframework.core.io.support.MyDummyFactory1 java.lang.String=\