diff --git a/src/main/java/org/springframework/data/gemfire/config/GemfireListenerContainerParser.java b/src/main/java/org/springframework/data/gemfire/config/GemfireListenerContainerParser.java
index 8322b9f2..fab3a4fe 100644
--- a/src/main/java/org/springframework/data/gemfire/config/GemfireListenerContainerParser.java
+++ b/src/main/java/org/springframework/data/gemfire/config/GemfireListenerContainerParser.java
@@ -21,25 +21,21 @@ import java.util.List;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.ManagedSet;
-import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
+import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.data.gemfire.listener.ContinuousQueryDefinition;
import org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer;
import org.springframework.data.gemfire.listener.adapter.ContinuousQueryListenerAdapter;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
-import org.w3c.dom.Attr;
import org.w3c.dom.Element;
-import org.w3c.dom.NamedNodeMap;
/**
* Parser for SGF <cq-listener-container> element.
*
* @author Costin Leau
*/
-class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser {
-
+class GemfireListenerContainerParser extends AbstractSingleBeanDefinitionParser {
@Override
protected Class getBeanClass(Element element) {
return ContinuousQueryListenerContainer.class;
@@ -47,24 +43,11 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
- // parse attributes (but replace the value assignment with references)
- NamedNodeMap attributes = element.getAttributes();
- for (int x = 0; x < attributes.getLength(); x++) {
- Attr attribute = (Attr) attributes.item(x);
- if (isEligibleAttribute(attribute, parserContext)) {
- String propertyName = extractPropertyName(attribute.getLocalName());
- Assert.state(StringUtils.hasText(propertyName),
- "Illegal property name returned from 'extractPropertyName(String)': cannot be null or empty.");
- builder.addPropertyReference(propertyName, attribute.getValue());
- }
- }
-
-
- ParsingUtils.setPropertyValue(element, builder, "phase", "phase");
- ParsingUtils.setPropertyValue(element, builder, "pool-name", "poolName");
-
- postProcess(builder, element);
+ ParsingUtils.setPropertyValue(element, builder, "phase");
+ ParsingUtils.setPropertyValue(element, builder, "pool-name");
+ ParsingUtils.setPropertyReference(element, builder, "cache","cache");
+ ParsingUtils.setPropertyReference(element, builder, "task-executor","task-executor");
// parse nested listeners
List listDefs = DomUtils.getChildElementsByTagName(element, "listener");
@@ -79,11 +62,6 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
}
}
- @Override
- protected boolean isEligibleAttribute(String attributeName) {
- return (!"phase".equals(attributeName));
- }
-
/**
* Parses a listener definition. Returns the listener bean reference definition (of a {@link ContinuousQueryDefinition}).
*
@@ -117,9 +95,4 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
return defBuilder.getBeanDefinition();
}
-
- @Override
- protected boolean shouldGenerateId() {
- return true;
- }
}
\ No newline at end of file
diff --git a/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java b/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java
index a0125f0f..2c0bd2e4 100644
--- a/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java
+++ b/src/main/java/org/springframework/data/gemfire/listener/ContinuousQueryListenerContainer.java
@@ -277,7 +277,7 @@ public class ContinuousQueryListenerContainer implements InitializingBean, Dispo
logger.warn("Execution of JMS event listener failed, and no ErrorHandler has been set.", ex);
}
}
-
+
public void setBeanName(String name) {
this.beanName = name;
}
diff --git a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.3.xsd b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.3.xsd
index 9f5f4037..0355ff95 100755
--- a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.3.xsd
+++ b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.3.xsd
@@ -2016,21 +2016,29 @@ The name of the bean defining the GemFire cache (by default 'gemfireCache').
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/test/java/org/springframework/data/gemfire/listener/adapter/ContainerXmlSetupTest.java b/src/test/java/org/springframework/data/gemfire/listener/adapter/ContainerXmlSetupTest.java
index 6a89ce21..e8e9bde3 100644
--- a/src/test/java/org/springframework/data/gemfire/listener/adapter/ContainerXmlSetupTest.java
+++ b/src/test/java/org/springframework/data/gemfire/listener/adapter/ContainerXmlSetupTest.java
@@ -24,6 +24,8 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.data.gemfire.ForkUtil;
+import org.springframework.data.gemfire.listener.ContinuousQueryDefinition;
+import org.springframework.data.gemfire.listener.ContinuousQueryListener;
import org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer;
import com.gemstone.gemfire.cache.Cache;
@@ -56,6 +58,9 @@ public class ContainerXmlSetupTest {
Cache cache = ctx.getBean("gemfireCache", Cache.class);
Pool pool = ctx.getBean("client", Pool.class);
+
+ // Test getting container listener bean by ID
+ ctx.getBean("testContainerId");
CqQuery[] cqs = cache.getQueryService().getCqs();
CqQuery[] pcqs = pool.getQueryService().getCqs();
diff --git a/src/test/java/org/springframework/data/gemfire/support/JSONRegionAdviceTest.java b/src/test/java/org/springframework/data/gemfire/support/JSONRegionAdviceTest.java
index d6bae478..e647bbad 100644
--- a/src/test/java/org/springframework/data/gemfire/support/JSONRegionAdviceTest.java
+++ b/src/test/java/org/springframework/data/gemfire/support/JSONRegionAdviceTest.java
@@ -24,6 +24,7 @@ import javax.annotation.Resource;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
+import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
@@ -49,6 +50,10 @@ public class JSONRegionAdviceTest {
@Autowired
GemfireOperations template;
+ @Before
+ public void setUp() {
+ region.clear();
+ }
@Test
public void testPutString() {
String json = "{\"hello\":\"world\"}";
diff --git a/src/test/resources/org/springframework/data/gemfire/listener/container.xml b/src/test/resources/org/springframework/data/gemfire/listener/container.xml
index b3d54f10..dfd27d2c 100644
--- a/src/test/resources/org/springframework/data/gemfire/listener/container.xml
+++ b/src/test/resources/org/springframework/data/gemfire/listener/container.xml
@@ -24,7 +24,7 @@
-
+