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 23d440b8..9575d213 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/GatewayReceiverFactoryBean.java @@ -15,20 +15,19 @@ */ package org.springframework.data.gemfire.wan; -import java.io.IOException; import java.util.List; 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.context.SmartLifecycle; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.data.gemfire.util.CollectionUtils; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; /** - * Spring FactoryBean for creating a GemFire {@link GatewayReceiver}. + * Spring {@link FactoryBean} for creating a GemFire {@link GatewayReceiver}. * * @author David Turanski * @author John Blum @@ -40,8 +39,7 @@ import org.springframework.util.StringUtils; * @since 1.2.2 */ @SuppressWarnings("unused") -public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean - implements SmartLifecycle { +public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean { private boolean manualStart = false; @@ -58,35 +56,39 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< private String hostnameForSenders; /** - * Constructs an instance of the GatewayReceiverFactoryBean class for configuring an initializing - * a GemFire Gateway Receiver. + * Constructs an instance of the {@link GatewayReceiverFactoryBean} class initialized with a reference to + * the GemFire {@link Cache} used to configure and initialize a GemFire {@link GatewayReceiver}. * - * @param cache a reference to the GemFire Cache used to setup the Gateway Receiver. + * @param cache reference to the GemFire {@link Cache} used to create the {@link GatewayReceiver}. + * @see org.apache.geode.cache.Cache */ public GatewayReceiverFactoryBean(Cache cache) { super(cache); } + /** + * @inheritDoc + */ @Override public GatewayReceiver getObject() throws Exception { return gatewayReceiver; } + /** + * @inheritDoc + */ @Override public Class getObjectType() { return (gatewayReceiver != null ? gatewayReceiver.getClass() : GatewayReceiver.class); } + /** + * @inheritDoc + */ @Override protected void doInit() throws Exception { GatewayReceiverFactory gatewayReceiverFactory = cache.createGatewayReceiverFactory(); - if (!CollectionUtils.isEmpty(transportFilters)) { - for (GatewayTransportFilter transportFilter : transportFilters) { - gatewayReceiverFactory.addGatewayTransportFilter(transportFilter); - } - } - if (StringUtils.hasText(bindAddress)) { gatewayReceiverFactory.setBindAddress(bindAddress); } @@ -95,28 +97,36 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< gatewayReceiverFactory.setHostnameForSenders(hostnameForSenders); } - if (maximumTimeBetweenPings != null) { - gatewayReceiverFactory.setMaximumTimeBetweenPings(maximumTimeBetweenPings); - } + int localStartPort = defaultPort(startPort, GatewayReceiver.DEFAULT_START_PORT); + int localEndPort = defaultPort(endPort, GatewayReceiver.DEFAULT_END_PORT); - int localStartPort = (startPort != null ? startPort : GatewayReceiver.DEFAULT_START_PORT); - int localEndPort = (endPort != null ? endPort : GatewayReceiver.DEFAULT_END_PORT); - - Assert.isTrue(localStartPort <= localEndPort, String.format("'startPort' must be less than or equal to %1$d.", - localEndPort)); + Assert.isTrue(localStartPort <= localEndPort, + String.format("'startPort' must be less than or equal to %d.", localEndPort)); gatewayReceiverFactory.setStartPort(localStartPort); gatewayReceiverFactory.setEndPort(localEndPort); - gatewayReceiverFactory.setManualStart(true); + gatewayReceiverFactory.setManualStart(manualStart); + + if (maximumTimeBetweenPings != null) { + gatewayReceiverFactory.setMaximumTimeBetweenPings(maximumTimeBetweenPings); + } if (socketBufferSize != null) { gatewayReceiverFactory.setSocketBufferSize(socketBufferSize); } + for (GatewayTransportFilter transportFilter : CollectionUtils.nullSafeList(transportFilters)) { + gatewayReceiverFactory.addGatewayTransportFilter(transportFilter); + } + gatewayReceiver = gatewayReceiverFactory.create(); } - public void setGatewayReceiver(final GatewayReceiver gatewayReceiver) { + protected int defaultPort(Integer port, int defaultPort) { + return (port != null ? port : defaultPort); + } + + public void setGatewayReceiver(GatewayReceiver gatewayReceiver) { this.gatewayReceiver = gatewayReceiver; } @@ -151,45 +161,4 @@ public class GatewayReceiverFactoryBean extends AbstractWANComponentFactoryBean< public void setTransportFilters(List transportFilters) { this.transportFilters = transportFilters; } - - @Override - public boolean isAutoStartup() { - return !manualStart; - } - - @Override - public int getPhase() { - return Integer.MAX_VALUE; - } - - @Override - public boolean isRunning() { - return gatewayReceiver.isRunning(); - } - - @Override - public void start() { - Assert.state(gatewayReceiver != null, "The GatewayReceiver was not properly configured and initialized!"); - - if (!isRunning()) { - try { - gatewayReceiver.start(); - } - catch (IOException e) { - throw new RuntimeException("Failed to start Gateway Receiver due to I/O error.", e); - } - } - } - - @Override - public void stop() { - gatewayReceiver.stop(); - } - - @Override - public void stop(final Runnable callback) { - stop(); - callback.run(); - } - } 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 049e30bb..e8a4f6ba 100644 --- a/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java +++ b/src/main/java/org/springframework/data/gemfire/wan/GatewaySenderFactoryBean.java @@ -23,16 +23,15 @@ 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.springframework.context.SmartLifecycle; +import org.springframework.beans.factory.FactoryBean; +import org.springframework.data.gemfire.util.CollectionUtils; import org.springframework.util.Assert; -import org.springframework.util.CollectionUtils; /** - * FactoryBean for creating a parallel or serial GemFire {@link GatewaySender}. + * Spring {@link FactoryBean} for creating a parallel or serial GemFire {@link GatewaySender}. * * @author David Turanski * @author John Blum - * @see org.springframework.context.SmartLifecycle * @see org.springframework.data.gemfire.wan.AbstractWANComponentFactoryBean * @see org.apache.geode.cache.Cache * @see org.apache.geode.cache.wan.GatewaySender @@ -40,8 +39,7 @@ import org.springframework.util.CollectionUtils; * @since 1.2.2 */ @SuppressWarnings("unused") -public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean - implements SmartLifecycle { +public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean { private boolean manualStart = false; @@ -73,25 +71,19 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean getObjectType() { - return (gatewaySender != null ? gatewaySender.getClass() : GatewaySender.class); - } - + /** + * @inheritDoc + */ @Override protected void doInit() { GatewaySenderFactory gatewaySenderFactory = (this.factory != null ? (GatewaySenderFactory) factory @@ -125,17 +117,15 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean getObjectType() { + return (gatewaySender != null ? gatewaySender.getClass() : GatewaySender.class); + } + public void setAlertThreshold(Integer alertThreshold) { this.alertThreshold = alertThreshold; } @@ -278,64 +282,4 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean gatewayTransportFilters) { this.transportFilters = gatewayTransportFilters; } - - /* - * (non-Javadoc) - * @see org.springframework.context.SmartLifecycle#isAutoStartup() - */ - @Override - public boolean isAutoStartup() { - return !manualStart; - } - - /* - * (non-Javadoc) - * @see org.springframework.context.Phased#getPhase() - */ - @Override - public int getPhase() { - return Integer.MAX_VALUE; - } - - /* - * (non-Javadoc) - * @see org.springframework.context.Lifecycle#isRunning() - */ - @Override - public boolean isRunning() { - return gatewaySender.isRunning(); - } - - /* - * (non-Javadoc) - * @see org.springframework.context.Lifecycle#start() - */ - @Override - public synchronized void start() { - Assert.notNull(gatewaySender, "The GatewaySender was not properly configured and initialized!"); - - if (!isRunning()){ - gatewaySender.start(); - } - } - - /* - * (non-Javadoc) - * @see org.springframework.context.Lifecycle#stop() - */ - @Override - public void stop() { - gatewaySender.stop(); - } - - /* - * (non-Javadoc) - * @see org.springframework.context.SmartLifecycle#stop(java.lang.Runnable) - */ - @Override - public void stop(Runnable callback) { - stop(); - callback.run(); - } - } diff --git a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverAutoStartNamespaceTest.java b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverAutoStartNamespaceTest.java index 764c0aa7..1be08711 100644 --- a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverAutoStartNamespaceTest.java +++ b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverAutoStartNamespaceTest.java @@ -62,7 +62,6 @@ public class GatewayReceiverAutoStartNamespaceTest { public void testAuto() throws Exception { assertNotNull("The 'Auto' GatewayReceiverFactoryBean was not properly configured and initialized!", autoGatewayReceiverFactory); - assertTrue(autoGatewayReceiverFactory.isAutoStartup()); GatewayReceiver autoGatewayReceiver = autoGatewayReceiverFactory.getObject(); diff --git a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverDefaultStartNamespaceTest.java b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverDefaultStartNamespaceTest.java index ce71763b..f307b960 100644 --- a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverDefaultStartNamespaceTest.java +++ b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverDefaultStartNamespaceTest.java @@ -62,7 +62,6 @@ public class GatewayReceiverDefaultStartNamespaceTest { public void testDefault() throws Exception { assertNotNull("The 'Default' GatewayReceiverFactoryBean was not properly configured and initialized!", defaultGatewayReceiverFactory); - assertTrue(defaultGatewayReceiverFactory.isAutoStartup()); GatewayReceiver defaultGatewayReceiver = defaultGatewayReceiverFactory.getObject(); diff --git a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverManualStartNamespaceTest.java b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverManualStartNamespaceTest.java index db32c201..a7768e4e 100644 --- a/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverManualStartNamespaceTest.java +++ b/src/test/java/org/springframework/data/gemfire/config/xml/GatewayReceiverManualStartNamespaceTest.java @@ -61,7 +61,6 @@ public class GatewayReceiverManualStartNamespaceTest { public void testManual() throws Exception { assertNotNull("The 'Manual' GatewayReceiverFactoryBean was not properly configured and initialized!", manualGatewayReceiverFactory); - assertFalse(manualGatewayReceiverFactory.isAutoStartup()); GatewayReceiver manualGatewayReceiver = manualGatewayReceiverFactory.getObject(); @@ -74,5 +73,4 @@ public class GatewayReceiverManualStartNamespaceTest { assertFalse(manualGatewayReceiver.isRunning()); assertEquals(8192, manualGatewayReceiver.getSocketBufferSize()); } - } diff --git a/src/test/java/org/springframework/data/gemfire/test/StubGatewayReceiverFactory.java b/src/test/java/org/springframework/data/gemfire/test/StubGatewayReceiverFactory.java index 65bc9b78..e8a61a0c 100644 --- a/src/test/java/org/springframework/data/gemfire/test/StubGatewayReceiverFactory.java +++ b/src/test/java/org/springframework/data/gemfire/test/StubGatewayReceiverFactory.java @@ -141,6 +141,7 @@ public class StubGatewayReceiverFactory implements GatewayReceiverFactory { @Override public GatewayReceiverFactory setManualStart(final boolean manualStart) { this.manualStart = manualStart; + this.running = !manualStart; return this; }