From 9fcd5e00a76f975ccdb5bd8fb02028dbcb8d3501 Mon Sep 17 00:00:00 2001 From: costin Date: Thu, 2 Sep 2010 19:57:49 +0300 Subject: [PATCH] + modified RegionAttributesFactory to return singletons + added support in RegionAttributesFactory for set dir sizes/folders (as the default method breaks the JavaBeans conventions) --- .../data/gemfire/RegionAttributesFactory.java | 49 +++++++++++++++++-- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/springframework/data/gemfire/RegionAttributesFactory.java b/src/main/java/org/springframework/data/gemfire/RegionAttributesFactory.java index 483053a9..83bc4417 100644 --- a/src/main/java/org/springframework/data/gemfire/RegionAttributesFactory.java +++ b/src/main/java/org/springframework/data/gemfire/RegionAttributesFactory.java @@ -16,7 +16,11 @@ package org.springframework.data.gemfire; +import java.io.File; + import org.springframework.beans.factory.FactoryBean; +import org.springframework.beans.factory.InitializingBean; +import org.springframework.util.ObjectUtils; import com.gemstone.gemfire.cache.AttributesFactory; import com.gemstone.gemfire.cache.RegionAttributes; @@ -27,17 +31,52 @@ import com.gemstone.gemfire.cache.RegionAttributes; * * @author Costin Leau */ -public class RegionAttributesFactory extends AttributesFactory implements FactoryBean { +public class RegionAttributesFactory extends AttributesFactory implements FactoryBean, + InitializingBean { + + private int[] diskSizes; + private File[] diskDirs; + + private RegionAttributes attributes; + + public void afterPropertiesSet() throws Exception { + if (diskSizes!= null){ + super.setDiskDirsAndSizes(diskDirs, diskSizes); + } + else{ + if (ObjectUtils.isEmpty(diskDirs)) { + super.setDiskDirs(diskDirs); + } + } + + attributes = super.create(); + } public RegionAttributes getObject() throws Exception { - return create(); + return attributes; } public Class getObjectType() { - return RegionAttributes.class; + return (attributes != null ? attributes.getClass() : RegionAttributes.class); } public boolean isSingleton() { - return false; + return true; } -} + + + @Override + public void setDiskDirs(File[] diskDirs) { + this.diskDirs = diskDirs; + } + + /** + * Sets the sizes (in megabytes) for each disk directory. + * Used only disk directories are specified. + * + * @param sizes + */ + public void setDiskSizes(int[] sizes) { + this.diskSizes = sizes; + } +} \ No newline at end of file