issue #126: Deprecate RulesEngineBuilder

pull/130/merge
Mahmoud Ben Hassine 7 years ago
parent ca7481f07a
commit 7c690524be

@ -66,34 +66,11 @@ public final class DefaultRulesEngine implements RulesEngine {
* @param parameters of the engine
*/
public DefaultRulesEngine(final RulesEngineParameters parameters) {
this(parameters, new ArrayList<RuleListener>());
}
/**
* Create a new {@link DefaultRulesEngine}.
*
* @param parameters of the engine
* @param ruleListeners to apply for each rule
*/
public DefaultRulesEngine(final RulesEngineParameters parameters, final List<RuleListener> ruleListeners) {
this(parameters, ruleListeners, new ArrayList<RulesEngineListener>());
}
/**
* Create a new {@link DefaultRulesEngine}.
*
* @param parameters of the engine
* @param ruleListeners to apply for each rule
* @param rulesEngineListeners to apply for each rule set
*/
public DefaultRulesEngine(final RulesEngineParameters parameters, final List<RuleListener> ruleListeners, final List<RulesEngineListener> rulesEngineListeners) {
this.parameters = parameters;
this.ruleListeners = new ArrayList<>();
this.ruleListeners.add(new DefaultRuleListener());
this.ruleListeners.addAll(ruleListeners);
this.rulesEngineListeners = new ArrayList<>();
this.rulesEngineListeners.add(new DefaultRulesEngineListener(parameters));
this.rulesEngineListeners.addAll(rulesEngineListeners);
}
@Override
@ -227,4 +204,35 @@ public final class DefaultRulesEngine implements RulesEngine {
return triggerListenersBeforeEvaluate(rule, facts);
}
/**
* Register a rule listener.
* @param ruleListener to register
*/
public void registerRuleListener(RuleListener ruleListener) {
ruleListeners.add(ruleListener);
}
/**
* Register a list of rule listener.
* @param ruleListeners to register
*/
public void registerRuleListeners(List<RuleListener> ruleListeners) {
this.ruleListeners.addAll(ruleListeners);
}
/**
* Register a rules engine listener.
* @param rulesEngineListener to register
*/
public void registerRulesEngineListener(RulesEngineListener rulesEngineListener) {
rulesEngineListeners.add(rulesEngineListener);
}
/**
* Register a list of rules engine listener.
* @param rulesEngineListeners to register
*/
public void registerRulesEngineListeners(List<RulesEngineListener> rulesEngineListeners) {
this.rulesEngineListeners.addAll(rulesEngineListeners);
}
}

