From: =?utf-8?q?Timo_R=C3=B6hling?= <roehling@debian.org>
Date: Fri, 19 Apr 2024 13:04:59 +0200
Subject: Always use internal JavaScript engine

As long as the Nashorn engine is not packaged for Debian, this package
will only work with OpenJDK < 14.

Forwarded: not-needed
---
 .../java/com/eprosima/idl/context/Context.java     | 29 +++++++++++++++-------
 1 file changed, 20 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/eprosima/idl/context/Context.java b/src/main/java/com/eprosima/idl/context/Context.java
index 1cb2808..39c575b 100644
--- a/src/main/java/com/eprosima/idl/context/Context.java
+++ b/src/main/java/com/eprosima/idl/context/Context.java
@@ -1439,15 +1439,7 @@ public class Context
 
     public static ScriptEngine getJSScriptEngine()
     {
-        if (Double.parseDouble(System.getProperty("java.specification.version")) < 11)
-        {
-            return new ScriptEngineManager().getEngineByName("js");
-        }
-        else
-        {
-            return new org.openjdk.nashorn.api.scripting.NashornScriptEngineFactory()
-                           .getScriptEngine();
-        }
+        return new ScriptEngineManager().getEngineByName("js");
     }
 
     public String evaluate_literal(
@@ -1490,6 +1482,25 @@ public class Context
         try
         {
             ScriptEngine engine = getJSScriptEngine();
+            if (engine == null)
+            {
+                // Fallback for simple expressions
+                for (Definition definition : m_definitions)
+                {
+                    if (definition.isIsConstDeclaration())
+                    {
+                        ConstDeclaration const_decl = (ConstDeclaration)definition;
+                        if (const_decl.getTypeCode().isPrimitive() || const_decl.getTypeCode().isIsStringType() || const_decl.getTypeCode().isIsWStringType())
+                        {
+                            if (str == const_decl.getScopedname())
+                                return const_decl.getValue();
+                            if (const_decl.getScope() == getScope() && str == const_decl.getName())
+                                return const_decl.getValue();
+                        }
+                    }
+                }
+                return str;
+            }
             aux_str = engine.eval(aux_str).toString();
         }
         catch (ScriptException se)
