removed SmartLifecycleGatewaySender and added SmartLifecycle to GatewaySenderFactoryBean

This commit is contained in:
David Turanski
2013-01-25 12:51:52 -05:00
parent 0068d1be9a
commit b4bfda1b9b
4 changed files with 65 additions and 285 deletions

View File

@@ -24,7 +24,6 @@ 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.SmartLifecycleGatewaySender;
import org.springframework.util.Assert;
import org.springframework.util.ObjectUtils;
import org.springframework.util.ReflectionUtils;
@@ -425,8 +424,8 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
if (!ObjectUtils.isEmpty(gatewaySenders)) {
synchronized (gatewaySenders) {
for (Object obj : gatewaySenders) {
SmartLifecycleGatewaySender gws = (SmartLifecycleGatewaySender) obj;
if (gws.isAutoStartup() && !gws.isRunning()) {
GatewaySender gws = (GatewaySender) obj;
if (!gws.isManualStart() && !gws.isRunning()) {
gws.start();
}
}
@@ -443,7 +442,7 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
if (!ObjectUtils.isEmpty(gatewaySenders)) {
synchronized (gatewaySenders) {
for (Object obj : gatewaySenders) {
SmartLifecycleGatewaySender gws = (SmartLifecycleGatewaySender) obj;
GatewaySender gws = (GatewaySender) obj;
gws.stop();
}
}
@@ -483,5 +482,4 @@ public class RegionFactoryBean<K, V> extends RegionLookupFactoryBean<K, V> imple
stop();
callback.run();
}
}

View File

@@ -49,6 +49,12 @@ public class AsyncEventQueueParser extends AbstractSingleBeanDefinitionParser {
ParsingUtils.setPropertyValue(element, builder, "batch-size");
ParsingUtils.setPropertyValue(element, builder, "maximum-queue-memory");
ParsingUtils.setPropertyValue(element, builder, "disk-store-ref");
String diskStoreRef = element.getAttribute("disk-store-ref");
if (StringUtils.hasText(diskStoreRef)) {
builder.addDependsOn(diskStoreRef);
}
ParsingUtils.setPropertyValue(element, builder, "persistent");
ParsingUtils.setPropertyValue(element, builder, "parallel");
ParsingUtils.setPropertyValue(element, builder, NAME_ATTRIBUTE);

View File

@@ -18,6 +18,7 @@ package org.springframework.data.gemfire.wan;
import java.util.Arrays;
import java.util.List;
import org.springframework.context.SmartLifecycle;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
@@ -33,7 +34,8 @@ import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
* @author David Turanski
*
*/
public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean<GatewaySender> {
public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean<GatewaySender>
implements SmartLifecycle {
private static List<String> validOrderPolicyValues = Arrays.asList("KEY", "PARTITION", "THREAD");
private GatewaySender gatewaySender;
@@ -82,12 +84,12 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean<Ga
@Override
public GatewaySender getObject() throws Exception {
return new SmartLifecycleGatewaySender(gatewaySender, !manualStart);
return gatewaySender;
}
@Override
public Class<?> getObjectType() {
return SmartLifecycleGatewaySender.class;
return GatewaySender.class;
}
@Override
@@ -233,4 +235,55 @@ public class GatewaySenderFactoryBean extends AbstractWANComponentFactoryBean<Ga
public void setSocketReadTimeout(Integer socketReadTimeout) {
this.socketReadTimeout = socketReadTimeout;
}
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#start()
*/
@Override
public synchronized void start() {
if (!gatewaySender.isRunning()){
gatewaySender.start();
}
}
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#stop()
*/
@Override
public void stop() {
gatewaySender.stop();
}
/* (non-Javadoc)
* @see org.springframework.context.Lifecycle#isRunning()
*/
@Override
public boolean isRunning() {
return gatewaySender.isRunning();
}
/* (non-Javadoc)
* @see org.springframework.context.Phased#getPhase()
*/
@Override
public int getPhase() {
return Integer.MAX_VALUE;
}
/* (non-Javadoc)
* @see org.springframework.context.SmartLifecycle#isAutoStartup()
*/
@Override
public boolean isAutoStartup() {
return !manualStart;
}
/* (non-Javadoc)
* @see org.springframework.context.SmartLifecycle#stop(java.lang.Runnable)
*/
@Override
public void stop(Runnable callback) {
stop();
callback.run();
}
}

View File

@@ -1,277 +0,0 @@
/*
* Copyright 2002-2013 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.springframework.data.gemfire.wan;
import java.util.List;
import org.springframework.context.SmartLifecycle;
import org.springframework.util.Assert;
import com.gemstone.gemfire.cache.util.Gateway.OrderPolicy;
import com.gemstone.gemfire.cache.wan.GatewayEventFilter;
import com.gemstone.gemfire.cache.wan.GatewaySender;
import com.gemstone.gemfire.cache.wan.GatewayTransportFilter;
/**
* A {@link GatewaySender} controlled by {@link SmartLifecycle}
* @author David Turanski
*
*/
public class SmartLifecycleGatewaySender implements GatewaySender, SmartLifecycle {
private final GatewaySender delegate;
private final boolean autoStartup;
public SmartLifecycleGatewaySender(GatewaySender delegate, boolean autoStartup) {
Assert.notNull(delegate);
this.delegate = delegate;
this.autoStartup = autoStartup;
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#addGatewayEventFilter(com.gemstone.gemfire.cache.wan.GatewayEventFilter)
*/
@Override
public void addGatewayEventFilter(GatewayEventFilter eventFilter) {
this.delegate.addGatewayEventFilter(eventFilter);
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getAlertThreshold()
*/
@Override
public int getAlertThreshold() {
return this.delegate.getAlertThreshold();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getBatchSize()
*/
@Override
public int getBatchSize() {
return this.delegate.getBatchSize();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getBatchTimeInterval()
*/
@Override
public int getBatchTimeInterval() {
return this.delegate.getBatchTimeInterval();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getDiskStoreName()
*/
@Override
public String getDiskStoreName() {
return this.delegate.getDiskStoreName();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getDispatcherThreads()
*/
@Override
public int getDispatcherThreads() {
return this.delegate.getDispatcherThreads();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getGatewayEventFilters()
*/
@Override
public List<GatewayEventFilter> getGatewayEventFilters() {
return this.delegate.getGatewayEventFilters();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getGatewayTransportFilters()
*/
@Override
public List<GatewayTransportFilter> getGatewayTransportFilters() {
return this.delegate.getGatewayTransportFilters();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getId()
*/
@Override
public String getId() {
return this.delegate.getId();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getMaximumQueueMemory()
*/
@Override
public int getMaximumQueueMemory() {
return this.delegate.getMaximumQueueMemory();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getOrderPolicy()
*/
@Override
public OrderPolicy getOrderPolicy() {
return this.delegate.getOrderPolicy();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getRemoteDSId()
*/
@Override
public int getRemoteDSId() {
return this.delegate.getRemoteDSId();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getSocketBufferSize()
*/
@Override
public int getSocketBufferSize() {
return this.delegate.getSocketBufferSize();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#getSocketReadTimeout()
*/
@Override
public int getSocketReadTimeout() {
return this.delegate.getSocketReadTimeout();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isBatchConflationEnabled()
*/
@Override
public boolean isBatchConflationEnabled() {
return this.delegate.isBatchConflationEnabled();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isDiskSynchronous()
*/
@Override
public boolean isDiskSynchronous() {
return this.delegate.isDiskSynchronous();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isManualStart()
*/
@Override
public boolean isManualStart() {
return true;
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isParallel()
*/
@Override
public boolean isParallel() {
return this.delegate.isParallel();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isPaused()
*/
@Override
public boolean isPaused() {
return this.delegate.isPaused();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isPersistenceEnabled()
*/
@Override
public boolean isPersistenceEnabled() {
return this.delegate.isPersistenceEnabled();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#isRunning()
*/
@Override
public boolean isRunning() {
return this.delegate.isRunning();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#pause()
*/
@Override
public void pause() {
this.delegate.pause();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#removeGatewayEventFilter(com.gemstone.gemfire.cache.wan.GatewayEventFilter)
*/
@Override
public void removeGatewayEventFilter(GatewayEventFilter eventFilter) {
this.delegate.removeGatewayEventFilter(eventFilter);
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#resume()
*/
@Override
public void resume() {
this.delegate.resume();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#start()
*/
@Override
public void start() {
this.delegate.start();
}
/* (non-Javadoc)
* @see com.gemstone.gemfire.cache.wan.GatewaySender#stop()
*/
@Override
public void stop() {
this.delegate.stop();
}
/* (non-Javadoc)
* @see org.springframework.context.Phased#getPhase()
*/
@Override
public int getPhase() {
return Integer.MAX_VALUE;
}
/* (non-Javadoc)
* @see org.springframework.context.SmartLifecycle#isAutoStartup()
*/
@Override
public boolean isAutoStartup() {
return this.autoStartup ;
}
/* (non-Javadoc)
* @see org.springframework.context.SmartLifecycle#stop(java.lang.Runnable)
*/
@Override
public void stop(Runnable callback) {
stop();
callback.run();
}
}