Configuration System Initialization Process

来源:互联网 发布:软件测试加班 编辑:程序博客网 时间:2024/05/18 11:02

When open a graph, we need to pass a configuration file.

    public static HugeGraph open(String shortcutOrFile) {        return open(getLocalConfiguration(shortcutOrFile));    }
private static ReadConfiguration getLocalConfiguration(String shortcutOrFile) {        File file = new File(shortcutOrFile);        if (file.exists()) return getLocalConfiguration(file);        else {          // ...        }    }
private static ReadConfiguration getLocalConfiguration(File file) {            PropertiesConfiguration configuration = new PropertiesConfiguration(file);           // ...             return new CommonsConfiguration(configuration);    }

PropertiesConfiguration is a class in apache common jar, we do not delve into it in order to reduce complexity.

Then pass the PropertiesConfiguration object to GraphDatabaseConfiguration.

  public static HugeGraph open(ReadConfiguration configuration) {        return new StandardHugeGraph(new GraphDatabaseConfiguration(configuration));    }

The constructor mehtod of GraphDatabaseConfiguration.

public GraphDatabaseConfiguration(ReadConfiguration localConfig) {         this.configurationAtOpen = localConfig;         BasicConfiguration localbc = new BasicConfiguration(ROOT_NS,localConfig, BasicConfiguration.Restriction.NONE);        ModifiableConfiguration overwrite = new ModifiableConfiguration(ROOT_NS,new CommonsConfiguration(), BasicConfiguration.Restriction.NONE);//...    }
  • BasicConfiguration localbc = new BasicConfiguration(ROOT_NS,localConfig, BasicConfiguration.Restriction.NONE);
    The definition of BasicConfiguration.Restriction.
  public enum Restriction { LOCAL, GLOBAL, NONE }
public BasicConfiguration(ConfigNamespace root, ReadConfiguration config, Restriction restriction) {        super(root);        Preconditions.checkNotNull(config);        Preconditions.checkNotNull(restriction);        this.config = config;        this.restriction = restriction;    }

super(root) call the constructor method of AbstractConfiguration.

 protected AbstractConfiguration(ConfigNamespace root) {        Preconditions.checkNotNull(root);        Preconditions.checkArgument(!root.isUmbrella(),"Root cannot be an umbrella namespace");        this.root = root;    }

KCVSConfiguration

KCVSConfiguration kcvsConfig=Backend.getStandaloneGlobalConfiguration(storeManager,localbc);...globalConfig = kcvsConfig.asReadConfiguration();

ModifiableConfiguration overwrite Introduction

 Configuration combinedConfig = new MixedConfiguration(ROOT_NS,globalConfig,localConfig); ... this.configuration = new MergedConfiguration(overwrite,combinedConfig);  preLoadConfiguration();

MixedConfiguration Introduction
MergedConfiguration
preLoadConfiguration()
The configuration initialize is over.

The architecture of config
MergedConfiguration


  1. overwrite: dynamic generated runtime information like graph uuid
  2. combinedConfig

    1. globalConfig
    2. localConfig

0 0
原创粉丝点击