From 991d20e0e58c33494a351350e9c642ff1c091263 Mon Sep 17 00:00:00 2001 From: ant Date: Tue, 21 Feb 2017 21:55:21 +0100 Subject: [PATCH] stable. fixed issue 4 and updated dependencies to latest versions. --- .gitignore | 2 + README.md | 8 ++- rules-java8/pom.xml | 4 +- rules-parent/pom.xml | 10 ++-- rules-scala/pom.xml | 2 +- rules/pom.xml | 6 +- .../src/main/java/ch/maxant/rules/Engine.java | 18 ++---- .../ch/maxant/rules/JavascriptEngine.java | 55 ++++++++----------- rules/src/main/resources/releaseNotes.txt | 4 ++ 9 files changed, 52 insertions(+), 57 deletions(-) diff --git a/.gitignore b/.gitignore index 19ce1c8..988fdb0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ target/ rules-js/test/coverage **/node_modules/ +*.iml +.idea diff --git a/README.md b/README.md index 57f9d1d..a213c3c 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,15 @@ Simple Rule Engine from Ant's blog. Able to process MVEL and Javascript rules in JVM, or run on Node.js. +Version 2.2.1: +- Fixed https://github.com/maxant/rules/issues/4 - added checks to log level in order to improve performance. +- Updated dependencies to latest versions + Version 2.2.0: -See [http://blog.maxant.co.uk/pebble/2015/08/22/1440237900000.html](http://blog.maxant.co.uk/pebble/2015/08/22/1440237900000.html) => Support for Javascript rules in JVM via Nashorn. +- See [http://blog.maxant.co.uk/pebble/2015/08/22/1440237900000.html](http://blog.maxant.co.uk/pebble/2015/08/22/1440237900000.html) => Support for Javascript rules in JVM via Nashorn. Version 2.1.0: -See [http://blog.maxant.co.uk/pebble/2011/11/12/1321129560000.html](http://blog.maxant.co.uk/pebble/2011/11/12/1321129560000.html) and +- See [http://blog.maxant.co.uk/pebble/2011/11/12/1321129560000.html](http://blog.maxant.co.uk/pebble/2011/11/12/1321129560000.html) and [http://blog.maxant.co.uk/pebble/2014/10/03/1412371560000.html](http://blog.maxant.co.uk/pebble/2014/10/03/1412371560000.html) and also [http://blog.maxant.co.uk/pebble/2014/11/15/1416087180000.html](http://blog.maxant.co.uk/pebble/2014/11/15/1416087180000.html) for Node.js. diff --git a/rules-java8/pom.xml b/rules-java8/pom.xml index 65deca6..988bc63 100644 --- a/rules-java8/pom.xml +++ b/rules-java8/pom.xml @@ -4,7 +4,7 @@ ch.maxant rules-parent - 2.2.1-SNAPSHOT + 2.2.1 ../rules-parent rules-java8 @@ -33,7 +33,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + 3.6.1 1.8 1.8 diff --git a/rules-parent/pom.xml b/rules-parent/pom.xml index 3ce7b2f..d5ec737 100644 --- a/rules-parent/pom.xml +++ b/rules-parent/pom.xml @@ -3,7 +3,7 @@ 4.0.0 ch.maxant rules-parent - 2.2.1-SNAPSHOT + 2.2.1 pom http://blog.maxant.co.uk/pebble/2011/11/12/1321129560000.html @@ -43,7 +43,7 @@ org.apache.maven.plugins maven-source-plugin - 2.4 + 3.0.1 attach-sources @@ -57,7 +57,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 2.10.3 + 2.10.4 UTF-8 @@ -76,7 +76,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.3 + 3.6.1 1.6 1.6 @@ -103,7 +103,7 @@ org.sonatype.plugins nexus-staging-maven-plugin - 1.6.6 + 1.6.7 true sonatype diff --git a/rules-scala/pom.xml b/rules-scala/pom.xml index 38ebfb8..542269c 100644 --- a/rules-scala/pom.xml +++ b/rules-scala/pom.xml @@ -4,7 +4,7 @@ ch.maxant rules-parent - 2.2.1-SNAPSHOT + 2.2.1 ../rules-parent diff --git a/rules/pom.xml b/rules/pom.xml index c4bbe94..d6b223b 100644 --- a/rules/pom.xml +++ b/rules/pom.xml @@ -4,11 +4,11 @@ ch.maxant rules-parent - 2.2.1-SNAPSHOT + 2.2.1 ../rules-parent - 2.2.6.Final + 2.3.1.Final rules jar @@ -32,7 +32,7 @@ org.apache.maven.plugins maven-jar-plugin - 2.5 + 3.0.2 diff --git a/rules/src/main/java/ch/maxant/rules/Engine.java b/rules/src/main/java/ch/maxant/rules/Engine.java index fe5c753..920854c 100644 --- a/rules/src/main/java/ch/maxant/rules/Engine.java +++ b/rules/src/main/java/ch/maxant/rules/Engine.java @@ -17,20 +17,14 @@ */ package ch.maxant.rules; +import org.mvel2.MVEL; + import java.io.Serializable; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; +import java.util.logging.Level; import java.util.logging.Logger; import java.util.regex.Pattern; -import org.mvel2.MVEL; - /** * A Rule Engine. Can evaluate rules and execute {@link IAction}s or simply provide an * ordered list of the best matching {@link Rule}s.
@@ -400,9 +394,9 @@ public List getMatchingRules(String nameSpacePattern, Input input) String msg = r.getRule().getFullyQualifiedName() + "-{" + r.getRule().getExpression() + "}"; if(String.valueOf(o).equals("true")){ matchingRules.add(r.getRule()); - log.info("matched: " + msg); + if(log.isLoggable(Level.INFO)) log.info("matched: " + msg); }else{ - log.info("unmatched: " + msg); + if(log.isLoggable(Level.INFO)) log.info("unmatched: " + msg); } } diff --git a/rules/src/main/java/ch/maxant/rules/JavascriptEngine.java b/rules/src/main/java/ch/maxant/rules/JavascriptEngine.java index ffc2ddc..eb9d85a 100644 --- a/rules/src/main/java/ch/maxant/rules/JavascriptEngine.java +++ b/rules/src/main/java/ch/maxant/rules/JavascriptEngine.java @@ -17,27 +17,6 @@ */ package ch.maxant.rules; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.logging.Logger; -import java.util.regex.Pattern; - -import javax.script.Compilable; -import javax.script.CompiledScript; -import javax.script.ScriptContext; -import javax.script.ScriptEngine; -import javax.script.ScriptEngineFactory; -import javax.script.ScriptEngineManager; -import javax.script.ScriptException; - import org.apache.commons.pool2.BasePooledObjectFactory; import org.apache.commons.pool2.ObjectPool; import org.apache.commons.pool2.PooledObject; @@ -45,6 +24,16 @@ import org.apache.commons.pool2.impl.GenericObjectPool; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; +import javax.script.*; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.*; +import java.util.Map.Entry; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.regex.Pattern; + /** * A Javascript based Subclass of {@link Engine}.
* ONLY TESTED WITH JAVA 8 AND NASHORN!!
@@ -61,15 +50,17 @@ public class JavascriptEngine extends Engine { static { ScriptEngine engine = ENGINE_MANAGER.getEngineByMimeType(MIME_TYPE); ScriptEngineFactory factory = engine.getFactory(); - log.info("Using JavaScript engine " + factory.getEngineName() + "/" - + factory.getEngineVersion() + "/" - + factory.getLanguageName() + "/" - + factory.getLanguageVersion() + "/" - + factory.getExtensions() + "/" - + factory.getMimeTypes() + "/" - + factory.getNames() + "/" - + "threading model: " + factory.getParameter("THREADING") - ); + if(log.isLoggable(Level.INFO)){ + log.info("Using JavaScript engine " + factory.getEngineName() + "/" + + factory.getEngineVersion() + "/" + + factory.getLanguageName() + "/" + + factory.getLanguageVersion() + "/" + + factory.getExtensions() + "/" + + factory.getMimeTypes() + "/" + + factory.getNames() + "/" + + "threading model: " + factory.getParameter("THREADING") + ); + } } private final class PoolableEngineFactory extends BasePooledObjectFactory { @@ -291,9 +282,9 @@ public List getMatchingRules(String nameSpacePattern, Input input) String msg = r.getFullyQualifiedName() + "-{" + r.getExpression() + "}"; if(String.valueOf(result).equals("true")){ matchingRules.add(r); - log.info("matched: " + msg); + if(log.isLoggable(Level.INFO)) log.info("matched: " + msg); }else{ - log.info("unmatched: " + msg); + if(log.isLoggable(Level.INFO)) log.info("unmatched: " + msg); } } //order by priority! diff --git a/rules/src/main/resources/releaseNotes.txt b/rules/src/main/resources/releaseNotes.txt index d9b6715..be89542 100644 --- a/rules/src/main/resources/releaseNotes.txt +++ b/rules/src/main/resources/releaseNotes.txt @@ -1,3 +1,7 @@ +2.2.1 - 201702212200 +====================== +Fixed https://github.com/maxant/rules/issues/4 and updated dependencies. + 2.2.0 - 201508220000 ====================== Added support for JavaScript rules in JVM, using Nashorn.