SPR-7604 - Support multiple embedded databases.

Embedded datasources now get their bean ids set as database name to allow multiple databases of the same type in parallel. Refactored tests a little and made BeanDefinitionParser package private to align with the other ones. Adapted changelog accordingly.
This commit is contained in:
Oliver Gierke
2010-10-02 06:30:05 +00:00
parent 5918e2fa9c
commit ba2bac17de
3 changed files with 51 additions and 19 deletions

View File

@@ -38,16 +38,27 @@ import org.w3c.dom.Element;
* @author Oliver Gierke
* @since 3.0
*/
public class EmbeddedDatabaseBeanDefinitionParser extends AbstractBeanDefinitionParser {
class EmbeddedDatabaseBeanDefinitionParser extends AbstractBeanDefinitionParser {
private static final String NAME_PROPERTY = "databaseName";
@Override
protected AbstractBeanDefinition parseInternal(Element element, ParserContext context) {
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(EmbeddedDatabaseFactoryBean.class);
setDatabaseType(element, builder);
setDatabasePopulator(element, context, builder);
useIdAsDatabaseNameIfGiven(element, builder);
return getSourcedBeanDefinition(builder, element, context);
}
private void useIdAsDatabaseNameIfGiven(Element element, BeanDefinitionBuilder builder) {
String id = element.getAttribute(ID_ATTRIBUTE);
if (StringUtils.hasText(id)) {
builder.addPropertyValue(NAME_PROPERTY, id);
}
}
private void setDatabaseType(Element element, BeanDefinitionBuilder builder) {
String type = element.getAttribute("type");
if (StringUtils.hasText(type)) {