diff --git a/src/Core/WinSWCore/Configuration/YamlConfiguration.cs b/src/Core/WinSWCore/Configuration/YamlConfiguration.cs index 10e41d3..8356c32 100644 --- a/src/Core/WinSWCore/Configuration/YamlConfiguration.cs +++ b/src/Core/WinSWCore/Configuration/YamlConfiguration.cs @@ -654,12 +654,12 @@ namespace WinSW.Configuration return result; } - var extensionConfigListObject = new ObjectQuery(extensions).ToList(); + var extensionConfigListObject = new ObjectQuery(extensions).AsList(); foreach (var item in extensionConfigListObject) { var configObject = new ObjectQuery(item); - var id = configObject.On("id").ToString(); + var id = configObject.On("id").AsString(); result.Add(id); } diff --git a/src/Core/WinSWCore/Extensions/ExtensionConfigurationProvider.cs b/src/Core/WinSWCore/Extensions/ExtensionConfigurationProvider.cs index 11e12aa..f2f8e1d 100644 --- a/src/Core/WinSWCore/Extensions/ExtensionConfigurationProvider.cs +++ b/src/Core/WinSWCore/Extensions/ExtensionConfigurationProvider.cs @@ -40,16 +40,16 @@ namespace WinSW.Extensions return result; } - var extensionNodes = new ObjectQuery(extensions).ToList(); + var extensionNodes = new ObjectQuery(extensions).AsList(); foreach (var extension in extensionNodes) { var query = new ObjectQuery(extension); - var id = query.On("id").ToString(); - var enabled = query.On("enabled").ToBoolean(); - var className = query.On("classname").ToString(); - var settings = query.On("settings"); + var id = query.On("id").AsString(); + var enabled = query.On("enabled").AsBool(); + var className = query.On("classname").AsString(); + var settings = query.On("settings").AsParent(); var extensionConfig = new WinSWExtensionConfiguration(id, enabled, className, settings); result.Add(extensionConfig); diff --git a/src/Core/WinSWCore/Util/ObjectQuery.cs b/src/Core/WinSWCore/Util/ObjectQuery.cs index 9e082ff..f3232ff 100644 --- a/src/Core/WinSWCore/Util/ObjectQuery.cs +++ b/src/Core/WinSWCore/Util/ObjectQuery.cs @@ -40,7 +40,7 @@ namespace WinSW.Util return this; } - public new string ToString() + public string AsString() { if (this.current == null) { @@ -57,7 +57,7 @@ namespace WinSW.Util return result; } - public List ToList() + public List AsList() { if (this.current == null) { @@ -80,7 +80,7 @@ namespace WinSW.Util return result; } - public bool ToBoolean() + public bool AsBool() { if (this.current == null) { @@ -135,7 +135,7 @@ namespace WinSW.Util return this; } - private object? Query(object dic, string key) + private object? Query(object? dic, string key) { if (dic == null) { @@ -156,5 +156,10 @@ namespace WinSW.Util return null; } + + public ObjectQuery AsParent() + { + return new ObjectQuery(this.current); + } } } diff --git a/src/Plugins/RunawayProcessKiller/RunawayProcessKillerExtension.cs b/src/Plugins/RunawayProcessKiller/RunawayProcessKillerExtension.cs index e67abb2..f0b2abc 100644 --- a/src/Plugins/RunawayProcessKiller/RunawayProcessKillerExtension.cs +++ b/src/Plugins/RunawayProcessKiller/RunawayProcessKillerExtension.cs @@ -181,10 +181,17 @@ namespace WinSW.Plugins.RunawayProcessKiller public override void Configure(IWinSWConfiguration descriptor, ObjectQuery settings) { - this.Pidfile = settings.Get("pidfile").ToString(); - this.StopTimeout = TimeSpan.FromMilliseconds(int.Parse(settings.Get("stopTimeOut").ToString())); - this.StopParentProcessFirst = settings.Get("StopParentFirst").ToBoolean(); - this.CheckWinSWEnvironmentVariable = settings.Get("checkWinSWEnvironmentVariable").ToBoolean(); + this.Pidfile = settings.On("pidfile").AsString(); + this.StopTimeout = TimeSpan.FromMilliseconds(int.Parse(settings.On("stopTimeOut").AsString())); + this.StopParentProcessFirst = settings.On("StopParentFirst").AsBool(); + try + { + this.CheckWinSWEnvironmentVariable = settings.Get("checkWinSWEnvironmentVariable").AsBool(); + } + catch + { + this.CheckWinSWEnvironmentVariable = true; + } this.ServiceId = descriptor.Id; } diff --git a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.cs b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.cs index c4e24d1..4175931 100644 --- a/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.cs +++ b/src/Plugins/SharedDirectoryMapper/SharedDirectoryMapper.cs @@ -28,14 +28,14 @@ namespace WinSW.Plugins.SharedDirectoryMapper public override void Configure(IWinSWConfiguration descriptor, ObjectQuery settings) { - var maps = settings.Get("mapping").ToList(); + var maps = settings.On("mapping").AsList(); foreach (var map in maps) { var mapObject = new ObjectQuery(map); - var enable = mapObject.Get("enabled").ToBoolean(); - var label = mapObject.Get("label").ToString(); - var uncpath = mapObject.Get("uncpath").ToString(); + var enable = mapObject.On("enabled").AsBool(); + var label = mapObject.On("label").AsString(); + var uncpath = mapObject.On("uncpath").AsString(); var config = new SharedDirectoryMapperConfig(enable, label, uncpath); this._entries.Add(config); diff --git a/src/Test/winswTests/YamlExtensionTest.cs b/src/Test/winswTests/YamlExtensionTest.cs index c5df24a..f81cb2e 100644 --- a/src/Test/winswTests/YamlExtensionTest.cs +++ b/src/Test/winswTests/YamlExtensionTest.cs @@ -57,9 +57,10 @@ extensions: { ExtensionConfigurationProvider provider = new ExtensionConfigurationProvider(this._testServiceDescriptor); var config = provider.GetExtenstionConfiguration("killOnStartup"); - var pid = config.Settings.On("pidfile").ToString(); - var stopTimeOut = config.Settings.Get("stopTimeOut").ToString(); - var StopParentFirst = config.Settings.Get("StopParentFirst").ToString(); + + var pid = config.Settings.On("pidfile").AsString(); + var stopTimeOut = config.Settings.On("stopTimeOut").AsString(); + var StopParentFirst = config.Settings.On("StopParentFirst").AsString(); System.Console.WriteLine(pid); System.Console.WriteLine(stopTimeOut);