diff --git a/src/main/java/org/springframework/data/gemfire/wan/AbstractWANComponentFactoryBean.java b/src/main/java/org/springframework/data/gemfire/wan/AbstractWANComponentFactoryBean.java index cb831607..e8c58042 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/AbstractWANComponentFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/AbstractWANComponentFactoryBean.java @@ -13,16 +13,15 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.springframework.data.gemfire.wan; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.geode.cache.Cache; -import org.springframework.beans.factory.BeanNameAware; + import org.springframework.beans.factory.DisposableBean; -import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.InitializingBean; +import org.springframework.data.gemfire.support.AbstractFactoryBeanSupport; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -32,13 +31,13 @@ import org.springframework.util.StringUtils; * @author David Turanski * @author John Blum * @see org.apache.geode.cache.Cache - * @see org.springframework.beans.factory.BeanNameAware * @see org.springframework.beans.factory.DisposableBean * @see org.springframework.beans.factory.FactoryBean * @see org.springframework.beans.factory.InitializingBean + * @see org.springframework.data.gemfire.support.AbstractFactoryBeanSupport */ -public abstract class AbstractWANComponentFactoryBean - implements BeanNameAware, DisposableBean, FactoryBean, InitializingBean { +public abstract class AbstractWANComponentFactoryBean extends AbstractFactoryBeanSupport + implements DisposableBean, InitializingBean { protected final Cache cache; @@ -67,12 +66,10 @@ public abstract class AbstractWANComponentFactoryBean } public String getName() { - return StringUtils.hasText(this.name) ? this.name : this.beanName; - } - @Override - public final boolean isSingleton() { - return true; + return StringUtils.hasText(this.name) + ? this.name + : this.beanName; } @Override diff --git a/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java b/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java index d816a63d..c8b02cf7 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java @@ -15,12 +15,16 @@ */ package org.springframework.data.gemfire.wan; +import java.util.Collection; +import java.util.Collections; import java.util.List; +import java.util.Optional; import org.apache.geode.cache.Cache; import org.apache.geode.cache.wan.GatewayReceiver; import org.apache.geode.cache.wan.GatewayReceiverFactory; import org.apache.geode.cache.wan.GatewayTransportFilter; + import org.springframework.beans.factory.FactoryBean; import org.springframework.data.gemfire.util.CollectionUtils; import org.springframework.util.Assert; @@ -66,42 +70,24 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< super(cache); } - /** - * @inheritDoc - */ @Override - public GatewayReceiver getObject() throws Exception { - return gatewayReceiver; - } + protected void doInit() { - /** - * @inheritDoc - */ - @Override - public Class getObjectType() { - return (gatewayReceiver != null ? gatewayReceiver.getClass() : GatewayReceiver.class); - } + GatewayReceiverFactory gatewayReceiverFactory = this.cache.createGatewayReceiverFactory(); - /** - * @inheritDoc - */ - @Override - protected void doInit() throws Exception { - GatewayReceiverFactory gatewayReceiverFactory = cache.createGatewayReceiverFactory(); + Optional.ofNullable(this.bindAddress) + .filter(StringUtils::hasText) + .ifPresent(gatewayReceiverFactory::setBindAddress); - if (StringUtils.hasText(bindAddress)) { - gatewayReceiverFactory.setBindAddress(bindAddress); - } - - if (StringUtils.hasText(hostnameForSenders)) { - gatewayReceiverFactory.setHostnameForSenders(hostnameForSenders); - } + Optional.ofNullable(this.hostnameForSenders) + .filter(StringUtils::hasText) + .ifPresent(gatewayReceiverFactory::setHostnameForSenders); int localStartPort = defaultPort(startPort, GatewayReceiver.DEFAULT_START_PORT); int localEndPort = defaultPort(endPort, GatewayReceiver.DEFAULT_END_PORT); Assert.isTrue(localStartPort <= localEndPort, - String.format("'startPort' must be less than or equal to %d.", localEndPort)); + String.format("[startPort] must be less than or equal to [%d]", localEndPort)); gatewayReceiverFactory.setStartPort(localStartPort); gatewayReceiverFactory.setEndPort(localEndPort); @@ -115,13 +101,24 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< gatewayReceiverFactory.setSocketBufferSize(socketBufferSize); } - for (GatewayTransportFilter transportFilter : CollectionUtils.nullSafeList(transportFilters)) { - gatewayReceiverFactory.addGatewayTransportFilter(transportFilter); - } + CollectionUtils.nullSafeList(this.transportFilters).forEach(gatewayReceiverFactory::addGatewayTransportFilter); gatewayReceiver = gatewayReceiverFactory.create(); } + @Override + public GatewayReceiver getObject() throws Exception { + return this.gatewayReceiver; + } + + @Override + public Class getObjectType() { + + return this.gatewayReceiver != null + ? this.gatewayReceiver.getClass() + : GatewayReceiver.class; + } + protected int defaultPort(Integer port, int defaultPort) { return (port != null ? port : defaultPort); } @@ -161,4 +158,8 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< public void setTransportFilters(List transportFilters) { this.transportFilters = transportFilters; } + + public Collection getTransportFilters() { + return Collections.unmodifiableList(this.transportFilters); + } } diff --git a/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java b/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java index 584241b5..ae44c9bb 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java @@ -16,6 +16,7 @@ package org.springframework.data.gemfire.wan; import java.util.List; +import java.util.Optional; import org.apache.geode.cache.Cache; import org.apache.geode.cache.wan.GatewayEventFilter; @@ -23,9 +24,10 @@ import org.apache.geode.cache.wan.GatewayEventSubstitutionFilter; import org.apache.geode.cache.wan.GatewaySender; import org.apache.geode.cache.wan.GatewaySenderFactory; import org.apache.geode.cache.wan.GatewayTransportFilter; +import org.apache.shiro.util.StringUtils; + import org.springframework.beans.factory.FactoryBean; import org.springframework.data.gemfire.util.CollectionUtils; -import org.springframework.util.Assert; /** * Spring {@link FactoryBean} for creating a parallel or serial Pivotal GemFire {@link GatewaySender}. @@ -88,79 +90,50 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean getObjectType() { - return this.gatewaySender != null ? this.gatewaySender.getClass() : GatewaySender.class; + + return this.gatewaySender != null + ? this.gatewaySender.getClass() + : GatewaySender.class; } public void setAlertThreshold(Integer alertThreshold) { @@ -217,7 +193,7 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean