From f066f86c1ae580cdfdba1de180ccd0b9d43a8fe7 Mon Sep 17 00:00:00 2001 From: Paul Brejla Date: Fri, 19 Jan 2018 11:41:35 +0100 Subject: [PATCH] let reader read MVEL rules from String --- .../rules/mvel/MVELRuleDefinitionReader.java | 6 ++++++ .../mvel/MVELRuleDefinitionReaderTest.java | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/easy-rules-mvel/src/main/java/org/jeasy/rules/mvel/MVELRuleDefinitionReader.java b/easy-rules-mvel/src/main/java/org/jeasy/rules/mvel/MVELRuleDefinitionReader.java index c6200fd..a175165 100644 --- a/easy-rules-mvel/src/main/java/org/jeasy/rules/mvel/MVELRuleDefinitionReader.java +++ b/easy-rules-mvel/src/main/java/org/jeasy/rules/mvel/MVELRuleDefinitionReader.java @@ -42,6 +42,12 @@ class MVELRuleDefinitionReader { return createRuleDefinitionFrom(map); } + MVELRuleDefinition read(String descriptor) throws NullPointerException { + Object object = yaml.load(descriptor); + Map map = (Map) object; + return createRuleDefinitionFrom(map); + } + private static MVELRuleDefinition createRuleDefinitionFrom(Map map) { MVELRuleDefinition ruleDefinition = new MVELRuleDefinition(); ruleDefinition.setName((String) map.get("name")); diff --git a/easy-rules-mvel/src/test/java/org/jeasy/rules/mvel/MVELRuleDefinitionReaderTest.java b/easy-rules-mvel/src/test/java/org/jeasy/rules/mvel/MVELRuleDefinitionReaderTest.java index cf18066..1c36b22 100644 --- a/easy-rules-mvel/src/test/java/org/jeasy/rules/mvel/MVELRuleDefinitionReaderTest.java +++ b/easy-rules-mvel/src/test/java/org/jeasy/rules/mvel/MVELRuleDefinitionReaderTest.java @@ -26,6 +26,8 @@ package org.jeasy.rules.mvel; import org.junit.Test; import java.io.File; +import java.nio.file.Files; +import java.nio.file.Paths; import java.util.Collections; import static org.assertj.core.api.Assertions.assertThat; @@ -51,4 +53,22 @@ public class MVELRuleDefinitionReaderTest { assertThat(adultRuleDefinition.getActions()).isEqualTo(Collections.singletonList("person.setAdult(true);")); } + @Test + public void testRuleDefinitionReadingFromString() throws Exception { + // given + String adultRuleDescriptor = new String(Files.readAllBytes(Paths.get("src/test/resources/adult-rule.yml"))); + + // when + MVELRuleDefinition adultRuleDefinition = ruleDefinitionReader.read(adultRuleDescriptor); + + // then + assertThat(adultRuleDefinition).isNotNull(); + assertThat(adultRuleDefinition.getName()).isEqualTo("adult rule"); + assertThat(adultRuleDefinition.getDescription()).isEqualTo("when age is greater then 18, then mark as adult"); + assertThat(adultRuleDefinition.getPriority()).isEqualTo(1); + assertThat(adultRuleDefinition.getCondition()).isEqualTo("person.age > 18"); + assertThat(adultRuleDefinition.getActions()).isEqualTo(Collections.singletonList("person.setAdult(true);")); + } + + } \ No newline at end of file