diff --git a/easyrules-spring/src/main/java/org/easyrules/spring/RulesEngineFactoryBean.java b/easyrules-spring/src/main/java/org/easyrules/spring/RulesEngineFactoryBean.java index f6574ed..2e1961c 100755 --- a/easyrules-spring/src/main/java/org/easyrules/spring/RulesEngineFactoryBean.java +++ b/easyrules-spring/src/main/java/org/easyrules/spring/RulesEngineFactoryBean.java @@ -31,6 +31,7 @@ import org.springframework.beans.factory.FactoryBean; import java.util.List; import static org.easyrules.core.RulesEngineBuilder.aNewRulesEngine; +import static org.easyrules.util.Utils.DEFAULT_ENGINE_NAME; import static org.easyrules.util.Utils.DEFAULT_RULE_PRIORITY_THRESHOLD; /** @@ -40,6 +41,8 @@ import static org.easyrules.util.Utils.DEFAULT_RULE_PRIORITY_THRESHOLD; */ public class RulesEngineFactoryBean implements FactoryBean { + private String name = DEFAULT_ENGINE_NAME; + private int priorityThreshold = DEFAULT_RULE_PRIORITY_THRESHOLD; private boolean skipOnFirstAppliedRule; @@ -55,6 +58,7 @@ public class RulesEngineFactoryBean implements FactoryBean { @Override public RulesEngine getObject() { RulesEngineBuilder rulesEngineBuilder = aNewRulesEngine() + .named(name) .withSkipOnFirstAppliedRule(skipOnFirstAppliedRule) .withSkipOnFirstFailedRule(skipOnFirstFailedRule) .withRulePriorityThreshold(priorityThreshold) @@ -118,4 +122,8 @@ public class RulesEngineFactoryBean implements FactoryBean { public void setSkipOnFirstFailedRule(boolean skipOnFirstFailedRule) { this.skipOnFirstFailedRule = skipOnFirstFailedRule; } + + public void setName(String name) { + this.name = name; + } } diff --git a/easyrules-spring/src/test/java/org/easyrules/spring/RulesEngineFactoryBeanTest.java b/easyrules-spring/src/test/java/org/easyrules/spring/RulesEngineFactoryBeanTest.java index 4cfdf40..3f9317e 100755 --- a/easyrules-spring/src/test/java/org/easyrules/spring/RulesEngineFactoryBeanTest.java +++ b/easyrules-spring/src/test/java/org/easyrules/spring/RulesEngineFactoryBeanTest.java @@ -27,19 +27,19 @@ package org.easyrules.spring; import org.easyrules.api.RuleListener; import org.easyrules.api.RulesEngine; import org.easyrules.core.BasicRule; +import org.easyrules.core.RulesEngineParameters; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; -import java.lang.reflect.Field; -import java.util.*; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.springframework.util.ReflectionUtils.*; /** * Test class for {@link RulesEngineFactoryBean}. @@ -49,6 +49,7 @@ import static org.springframework.util.ReflectionUtils.*; @RunWith(MockitoJUnitRunner.class) public class RulesEngineFactoryBeanTest { + public static final String NAME = "myRulesEngine"; public static final int RULE_PRIORITY_THRESHOLD = 10; @Mock @@ -57,6 +58,8 @@ public class RulesEngineFactoryBeanTest { @Mock private RuleListener ruleListener; + private String name; + private int priorityThreshold; private boolean skipOnFirstAppliedRule; @@ -69,6 +72,7 @@ public class RulesEngineFactoryBeanTest { @Before public void setUp() { + name = NAME; silentMode = true; skipOnFirstFailedRule = true; skipOnFirstAppliedRule = true; @@ -88,21 +92,18 @@ public class RulesEngineFactoryBeanTest { rulesEngineFactoryBean.setSkipOnFirstAppliedRule(skipOnFirstAppliedRule); rulesEngineFactoryBean.setSkipOnFirstFailedRule(skipOnFirstFailedRule); rulesEngineFactoryBean.setSilentMode(silentMode); + rulesEngineFactoryBean.setName(name); RulesEngine rulesEngine = rulesEngineFactoryBean.getObject(); assertThat(rulesEngine).isNotNull(); - assertEquals(priorityThreshold, getFieldValue(rulesEngine.getParameters(), "priorityThreshold")); - assertEquals(skipOnFirstAppliedRule, getFieldValue(rulesEngine.getParameters(), "skipOnFirstAppliedRule")); - assertEquals(skipOnFirstFailedRule, getFieldValue(rulesEngine.getParameters(), "skipOnFirstFailedRule")); - assertEquals(new HashSet<>(expectedRules), new HashSet<>((Collection) getFieldValue(rulesEngine, "rules"))); - assertEquals(expectedRuleListeners, getFieldValue(rulesEngine, "ruleListeners")); - } - - private Object getFieldValue(Object object, String fieldName) { - Field field = findField(object.getClass(), fieldName); - makeAccessible(field); - return getField(field, object); + RulesEngineParameters rulesEngineParameters = rulesEngine.getParameters(); + assertThat(rulesEngineParameters.getName()).isEqualTo(NAME); + assertThat(rulesEngineParameters.getPriorityThreshold()).isEqualTo(RULE_PRIORITY_THRESHOLD); + assertThat(rulesEngineParameters.isSkipOnFirstAppliedRule()).isTrue(); + assertThat(rulesEngineParameters.isSkipOnFirstFailedRule()).isTrue(); + assertThat(rulesEngine.getRules()).isEqualTo(new HashSet<>(expectedRules)); + assertThat(rulesEngine.getRuleListeners()).isEqualTo(expectedRuleListeners); } @Test