SGF-199 fixed GatewaySender manual-start
This commit is contained in:
@@ -24,6 +24,7 @@ import org.springframework.beans.factory.DisposableBean;
|
||||
import org.springframework.context.SmartLifecycle;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.data.gemfire.client.ClientRegionFactoryBean;
|
||||
import org.springframework.data.gemfire.wan.GatewaySenderWrapper;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
@@ -47,12 +48,12 @@ import com.gemstone.gemfire.cache.wan.GatewaySender;
|
||||
* Base class for FactoryBeans used to create GemFire {@link Region}s. Will try
|
||||
* to first locate the region (by name) and, in case none if found, proceed to
|
||||
* creating one using the given settings.
|
||||
*
|
||||
*
|
||||
* Note that this factory bean allows for very flexible creation of GemFire
|
||||
* {@link Region}. For "client" regions however, see
|
||||
* {@link ClientRegionFactoryBean} which offers easier configuration and
|
||||
* defaults.
|
||||
*
|
||||
*
|
||||
* @author Costin Leau
|
||||
* @author David Turanski
|
||||
*/
|
||||
@@ -113,7 +114,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
AttributesFactory.validateAttributes(attributes);
|
||||
|
||||
final RegionFactory<K, V> regionFactory = (attributes != null ? c.createRegionFactory(attributes) : c
|
||||
.<K, V> createRegionFactory());
|
||||
.<K, V> createRegionFactory());
|
||||
|
||||
if (hubId != null) {
|
||||
enableGateway = enableGateway == null ? true : enableGateway;
|
||||
@@ -223,7 +224,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* of this factory bean during the initialization process. The object is
|
||||
* already initialized and configured by the factory bean before this method
|
||||
* is invoked.
|
||||
*
|
||||
*
|
||||
* @param attrFactory attribute factory
|
||||
* @deprecated as of GemFire 6.5, the use of {@link AttributesFactory} has
|
||||
* been deprecated
|
||||
@@ -236,7 +237,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Post-process the region object for this factory bean during the
|
||||
* initialization process. The object is already initialized and configured
|
||||
* by the factory bean before this method is invoked.
|
||||
*
|
||||
*
|
||||
* @param region
|
||||
*/
|
||||
protected void postProcess(Region<K, V> region) {
|
||||
@@ -255,7 +256,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
// nothing to see folks, move on.
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} if (destroy) {
|
||||
region.destroyRegion();
|
||||
region = null;
|
||||
@@ -283,7 +284,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Sets the snapshots used for loading a newly <i>created</i> region. That
|
||||
* is, the snapshot will be used <i>only</i> when a new region is created -
|
||||
* if the region already exists, no loading will be performed.
|
||||
*
|
||||
*
|
||||
* @see #setName(String)
|
||||
* @param snapshot the snapshot to set
|
||||
*/
|
||||
@@ -295,7 +296,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Sets the cache listeners used for the region used by this factory. Used
|
||||
* only when a new region is created.Overrides the settings specified
|
||||
* through {@link #setAttributes(RegionAttributes)}.
|
||||
*
|
||||
*
|
||||
* @param cacheListeners the cacheListeners to set on a newly created region
|
||||
*/
|
||||
public void setCacheListeners(CacheListener<K, V>[] cacheListeners) {
|
||||
@@ -306,7 +307,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Sets the cache loader used for the region used by this factory. Used only
|
||||
* when a new region is created.Overrides the settings specified through
|
||||
* {@link #setAttributes(RegionAttributes)}.
|
||||
*
|
||||
*
|
||||
* @param cacheLoader the cacheLoader to set on a newly created region
|
||||
*/
|
||||
public void setCacheLoader(CacheLoader<K, V> cacheLoader) {
|
||||
@@ -317,7 +318,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Sets the cache writer used for the region used by this factory. Used only
|
||||
* when a new region is created. Overrides the settings specified through
|
||||
* {@link #setAttributes(RegionAttributes)}.
|
||||
*
|
||||
*
|
||||
* @param cacheWriter the cacheWriter to set on a newly created region
|
||||
*/
|
||||
public void setCacheWriter(CacheWriter<K, V> cacheWriter) {
|
||||
@@ -327,7 +328,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
/**
|
||||
* Sets the region scope. Used only when a new region is created. Overrides
|
||||
* the settings specified through {@link #setAttributes(RegionAttributes)}.
|
||||
*
|
||||
*
|
||||
* @see Scope
|
||||
* @param scope the region scope
|
||||
*/
|
||||
@@ -357,7 +358,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param gatewaySenders defined as Object for backward compatibility with
|
||||
* Gemfire 6
|
||||
*/
|
||||
@@ -366,7 +367,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param asyncEventQueues defined as Object for backward compatibility with
|
||||
* Gemfire 6
|
||||
*/
|
||||
@@ -386,7 +387,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
* Sets the region attributes used for the region used by this factory.
|
||||
* Allows maximum control in specifying the region settings. Used only when
|
||||
* a new region is created.
|
||||
*
|
||||
*
|
||||
* @param attributes the attributes to set on a newly created region
|
||||
*/
|
||||
public void setAttributes(RegionAttributes<K, V> attributes) {
|
||||
@@ -406,12 +407,14 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
|
||||
*/
|
||||
@Override
|
||||
public void start() {
|
||||
|
||||
|
||||
if (!ObjectUtils.isEmpty(gatewaySenders)) {
|
||||
synchronized (gatewaySenders) {
|
||||
for (Object obj : gatewaySenders) {
|
||||
GatewaySender gws = (GatewaySender) obj;
|
||||
System.out.println("manual start = " + gws.isManualStart());
|
||||
if (!gws.isManualStart() && !gws.isRunning()) {
|
||||
System.out.println("starting ...");
|
||||
gws.start();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,7 @@ package org.springframework.data.gemfire.wan;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.context.SmartLifecycle;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
@@ -32,7 +33,7 @@ import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
|
||||
/**
|
||||
* FactoryBean for creating a GemFire {@link GatewaySender}.
|
||||
* @author David Turanski
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean<GatewaySender>
|
||||
implements SmartLifecycle {
|
||||
@@ -75,7 +76,7 @@ implements SmartLifecycle {
|
||||
private Integer socketReadTimeout;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param cache the Gemfire cache
|
||||
*/
|
||||
public GatewaySenderFactoryBean(Cache cache) {
|
||||
@@ -153,9 +154,9 @@ implements SmartLifecycle {
|
||||
if (dispatcherThreads != null) {
|
||||
gatewaySenderFactory.setDispatcherThreads(dispatcherThreads);
|
||||
}
|
||||
|
||||
|
||||
gatewaySenderFactory.setManualStart(true);
|
||||
|
||||
|
||||
if (maximumQueueMemory != null) {
|
||||
gatewaySenderFactory.setMaximumQueueMemory(maximumQueueMemory);
|
||||
}
|
||||
@@ -165,7 +166,9 @@ implements SmartLifecycle {
|
||||
if (socketReadTimeout != null) {
|
||||
gatewaySenderFactory.setSocketReadTimeout(socketReadTimeout);
|
||||
}
|
||||
gatewaySender = gatewaySenderFactory.create(getName(), remoteDistributedSystemId);
|
||||
GatewaySenderWrapper wrapper = new GatewaySenderWrapper(gatewaySenderFactory.create(getName(), remoteDistributedSystemId));
|
||||
wrapper.setManualStart(manualStart);
|
||||
gatewaySender = wrapper;
|
||||
}
|
||||
|
||||
public void setRemoteDistributedSystemId(int remoteDistributedSystemId) {
|
||||
|
||||
@@ -0,0 +1,154 @@
|
||||
package org.springframework.data.gemfire.wan;
|
||||
|
||||
import com.gemstone.gemfire.cache.util.Gateway;
|
||||
import com.gemstone.gemfire.cache.wan.GatewayEventFilter;
|
||||
import com.gemstone.gemfire.cache.wan.GatewaySender;
|
||||
import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by dturanski on 9/16/13.
|
||||
*/
|
||||
public class GatewaySenderWrapper implements GatewaySender {
|
||||
private final GatewaySender delegate;
|
||||
private boolean manualStart;
|
||||
|
||||
public GatewaySenderWrapper(GatewaySender delegate) {
|
||||
this.delegate = delegate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start() {
|
||||
delegate.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
delegate.stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void pause() {
|
||||
delegate.pause();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void resume() {
|
||||
delegate.resume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRunning() {
|
||||
return delegate.isRunning();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPaused() {
|
||||
return delegate.isPaused();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addGatewayEventFilter(GatewayEventFilter filter) {
|
||||
delegate.addGatewayEventFilter(filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeGatewayEventFilter(GatewayEventFilter filter) {
|
||||
delegate.removeGatewayEventFilter(filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return delegate.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getRemoteDSId() {
|
||||
return delegate.getRemoteDSId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSocketBufferSize() {
|
||||
return delegate.getSocketBufferSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSocketReadTimeout() {
|
||||
return delegate.getSocketReadTimeout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDiskStoreName() {
|
||||
return delegate.getDiskStoreName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaximumQueueMemory() {
|
||||
return delegate.getMaximumQueueMemory();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBatchSize() {
|
||||
return delegate.getBatchSize();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBatchTimeInterval() {
|
||||
return delegate.getBatchTimeInterval();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBatchConflationEnabled() {
|
||||
return delegate.isBatchConflationEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPersistenceEnabled() {
|
||||
return delegate.isPersistenceEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAlertThreshold() {
|
||||
return delegate.getAlertThreshold();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GatewayEventFilter> getGatewayEventFilters() {
|
||||
return delegate.getGatewayEventFilters();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<GatewayTransportFilter> getGatewayTransportFilters() {
|
||||
return delegate.getGatewayTransportFilters();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDiskSynchronous() {
|
||||
return delegate.isDiskSynchronous();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isManualStart() {
|
||||
return this.manualStart;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isParallel() {
|
||||
return delegate.isParallel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDispatcherThreads() {
|
||||
return delegate.getDispatcherThreads();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Gateway.OrderPolicy getOrderPolicy() {
|
||||
return delegate.getOrderPolicy();
|
||||
}
|
||||
|
||||
public void setManualStart(boolean manualStart) {
|
||||
this.manualStart = manualStart;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user