This is an automated email from the ASF dual-hosted git repository.

madhan pushed a commit to branch ranger-2.6
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/ranger-2.6 by this push:
     new 00c04a392 RANGER-5079: remove unnecessary warn log - 
NashornScriptEngineCreator on JDK15 or higher (#472)
00c04a392 is described below

commit 00c04a392c930711fca8f71d160a123b483dfd5c
Author: Madhan Neethiraj <[email protected]>
AuthorDate: Fri Dec 20 21:25:37 2024 -0800

    RANGER-5079: remove unnecessary warn log - NashornScriptEngineCreator on 
JDK15 or higher (#472)
    
    (cherry picked from commit a1f6239ca9fb7d017589f18a85dbbbe23daa8b7b)
---
 .../ranger/plugin/util/ScriptEngineUtil.java       | 48 ++++++++++++++++++----
 1 file changed, 41 insertions(+), 7 deletions(-)

diff --git 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
index 8d76c1d81..1d0194e34 100644
--- 
a/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
+++ 
b/agents-common/src/main/java/org/apache/ranger/plugin/util/ScriptEngineUtil.java
@@ -31,9 +31,21 @@ import javax.script.ScriptEngine;
 public class ScriptEngineUtil {
     private static final Logger LOG = 
LoggerFactory.getLogger(RangerScriptConditionEvaluator.class);
 
+    private static final String   SCRIPT_ENGINE_CREATOR_NASHHORN = 
"org.apache.ranger.plugin.util.NashornScriptEngineCreator";
+    private static final String   SCRIPT_ENGINE_CREATOR_GRAAL    = 
"org.apache.ranger.plugin.util.GraalScriptEngineCreator";
+    private static final String   SCRIPT_ENGINE_CREATOR_JS       = 
"org.apache.ranger.plugin.util.JavaScriptEngineCreator";
+    private static final String[] SCRIPT_ENGINE_CREATORS         = new 
String[] {SCRIPT_ENGINE_CREATOR_NASHHORN, SCRIPT_ENGINE_CREATOR_GRAAL, 
SCRIPT_ENGINE_CREATOR_JS};
+    private static final int      JVM_MAJOR_CLASS_VERSION_JDK8   = 52;
+    private static final int      JVM_MAJOR_CLASS_VERSION_JDK15  = 59;
+    private static final int      JVM_MAJOR_CLASS_VERSION        = 
getJVMMajorClassVersion();
+
     private static volatile ScriptEngineCreator SCRIPT_ENGINE_CREATOR          
   = null;
     private static volatile boolean             
SCRIPT_ENGINE_CREATOR_INITIALIZED = false;
 
+    private ScriptEngineUtil() {
+        // to block instantiation
+    }
+
     // for backward compatibility with any plugin that might use this API
     public static ScriptEngine createScriptEngine(String engineName, String 
serviceType) {
         if (LOG.isDebugEnabled()) {
@@ -95,12 +107,7 @@ public class ScriptEngineUtil {
     }
 
     private static void initScriptEngineCreator(String serviceType) {
-        String[] engineCreators = new String[] { 
"org.apache.ranger.plugin.util.NashornScriptEngineCreator",
-                                                 
"org.apache.ranger.plugin.util.GraalScriptEngineCreator",
-                                                 
"org.apache.ranger.plugin.util.JavaScriptEngineCreator"
-                                               };
-
-        for (String creatorClsName : engineCreators) {
+        for (String creatorClsName : SCRIPT_ENGINE_CREATORS) {
             ScriptEngineCreator creator = null;
 
             try {
@@ -108,7 +115,19 @@ public class ScriptEngineUtil {
 
                 creator = creatorClass.newInstance();
             } catch (Throwable t) {
-                LOG.warn("initScriptEngineCreator(): failed to instantiate 
engine creator {}", creatorClsName, t);
+                boolean logWarn;
+
+                if (creatorClsName.equals(SCRIPT_ENGINE_CREATOR_NASHHORN)) { 
// not available JDK15 onwards
+                    logWarn = JVM_MAJOR_CLASS_VERSION < 
JVM_MAJOR_CLASS_VERSION_JDK15;
+                } else if (creatorClsName.equals(SCRIPT_ENGINE_CREATOR_GRAAL)) 
{ // available only after JDK15 onwards
+                    logWarn = JVM_MAJOR_CLASS_VERSION >= 
JVM_MAJOR_CLASS_VERSION_JDK15;
+                } else {
+                    logWarn = true;
+                }
+
+                if (logWarn) {
+                    LOG.warn("initScriptEngineCreator(): failed to instantiate 
engine creator {}", creatorClsName, t);
+                }
             }
 
             if (creator == null) {
@@ -139,6 +158,21 @@ public class ScriptEngineUtil {
         }
     }
 
+    private static int getJVMMajorClassVersion() {
+        int ret = JVM_MAJOR_CLASS_VERSION_JDK8;
+
+        try {
+            String   javaClassVersion = 
System.getProperty("java.class.version");
+            String[] versionElements  = javaClassVersion != null ? 
javaClassVersion.split("\\.") : new String[0];
+
+            ret = versionElements.length > 0 ? 
Integer.parseInt(versionElements[0]) : JVM_MAJOR_CLASS_VERSION_JDK8;
+        } catch (Throwable t) {
+            // ignore
+        }
+
+        return ret;
+    }
+
     private static ClassLoader getPrevActiveClassLoader(String serviceType) {
         ClassLoader ret = null;
 

Reply via email to