package io.mycat.server.config.loader.zkloader;
import com.alibaba.fastjson.JSON;
import io.mycat.server.config.loader.SystemLoader;
import io.mycat.server.config.node.SystemConfig;
import org.apache.curator.framework.CuratorFramework;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* <p>
* load system configuration from Zookeeper.
* </p>
* Created by v1.lion on 2015/9/27.
*/
public class ZkSystemConfigLoader extends AbstractZKLoaders implements SystemLoader {
//directory name of server config in zookeeper
protected static final String SERVER_CONFIG_DIRECTORY = "server-config";
private static final Logger LOGGER = LoggerFactory.getLogger(ZkSystemConfigLoader.class);
//directory name of system config in zookeeper
private static final String SYSTEM_DIRECTORY = "system";
private SystemConfig systemConfig;
public ZkSystemConfigLoader(final String clusterID) {
super(clusterID, SERVER_CONFIG_DIRECTORY);
}
@Override
public void fetchConfig(CuratorFramework zkConnection) {
//system config path in zookeeper
//example: /mycat-cluster-1 /server-config/system
this.systemConfig = JSON.parseObject(super.fetchData(zkConnection, SYSTEM_DIRECTORY)
, SystemConfig.class);
LOGGER.trace("done system config from zookeeper : {}", systemConfig);
}
public SystemConfig getSystemConfig() {
return this.systemConfig;
}
}