From b3ba58c7ec43bebc392f4d5a3522bdb325b3d39e Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Sun, 31 Mar 2019 10:50:22 +0200 Subject: [PATCH] Change RulesEngine#getParameters to return a copy of the parameters Resolves #158 --- .../jeasy/rules/core/AbstractRuleEngine.java | 7 ++++++- .../rules/core/DefaultRulesEngineTest.java | 18 ++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/easy-rules-core/src/main/java/org/jeasy/rules/core/AbstractRuleEngine.java b/easy-rules-core/src/main/java/org/jeasy/rules/core/AbstractRuleEngine.java index a04ca32..87b965f 100644 --- a/easy-rules-core/src/main/java/org/jeasy/rules/core/AbstractRuleEngine.java +++ b/easy-rules-core/src/main/java/org/jeasy/rules/core/AbstractRuleEngine.java @@ -56,7 +56,12 @@ abstract class AbstractRuleEngine implements RulesEngine { @Override public RulesEngineParameters getParameters() { - return parameters; + return new RulesEngineParameters( + parameters.isSkipOnFirstAppliedRule(), + parameters.isSkipOnFirstFailedRule(), + parameters.isSkipOnFirstNonTriggeredRule(), + parameters.getPriorityThreshold() + ); } @Override diff --git a/easy-rules-core/src/test/java/org/jeasy/rules/core/DefaultRulesEngineTest.java b/easy-rules-core/src/test/java/org/jeasy/rules/core/DefaultRulesEngineTest.java index 8359bc5..0aaa563 100644 --- a/easy-rules-core/src/test/java/org/jeasy/rules/core/DefaultRulesEngineTest.java +++ b/easy-rules-core/src/test/java/org/jeasy/rules/core/DefaultRulesEngineTest.java @@ -217,6 +217,24 @@ public class DefaultRulesEngineTest extends AbstractTest { // Should not throw exception } + @Test + public void getParametersShouldReturnACopyOfTheParameters() { + // Given + RulesEngineParameters parameters = new RulesEngineParameters() + .skipOnFirstAppliedRule(true) + .skipOnFirstFailedRule(true) + .skipOnFirstNonTriggeredRule(true) + .priorityThreshold(42); + DefaultRulesEngine rulesEngine = new DefaultRulesEngine(parameters); + + // When + RulesEngineParameters engineParameters = rulesEngine.getParameters(); + + // Then + Assertions.assertThat(engineParameters).isNotSameAs(parameters); + Assertions.assertThat(engineParameters).isEqualToComparingFieldByField(parameters); + } + @Test public void testGetRuleListeners() throws Exception { // Given