SGF-162 change interval
This commit is contained in:
committed by
David Turanski
parent
0e81e9d4c8
commit
343d4b050a
@@ -18,8 +18,12 @@ package org.springframework.data.gemfire.config;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.factory.BeanDefinitionStoreException;
|
||||
import org.springframework.beans.factory.config.BeanDefinition;
|
||||
import org.springframework.beans.factory.config.BeanDefinitionHolder;
|
||||
import org.springframework.beans.factory.support.AbstractBeanDefinition;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
|
||||
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
|
||||
import org.springframework.beans.factory.support.ManagedSet;
|
||||
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
|
||||
import org.springframework.beans.factory.xml.ParserContext;
|
||||
@@ -61,9 +65,16 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
}
|
||||
|
||||
|
||||
ParsingUtils.setPropertyValue(element, builder, "phase", "phase");
|
||||
ParsingUtils.setPropertyValue(element, builder, "pool-name", "poolName");
|
||||
ParsingUtils.setPropertyValue(element, builder, "phase");
|
||||
ParsingUtils.setPropertyValue(element, builder, "pool-name");
|
||||
|
||||
// Register the Id if one has been provided.
|
||||
String id = element.getAttribute("id");
|
||||
if( StringUtils.hasText(id)) {
|
||||
//BeanDefinitionHolder holder = new BeanDefinitionHolder(builder.getBeanDefinition(), id, null);
|
||||
//BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
|
||||
}
|
||||
|
||||
postProcess(builder, element);
|
||||
|
||||
// parse nested listeners
|
||||
@@ -72,7 +83,7 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
if (!listDefs.isEmpty()) {
|
||||
ManagedSet<BeanDefinition> listeners = new ManagedSet<BeanDefinition>(listDefs.size());
|
||||
for (Element listElement : listDefs) {
|
||||
listeners.add(parseListener(listElement));
|
||||
listeners.add(parseListener(listElement, parserContext, builder));
|
||||
}
|
||||
|
||||
builder.addPropertyValue("queryListeners", listeners);
|
||||
@@ -81,7 +92,7 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
|
||||
@Override
|
||||
protected boolean isEligibleAttribute(String attributeName) {
|
||||
return (!"phase".equals(attributeName));
|
||||
return (!"phase".equals(attributeName) | !"id".equals(attributeName));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,8 +101,8 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
* @param element
|
||||
* @return
|
||||
*/
|
||||
private BeanDefinition parseListener(Element element) {
|
||||
|
||||
private BeanDefinition parseListener(Element element, ParserContext parserContext, BeanDefinitionBuilder definition) {
|
||||
|
||||
BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ContinuousQueryListenerAdapter.class);
|
||||
builder.addConstructorArgReference(element.getAttribute("ref"));
|
||||
|
||||
@@ -106,7 +117,7 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
if (StringUtils.hasText(attr)) {
|
||||
defBuilder.addConstructorArgValue(attr);
|
||||
}
|
||||
|
||||
|
||||
defBuilder.addConstructorArgValue(element.getAttribute("query"));
|
||||
defBuilder.addConstructorArgValue(builder.getBeanDefinition());
|
||||
|
||||
@@ -117,9 +128,9 @@ class GemfireListenerContainerParser extends AbstractSimpleBeanDefinitionParser
|
||||
|
||||
return defBuilder.getBeanDefinition();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected boolean shouldGenerateId() {
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -2016,21 +2016,29 @@ The name of the bean defining the GemFire cache (by default 'gemfireCache').
|
||||
<xsd:documentation><![CDATA[
|
||||
Container for continuous query listeners. All listeners will be hosted by the same container.
|
||||
]]></xsd:documentation>
|
||||
<xsd:appinfo>
|
||||
<tool:annotation>
|
||||
<tool:exports
|
||||
type="org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer" />
|
||||
</tool:annotation>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="listener" type="listenerType"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="cache" type="xsd:string" default="gemfireCache">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
<xsd:appinfo>
|
||||
<tool:annotation>
|
||||
<tool:exports
|
||||
type="org.springframework.data.gemfire.listener.ContinuousQueryListenerContainer" />
|
||||
</tool:annotation>
|
||||
</xsd:appinfo>
|
||||
</xsd:annotation>
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="listener" type="listenerType"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="id" type="xsd:string" use="optional">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
The id of the listener (optional)
|
||||
]]></xsd:documentation>
|
||||
</xsd:annotation>
|
||||
</xsd:attribute>
|
||||
<xsd:attribute name="cache" type="xsd:string"
|
||||
default="gemfireCache">
|
||||
<xsd:annotation>
|
||||
<xsd:documentation><![CDATA[
|
||||
A reference (by name) to the GemFire cache bean. Default is "gemfireCache".
|
||||
]]></xsd:documentation>
|
||||
<xsd:appinfo>
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
|
||||
<task:executor id="testTaskExecutor" />
|
||||
|
||||
<gfe:cq-listener-container cache="gemfireCache" pool-name="client">
|
||||
<!-- default handle method -->
|
||||
<gfe:cq-listener-container id="testContainerId" cache="gemfireCache" pool-name="client">
|
||||
<!-- default handle method -->
|
||||
<gfe:listener ref="testBean1" query="SELECT * from /test-cq"/>
|
||||
<gfe:listener ref="testBean1" query="SELECT * from /test-cq" name="test-bean-1" method="handleQuery"/>
|
||||
<gfe:listener ref="testBean2" query="SELECT * from /test-cq" durable="false"/>
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<bean id="testBean1" class="org.springframework.data.gemfire.listener.GemfireMDP"/>
|
||||
<bean id="testBean2" class="org.springframework.data.gemfire.listener.ThrowableEventListener"/>
|
||||
|
||||
|
||||
<bean id="handler" class="org.springframework.data.gemfire.listener.StubErrorHandler"/>
|
||||
|
||||
</beans>
|
||||
|
||||
Reference in New Issue
Block a user