From d8e10905a8adbc3a0d744f57cf3e7dfbddbb8e25 Mon Sep 17 00:00:00 2001 From: Luis Garces Date: Sun, 23 Jun 2024 16:31:54 +0100 Subject: [PATCH] refactor!: remove obsolete APIs --- .../Engine/RulesEngineProvider.cs | 3 +- .../RuleFactory.cs | 79 +++++----------- src/Rules.Framework/AssemblyMetadata.cs | 2 +- .../Builder/ConditionNodeFactory.cs | 33 ++++++- .../ComposedConditionNodeBuilder.cs | 41 -------- .../Deprecated/ConditionNodeBuilder.cs | 14 --- .../IComposedConditionNodeBuilder.cs | 33 ------- .../Deprecated/IConditionNodeBuilder.cs | 26 ------ .../Deprecated/IValueConditionNodeBuilder.cs | 60 ------------ .../Deprecated/ValueConditionNodeBuilder.cs | 93 ------------------- src/Rules.Framework/Builder/IRuleBuilder.cs | 18 ---- src/Rules.Framework/Builder/RuleBuilder.cs | 19 ---- .../Builder/RuleBuilderResult.cs | 19 ++-- src/Rules.Framework/Condition.cs | 8 -- src/Rules.Framework/IRulesEngineOptions.cs | 6 -- src/Rules.Framework/RulesEngineOptions.cs | 11 --- .../BuildingSecuritySystemControlTests.cs | 6 +- 17 files changed, 62 insertions(+), 409 deletions(-) delete mode 100644 src/Rules.Framework/Builder/Deprecated/ComposedConditionNodeBuilder.cs delete mode 100644 src/Rules.Framework/Builder/Deprecated/ConditionNodeBuilder.cs delete mode 100644 src/Rules.Framework/Builder/Deprecated/IComposedConditionNodeBuilder.cs delete mode 100644 src/Rules.Framework/Builder/Deprecated/IConditionNodeBuilder.cs delete mode 100644 src/Rules.Framework/Builder/Deprecated/IValueConditionNodeBuilder.cs delete mode 100644 src/Rules.Framework/Builder/Deprecated/ValueConditionNodeBuilder.cs diff --git a/samples/Rules.Framework.WebUI.Sample/Engine/RulesEngineProvider.cs b/samples/Rules.Framework.WebUI.Sample/Engine/RulesEngineProvider.cs index 8d8d733c..41b67f44 100644 --- a/samples/Rules.Framework.WebUI.Sample/Engine/RulesEngineProvider.cs +++ b/samples/Rules.Framework.WebUI.Sample/Engine/RulesEngineProvider.cs @@ -3,7 +3,6 @@ namespace Rules.Framework.WebUI.Sample.Engine using System; using System.Threading; using System.Threading.Tasks; - using global::Rules.Framework.Providers.InMemory; using global::Rules.Framework.WebUI.Sample.Enums; internal class RulesEngineProvider @@ -19,7 +18,7 @@ public RulesEngineProvider(RulesBuilder rulesBuilder) .WithContentType() .WithConditionType() .SetInMemoryDataSource() - .Configure(c => c.PriotityCriteria = PriorityCriterias.TopmostRuleWins) + .Configure(c => c.PriorityCriteria = PriorityCriterias.TopmostRuleWins) .Build(); await rulesBuilder.BuildAsync(rulesEngine).ConfigureAwait(false); diff --git a/src/Rules.Framework.Providers.MongoDb/RuleFactory.cs b/src/Rules.Framework.Providers.MongoDb/RuleFactory.cs index c41fdfeb..54cc31d0 100644 --- a/src/Rules.Framework.Providers.MongoDb/RuleFactory.cs +++ b/src/Rules.Framework.Providers.MongoDb/RuleFactory.cs @@ -4,7 +4,6 @@ namespace Rules.Framework.Providers.MongoDb using System.Collections.Generic; using System.Globalization; using System.Linq; - using Rules.Framework.Builder; using Rules.Framework.Core; using Rules.Framework.Core.ConditionNodes; using Rules.Framework.Providers.MongoDb.DataModel; @@ -32,7 +31,7 @@ public Rule CreateRule(RuleDataModel ruleDataModel .WithName(ruleDataModel.Name) .WithDatesInterval(ruleDataModel.DateBegin, ruleDataModel.DateEnd) .WithActive(ruleDataModel.Active ?? true) - .WithCondition(cnb => ruleDataModel.RootCondition is { } ? ConvertConditionNode(cnb, ruleDataModel.RootCondition) : null) + .WithCondition(_ => ruleDataModel.RootCondition is { } ? ConvertConditionNode(ruleDataModel.RootCondition) : null) .WithSerializedContent(contentType, (object)ruleDataModel.Content, this.contentSerializationProvider) .Build(); @@ -78,27 +77,25 @@ public RuleDataModel CreateRule(Rule rule) return ruleDataModel; } - private static IConditionNode ConvertConditionNode( - IConditionNodeBuilder conditionNodeBuilder, ConditionNodeDataModel conditionNodeDataModel) + private static IConditionNode ConvertConditionNode(ConditionNodeDataModel conditionNodeDataModel) { if (conditionNodeDataModel.LogicalOperator == LogicalOperators.Eval) { - return CreateValueConditionNode(conditionNodeBuilder, conditionNodeDataModel as ValueConditionNodeDataModel); + return CreateValueConditionNode(conditionNodeDataModel as ValueConditionNodeDataModel); } var composedConditionNodeDataModel = conditionNodeDataModel as ComposedConditionNodeDataModel; - - var composedConditionNodeBuilder = conditionNodeBuilder.AsComposed() - .WithLogicalOperator(composedConditionNodeDataModel.LogicalOperator); - var childConditionNodes = composedConditionNodeDataModel.ChildConditionNodes; - var count = childConditionNodes.Length; - var i = -1; - while (++i < count) + var childConditionNodeDataModels = composedConditionNodeDataModel.ChildConditionNodes; + var count = childConditionNodeDataModels.Length; + var childConditionNodes = new IConditionNode[count]; + for (int i = 0; i < count; i++) { - composedConditionNodeBuilder.AddCondition(cnb => ConvertConditionNode(cnb, childConditionNodes[i])); + childConditionNodes[i] = ConvertConditionNode(childConditionNodeDataModels[i]); } - var composedConditionNode = composedConditionNodeBuilder.Build(); + var composedConditionNode = new ComposedConditionNode( + composedConditionNodeDataModel.LogicalOperator, + childConditionNodes); foreach (var property in composedConditionNodeDataModel.Properties) { composedConditionNode.Properties[property.Key] = property.Value; @@ -122,55 +119,21 @@ private static ValueConditionNodeDataModel ConvertValueConditionNode(ValueCondit }; } - private static IConditionNode CreateValueConditionNode(IConditionNodeBuilder conditionNodeBuilder, ValueConditionNodeDataModel conditionNodeDataModel) + private static ValueConditionNode CreateValueConditionNode(ValueConditionNodeDataModel conditionNodeDataModel) { TConditionType conditionType = Parse(conditionNodeDataModel.ConditionType); - var valueConditionNode = conditionNodeDataModel.DataType switch + var operand = conditionNodeDataModel.DataType switch { - DataTypes.Integer => conditionNodeBuilder.AsValued(conditionType) - .OfDataType() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(Convert.ToInt32(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture)) - .Build(), - DataTypes.Decimal => conditionNodeBuilder.AsValued(conditionType) - .OfDataType() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(Convert.ToDecimal(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture)) - .Build(), - DataTypes.String => conditionNodeBuilder.AsValued(conditionType) - .OfDataType() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(Convert.ToString(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture)) - .Build(), - DataTypes.Boolean => conditionNodeBuilder.AsValued(conditionType) - .OfDataType() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(Convert.ToBoolean(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture)) - .Build(), - - DataTypes.ArrayInteger => conditionNodeBuilder.AsValued(conditionType) - .OfDataType>() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(conditionNodeDataModel.Operand as IEnumerable) - .Build(), - DataTypes.ArrayDecimal => conditionNodeBuilder.AsValued(conditionType) - .OfDataType>() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(conditionNodeDataModel.Operand as IEnumerable) - .Build(), - DataTypes.ArrayString => conditionNodeBuilder.AsValued(conditionType) - .OfDataType>() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(conditionNodeDataModel.Operand as IEnumerable) - .Build(), - DataTypes.ArrayBoolean => conditionNodeBuilder.AsValued(conditionType) - .OfDataType>() - .WithComparisonOperator(conditionNodeDataModel.Operator) - .SetOperand(conditionNodeDataModel.Operand as IEnumerable) - .Build(), + DataTypes.Integer => Convert.ToInt32(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture), + DataTypes.Decimal => Convert.ToDecimal(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture), + DataTypes.String => Convert.ToString(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture), + DataTypes.Boolean => Convert.ToBoolean(conditionNodeDataModel.Operand, CultureInfo.InvariantCulture), + DataTypes.ArrayInteger or DataTypes.ArrayDecimal or DataTypes.ArrayString or DataTypes.ArrayBoolean => conditionNodeDataModel.Operand, _ => throw new NotSupportedException($"Unsupported data type: {conditionNodeDataModel.DataType}."), }; + var valueConditionNode = new ValueConditionNode(conditionNodeDataModel.DataType, conditionType, conditionNodeDataModel.Operator, operand); + foreach (var property in conditionNodeDataModel.Properties) { valueConditionNode.Properties[property.Key] = property.Value; @@ -230,4 +193,4 @@ private ConditionNodeDataModel ConvertConditionNode(IConditionNode); } } -} +} \ No newline at end of file diff --git a/src/Rules.Framework/AssemblyMetadata.cs b/src/Rules.Framework/AssemblyMetadata.cs index a88ba7ef..c5c22406 100644 --- a/src/Rules.Framework/AssemblyMetadata.cs +++ b/src/Rules.Framework/AssemblyMetadata.cs @@ -2,6 +2,6 @@ [assembly: InternalsVisibleTo("Rules.Framework.Tests")] [assembly: InternalsVisibleTo("Rules.Framework.IntegrationTests")] -[assembly: InternalsVisibleTo("Rules.Framework.Providers.InMemory.Tests")] [assembly: InternalsVisibleTo("Rules.Framework.Providers.InMemory.IntegrationTests")] +[assembly: InternalsVisibleTo("Rules.Framework.Providers.MongoDb")] [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] \ No newline at end of file diff --git a/src/Rules.Framework/Builder/ConditionNodeFactory.cs b/src/Rules.Framework/Builder/ConditionNodeFactory.cs index 2fd7da0d..881cb162 100644 --- a/src/Rules.Framework/Builder/ConditionNodeFactory.cs +++ b/src/Rules.Framework/Builder/ConditionNodeFactory.cs @@ -1,7 +1,9 @@ namespace Rules.Framework.Builder { using System; + using System.Collections.Generic; using Rules.Framework.Core; + using Rules.Framework.Core.ConditionNodes; /// /// Factory for creating condition nodes. @@ -39,8 +41,35 @@ public static IConditionNode CreateComposedNode( public static IConditionNode CreateValueNode( TConditionType conditionType, Operators condOperator, TDataType operand) { - return new ValueConditionNodeBuilder(conditionType, condOperator, operand) - .Build(); + switch (operand) + { + case decimal _: + return new ValueConditionNode(DataTypes.Decimal, conditionType, condOperator, operand); + + case IEnumerable _: + return new ValueConditionNode(DataTypes.ArrayDecimal, conditionType, condOperator, operand); + + case int _: + return new ValueConditionNode(DataTypes.Integer, conditionType, condOperator, operand); + + case IEnumerable _: + return new ValueConditionNode(DataTypes.ArrayInteger, conditionType, condOperator, operand); + + case bool _: + return new ValueConditionNode(DataTypes.Boolean, conditionType, condOperator, operand); + + case IEnumerable _: + return new ValueConditionNode(DataTypes.ArrayBoolean, conditionType, condOperator, operand); + + case string _: + return new ValueConditionNode(DataTypes.String, conditionType, condOperator, operand); + + case IEnumerable _: + return new ValueConditionNode(DataTypes.ArrayString, conditionType, condOperator, operand); + + default: + throw new NotSupportedException($"The data type is not supported: {typeof(TDataType).FullName}."); + } } } } \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/ComposedConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/ComposedConditionNodeBuilder.cs deleted file mode 100644 index e8baa10e..00000000 --- a/src/Rules.Framework/Builder/Deprecated/ComposedConditionNodeBuilder.cs +++ /dev/null @@ -1,41 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - using System.Collections.Generic; - using Rules.Framework.Core; - using Rules.Framework.Core.ConditionNodes; - - internal sealed class ComposedConditionNodeBuilder : IComposedConditionNodeBuilder - { - private readonly IConditionNodeBuilder conditionNodeBuilder; - private readonly List> conditions; - private LogicalOperators logicalOperator; - - public ComposedConditionNodeBuilder(IConditionNodeBuilder conditionNodeBuilder) - { - this.conditionNodeBuilder = conditionNodeBuilder; - this.conditions = new List>(2); // Most probable number of conditions, so that collection is initialized with right size most times. - } - - public IComposedConditionNodeBuilder AddCondition(Func, IConditionNode> conditionFunc) - { - var conditionNode = conditionFunc.Invoke(this.conditionNodeBuilder); - - this.conditions.Add(conditionNode); - - return this; - } - - public IConditionNode Build() - { - return new ComposedConditionNode(this.logicalOperator, this.conditions); - } - - public IComposedConditionNodeBuilder WithLogicalOperator(LogicalOperators logicalOperator) - { - this.logicalOperator = logicalOperator; - - return this; - } - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/ConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/ConditionNodeBuilder.cs deleted file mode 100644 index 502d17bb..00000000 --- a/src/Rules.Framework/Builder/Deprecated/ConditionNodeBuilder.cs +++ /dev/null @@ -1,14 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - - [Obsolete("This way of building conditions has been deprecated. Please use the IRootConditionNodeBuilder and IFluentComposedConditionNodeBuilder interfaces.")] - internal sealed class ConditionNodeBuilder : IConditionNodeBuilder - { - public IComposedConditionNodeBuilder AsComposed() - => new ComposedConditionNodeBuilder(this); - - public IValueConditionNodeBuilder AsValued(TConditionType conditionType) - => new ValueConditionNodeBuilder(conditionType); - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/IComposedConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/IComposedConditionNodeBuilder.cs deleted file mode 100644 index 5165c621..00000000 --- a/src/Rules.Framework/Builder/Deprecated/IComposedConditionNodeBuilder.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - using Rules.Framework.Core; - - /// - /// Builder for composed condition nodes. - /// - /// The type of the condition type. - [Obsolete("This way of building and adding composed conditions has been deprecated. Please use the IRootConditionNodeBuilder and IFluentComposedConditionNodeBuilder interfaces.")] - public interface IComposedConditionNodeBuilder - { - /// - /// Adds a condition to the composed condition node builder. - /// - /// The function containing the logic for the new condition. - /// - IComposedConditionNodeBuilder AddCondition(Func, IConditionNode> conditionFunc); - - /// - /// Builds the composed condition node. - /// - /// - IConditionNode Build(); - - /// - /// Sets the composed condition node with the specified logical operator. - /// - /// The logical operator. - /// - IComposedConditionNodeBuilder WithLogicalOperator(LogicalOperators logicalOperator); - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/IConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/IConditionNodeBuilder.cs deleted file mode 100644 index e6c279a9..00000000 --- a/src/Rules.Framework/Builder/Deprecated/IConditionNodeBuilder.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - - /// - /// Builder to specify a new condition node. Allows for choosing between composed and valued - /// condition nodes. - /// - /// The type of the condition type. - [Obsolete("This way of building conditions has been deprecated. Please use the IRootConditionNodeBuilder and IFluentComposedConditionNodeBuilder interfaces.")] - public interface IConditionNodeBuilder - { - /// - /// Begins building a condition node as composed. - /// - /// - IComposedConditionNodeBuilder AsComposed(); - - /// - /// Begins building a condition node as valued. - /// - /// Type of the condition. - /// - IValueConditionNodeBuilder AsValued(TConditionType conditionType); - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/IValueConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/IValueConditionNodeBuilder.cs deleted file mode 100644 index cf6ec9e1..00000000 --- a/src/Rules.Framework/Builder/Deprecated/IValueConditionNodeBuilder.cs +++ /dev/null @@ -1,60 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - using System.Collections.Generic; - using Rules.Framework.Core; - using Rules.Framework.Core.ConditionNodes; - - /// - /// Builder to specify the data type for a valued condition node. - /// - /// The type of the condition type. - [Obsolete("This way of building and adding value conditions has been deprecated. Please use the IRootConditionNodeBuilder and IFluentComposedConditionNodeBuilder interfaces.")] - public interface IValueConditionNodeBuilder - { - /// - /// Sets the new value condition node to have the type . - /// - /// the data type of the new value condition node. - /// - IValueConditionNodeBuilder OfDataType(); - } - - /// - /// Builder to specify create a new value condition node. - /// - /// The type of the condition type. - /// The type of the data type. - [Obsolete("This way of building and adding value conditions has been deprecated. Please use the IRootConditionNodeBuilder and IFluentComposedConditionNodeBuilder interfaces.")] - public interface IValueConditionNodeBuilder - { - /// - /// Builds the new value condition node. - /// - /// - IValueConditionNode Build(); - - /// - /// Sets the condition node right hand operand (as a single value). Remember that the rules - /// engine input conditions will be evaluated as left hand operands. - /// - /// The value. - /// - IValueConditionNodeBuilder SetOperand(TDataType value); - - /// - /// Sets the condition node right hand operand (as collection of values). Remember that the - /// rules engine input conditions will be evaluated as left hand operands. - /// - /// The value. - /// - IValueConditionNodeBuilder SetOperand(IEnumerable value); - - /// - /// Sets the new value condition node with the specified comparison operator. - /// - /// The comparison operator. - /// - IValueConditionNodeBuilder WithComparisonOperator(Operators comparisonOperator); - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/Deprecated/ValueConditionNodeBuilder.cs b/src/Rules.Framework/Builder/Deprecated/ValueConditionNodeBuilder.cs deleted file mode 100644 index afb803a4..00000000 --- a/src/Rules.Framework/Builder/Deprecated/ValueConditionNodeBuilder.cs +++ /dev/null @@ -1,93 +0,0 @@ -namespace Rules.Framework.Builder -{ - using System; - using System.Collections.Generic; - using Rules.Framework.Core; - using Rules.Framework.Core.ConditionNodes; - - internal sealed class ValueConditionNodeBuilder : IValueConditionNodeBuilder - { - private readonly TConditionType conditionType; - - public ValueConditionNodeBuilder(TConditionType conditionType) - { - this.conditionType = conditionType; - } - - public IValueConditionNodeBuilder OfDataType() - => new ValueConditionNodeBuilder(this.conditionType); - } - - internal sealed class ValueConditionNodeBuilder : IValueConditionNodeBuilder - { - private readonly TConditionType conditionType; - private Operators comparisonOperator; - private object operand; - - public ValueConditionNodeBuilder(TConditionType conditionType) - { - this.conditionType = conditionType; - } - - public ValueConditionNodeBuilder(TConditionType conditionType, Operators comparisonOperator, object operand) - { - this.conditionType = conditionType; - this.comparisonOperator = comparisonOperator; - this.operand = operand; - } - - public IValueConditionNode Build() - { - switch (this.operand) - { - case decimal _: - return new ValueConditionNode(DataTypes.Decimal, this.conditionType, this.comparisonOperator, this.operand); - - case IEnumerable _: - return new ValueConditionNode(DataTypes.ArrayDecimal, this.conditionType, this.comparisonOperator, this.operand); - - case int _: - return new ValueConditionNode(DataTypes.Integer, this.conditionType, this.comparisonOperator, this.operand); - - case IEnumerable _: - return new ValueConditionNode(DataTypes.ArrayInteger, this.conditionType, this.comparisonOperator, this.operand); - - case bool _: - return new ValueConditionNode(DataTypes.Boolean, this.conditionType, this.comparisonOperator, this.operand); - - case IEnumerable _: - return new ValueConditionNode(DataTypes.ArrayBoolean, this.conditionType, this.comparisonOperator, this.operand); - - case string _: - return new ValueConditionNode(DataTypes.String, this.conditionType, this.comparisonOperator, this.operand); - - case IEnumerable _: - return new ValueConditionNode(DataTypes.ArrayString, this.conditionType, this.comparisonOperator, this.operand); - - default: - throw new NotSupportedException($"The data type is not supported: {typeof(TDataType).FullName}."); - } - } - - public IValueConditionNodeBuilder SetOperand(TDataType value) - { - this.operand = value; - - return this; - } - - public IValueConditionNodeBuilder SetOperand(IEnumerable value) - { - this.operand = value; - - return this; - } - - public IValueConditionNodeBuilder WithComparisonOperator(Operators comparisonOperator) - { - this.comparisonOperator = comparisonOperator; - - return this; - } - } -} \ No newline at end of file diff --git a/src/Rules.Framework/Builder/IRuleBuilder.cs b/src/Rules.Framework/Builder/IRuleBuilder.cs index aaac41aa..31e727d0 100644 --- a/src/Rules.Framework/Builder/IRuleBuilder.cs +++ b/src/Rules.Framework/Builder/IRuleBuilder.cs @@ -24,16 +24,6 @@ public interface IRuleBuilder /// IRuleBuilder WithActive(bool active); - /// - /// Sets the new rule with the specified condition. - /// - /// - /// The function with specific logic to create the condition for the rule. - /// - /// - [Obsolete("This way of adding conditions is being deprecated. Please use a non-deprecated overload instead.")] - IRuleBuilder WithCondition(Func, IConditionNode> conditionFunc); - /// /// Sets the new rule with the specified root condition. /// @@ -67,14 +57,6 @@ IRuleBuilder WithCondition( /// IRuleBuilder WithContent(TContentType contentType, object content); - /// - /// Sets the new rule with the specified content container. - /// - /// The content container. - /// - [Obsolete("This way of building the content is being deprecated. Please use WithContent().")] - IRuleBuilder WithContentContainer(ContentContainer contentContainer); - /// /// Sets the new rule with the specified date begin. /// diff --git a/src/Rules.Framework/Builder/RuleBuilder.cs b/src/Rules.Framework/Builder/RuleBuilder.cs index a5510e4c..506bbc42 100644 --- a/src/Rules.Framework/Builder/RuleBuilder.cs +++ b/src/Rules.Framework/Builder/RuleBuilder.cs @@ -52,17 +52,6 @@ public IRuleBuilder WithCondition(IConditionNode WithCondition( - Func, IConditionNode> conditionFunc) - { - var conditionNodeBuilder = new ConditionNodeBuilder(); - - var condition = conditionFunc.Invoke(conditionNodeBuilder); - - return this.WithCondition(condition); - } - public IRuleBuilder WithCondition( Func, IConditionNode> conditionFunc) { @@ -90,14 +79,6 @@ public IRuleBuilder WithContent(TContentType conte return this; } - [Obsolete("This way of building the content is being deprecated. Please use WithContent().")] - public IRuleBuilder WithContentContainer(ContentContainer contentContainer) - { - this.contentContainer = contentContainer; - - return this; - } - public IRuleBuilder WithDateBegin(DateTime dateBegin) { this.dateBegin = dateBegin; diff --git a/src/Rules.Framework/Builder/RuleBuilderResult.cs b/src/Rules.Framework/Builder/RuleBuilderResult.cs index a9d69fd9..be8ea684 100644 --- a/src/Rules.Framework/Builder/RuleBuilderResult.cs +++ b/src/Rules.Framework/Builder/RuleBuilderResult.cs @@ -22,7 +22,7 @@ public static RuleBuilderResult Failure(false, null, errors); + return new RuleBuilderResult(isSuccess: false, null!, errors); } /// @@ -38,7 +38,7 @@ public static RuleBuilderResult Success(true, rule, Enumerable.Empty()); + return new RuleBuilderResult(isSuccess: true, rule, Enumerable.Empty()); } } @@ -50,7 +50,8 @@ public static RuleBuilderResult Success { /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// internal RuleBuilderResult(bool isSuccess, Rule rule, IEnumerable errors) { @@ -62,25 +63,19 @@ internal RuleBuilderResult(bool isSuccess, Rule ru /// /// Gets the errors. /// - /// - /// The errors. - /// + /// The errors. public IEnumerable Errors { get; } /// /// Gets a value indicating whether rule was built successfuly without validation errors. /// - /// - /// true if rule was built; otherwise, false. - /// + /// true if rule was built; otherwise, false. public bool IsSuccess { get; } /// /// Gets the rule. /// - /// - /// The rule. - /// + /// The rule. public Rule Rule { get; } } } \ No newline at end of file diff --git a/src/Rules.Framework/Condition.cs b/src/Rules.Framework/Condition.cs index 878170dd..6931f564 100644 --- a/src/Rules.Framework/Condition.cs +++ b/src/Rules.Framework/Condition.cs @@ -21,14 +21,6 @@ public Condition(TConditionType type, object value) this.Value = value; } - /// - /// Creates a Condition. - /// - [Obsolete("Please use the constructor with parameters instead.")] - public Condition() - { - } - /// /// Gets or sets the condition type. /// diff --git a/src/Rules.Framework/IRulesEngineOptions.cs b/src/Rules.Framework/IRulesEngineOptions.cs index 4386deaa..dd03a1af 100644 --- a/src/Rules.Framework/IRulesEngineOptions.cs +++ b/src/Rules.Framework/IRulesEngineOptions.cs @@ -20,12 +20,6 @@ public interface IRulesEngineOptions /// public MissingConditionBehaviors MissingConditionBehavior { get; } - /// - /// Gets the priority criteria to untie when multiples rules are matched. - /// - [Obsolete("This property has a typo and has been replaced by PriorityCriteria.")] - public PriorityCriterias PriotityCriteria { get; } - /// /// Gets the priority criteria to untie when multiples rules are matched. /// diff --git a/src/Rules.Framework/RulesEngineOptions.cs b/src/Rules.Framework/RulesEngineOptions.cs index f812c667..caa0d78a 100644 --- a/src/Rules.Framework/RulesEngineOptions.cs +++ b/src/Rules.Framework/RulesEngineOptions.cs @@ -41,16 +41,6 @@ private RulesEngineOptions() /// public PriorityCriterias PriorityCriteria { get; set; } - /// - /// Gets or sets the priority criteria to untie when multiples rules are matched. - /// - [Obsolete("This property has a typo and has been replaced by PriorityCriteria.")] - public PriorityCriterias PriotityCriteria - { - get { return this.PriorityCriteria; } - set { this.PriorityCriteria = value; } - } - /// /// Creates a new set of rules engine options with framework-configured defaults. /// @@ -82,7 +72,6 @@ public static RulesEngineOptions NewWithDefaults() }, }; - return rulesEngineOptions; } } diff --git a/tests/Rules.Framework.Providers.MongoDb.IntegrationTests/Scenarios/Scenario3/BuildingSecuritySystemControlTests.cs b/tests/Rules.Framework.Providers.MongoDb.IntegrationTests/Scenarios/Scenario3/BuildingSecuritySystemControlTests.cs index a9d151c9..8c6d6fec 100644 --- a/tests/Rules.Framework.Providers.MongoDb.IntegrationTests/Scenarios/Scenario3/BuildingSecuritySystemControlTests.cs +++ b/tests/Rules.Framework.Providers.MongoDb.IntegrationTests/Scenarios/Scenario3/BuildingSecuritySystemControlTests.cs @@ -92,11 +92,7 @@ public async Task BuildingSecuritySystem_FireScenario_ReturnsActionsToTrigger(bo ActionId = new Guid("ef0d65ae-ec76-492a-84db-5cb9090c3eaa"), ActionName = "ActivateVentilationSystem" }) - .WithCondition(b => b.AsValued(SecuritySystemConditions.SmokeRate) - .OfDataType() - .WithComparisonOperator(Core.Operators.GreaterThanOrEqual) - .SetOperand(30.0m) - .Build()) + .WithCondition(b => b.Value(SecuritySystemConditions.SmokeRate, Core.Operators.GreaterThanOrEqual, 30.0m)) .Build(); var newRule = newRuleResult.Rule;