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 856163e..a04ca32 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 @@ -28,6 +28,7 @@ import org.jeasy.rules.api.RulesEngine; import org.jeasy.rules.api.RulesEngineListener; import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** @@ -60,12 +61,12 @@ abstract class AbstractRuleEngine implements RulesEngine { @Override public List getRuleListeners() { - return ruleListeners; + return Collections.unmodifiableList(ruleListeners); } @Override public List getRulesEngineListeners() { - return rulesEngineListeners; + return Collections.unmodifiableList(rulesEngineListeners); } public void registerRuleListener(RuleListener ruleListener) { 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 3724251..8359bc5 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 @@ -40,12 +40,17 @@ import org.jeasy.rules.api.RuleListener; import org.jeasy.rules.api.RulesEngineListener; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; import org.mockito.InOrder; import org.mockito.Mock; public class DefaultRulesEngineTest extends AbstractTest { + @Rule + public ExpectedException expectedException = ExpectedException.none(); + @Mock private RuleListener ruleListener; @@ -225,6 +230,21 @@ public class DefaultRulesEngineTest extends AbstractTest { assertThat(ruleListeners).contains(ruleListener); } + @Test + public void getRuleListenersShouldReturnAnUnmodifiableList() { + // Given + expectedException.expect(UnsupportedOperationException.class); + DefaultRulesEngine rulesEngine = new DefaultRulesEngine(); + rulesEngine.registerRuleListener(ruleListener); + + // When + List ruleListeners = rulesEngine.getRuleListeners(); + ruleListeners.clear(); + + // Then + // expected exception + } + @Test public void testGetRulesEngineListeners() throws Exception { // Given @@ -238,6 +258,21 @@ public class DefaultRulesEngineTest extends AbstractTest { assertThat(rulesEngineListeners).contains(rulesEngineListener); } + @Test + public void getRulesEngineListenersShouldReturnAnUnmodifiableList() { + // Given + expectedException.expect(UnsupportedOperationException.class); + DefaultRulesEngine rulesEngine = new DefaultRulesEngine(); + rulesEngine.registerRulesEngineListener(rulesEngineListener); + + // When + List rulesEngineListeners = rulesEngine.getRulesEngineListeners(); + rulesEngineListeners.clear(); + + // Then + // excepted exception + } + @After public void clearRules() { rules.clear();