From 5e7a71380600e039a1ed41b994ab0cadaaf25753 Mon Sep 17 00:00:00 2001 From: Juhan Aasaru Date: Tue, 7 Nov 2023 09:17:21 +0200 Subject: [PATCH] Fix and improve documentation (#12) * "instance.dispose();" is incorrect (should be instance.close(). Replacing with try-with-resources as RuleUnitInstance is AutoCloseable. * improve code as RuleUnitInstance is AutoCloseable. --- .../KIE/BuildDeployUtilizeAndRun/_rule-unit-api.adoc | 8 ++------ .../pages/migration-guide/_traditional-to-ruleunit.adoc | 7 ++----- .../archetype-resources/src/test/java/RuleTest.java | 5 +---- .../reference/src/test/java/it/pkg/RuleTest.java | 5 +---- 4 files changed, 6 insertions(+), 19 deletions(-) diff --git a/drools-docs/src/modules/ROOT/pages/KIE/BuildDeployUtilizeAndRun/_rule-unit-api.adoc b/drools-docs/src/modules/ROOT/pages/KIE/BuildDeployUtilizeAndRun/_rule-unit-api.adoc index 573574a7463..341493adcf3 100644 --- a/drools-docs/src/modules/ROOT/pages/KIE/BuildDeployUtilizeAndRun/_rule-unit-api.adoc +++ b/drools-docs/src/modules/ROOT/pages/KIE/BuildDeployUtilizeAndRun/_rule-unit-api.adoc @@ -141,17 +141,13 @@ Finally, you instantiate a `RuleUnitInstance` using `RuleUnitProvider` to execut public void test() { MeasurementUnit measurementUnit = new MeasurementUnit(); - RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit); - try { + try (RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit)) { measurementUnit.getMeasurements().add(new Measurement("color", "red")); ... List queryResult = instance.executeQuery("FindColor").stream().map(tuple -> (Measurement) tuple.get("$m")).collect(toList()); ... - - } finally { - instance.dispose(); - } + } // instance.close() is called automatically } ---- diff --git a/drools-docs/src/modules/ROOT/pages/migration-guide/_traditional-to-ruleunit.adoc b/drools-docs/src/modules/ROOT/pages/migration-guide/_traditional-to-ruleunit.adoc index 50540448f9d..086ff068b42 100644 --- a/drools-docs/src/modules/ROOT/pages/migration-guide/_traditional-to-ruleunit.adoc +++ b/drools-docs/src/modules/ROOT/pages/migration-guide/_traditional-to-ruleunit.adoc @@ -79,15 +79,12 @@ Using Rule Unit APIs, the resulting Java snippet would be like this: [source,java] ---- MeasurementUnit measurementUnit = new MeasurementUnit(); - RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit); - try { + try (RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit)) { measurementUnit.getMeasurements().add(new Measurement("color", "red")); measurementUnit.getMeasurements().add(new Measurement("color", "green")); instance.fire(); - } finally { - instance.dispose(); - } + } // instance.close() is called automatically ---- In Rule Unit, instantiate `RuleUnitInstance` instead of `KieSession`. Add facts to `DataSource` property instead of `insert`. Generic KIE API calls (e.g. `KieServices`, `KieContainer`, `KieBase` ... ) are no longer needed. Instead, one more class `Unit` has to be defined. diff --git a/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/main/resources/archetype-resources/src/test/java/RuleTest.java b/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/main/resources/archetype-resources/src/test/java/RuleTest.java index 5b2650c9aa3..9e2aeb95137 100644 --- a/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/main/resources/archetype-resources/src/test/java/RuleTest.java +++ b/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/main/resources/archetype-resources/src/test/java/RuleTest.java @@ -60,8 +60,7 @@ public void test() { LOG.info("Creating RuleUnit"); MeasurementUnit measurementUnit = new MeasurementUnit(); - RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit); - try { + try (RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit)) { LOG.info("Insert data"); measurementUnit.getMeasurements().add(new Measurement("color", "red")); measurementUnit.getMeasurements().add(new Measurement("color", "green")); @@ -74,8 +73,6 @@ public void test() { assertTrue("contains red", measurementUnit.getControlSet().contains("red")); assertTrue("contains green", measurementUnit.getControlSet().contains("green")); assertTrue("contains blue", measurementUnit.getControlSet().contains("blue")); - } finally { - instance.close(); } } } \ No newline at end of file diff --git a/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/test/resources/projects/integrationtestDefaults/reference/src/test/java/it/pkg/RuleTest.java b/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/test/resources/projects/integrationtestDefaults/reference/src/test/java/it/pkg/RuleTest.java index 554dbe7751c..96941d73d87 100644 --- a/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/test/resources/projects/integrationtestDefaults/reference/src/test/java/it/pkg/RuleTest.java +++ b/kie-archetypes/kie-drools-exec-model-ruleunit-archetype/src/test/resources/projects/integrationtestDefaults/reference/src/test/java/it/pkg/RuleTest.java @@ -40,8 +40,7 @@ public void test() { LOG.info("Creating RuleUnit"); MeasurementUnit measurementUnit = new MeasurementUnit(); - RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit); - try { + try (RuleUnitInstance instance = RuleUnitProvider.get().createRuleUnitInstance(measurementUnit)) { LOG.info("Insert data"); measurementUnit.getMeasurements().add(new Measurement("color", "red")); measurementUnit.getMeasurements().add(new Measurement("color", "green")); @@ -54,8 +53,6 @@ public void test() { assertTrue("contains red", measurementUnit.getControlSet().contains("red")); assertTrue("contains green", measurementUnit.getControlSet().contains("green")); assertTrue("contains blue", measurementUnit.getControlSet().contains("blue")); - } finally { - instance.close(); } } } \ No newline at end of file