From 1a4eecbeac55098d634bde0f3a9bd4b4324bd05a Mon Sep 17 00:00:00 2001 From: costin Date: Thu, 2 Sep 2010 20:27:41 +0300 Subject: [PATCH] SGF-10 SGF-17 + add storage parsing --- .../data/gemfire/config/ParsingUtils.java | 41 +++++++++++++++++++ .../gemfire/config/spring-gemfire-1.0.xsd | 4 +- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/springframework/data/gemfire/config/ParsingUtils.java b/src/main/java/org/springframework/data/gemfire/config/ParsingUtils.java index 78ff4b47..22a3e75b 100644 --- a/src/main/java/org/springframework/data/gemfire/config/ParsingUtils.java +++ b/src/main/java/org/springframework/data/gemfire/config/ParsingUtils.java @@ -26,6 +26,8 @@ import org.springframework.util.StringUtils; import org.springframework.util.xml.DomUtils; import org.w3c.dom.Element; +import com.gemstone.gemfire.cache.DiskWriteAttributesFactory; + /** * Various minor utility used by the parser. * @@ -102,4 +104,43 @@ abstract class ParsingUtils { return list; } + + /** + * Parses disk store sub-element. Populates the given attribute factory with the proper attributes. + * + * @param beanBuilder - beanbuilder for a RegionAttributesFactory instance + */ + static void parseDiskStorage(Element element, BeanDefinitionBuilder beanBuilder) { + Element diskStoreElement = DomUtils.getChildElementByTagName(element, "disk-store"); + + if (diskStoreElement == null) + return; + + BeanDefinitionBuilder diskDefBuilder = BeanDefinitionBuilder.genericBeanDefinition(DiskWriteAttributesFactory.class); + setPropertyValue(diskStoreElement, diskDefBuilder, "synchronous-write", "synchronous"); + setPropertyValue(diskStoreElement, diskDefBuilder, "auto-compact", "rollOplogs"); + setPropertyValue(diskStoreElement, diskDefBuilder, "max-oplog-size", "maxOplogSize"); + setPropertyValue(diskStoreElement, diskDefBuilder, "time-interval", "timeInterval"); + setPropertyValue(diskStoreElement, diskDefBuilder, "queue-size", "bytesThreshold"); + + + // parse nested disk-dir + List list = DomUtils.getChildElementsByTagName(diskStoreElement, "disk-dir"); + ManagedList locations = new ManagedList(list.size()); + ManagedList sizes = new ManagedList(list.size()); + + for (Element diskDirElement : list) { + locations.add(diskDirElement.getAttribute("location")); + + String attr = diskStoreElement.getAttribute("max-size"); + sizes.add(StringUtils.hasText(attr) ? attr : "10240"); + } + + beanBuilder.addPropertyValue("diskWriteAttributes", diskDefBuilder.getBeanDefinition()); + beanBuilder.addPropertyValue("diskDirs", locations); + beanBuilder.addPropertyValue("diskSizes", sizes); + } + + static void parseEviction(Element element, BeanDefinitionBuilder attrBuilder) { + } } \ No newline at end of file diff --git a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.0.xsd b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.0.xsd index b358a5b5..266d8fd1 100644 --- a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.0.xsd +++ b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.0.xsd @@ -394,7 +394,7 @@ reclaim memory. - + +