From bf2c68f9b6bf6ba22d211fe9270e991695126c4c Mon Sep 17 00:00:00 2001 From: David Turanski Date: Wed, 29 Aug 2012 12:08:23 -0400 Subject: [PATCH] SGF-121 - Fixed issue with data-policy --- .../client/ClientRegionFactoryBean.java | 21 +++++++++++++++++++ .../gemfire/config/ClientRegionParser.java | 8 +++---- .../gemfire/config/spring-gemfire-1.2.xsd | 7 ++----- src/test/resources/log4j.properties | 2 +- .../data/gemfire/config/client-ns.xml | 2 +- 5 files changed, 29 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java b/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java index 5271cac8..a0564e18 100644 --- a/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/client/ClientRegionFactoryBean.java @@ -23,6 +23,7 @@ import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.beans.factory.DisposableBean; import org.springframework.core.io.Resource; +import org.springframework.data.gemfire.DataPolicyConverter; import org.springframework.data.gemfire.RegionLookupFactoryBean; import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; @@ -75,6 +76,8 @@ public class ClientRegionFactoryBean extends RegionLookupFactoryBean private String diskStoreName; + private String dataPolicyName; + @Override public void afterPropertiesSet() throws Exception { super.afterPropertiesSet(); @@ -90,6 +93,14 @@ public class ClientRegionFactoryBean extends RegionLookupFactoryBean if (cache instanceof GemFireCacheImpl) { Assert.isTrue(((GemFireCacheImpl) cache).isClient(), "A client-cache instance is required"); } + + Assert.isTrue(!(StringUtils.hasText(dataPolicyName) && dataPolicy != null), "Only one of 'dataPolicy' or 'dataPolicyName' can be set"); + + + if (StringUtils.hasText(dataPolicyName)) { + dataPolicy = new DataPolicyConverter().convert(dataPolicyName); + Assert.notNull(dataPolicy, "Data policy " + dataPolicyName + " is invalid"); + } // first look at shortcut ClientRegionShortcut s = null; @@ -349,6 +360,16 @@ public class ClientRegionFactoryBean extends RegionLookupFactoryBean public void setDataPolicy(DataPolicy dataPolicy) { this.dataPolicy = dataPolicy; } + + /** + * An alternative way to set the data policy as a string. Useful for + * property placeholders, etc. + * + * @param dataPolicyName + */ + public void setDataPolicyName(String dataPolicyName) { + this.dataPolicyName = dataPolicyName; + } /** * Sets the name of disk store to use for overflow and persistence diff --git a/src/main/java/org/springframework/data/gemfire/config/ClientRegionParser.java b/src/main/java/org/springframework/data/gemfire/config/ClientRegionParser.java index 86debca4..125751ec 100644 --- a/src/main/java/org/springframework/data/gemfire/config/ClientRegionParser.java +++ b/src/main/java/org/springframework/data/gemfire/config/ClientRegionParser.java @@ -55,10 +55,10 @@ class ClientRegionParser extends AliasReplacingBeanDefinitionParser { // setting the cache/DS to a be 'loner' isn't feasible // so to prevent both client and p2p communication in the region, // the scope is fixed to local - ParsingUtils.setPropertyValue(element, builder, "data-policy", "dataPolicy"); - ParsingUtils.setPropertyValue(element, builder, "name", "name"); - ParsingUtils.setPropertyValue(element, builder, "pool-name", "poolName"); - ParsingUtils.setPropertyValue(element, builder, "shortcut", "shortcut"); + ParsingUtils.setPropertyValue(element, builder, "data-policy", "dataPolicyName"); + ParsingUtils.setPropertyValue(element, builder, "name"); + ParsingUtils.setPropertyValue(element, builder, "pool-name"); + ParsingUtils.setPropertyValue(element, builder, "shortcut"); // set the persistent policy String attr = element.getAttribute("persistent"); diff --git a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.2.xsd b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.2.xsd index 7a115dbc..c4b74613 100755 --- a/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.2.xsd +++ b/src/main/resources/org/springframework/data/gemfire/config/spring-gemfire-1.2.xsd @@ -976,8 +976,7 @@ The action to take when performing eviction. - + - + %n log4j.category.org.springframework.data.gemfire.listener=TRACE log4j.category.org.springframework.data.gemfire=DEBUG -log4j.category.org.springframework=DEBUG +#log4j.category.org.springframework=DEBUG # for debugging datasource initialization # log4j.category.test.jdbc=DEBUG diff --git a/src/test/resources/org/springframework/data/gemfire/config/client-ns.xml b/src/test/resources/org/springframework/data/gemfire/config/client-ns.xml index e8b675c9..fd0a91bf 100644 --- a/src/test/resources/org/springframework/data/gemfire/config/client-ns.xml +++ b/src/test/resources/org/springframework/data/gemfire/config/client-ns.xml @@ -13,7 +13,7 @@ - +