diff --git a/src/main/java/org/springframework/data/gemfire/RegionFactoryBean.java b/src/main/java/org/springframework/data/gemfire/RegionFactoryBean.java index 4439d416..09460edf 100644 --- a/src/main/java/org/springframework/data/gemfire/RegionFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/RegionFactoryBean.java @@ -98,9 +98,10 @@ public class RegionFactoryBean extends RegionLookupFactoryBean imple Cache c = (Cache) cache; - if (attributes != null) + if (attributes != null) { AttributesFactory.validateAttributes(attributes); - + } + final RegionFactory regionFactory = (attributes != null ? c.createRegionFactory(attributes) : c . createRegionFactory()); @@ -110,12 +111,11 @@ public class RegionFactoryBean extends RegionLookupFactoryBean imple regionFactory.setGatewayHubId(hubId); } - if (enableGateway != null) { - if (enableGateway) { - Assert.notNull(hubId, "enableGateway requires the hubId property to be true"); - } + + if (enableGateway !=null) { regionFactory.setEnableGateway(enableGateway); } + if (!ObjectUtils.isEmpty(cacheListeners)) { for (CacheListener listener : cacheListeners) { regionFactory.addCacheListener(listener); @@ -129,17 +129,19 @@ public class RegionFactoryBean extends RegionLookupFactoryBean imple if (cacheWriter != null) { regionFactory.setCacheWriter(cacheWriter); } - + + if (diskStoreName != null) { + regionFactory.setDiskStoreName(diskStoreName); + Assert.isTrue(!isNotPersistent(),"it is invalid to specify a disk store if 'persistent' is set to false."); + persistent = true; + } + resolveDataPolicy(regionFactory, persistent, dataPolicy); if (scope != null) { regionFactory.setScope(scope); } - if (diskStoreName != null) { - regionFactory.setDiskStoreName(diskStoreName); - } - if (attributes != null) { Assert.state(!attributes.isLockGrantor() || scope.isGlobal(), "Lock grantor only applies to a global scoped region"); diff --git a/src/main/java/org/springframework/data/gemfire/config/GatewayHubParser.java b/src/main/java/org/springframework/data/gemfire/config/GatewayHubParser.java index 346fcd1b..c8717bbc 100644 --- a/src/main/java/org/springframework/data/gemfire/config/GatewayHubParser.java +++ b/src/main/java/org/springframework/data/gemfire/config/GatewayHubParser.java @@ -49,6 +49,8 @@ class GatewayHubParser extends AbstractSimpleBeanDefinitionParser { ParsingUtils.setPropertyValue(element, builder, "manual-start"); ParsingUtils.setPropertyValue(element, builder, "socket-buffer-size"); ParsingUtils.setPropertyValue(element, builder, "startup-policy"); + ParsingUtils.setPropertyValue(element, builder, "port"); + List gatewayElements = DomUtils.getChildElementsByTagName(element, "gateway"); if (!CollectionUtils.isEmpty(gatewayElements)) { ManagedList gateways = new ManagedList(); @@ -90,8 +92,17 @@ class GatewayHubParser extends AbstractSimpleBeanDefinitionParser { ParsingUtils.setPropertyValue(gatewayQueueElement, queueBuilder, "maximum-queue-memory"); ParsingUtils.setPropertyValue(gatewayQueueElement, queueBuilder, "persistent"); ParsingUtils.setPropertyValue(gatewayQueueElement, queueBuilder, "disk-store-ref"); + /* + * Make sure any disk store is created first + */ + if (gatewayQueueElement.hasAttribute("disk-store-ref")) { + gatewayBuilder.getBeanDefinition().setDependsOn( + new String[] {gatewayQueueElement.getAttribute("disk-store-ref")}); + } ParsingUtils.setPropertyValue(gatewayQueueElement, queueBuilder, "enable-batch-conflation"); gatewayBuilder.addPropertyValue("queue", queueBuilder.getBeanDefinition()); + + } gateways.add(gatewayBuilder.getBeanDefinition()); } diff --git a/src/main/java/org/springframework/data/gemfire/wan/GatewayHubFactoryBean.java b/src/main/java/org/springframework/data/gemfire/wan/GatewayHubFactoryBean.java index 9896c4a8..ad914526 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/GatewayHubFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/GatewayHubFactoryBean.java @@ -15,6 +15,7 @@ */ package org.springframework.data.gemfire.wan; +import java.io.IOException; import java.util.Arrays; import java.util.List; @@ -82,7 +83,7 @@ public class GatewayHubFactoryBean extends AbstractWANComponentFactoryBean endpoints; - private Integer concurrencyLevel; + private Integer concurrencyLevel = Gateway.DEFAULT_CONCURRENCY_LEVEL; private String id; @@ -38,9 +39,7 @@ public class GatewayProxy { private String orderPolicy; - private int socketBufferSize; - - private int socketReadTimeout; + private int socketBufferSize = Gateway.DEFAULT_SOCKET_BUFFER_SIZE; private GatewayQueue queue; @@ -83,11 +82,7 @@ public class GatewayProxy { public Integer getSocketBufferSize() { return this.socketBufferSize; } - - public Integer getSocketReadTimeout() { - return this.socketReadTimeout; - } - + public void setId(String id) { this.id = id; } @@ -101,10 +96,6 @@ public class GatewayProxy { } - public void setSocketReadTimeout(int socketReadTimeout) { - this.socketReadTimeout = socketReadTimeout; - } - public static class GatewayEndpoint { private String host;