Allow other delimiters in profile XML attribute
Previously, only commas could delimit <beans profile="p1,p2"/>. Now, as with <bean alias="..."/>, the profile attribute allows for delimiting by comma, space and/or semicolon. BeanDefinitionParserDelegate.MULTI_VALUE_ATTRIBUTE_DELIMITERS has been added as a constant to reflect the fact this set of delimiters is used in multiple locations throughout the framework. BDPD.BEAN_NAME_DELIMITERS now refers to the above and has been has been preserved but deprecated for backward compat (though use outside the framework is unlikely). Changes originally based on user comment at http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/comment-page-1/#comment-184455 Issue: SPR-8033
This commit is contained in:
@@ -87,7 +87,10 @@ public class BeanDefinitionParserDelegate {
|
||||
|
||||
public static final String BEANS_NAMESPACE_URI = "http://www.springframework.org/schema/beans";
|
||||
|
||||
public static final String BEAN_NAME_DELIMITERS = ",; ";
|
||||
public static final String MULTI_VALUE_ATTRIBUTE_DELIMITERS = ",; ";
|
||||
|
||||
/** @deprecated as of Spring 3.1 in favor of {@link #MULTI_VALUE_ATTRIBUTE_DELIMITERS} */
|
||||
public static final String BEAN_NAME_DELIMITERS = MULTI_VALUE_ATTRIBUTE_DELIMITERS;
|
||||
|
||||
/**
|
||||
* Value of a T/F attribute that represents true.
|
||||
@@ -451,7 +454,7 @@ public class BeanDefinitionParserDelegate {
|
||||
|
||||
List<String> aliases = new ArrayList<String>();
|
||||
if (StringUtils.hasLength(nameAttr)) {
|
||||
String[] nameArr = StringUtils.tokenizeToStringArray(nameAttr, BEAN_NAME_DELIMITERS);
|
||||
String[] nameArr = StringUtils.tokenizeToStringArray(nameAttr, MULTI_VALUE_ATTRIBUTE_DELIMITERS);
|
||||
aliases.addAll(Arrays.asList(nameArr));
|
||||
}
|
||||
|
||||
@@ -624,7 +627,7 @@ public class BeanDefinitionParserDelegate {
|
||||
|
||||
if (ele.hasAttribute(DEPENDS_ON_ATTRIBUTE)) {
|
||||
String dependsOn = ele.getAttribute(DEPENDS_ON_ATTRIBUTE);
|
||||
bd.setDependsOn(StringUtils.tokenizeToStringArray(dependsOn, BEAN_NAME_DELIMITERS));
|
||||
bd.setDependsOn(StringUtils.tokenizeToStringArray(dependsOn, MULTI_VALUE_ATTRIBUTE_DELIMITERS));
|
||||
}
|
||||
|
||||
String autowireCandidate = ele.getAttribute(AUTOWIRE_CANDIDATE_ATTRIBUTE);
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
|
||||
package org.springframework.beans.factory.xml;
|
||||
|
||||
import static org.springframework.util.StringUtils.commaDelimitedListToStringArray;
|
||||
import static org.springframework.util.StringUtils.trimAllWhitespace;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.LinkedHashSet;
|
||||
@@ -124,7 +121,7 @@ public class DefaultBeanDefinitionDocumentReader implements BeanDefinitionDocume
|
||||
String profileSpec = root.getAttribute(PROFILE_ATTRIBUTE);
|
||||
if (StringUtils.hasText(profileSpec)) {
|
||||
Assert.state(this.environment != null, "environment property must not be null");
|
||||
String[] specifiedProfiles = commaDelimitedListToStringArray(trimAllWhitespace(profileSpec));
|
||||
String[] specifiedProfiles = StringUtils.tokenizeToStringArray(profileSpec, BeanDefinitionParserDelegate.MULTI_VALUE_ATTRIBUTE_DELIMITERS);
|
||||
if (!this.environment.acceptsProfiles(specifiedProfiles)) {
|
||||
// TODO SPR-7508: log that this bean is being rejected on profile mismatch
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user