From 2958d139235446aab83495dd8e4cef9af34cab64 Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 16 Jun 2016 19:56:36 -0700 Subject: [PATCH] DATACASS-242 - Fix shutdown script issue with XML Configuration. The XML Configuration now handles configured shutdown scripts correctly. Original pull request: #67. --- .../config/xml/CassandraCqlClusterParser.java | 2 +- .../CassandraCqlClusterParserUnitTests.java | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/spring-cql/src/main/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParser.java b/spring-cql/src/main/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParser.java index ec6ac208f..93e4ff1e7 100644 --- a/spring-cql/src/main/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParser.java +++ b/spring-cql/src/main/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParser.java @@ -161,7 +161,7 @@ public class CassandraCqlClusterParser extends AbstractBeanDefinitionParser { poolingOptionsBuilder, parserContext, element)); builder.addPropertyValue("startupScripts", startupScripts); - builder.addPropertyValue("shutdownScripts", startupScripts); + builder.addPropertyValue("shutdownScripts", shutdownScripts); } /** diff --git a/spring-cql/src/test/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParserUnitTests.java b/spring-cql/src/test/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParserUnitTests.java index 7157de063..777daf1d8 100644 --- a/spring-cql/src/test/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParserUnitTests.java +++ b/spring-cql/src/test/java/org/springframework/cassandra/config/xml/CassandraCqlClusterParserUnitTests.java @@ -20,6 +20,8 @@ import static org.junit.Assert.*; import static org.mockito.Mockito.*; import static org.springframework.cassandra.support.BeanDefinitionTestUtils.*; +import java.util.List; + import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -262,6 +264,44 @@ public class CassandraCqlClusterParserUnitTests { verify(localPoolingOptionsElement).getAttribute(eq("min-simultaneous-requests")); } + /** + * @see DATACASS-242 + */ + @Test + public void parseChildElementsWithStartupAndShutdownScripts() { + + Element mockStartupCqlOne = mock(Element.class, "MockStartupCqlOne"); + Element mockStartupCqlTwo = mock(Element.class, "MockStartupCqlTwo"); + Element mockShutdownCqlOne = mock(Element.class, "MockShutdownCqlOne"); + Element mockShutdownCqlTwo = mock(Element.class, "MockShutdownCqlTwo"); + + when(mockStartupCqlOne.getLocalName()).thenReturn("startup-cql"); + when(mockStartupCqlTwo.getLocalName()).thenReturn("startup-cql"); + when(mockStartupCqlOne.getTextContent()).thenReturn("CREATE KEYSPACE test;"); + when(mockStartupCqlTwo.getTextContent()).thenReturn("CREATE TABLE test.table;"); + when(mockShutdownCqlOne.getLocalName()).thenReturn("shutdown-cql"); + when(mockShutdownCqlTwo.getLocalName()).thenReturn("shutdown-cql"); + when(mockShutdownCqlOne.getTextContent()).thenReturn("DROP KEYSPACE test;"); + when(mockShutdownCqlTwo.getTextContent()).thenReturn("DROP USER jblum;"); + + NodeList mockNodeList = mockNodeList(mockStartupCqlOne, mockStartupCqlTwo, + mockShutdownCqlOne, mockShutdownCqlTwo); + + when(mockElement.getChildNodes()).thenReturn(mockNodeList); + + BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(); + + parser.parseChildElements(mockElement, mockParserContext(null), builder); + + BeanDefinition beanDefinition = builder.getBeanDefinition(); + + List startupScripts = getPropertyValue(beanDefinition, "startupScripts"); + assertThat(startupScripts, contains("CREATE KEYSPACE test;", "CREATE TABLE test.table;")); + + List shutdownScripts = getPropertyValue(beanDefinition, "shutdownScripts"); + assertThat(shutdownScripts, contains("DROP KEYSPACE test;", "DROP USER jblum;")); + } + /** * @see DATACASS-298 */