@ -60,30 +60,10 @@ public final class InferenceRulesEngine implements RulesEngine {
* @param parameters of the engine
*/
public InferenceRulesEngine(RulesEngineParameters parameters) {
this(parameters, new ArrayList<RuleListener>());
}
/**
* Create a new inference rules engine.
*
* @param parameters of the engine
* @param ruleListeners to apply for each rule
*/
public InferenceRulesEngine(RulesEngineParameters parameters, List<RuleListener> ruleListeners) {
this(parameters, ruleListeners, new ArrayList<RulesEngineListener>());
}
/**
* Create a new inference rules engine.
* @param parameters of the engine
* @param ruleListeners to apply for each rule
* @param rulesEngineListeners to apply for each rule set
*/
public InferenceRulesEngine(RulesEngineParameters parameters, List<RuleListener> ruleListeners, List<RulesEngineListener> rulesEngineListeners) {
this.parameters = parameters;
this.ruleListeners = ruleListeners;
this.rulesEngineListeners = rulesEngineListeners;
delegate = new DefaultRulesEngine(parameters, ruleListeners, rulesEngineListeners);
delegate = new DefaultRulesEngine(parameters);
ruleListeners = new ArrayList<>();
rulesEngineListeners = new ArrayList<>();
}
@Override
@ -129,4 +109,40 @@ public final class InferenceRulesEngine implements RulesEngine {
public Map<Rule, Boolean> check(Rules rules, Facts facts) {
return delegate.check(rules, facts);
}
/**
* Register a rule listener.
* @param ruleListener to register
*/
public void registerRuleListener(RuleListener ruleListener) {
ruleListeners.add(ruleListener);
delegate.registerRuleListener(ruleListener);
}
/**
* Register a list of rule listener.
* @param ruleListeners to register
*/
public void registerRuleListeners(List<RuleListener> ruleListeners) {
this.ruleListeners.addAll(ruleListeners);
delegate.registerRuleListeners(ruleListeners);
}
/**
* Register a rules engine listener.
* @param rulesEngineListener to register
*/
public void registerRulesEngineListener(RulesEngineListener rulesEngineListener) {
rulesEngineListeners.add(rulesEngineListener);
delegate.registerRulesEngineListener(rulesEngineListener);
}
/**
* Register a list of rules engine listener.
* @param rulesEngineListeners to register
*/
public void registerRulesEngineListeners(List<RulesEngineListener> rulesEngineListeners) {
this.rulesEngineListeners.addAll(rulesEngineListeners);
delegate.registerRulesEngineListeners(rulesEngineListeners);
}
}

@ -33,8 +33,11 @@ import java.util.List;
/**
* Builder for rules engine instances.
*
* @deprecated This builder will be removed in v3.2
*
* @author Mahmoud Ben Hassine (mahmoud.benhassine@icloud.com)
*/
@Deprecated
public class RulesEngineBuilder {
private final RulesEngineParameters parameters;
@ -138,7 +141,10 @@ public class RulesEngineBuilder {
* @return a rules engine instance
*/
public RulesEngine build() {
return new DefaultRulesEngine(parameters, ruleListeners, rulesEngineListeners);
DefaultRulesEngine defaultRulesEngine = new DefaultRulesEngine(parameters);
defaultRulesEngine.registerRuleListeners(ruleListeners);
defaultRulesEngine.registerRulesEngineListeners(rulesEngineListeners);
return defaultRulesEngine;
}
}

@ -43,7 +43,7 @@ public abstract class AbstractTest {
protected Facts facts;
protected Rules rules;
protected RulesEngine rulesEngine;
protected DefaultRulesEngine rulesEngine;
@Before
public void setup() throws Exception {
@ -52,7 +52,7 @@ public abstract class AbstractTest {
facts.put("fact2", fact2);
rules = new Rules();
rulesEngine = RulesEngineBuilder.aNewRulesEngine().build();
rulesEngine = new DefaultRulesEngine();
}
}

@ -42,7 +42,7 @@ public class AnnotationInheritanceTest extends AbstractTest {
rules.register(myChildRule);
// When
RulesEngine rulesEngine = RulesEngineBuilder.aNewRulesEngine().build();
RulesEngine rulesEngine = new DefaultRulesEngine();
rulesEngine.fire(rules, facts);
// Then

@ -190,9 +190,8 @@ public class DefaultRulesEngineTest extends AbstractTest {
// Given
when(rule1.evaluate(facts)).thenReturn(true);
when(ruleListener.beforeEvaluate(rule1, facts)).thenReturn(true);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener)
.build();
DefaultRulesEngine rulesEngine = new DefaultRulesEngine();
rulesEngine.registerRuleListener(ruleListener);
rules.register(rule1);
// When
@ -221,9 +220,8 @@ public class DefaultRulesEngineTest extends AbstractTest {
@Test
public void testGetRuleListeners() throws Exception {
// Given
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener)
.build();
DefaultRulesEngine rulesEngine = new DefaultRulesEngine();
rulesEngine.registerRuleListener(ruleListener);
// When
List<RuleListener> ruleListeners = rulesEngine.getRuleListeners();
@ -235,9 +233,8 @@ public class DefaultRulesEngineTest extends AbstractTest {
@Test
public void testGetRulesEngineListeners() throws Exception {
// Given
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRulesEngineListener(rulesEngineListener)
.build();
DefaultRulesEngine rulesEngine = new DefaultRulesEngine();
rulesEngine.registerRulesEngineListener(rulesEngineListener);
// When
List<RulesEngineListener> rulesEngineListeners = rulesEngine.getRulesEngineListeners();

@ -46,10 +46,8 @@ public class RuleListenerTest extends AbstractTest {
super.setup();
when(ruleListener1.beforeEvaluate(rule1, facts)).thenReturn(true);
when(ruleListener2.beforeEvaluate(rule1, facts)).thenReturn(true);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener1)
.withRuleListener(ruleListener2)
.build();
rulesEngine.registerRuleListener(ruleListener1);
rulesEngine.registerRuleListener(ruleListener2);
}
@Test
@ -92,9 +90,6 @@ public class RuleListenerTest extends AbstractTest {
public void whenListenerBeforeEvaluateReturnsFalse_thenTheRuleShouldBeSkippedBeforeBeingEvaluated() throws Exception {
// Given
when(ruleListener1.beforeEvaluate(rule1, facts)).thenReturn(false);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener1)
.build();
rules.register(rule1);
// When
@ -108,9 +103,6 @@ public class RuleListenerTest extends AbstractTest {
public void whenListenerBeforeEvaluateReturnsTrue_thenTheRuleShouldBeEvaluated() throws Exception {
// Given
when(ruleListener1.beforeEvaluate(rule1, facts)).thenReturn(true);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener1)
.build();
rules.register(rule1);
// When
@ -124,9 +116,6 @@ public class RuleListenerTest extends AbstractTest {
public void whenTheRuleEvaluatesToTrue_thenTheListenerShouldBeInvoked() throws Exception {
// Given
when(rule1.evaluate(facts)).thenReturn(true);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener1)
.build();
rules.register(rule1);
// When
@ -140,9 +129,6 @@ public class RuleListenerTest extends AbstractTest {
public void whenTheRuleEvaluatesToFalse_thenTheListenerShouldBeInvoked() throws Exception {
// Given
when(rule1.evaluate(facts)).thenReturn(false);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRuleListener(ruleListener1)
.build();
rules.register(rule1);
// When

@ -44,9 +44,9 @@ public class RulePriorityThresholdTest extends AbstractTest {
when(rule1.getPriority()).thenReturn(1);
when(rule1.evaluate(facts)).thenReturn(true);
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRulePriorityThreshold(1)
.build();
RulesEngineParameters parameters = new RulesEngineParameters();
parameters.setPriorityThreshold(1);
rulesEngine = new DefaultRulesEngine(parameters);
}
@Test

@ -76,5 +76,6 @@ public class RulesEngineBuilderTest {
assertThat(parameters.isSkipOnFirstAppliedRule()).isTrue();
assertThat(parameters.isSkipOnFirstFailedRule()).isTrue();
assertThat(parameters.isSkipOnFirstNonTriggeredRule()).isTrue();
assertThat(rulesEngine.getRuleListeners()).hasSize(2).contains(ruleListener);
}
}

@ -29,6 +29,7 @@ import org.junit.Test;
import org.mockito.InOrder;
import org.mockito.Mock;
import static java.util.Arrays.asList;
import static org.mockito.Mockito.*;
/**
@ -44,10 +45,7 @@ public class RulesEngineListenerTest extends AbstractTest {
@Before
public void setup() throws Exception {
super.setup();
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withRulesEngineListener(rulesEngineListener1)
.withRulesEngineListener(rulesEngineListener2)
.build();
rulesEngine.registerRulesEngineListeners(asList(rulesEngineListener1, rulesEngineListener2));
}
@Test

@ -26,7 +26,6 @@ package org.jeasy.rules.core;
import org.junit.Before;
import org.junit.Test;
import static org.jeasy.rules.core.RulesEngineBuilder.aNewRulesEngine;
import static org.mockito.Mockito.*;
/**
@ -39,9 +38,9 @@ public class SkipOnFirstAppliedRuleTest extends AbstractTest {
@Before
public void setup() throws Exception {
super.setup();
rulesEngine = aNewRulesEngine()
.withSkipOnFirstAppliedRule(true)
.build();
RulesEngineParameters parameters = new RulesEngineParameters();
parameters.setSkipOnFirstAppliedRule(true);
rulesEngine = new DefaultRulesEngine(parameters);
}
@Test

@ -38,9 +38,9 @@ public class SkipOnFirstFailedRuleTest extends AbstractTest {
@Before
public void setup() throws Exception {
super.setup();
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withSkipOnFirstFailedRule(true)
.build();
RulesEngineParameters parameters = new RulesEngineParameters();
parameters.setSkipOnFirstFailedRule(true);
rulesEngine = new DefaultRulesEngine(parameters);
}
@Test

@ -38,9 +38,9 @@ public class SkipOnFirstNonTriggeredRuleTest extends AbstractTest {
@Before
public void setup() throws Exception {
super.setup();
rulesEngine = RulesEngineBuilder.aNewRulesEngine()
.withSkipOnFirstNonTriggeredRule(true)
.build();
RulesEngineParameters parameters = new RulesEngineParameters();
parameters.setSkipOnFirstNonTriggeredRule(true);
rulesEngine = new DefaultRulesEngine(parameters);
}
@Test

@ -23,18 +23,18 @@
*/
package org.jeasy.rules.tutorials.fizzbuzz;
import static org.jeasy.rules.core.RulesEngineBuilder.aNewRulesEngine;
import org.jeasy.rules.api.Facts;
import org.jeasy.rules.api.Rules;
import org.jeasy.rules.api.RulesEngine;
import org.jeasy.rules.core.DefaultRulesEngine;
import org.jeasy.rules.core.RulesEngineParameters;
public class FizzBuzzWithEasyRules {
public static void main(String[] args) {
// create rules engine
RulesEngine fizzBuzzEngine = aNewRulesEngine()
.withSkipOnFirstAppliedRule(true)
.build();
RulesEngineParameters parameters = new RulesEngineParameters();
parameters.setSkipOnFirstAppliedRule(true);
RulesEngine fizzBuzzEngine = new DefaultRulesEngine(parameters);
// create rules
Rules rules = new Rules();

@ -23,7 +23,6 @@
*/
package org.jeasy.rules.tutorials.web;
import static org.jeasy.rules.core.RulesEngineBuilder.aNewRulesEngine;
import java.io.IOException;
import javax.servlet.Filter;
@ -36,6 +35,7 @@ import javax.servlet.annotation.WebFilter;
import org.jeasy.rules.api.Facts;
import org.jeasy.rules.api.Rules;
import org.jeasy.rules.api.RulesEngine;
import org.jeasy.rules.core.DefaultRulesEngine;
@WebFilter("/*")
public class SuspiciousRequestFilter implements Filter {
@ -45,7 +45,7 @@ public class SuspiciousRequestFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
rulesEngine = aNewRulesEngine().build();
rulesEngine = new DefaultRulesEngine();
rules = new Rules();
rules.register(new SuspiciousRequestRule());
}

Loading…
Cancel
Save