SGF-177 fixed property placeholders for partitioned region
This commit is contained in:
@@ -59,9 +59,9 @@ public class PartitionAttributesFactoryBean implements FactoryBean<PartitionAttr
|
||||
public void setColocatedWith(String colocatedRegionFullPath) {
|
||||
paf.setColocatedWith(colocatedRegionFullPath);
|
||||
}
|
||||
|
||||
|
||||
public void setFixedPartitionAttributes(List<FixedPartitionAttributes> fixedPartitionAttributes) {
|
||||
for (FixedPartitionAttributes fpa: fixedPartitionAttributes) {
|
||||
for (FixedPartitionAttributes fpa : fixedPartitionAttributes) {
|
||||
paf.addFixedPartitionAttributes(fpa);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@ import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.xml.DomUtils;
|
||||
import org.w3c.dom.Element;
|
||||
|
||||
import com.gemstone.gemfire.management.internal.cli.parser.ParserUtils;
|
||||
|
||||
/**
|
||||
* Parser for <partitioned-region;gt; definitions.
|
||||
*
|
||||
@@ -59,43 +61,14 @@ class PartitionedRegionParser extends AbstractRegionParser {
|
||||
// partition attributes
|
||||
BeanDefinitionBuilder parAttrBuilder = BeanDefinitionBuilder
|
||||
.genericBeanDefinition(PartitionAttributesFactoryBean.class);
|
||||
|
||||
String attr = element.getAttribute("colocated-with");
|
||||
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("colocatedWith", attr);
|
||||
}
|
||||
|
||||
attr = element.getAttribute("local-max-memory");
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("localMaxMemory", Integer.valueOf(attr));
|
||||
}
|
||||
|
||||
attr = element.getAttribute("copies");
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("redundantCopies", Integer.valueOf(attr));
|
||||
}
|
||||
|
||||
attr = element.getAttribute("recovery-delay");
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("recoveryDelay", Long.valueOf(attr));
|
||||
}
|
||||
|
||||
attr = element.getAttribute("startup-recovery-delay");
|
||||
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("startupRecoveryDelay", Long.valueOf(attr));
|
||||
}
|
||||
|
||||
attr = element.getAttribute("total-max-memory");
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("totalMaxMemory", Long.valueOf(attr));
|
||||
}
|
||||
|
||||
attr = element.getAttribute("total-buckets");
|
||||
if (StringUtils.hasText(attr)) {
|
||||
parAttrBuilder.addPropertyValue("totalNumBuckets", Integer.valueOf(attr));
|
||||
}
|
||||
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "colocated-with");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "local-max-memory");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "copies","redundantCopies");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "recovery-delay");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "startup-recovery-delay");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "total-max-memory");
|
||||
ParsingUtils.setPropertyValue(element, parAttrBuilder, "total-buckets","totalNumBuckets");
|
||||
//
|
||||
Element subElement = DomUtils.getChildElementByTagName(element, "partition-resolver");
|
||||
// parse nested partition resolver element
|
||||
|
||||
@@ -47,14 +47,12 @@ import com.gemstone.gemfire.cache.partition.PartitionListener;
|
||||
* @author David Turanski
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration(locations="partitioned-ns.xml",
|
||||
initializers=GemfireTestApplicationContextInitializer.class)
|
||||
@ContextConfiguration(locations = "partitioned-ns.xml", initializers = GemfireTestApplicationContextInitializer.class)
|
||||
public class PartitionedRegionNamespaceTest {
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext context;
|
||||
|
||||
|
||||
@Test
|
||||
public void testBasicPartition() throws Exception {
|
||||
assertTrue(context.containsBean("simple"));
|
||||
@@ -64,8 +62,7 @@ public class PartitionedRegionNamespaceTest {
|
||||
@Test
|
||||
public void testPartitionOptions() throws Exception {
|
||||
assertTrue(context.containsBean("options"));
|
||||
RegionFactoryBean fb = context.getBean("&options",
|
||||
RegionFactoryBean.class);
|
||||
RegionFactoryBean fb = context.getBean("&options", RegionFactoryBean.class);
|
||||
assertTrue(fb instanceof PartitionedRegionFactoryBean);
|
||||
assertEquals(null, TestUtils.readField("scope", fb));
|
||||
assertEquals("redundant", TestUtils.readField("name", fb));
|
||||
@@ -77,25 +74,21 @@ public class PartitionedRegionNamespaceTest {
|
||||
|
||||
assertEquals(1, pAttr.getRedundantCopies());
|
||||
assertEquals(4, pAttr.getTotalNumBuckets());
|
||||
assertSame(SimplePartitionResolver.class, pAttr.getPartitionResolver()
|
||||
.getClass());
|
||||
assertSame(SimplePartitionResolver.class, pAttr.getPartitionResolver().getClass());
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Test
|
||||
public void testComplexPartition() throws Exception {
|
||||
assertTrue(context.containsBean("complex"));
|
||||
RegionFactoryBean fb = context.getBean("&complex",
|
||||
RegionFactoryBean.class);
|
||||
RegionFactoryBean fb = context.getBean("&complex", RegionFactoryBean.class);
|
||||
CacheListener[] listeners = TestUtils.readField("cacheListeners", fb);
|
||||
assertFalse(ObjectUtils.isEmpty(listeners));
|
||||
assertEquals(2, listeners.length);
|
||||
assertSame(listeners[0], context.getBean("c-listener"));
|
||||
|
||||
assertSame(context.getBean("c-loader"),
|
||||
TestUtils.readField("cacheLoader", fb));
|
||||
assertSame(context.getBean("c-writer"),
|
||||
TestUtils.readField("cacheWriter", fb));
|
||||
assertSame(context.getBean("c-loader"), TestUtils.readField("cacheLoader", fb));
|
||||
assertSame(context.getBean("c-writer"), TestUtils.readField("cacheWriter", fb));
|
||||
|
||||
RegionAttributes attrs = TestUtils.readField("attributes", fb);
|
||||
PartitionAttributes pAttr = attrs.getPartitionAttributes();
|
||||
@@ -109,15 +102,13 @@ public class PartitionedRegionNamespaceTest {
|
||||
@SuppressWarnings("rawtypes")
|
||||
@Test
|
||||
public void testFixedPartition() throws Exception {
|
||||
RegionFactoryBean fb = context.getBean("&fixed",
|
||||
RegionFactoryBean.class);
|
||||
RegionFactoryBean fb = context.getBean("&fixed", RegionFactoryBean.class);
|
||||
RegionAttributes attrs = TestUtils.readField("attributes", fb);
|
||||
PartitionAttributes pAttr = attrs.getPartitionAttributes();
|
||||
assertNotNull(pAttr.getFixedPartitionAttributes());
|
||||
assertEquals(3, pAttr.getFixedPartitionAttributes().size());
|
||||
|
||||
FixedPartitionAttributes fpa = (FixedPartitionAttributes) pAttr
|
||||
.getFixedPartitionAttributes().get(0);
|
||||
FixedPartitionAttributes fpa = (FixedPartitionAttributes) pAttr.getFixedPartitionAttributes().get(0);
|
||||
assertEquals(3, fpa.getNumBuckets());
|
||||
assertTrue(fpa.isPrimary());
|
||||
|
||||
|
||||
@@ -4,15 +4,21 @@
|
||||
xmlns:gfe="http://www.springframework.org/schema/gemfire"
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xmlns:util="http://www.springframework.org/schema/util"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
|
||||
|
||||
<gfe:cache />
|
||||
|
||||
<context:property-placeholder properties-ref="props"/>
|
||||
<util:properties id="props">
|
||||
<prop key="totalBuckets">4</prop>
|
||||
</util:properties>
|
||||
<gfe:partitioned-region id="simple" />
|
||||
|
||||
<gfe:partitioned-region id="options" copies="1" total-buckets="4" name="redundant" close="true" destroy="false" statistics="true">
|
||||
<gfe:partitioned-region id="options" copies="1" total-buckets="${totalBuckets}" name="redundant" close="true" destroy="false" statistics="true">
|
||||
<gfe:partition-resolver>
|
||||
<bean class="org.springframework.data.gemfire.SimplePartitionResolver"/>
|
||||
</gfe:partition-resolver>
|
||||
|
||||
Reference in New Issue
Block a user