Example #1
0
        private IEnumerable <KeyValuePair <string, ICfgNode> > scanInclude(IConfigNodeProvider source, Context context)
        {
            foreach (var pair in source.Items)
            {
                var configName = pair.Key;

                if (NameComparer.Equals(configName, AppSettingExtensions.IdentitySectionName))
                {
                    continue;
                }

                var configNode = _cfgNodeConverter(configName, pair.Value);
                if (configNode == null)
                {
                    continue;
                }

                List <Include> hadlers;
                if (!_includeHandlers.TryGetValue(configName, out hadlers))
                {
                    yield return(new KeyValuePair <string, ICfgNode>(configName, configNode));

                    continue;
                }

                var includeSettings = hadlers
                                      .Select(_ => _(source, context.Deserializer, configNode, context.SearchPath))
                                      .FirstOrDefault(_ => _ != null);

                if (includeSettings == null)
                {
                    throw new NotSupportedException("any registered handlers returned null");
                }

                var includeSettingsArray = includeSettings.ToArray();
                var includeRequired      = context.Deserializer.Deserialize <RequiredContainConfig>(configNode).Required;

                if (includeRequired && includeSettingsArray.Length == 0)
                {
                    throw new ApplicationException(string.Format("include setting from section '{0}' not found", configName));
                }

                foreach (var cnProvider in includeSettingsArray)
                {
                    if (context.CheckLoaded(cnProvider))
                    {
                        continue;
                    }

                    onLoaded(cnProvider);
                    context.Sources.Add(cnProvider);

                    foreach (var includePair in scanInclude(cnProvider, context))
                    {
                        yield return(includePair);
                    }
                }
            }
        }
Example #2
0
        private ConfigProtectedData tryGetConfig(IConfigNodeProvider nodeProvider)
        {
            foreach (var node in nodeProvider.ByName(typeof(ConfigProtectedData).GetSectionName()))
            {
                return(DefaultDeserializer.Instance.Deserialize <ConfigProtectedData>(node));
            }

            return(null);
        }
Example #3
0
        private void onFindingSettings(IConfigNodeProvider source, IncludeFileConfig cfg, string searchPath)
        {
            var copy = FindingSettings;

            if (copy != null)
            {
                copy(this, new FindingSettingsArgs(source, cfg, searchPath));
            }
        }
Example #4
0
		public static FileChecker TryCreate(IConfigNodeProvider nodeProvider, ReadedFileInfo fileInfo)
		{
			var node = nodeProvider.ByName(ConfigSectionName).FirstOrDefault();
			if (node == null)
				return null;

			var cfg = DefaultDeserializer.Instance.Deserialize<WatchFileConfig>(node);
			return TryCreate(fileInfo, cfg.Mode, cfg.Delay, cfg.Check.GetValueOrDefault(CheckMode.All));
		}
        internal static string GetIdentitySource(this IConfigNodeProvider nodeProvider, string defaultIdentity)
        {
            foreach (var node in nodeProvider.ByName(IdentitySectionName))
            {
                return(node.Text);
            }

            return(defaultIdentity);
        }
Example #6
0
        public IEnumerable <IIdentifiedSource> TryLoad(IConfigNodeProvider owner, IncludeFileConfig cfg, string searchPath)
        {
            var filePath = cfg.Path;

            if (_validExtensions.Count != 0 && !_validExtensions.Contains(Path.GetExtension(filePath)))
            {
                yield break;
            }

            if (Path.IsPathRooted(filePath))
            {
                onFindingSettings(owner, cfg, null);

                if (!File.Exists(filePath) && !cfg.Required)
                {
                    yield break;
                }

                yield return(_creater(filePath));

                yield break;
            }

            var basePath = selectBasePath(owner as IFilePathOwner, searchPath, ref filePath);

            onFindingSettings(owner, cfg, basePath);
            var found = searchSettings(basePath, filePath, cfg.Search);

            if (found.Count == 0)
            {
                if (cfg.Required)
                {
                    throw new ApplicationException(string.Format("configuration file '{0}' not found in '{1}'", filePath, basePath));
                }

                yield break;
            }

            if (cfg.Include == IncludeMode.First)
            {
                yield return(found.First());
            }
            else if (cfg.Include == IncludeMode.Last)
            {
                yield return(found.Last());
            }
            else
            {
                foreach (var item in found)
                {
                    yield return(item);
                }
            }
        }
Example #7
0
        public ProviderLoader TryLoadAppSettings(IConfigNodeProvider provider)
        {
            var cfg = tryGetConfig(provider);

            if (cfg != null)
            {
                loadConfig(cfg);
            }

            return(this);
        }
Example #8
0
        public static FileChecker TryCreate(IConfigNodeProvider nodeProvider, ReadedFileInfo fileInfo)
        {
            var node = nodeProvider.ByName(ConfigSectionName).FirstOrDefault();

            if (node == null)
            {
                return(null);
            }

            var cfg = DefaultDeserializer.Instance.Deserialize <WatchFileConfig>(node);

            return(TryCreate(fileInfo, cfg.Mode, cfg.Delay, cfg.Check.GetValueOrDefault(CheckMode.All)));
        }
Example #9
0
            public Result(IConfigNodeProvider joined, IReadOnlyList <IIdentifiedSource> sources)
#endif
            {
                Joined  = joined;
                Sources = sources;
            }
Example #10
0
 public Result(IConfigNodeProvider joined, IList <IIdentifiedSource> sources)
Example #11
0
        private ConfigProtectedData tryGetConfig(IConfigNodeProvider nodeProvider)
        {
            foreach (var node in nodeProvider.ByName(typeof(ConfigProtectedData).GetSectionName()))
                return DefaultDeserializer.Instance.Deserialize<ConfigProtectedData>(node);

            return null;
        }
Example #12
0
        public ProviderLoader TryLoadAppSettings(IConfigNodeProvider provider)
        {
            var cfg = tryGetConfig(provider);
            if (cfg != null)
                loadConfig(cfg);

            return this;
        }
Example #13
0
 public FindingSettingsArgs(IConfigNodeProvider source, IncludeFileConfig cfg, string searchPath)
 {
     Source      = source;
     IncludeFile = cfg;
     SearchPath  = searchPath;
 }
Example #14
0
 public FindingSettingsArgs(IConfigNodeProvider source, IncludeFileConfig cfg, string searchPath)
 {
     Source = source;
     IncludeFile = cfg;
     SearchPath = searchPath;
 }
Example #15
0
 public AppSettings(IConfigNodeProvider nodeProvider, IDeserializer deserializer, ICombiner combiner)
 {
     _nodeProvider = nodeProvider;
     _deserializer = deserializer;
     _combiner     = combiner;
 }
Example #16
0
 public AppSettings(IConfigNodeProvider nodeProvider)
     : this(nodeProvider, DefaultDeserializer.Instance, DefaultCombiner.Instance)
 {
 }