From fdb01582ad2c3a1751c9a103d5fcd66b25687d9b Mon Sep 17 00:00:00 2001 From: Mahmoud Ben Hassine Date: Mon, 11 Dec 2017 14:15:13 +0100 Subject: [PATCH] issue #123: Make Facts#get method cast friendly --- .../src/main/java/org/jeasy/rules/api/Facts.java | 8 +++++--- .../jeasy/rules/tutorials/airco/AirConditioningRule.java | 2 +- .../main/java/org/jeasy/rules/tutorials/shop/AgeRule.java | 4 ++-- .../java/org/jeasy/rules/tutorials/shop/AlcoholRule.java | 4 ++-- 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/easy-rules-core/src/main/java/org/jeasy/rules/api/Facts.java b/easy-rules-core/src/main/java/org/jeasy/rules/api/Facts.java index ed83000..7759359 100644 --- a/easy-rules-core/src/main/java/org/jeasy/rules/api/Facts.java +++ b/easy-rules-core/src/main/java/org/jeasy/rules/api/Facts.java @@ -69,12 +69,14 @@ public class Facts implements Iterable> { /** * Get a fact by name. * - * @param name of fact to get. + * @param name of the fact + * @param type of the fact * @return the fact having the given name, or null if there is no fact with the given name */ - public Object get(String name) { + @SuppressWarnings("unchecked") + public T get(String name) { Objects.requireNonNull(name); - return facts.get(name); + return (T) facts.get(name); } /** diff --git a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/airco/AirConditioningRule.java b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/airco/AirConditioningRule.java index 7d2c26a..168d246 100644 --- a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/airco/AirConditioningRule.java +++ b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/airco/AirConditioningRule.java @@ -17,7 +17,7 @@ public class AirConditioningRule { @Action public void coolAir(Facts facts) { System.out.println("It is hot! cooling air.."); - Integer temperature = (Integer) facts.get("temperature"); + Integer temperature = facts.get("temperature"); facts.put("temperature", temperature - 1); } diff --git a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AgeRule.java b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AgeRule.java index c195ad8..a47322f 100644 --- a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AgeRule.java +++ b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AgeRule.java @@ -36,13 +36,13 @@ public class AgeRule extends BasicRule { @Override public boolean evaluate(Facts facts) { - Person person = (Person) facts.get("person"); + Person person = facts.get("person"); return person.getAge() > ADULT_AGE; } @Override public void execute(Facts facts) { - Person person = (Person) facts.get("person"); + Person person = facts.get("person"); person.setAdult(true); System.out.printf("Person %s has been marked as adult", person.getName()); System.out.println(); diff --git a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AlcoholRule.java b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AlcoholRule.java index db8ec66..f56261a 100644 --- a/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AlcoholRule.java +++ b/easy-rules-tutorials/src/main/java/org/jeasy/rules/tutorials/shop/AlcoholRule.java @@ -34,13 +34,13 @@ public class AlcoholRule extends BasicRule { @Override public boolean evaluate(Facts facts) { - Person person = (Person) facts.get("person"); + Person person = facts.get("person"); return !person.isAdult(); } @Override public void execute(Facts facts){ - Person person = (Person) facts.get("person"); + Person person = facts.get("person"); System.out.printf("Shop: Sorry %s, you are not allowed to buy alcohol", person.getName()); System.out.println(); }