From efb5b4b5d478b21d1ec5fe2d6d305303535df8d2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Wed, 27 Nov 2019 12:25:46 +0100 Subject: [PATCH] DATACASS-705 - Polishing. Use consistently -ref. Original pull request: #167. --- .../InitializeKeyspaceBeanDefinitionParser.java | 14 +++++++++++--- src/main/asciidoc/reference/cassandra.adoc | 8 ++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/InitializeKeyspaceBeanDefinitionParser.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/InitializeKeyspaceBeanDefinitionParser.java index e565d8e7e..220adec68 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/InitializeKeyspaceBeanDefinitionParser.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/config/InitializeKeyspaceBeanDefinitionParser.java @@ -15,6 +15,8 @@ */ package org.springframework.data.cassandra.config; +import static org.springframework.data.cassandra.config.ParsingUtils.*; + import java.util.List; import org.springframework.beans.BeanMetadataElement; @@ -36,8 +38,8 @@ import org.w3c.dom.Element; /** * {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that parses an {@code initialize-keyspace} element - * and creates a {@link BeanDefinition} of type {@link DataSourceInitializer}. Picks up nested {@code script} elements - * and configures a {@link ResourceKeyspacePopulator} for them. + * and creates a {@link BeanDefinition} of type {@link SessionFactoryInitializer}. Picks up nested {@code script} + * elements and configures a {@link ResourceKeyspacePopulator} for them. * * @author Mark Paluch * @since 3.0 @@ -48,7 +50,11 @@ class InitializeKeyspaceBeanDefinitionParser extends AbstractBeanDefinitionParse protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(SessionFactoryInitializer.class); - builder.addPropertyReference("sessionFactory", element.getAttribute("session-factory")); + + if (element.hasAttribute("session-factory-ref")) { + addRequiredPropertyReference(builder, "session", element, "session-factory-ref"); + } + builder.addPropertyValue("enabled", element.getAttribute("enabled")); parseKeyspacePopulator(element, builder); @@ -64,7 +70,9 @@ class InitializeKeyspaceBeanDefinitionParser extends AbstractBeanDefinitionParse } public static void parseKeyspacePopulator(Element element, BeanDefinitionBuilder builder) { + List scripts = DomUtils.getChildElementsByTagName(element, "script"); + if (!scripts.isEmpty()) { builder.addPropertyValue("keyspacePopulator", createKeyspacePopulator(element, scripts, "INIT")); builder.addPropertyValue("keyspaceCleaner", createKeyspacePopulator(element, scripts, "DESTROY")); diff --git a/src/main/asciidoc/reference/cassandra.adoc b/src/main/asciidoc/reference/cassandra.adoc index c0feb3e6f..eabdb9d6d 100644 --- a/src/main/asciidoc/reference/cassandra.adoc +++ b/src/main/asciidoc/reference/cassandra.adoc @@ -627,7 +627,7 @@ If you want to initialize a database and you can provide a reference to a `Sessi ==== [source,xml,indent=0,subs="verbatim,quotes"] ---- - + @@ -652,7 +652,7 @@ The following example gets a value from a system property: ==== [source,xml,indent=0,subs="verbatim,quotes"] ---- - <1> @@ -667,7 +667,7 @@ To this end, you can control the ability of the initializer to ignore certain er ==== [source,xml,indent=0,subs="verbatim,quotes"] ---- - + ---- @@ -686,7 +686,7 @@ You can control that globally or script by script, as the following example show ==== [source,xml,indent=0,subs="verbatim,quotes"] ---- - <1> + <1> <2>