From be98dc5ed7202577836261a52712b115a9b23a7b Mon Sep 17 00:00:00 2001 From: Ankit Khandelwal Date: Wed, 19 Apr 2017 23:19:08 -0500 Subject: [PATCH] Added changes to unregister rule via ruleName --- .../java/org/easyrules/api/RulesEngine.java | 1 + .../easyrules/core/DefaultRulesEngine.java | 15 ++++++++ .../core/DefaultRulesEngineTest.java | 34 +++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/easyrules-core/src/main/java/org/easyrules/api/RulesEngine.java b/easyrules-core/src/main/java/org/easyrules/api/RulesEngine.java index da7392c..6b21157 100644 --- a/easyrules-core/src/main/java/org/easyrules/api/RulesEngine.java +++ b/easyrules-core/src/main/java/org/easyrules/api/RulesEngine.java @@ -96,4 +96,5 @@ public interface RulesEngine { */ void clearRules(); + void unregisterRuleByName(String r1); } diff --git a/easyrules-core/src/main/java/org/easyrules/core/DefaultRulesEngine.java b/easyrules-core/src/main/java/org/easyrules/core/DefaultRulesEngine.java index 9d52390..16a7716 100644 --- a/easyrules-core/src/main/java/org/easyrules/core/DefaultRulesEngine.java +++ b/easyrules-core/src/main/java/org/easyrules/core/DefaultRulesEngine.java @@ -130,6 +130,21 @@ class DefaultRulesEngine implements RulesEngine { return result; } + @Override + public void unregisterRuleByName(final String ruleName){ + Rule rule = findRuleByName(ruleName); + if(rule != null) + unregisterRule(rule); + } + + public Rule findRuleByName(String ruleName){ + for(Rule rule : rules){ + if(rule.getName().equalsIgnoreCase(ruleName)) + return rule; + } + return null; + } + private void sortRules() { rules = new TreeSet<>(rules); } diff --git a/easyrules-core/src/test/java/org/easyrules/core/DefaultRulesEngineTest.java b/easyrules-core/src/test/java/org/easyrules/core/DefaultRulesEngineTest.java index 70769e9..24b5bcf 100644 --- a/easyrules-core/src/test/java/org/easyrules/core/DefaultRulesEngineTest.java +++ b/easyrules-core/src/test/java/org/easyrules/core/DefaultRulesEngineTest.java @@ -202,6 +202,40 @@ public class DefaultRulesEngineTest { .containsExactly(rule, anotherRule); } + @Test + public void testUnregisterRule() throws Exception{ + rule = new BasicRule("r1","d1",1); + anotherRule = new BasicRule("r2", "d2", 2); + + rulesEngine.registerRule(rule); + rulesEngine.registerRule(anotherRule); + + rulesEngine.unregisterRule(rule); + + assertThat(rulesEngine.getRules()) + .isNotNull() + .isNotEmpty() + .hasSize(1) + .containsOnly(anotherRule); + } + + @Test + public void testUnregisterRuleByName() throws Exception{ + rule = new BasicRule("r1","d1",1); + anotherRule = new BasicRule("r2", "d2", 2); + + rulesEngine.registerRule(rule); + rulesEngine.registerRule(anotherRule); + + rulesEngine.unregisterRuleByName("r1"); + + assertThat(rulesEngine.getRules()) + .isNotNull() + .isNotEmpty() + .hasSize(1) + .containsOnly(anotherRule); + } + @Test public void testGetRuleListeners() throws Exception { rulesEngine = aNewRulesEngine()