Implements JIRA feature request SGF-309 adding support for compression of GemFire Cache Region data using the new Compressor attribute and property in the RegionAttributes API.
This commit is contained in:
@@ -345,6 +345,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
validateRegionAttributes(regionAttributes);
|
||||
|
||||
regionFactory.setCloningEnabled(regionAttributes.getCloningEnabled());
|
||||
regionFactory.setCompressor(regionAttributes.getCompressor());
|
||||
regionFactory.setConcurrencyChecksEnabled(regionAttributes.getConcurrencyChecksEnabled());
|
||||
regionFactory.setConcurrencyLevel(regionAttributes.getConcurrencyLevel());
|
||||
regionFactory.setCustomEntryIdleTimeout(regionAttributes.getCustomEntryIdleTimeout());
|
||||
|
||||
@@ -105,6 +105,7 @@ public class ClientRegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V>
|
||||
// map region attributes onto the client region factory
|
||||
if (attributes != null) {
|
||||
factory.setCloningEnabled(attributes.getCloningEnabled());
|
||||
factory.setCompressor(attributes.getCompressor());
|
||||
factory.setConcurrencyLevel(attributes.getConcurrencyLevel());
|
||||
factory.setCustomEntryIdleTimeout(attributes.getCustomEntryIdleTimeout());
|
||||
factory.setCustomEntryTimeToLive(attributes.getCustomEntryTimeToLive());
|
||||
|
||||
@@ -91,9 +91,10 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
|
||||
ParsingUtils.parseOptionalRegionAttributes(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseSubscription(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseStatistics(element, regionAttributesBuilder);
|
||||
ParsingUtils.parseMembershipAttributes(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseExpiration(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseEviction(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseMembershipAttributes(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseCompressor(parserContext, element, regionAttributesBuilder);
|
||||
|
||||
String enableGateway = element.getAttribute("enable-gateway");
|
||||
String hubId = element.getAttribute("hub-id");
|
||||
@@ -133,11 +134,11 @@ abstract class AbstractRegionParser extends AbstractSingleBeanDefinitionParser {
|
||||
}
|
||||
else if (subElement.getLocalName().equals("cache-loader")) {
|
||||
builder.addPropertyValue("cacheLoader",
|
||||
ParsingUtils.parseRefOrNestedBeanDeclaration(parserContext, subElement, builder));
|
||||
ParsingUtils.parseRefOrSingleNestedBeanDeclaration(parserContext, subElement, builder));
|
||||
}
|
||||
else if (subElement.getLocalName().equals("cache-writer")) {
|
||||
builder.addPropertyValue("cacheWriter",
|
||||
ParsingUtils.parseRefOrNestedBeanDeclaration(parserContext, subElement, builder));
|
||||
ParsingUtils.parseRefOrSingleNestedBeanDeclaration(parserContext, subElement, builder));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -76,6 +76,7 @@ class ClientRegionParser extends AbstractRegionParser {
|
||||
ParsingUtils.parseStatistics(element, regionAttributesBuilder);
|
||||
ParsingUtils.parseExpiration(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseEviction(parserContext, element, regionAttributesBuilder);
|
||||
ParsingUtils.parseCompressor(parserContext, element, regionAttributesBuilder);
|
||||
|
||||
builder.addPropertyValue("attributes", regionAttributesBuilder.getBeanDefinition());
|
||||
|
||||
|
||||
@@ -432,6 +432,17 @@ abstract class ParsingUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void parseCompressor(ParserContext parserContext, Element element,
|
||||
BeanDefinitionBuilder regionAttributesBuilder) {
|
||||
|
||||
Element compressorElement = DomUtils.getChildElementByTagName(element, "compressor");
|
||||
|
||||
if (compressorElement != null) {
|
||||
regionAttributesBuilder.addPropertyValue("compressor", parseRefOrSingleNestedBeanDeclaration(
|
||||
parserContext, compressorElement, regionAttributesBuilder));
|
||||
}
|
||||
}
|
||||
|
||||
static String resolveCacheReference(final String cacheRef) {
|
||||
return (StringUtils.hasText(cacheRef) ? cacheRef : GemfireConstants.DEFAULT_GEMFIRE_CACHE_NAME);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user