SGF-14
SGF-13
SGF-17
+ hook up disk-store parsing
+ refactored replicated parser so it defines the nested attributes through bean definitions rather then direct instantiation
This commit is contained in:
costin
2010-09-02 20:28:29 +03:00
parent 1a4eecbeac
commit 1ab5305118
2 changed files with 25 additions and 10 deletions

View File

@@ -56,6 +56,12 @@ class PartitionedRegionParser extends AbstractSingleBeanDefinitionParser {
// add cache reference (fallback to default if nothing is specified)
builder.addPropertyReference("cache", (StringUtils.hasText(attr) ? attr : "gemfire-cache"));
// region attributes
BeanDefinitionBuilder attrBuilder = BeanDefinitionBuilder.genericBeanDefinition(RegionAttributesFactory.class);
ParsingUtils.parseEviction(element, attrBuilder);
ParsingUtils.parseDiskStorage(element, attrBuilder);
// partition attributes
BeanDefinitionBuilder parAttrBuilder = BeanDefinitionBuilder.genericBeanDefinition(PartitionAttributesFactory.class);
@@ -123,11 +129,10 @@ class PartitionedRegionParser extends AbstractSingleBeanDefinitionParser {
}
}
// add attributes
BeanDefinitionBuilder nestedBuilder = BeanDefinitionBuilder.genericBeanDefinition(RegionAttributesFactory.class);
nestedBuilder.addPropertyValue("partitionAttributes", parAttrBuilder.getBeanDefinition());
// add partition attributes attributes
attrBuilder.addPropertyValue("partitionAttributes", parAttrBuilder.getBeanDefinition());
builder.addPropertyValue("attributes", nestedBuilder.getBeanDefinition());
builder.addPropertyValue("attributes", attrBuilder.getBeanDefinition());
}
private Object parseCacheListener(ParserContext parserContext, Element subElement, BeanDefinitionBuilder builder) {

View File

@@ -21,12 +21,12 @@ import java.util.List;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.data.gemfire.RegionAttributesFactory;
import org.springframework.data.gemfire.RegionFactoryBean;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
import com.gemstone.gemfire.cache.AttributesFactory;
import com.gemstone.gemfire.cache.DataPolicy;
import com.gemstone.gemfire.cache.Scope;
@@ -46,24 +46,34 @@ class ReplicatedRegionParser extends AbstractSingleBeanDefinitionParser {
super.doParse(element, builder);
// set the data policy
builder.addPropertyValue("dataPolicy", DataPolicy.REPLICATE);
String attr = element.getAttribute("persistent");
if (Boolean.parseBoolean(attr)) {
builder.addPropertyValue("dataPolicy", DataPolicy.PERSISTENT_REPLICATE);
}
else {
builder.addPropertyValue("dataPolicy", DataPolicy.REPLICATE);
}
builder.addPropertyValue("scope", Scope.DISTRIBUTED_ACK);
ParsingUtils.setPropertyValue(element, builder, "name", "name");
String attr = element.getAttribute("cache-ref");
attr = element.getAttribute("cache-ref");
// add cache reference (fallback to default if nothing is specified)
builder.addPropertyReference("cache", (StringUtils.hasText(attr) ? attr : "gemfire-cache"));
// add attributes
AttributesFactory af = new AttributesFactory();
BeanDefinitionBuilder attrBuilder = BeanDefinitionBuilder.genericBeanDefinition(RegionAttributesFactory.class);
attr = element.getAttribute("publisher");
if (StringUtils.hasText(attr)) {
af.setPublisher(Boolean.valueOf(attr));
attrBuilder.addPropertyValue("publisher", Boolean.valueOf(attr));
}
builder.addPropertyValue("attributes", af.create());
ParsingUtils.parseEviction(element, attrBuilder);
ParsingUtils.parseDiskStorage(element, attrBuilder);
builder.addPropertyValue("attributes", attrBuilder.getBeanDefinition());
List<Element> subElements = DomUtils.getChildElements(element);