package org.distributeme.core;
import org.configureme.ConfigurationManager;
import org.configureme.annotations.ConfigureMe;
import org.distributeme.core.concurrencycontrol.ConcurrencyControlStrategy;
import org.distributeme.core.concurrencycontrol.UnlimitedConcurrencyStrategy;
import org.distributeme.core.failing.DefaultFailingStrategy;
import org.distributeme.core.failing.FailingStrategy;
/**
* This class provides methods for runtime overriding of the default behaviour.
*
* @author lrosenberg
* @version $Id: $Id
*/
public class Defaults {
/**
* The config.
*/
private static DefaultsConfiguration config;
static{
config = new DefaultsConfiguration();
try{
ConfigurationManager.INSTANCE.configure(config);
}catch(Exception ignored){
//falling back to defaults
}
}
/**
* Returns the default failing strategy.
*
* @return a {@link org.distributeme.core.failing.FailingStrategy} object.
*/
public static final FailingStrategy getDefaultFailingStrategy(){
return new DefaultFailingStrategy();
}
/**
* <p>getDefaultConcurrencyControlStrategy.</p>
*
* @return a {@link org.distributeme.core.concurrencycontrol.ConcurrencyControlStrategy} object.
*/
public static final ConcurrencyControlStrategy getDefaultConcurrencyControlStrategy(){
return new UnlimitedConcurrencyStrategy();
}
/**
* <p>getDefaultAsynchCallTimeout.</p>
*
* @return a long.
*/
public static final long getDefaultAsynchCallTimeout(){
return config.getDefaultAsynchCallTimeout();
}
/**
* <p>getAsynchExecutorPoolSize.</p>
*
* @return a int.
*/
public static final int getAsynchExecutorPoolSize(){
return config.getAsynchExecutorPoolSize();
}
/**
* Inner configuration holder class.
* @author lrosenberg
*
*/
@ConfigureMe(allfields=true, name="distributeme")
public static class DefaultsConfiguration{
/**
* The name of the default failing strategy.
*/
private String defaultFailingStrategyClassName;
/**
* The name of the default concurrency control strategy. If no name specified, org.distributeme.core.concurrencycontrol.UnlimitedConcurrencyStrategy is used.
*/
private String defaultConcurrencyControlStrategyClassName;
/**
* Default timeout for asynchronous calls.
*/
private long defaultAsynchCallTimeout = 10000L;
/**
* Default number of thread in the asynch executor, which are used in asynch stubs.
*/
private int asynchExecutorPoolSize = 50;
public String getDefaultFailingStrategyClassName() {
return defaultFailingStrategyClassName;
}
public void setDefaultFailingStrategyClassName(
String defaultFailingStrategyClassName) {
this.defaultFailingStrategyClassName = defaultFailingStrategyClassName;
}
public String getDefaultConcurrencyControlStrategyClassName() {
return defaultConcurrencyControlStrategyClassName;
}
public void setDefaultConcurrencyControlStrategyClassName(
String defaultConcurrencyControlStrategyClassName) {
this.defaultConcurrencyControlStrategyClassName = defaultConcurrencyControlStrategyClassName;
}
public long getDefaultAsynchCallTimeout() {
return defaultAsynchCallTimeout;
}
public void setDefaultAsynchCallTimeout(long defaultAsynchCallTimeout) {
this.defaultAsynchCallTimeout = defaultAsynchCallTimeout;
}
public int getAsynchExecutorPoolSize() {
return asynchExecutorPoolSize;
}
public void setAsynchExecutorPoolSize(int asynchExecutorPoolSize) {
this.asynchExecutorPoolSize = asynchExecutorPoolSize;
}
}
}