protected DefaultAppConfig load() { init(); //===properties==== //load local properties loadLocalProperties(new ConfigContext(this, false, true)); //load external properties. loadExternalProperties(new ConfigContext(this, false, true)); //===config==== ConfigContext context = new ConfigContext(this, false, false); // pre load configuration configListeners.forEach(listener -> listener.preLoadConfig(context, context)); //Load configuration. loadConfig(context); //post load configuration configListeners.forEach(listener -> listener.postLoadConfig(context)); //complete loading configuration. complete(); configListeners.forEach(listener -> listener.completeLoadConfig(config)); return config; }
@Override public void putProperties(Object source, Map<String, String> props) { if(null != props) { props.forEach((k,v) -> putProperty(source, k, v)); } }
protected void loadProperties(ConfigContext context, AppResource... resources) { for(AppResource ar : resources){ try{ Resource resource = ar.getResource(); String resourceUrl = resource.getURL().toString(); if(log.isDebugEnabled()){ if(AppResources.isFrameworkAndCoreResource(resourceUrl)) { log.trace("Load properties : {}", LogUtils.getUrl(resource)); }else{ log.debug("Load properties : {}", LogUtils.getUrl(resource)); } } if(context.resources.contains(resourceUrl)){ throw new AppConfigException("Cycle importing detected of '" + resourceUrl + "', please check your config : " + resourceUrl); } context.resources.add(resourceUrl); context.setDefaultOverride(ar.isDefaultOverride()); for(AppPropertyReader reader : propertyReaders) { if(reader.readProperties(context, resource)) { break; } } context.resetDefaultOverride(); }catch(IOException e) { throw new AppConfigException("I/O Exception",e); } } }
private void loadConfig(ConfigContext context, AppResource... resources){ for(AppResource ar : resources){ try{ Resource resource = ar.getResource(); String resourceUrl = resource.getURL().toString(); if(log.isDebugEnabled()){ if(AppResources.isFrameworkAndCoreResource(resourceUrl)) { log.trace("Load config : {}", LogUtils.getUrl(resource)); }else{ log.debug("Load config : {}", LogUtils.getUrl(resource)); } } if(context.resources.contains(resourceUrl)){ throw new AppConfigException("Cycle importing detected of '" + resourceUrl + "', please check your config : " + resourceUrl); } context.resources.add(resourceUrl); context.setDefaultOverride(ar.isDefaultOverride()); for(AppConfigReader reader : configReaders) { if(reader.readConfig(context, resource)) { break; } } context.resetDefaultOverride(); }catch(IOException e) { throw new AppConfigException("I/O Exception",e); } } }
@Override public void putProperty(Object source, String name, String value) { putProperty(source, name, value, false); }
@Override public void importResource(Resource resource, boolean override) { AppResource ar = new SimpleAppResource(resource, override); if(forProperty) { loadProperties(new ConfigContext(loader, override, true), ar); }else{ loadConfig(new ConfigContext(loader, override, false), ar); } }