/**
* Dianping.com Inc.
* Copyright (c) 2003-2013 All Rights Reserved.
*/
package com.dianping.pigeon.remoting.provider.config.spring;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.dianping.pigeon.log.Logger;
import com.dianping.pigeon.config.ConfigManager;
import com.dianping.pigeon.config.ConfigManagerLoader;
import com.dianping.pigeon.log.LoggerLoader;
import com.dianping.pigeon.remoting.ServiceFactory;
import com.dianping.pigeon.remoting.common.util.Constants;
import com.dianping.pigeon.remoting.provider.config.ProviderConfig;
import com.dianping.pigeon.remoting.provider.config.ServerConfig;
public final class ServiceBean extends ServiceInitializeListener {
private static final Logger logger = LoggerLoader.getLogger(ServiceBean.class);
private boolean publish = true;
private Map<String, Object> services;
private int port = ServerConfig.DEFAULT_PORT;
private int httpPort = ServerConfig.DEFAULT_HTTP_PORT;
private boolean autoSelectPort = true;
private boolean cancelTimeout = Constants.DEFAULT_TIMEOUT_CANCEL;
private ConfigManager configManager = ConfigManagerLoader.getConfigManager();
private int corePoolSize = Constants.PROVIDER_POOL_CORE_SIZE;
private int maxPoolSize = Constants.PROVIDER_POOL_MAX_SIZE;
private int workQueueSize = Constants.PROVIDER_POOL_QUEUE_SIZE;
private boolean enableTest = configManager
.getBooleanValue(Constants.KEY_TEST_ENABLE, Constants.DEFAULT_TEST_ENABLE);
public boolean isCancelTimeout() {
return cancelTimeout;
}
public void setCancelTimeout(boolean cancelTimeout) {
this.cancelTimeout = cancelTimeout;
}
public boolean isEnableTest() {
return enableTest;
}
public void setEnableTest(boolean enableTest) {
this.enableTest = enableTest;
}
public boolean isAutoSelectPort() {
return autoSelectPort;
}
public void setAutoSelectPort(boolean autoSelectPort) {
this.autoSelectPort = autoSelectPort;
}
public int getHttpPort() {
return httpPort;
}
public void setHttpPort(int httpPort) {
// this.httpPort = httpPort;
}
public int getCorePoolSize() {
return corePoolSize;
}
public void setCorePoolSize(int corePoolSize) {
this.corePoolSize = corePoolSize;
}
public int getMaxPoolSize() {
return maxPoolSize;
}
public void setMaxPoolSize(int maxPoolSize) {
this.maxPoolSize = maxPoolSize;
}
public int getWorkQueueSize() {
return workQueueSize;
}
public void setWorkQueueSize(int workQueueSize) {
this.workQueueSize = workQueueSize;
}
public int getPort() {
return port;
}
public void setPort(int port) {
if (port != 4040) {
this.port = port;
}
}
public void init() throws Exception {
ServerConfig serverConfig = new ServerConfig();
serverConfig.setPort(port);
serverConfig.setAutoSelectPort(autoSelectPort);
serverConfig.setCorePoolSize(corePoolSize);
serverConfig.setMaxPoolSize(maxPoolSize);
serverConfig.setWorkQueueSize(workQueueSize);
serverConfig.setEnableTest(enableTest);
List<ProviderConfig<?>> providerConfigList = new ArrayList<ProviderConfig<?>>();
for (String url : services.keySet()) {
ProviderConfig<Object> providerConfig = new ProviderConfig<Object>(services.get(url));
providerConfig.setUrl(url);
providerConfig.setServerConfig(serverConfig);
providerConfig.setCancelTimeout(cancelTimeout);
providerConfigList.add(providerConfig);
}
ServiceFactory.addServices(providerConfigList);
}
/**
* @return the publish
*/
public boolean isPublish() {
return publish;
}
public void setPublish(boolean publish) {
this.publish = publish;
}
public Map<String, Object> getServices() {
return services;
}
public void setServices(Map<String, Object> services) {
this.services = services;
}
}