package com.taobao.tddl.config.impl; import java.util.List; import java.util.Map; import java.util.concurrent.Executor; import com.taobao.tddl.config.ConfigDataHandler; import com.taobao.tddl.config.ConfigDataHandlerFactory; import com.taobao.tddl.config.ConfigDataListener; public class LocalFirstConfigDataHandlerFactory implements ConfigDataHandlerFactory { ConfigDataHandlerFactory delegateFactory = null; private Map<String, String> localValues = null; public LocalFirstConfigDataHandlerFactory(ConfigDataHandlerFactory delegateFactory, Map<String, String> localValues){ this.delegateFactory = delegateFactory; this.localValues = localValues; } @Override public ConfigDataHandler getConfigDataHandler(String dataId) { if (localValues != null && localValues.containsKey(dataId)) { return new StaticConfigDataHandler(localValues.get(dataId)); } return delegateFactory.getConfigDataHandler(dataId); } @Override public ConfigDataHandler getConfigDataHandler(String dataId, ConfigDataListener configDataListener) { if (localValues != null && localValues.containsKey(dataId)) { return new StaticConfigDataHandler(localValues.get(dataId)); } return delegateFactory.getConfigDataHandler(dataId, configDataListener); } @Override public ConfigDataHandler getConfigDataHandler(String dataId, List<ConfigDataListener> configDataListenerList, Executor executor, Map<String, Object> config) { if (localValues != null && localValues.containsKey(dataId)) { return new StaticConfigDataHandler(localValues.get(dataId)); } return delegateFactory.getConfigDataHandler(dataId, configDataListenerList, executor, config); } }