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

davsclaus pushed a commit to branch quick-fix/script-eip-empty-expression-npe
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 12a372f8640821bcae0d82c6d11ddcea87abca26
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 20 19:25:35 2026 +0200

    chore: fail with clear error when script EIP has empty expression body
    
    When camel-xml-io-dsl parses a whitespace-only expression body (e.g.,
    <groovy></groovy>), the expression text ends up as null. At runtime
    this causes an NPE in ConcurrentHashMap.get(null) deep in the language
    runtime. Add validation in ScriptReifier to detect null/empty script
    code early and throw a clear IllegalArgumentException instead.
    
    Co-Authored-By: Claude <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../src/main/java/org/apache/camel/reifier/ScriptReifier.java     | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ScriptReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ScriptReifier.java
index eef1b4defaa7..b95a2dbb0897 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ScriptReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/ScriptReifier.java
@@ -21,7 +21,9 @@ import org.apache.camel.Processor;
 import org.apache.camel.Route;
 import org.apache.camel.model.ProcessorDefinition;
 import org.apache.camel.model.ScriptDefinition;
+import org.apache.camel.model.language.ExpressionDefinition;
 import org.apache.camel.processor.ScriptProcessor;
+import org.apache.camel.util.ObjectHelper;
 
 public class ScriptReifier extends ExpressionReifier<ScriptDefinition> {
 
@@ -31,7 +33,11 @@ public class ScriptReifier extends 
ExpressionReifier<ScriptDefinition> {
 
     @Override
     public Processor createProcessor() throws Exception {
-        Expression expr = createExpression(definition.getExpression());
+        ExpressionDefinition exp = definition.getExpression();
+        if (exp == null || ObjectHelper.isEmpty(exp.getExpression())) {
+            throw new IllegalArgumentException("Script has no script code 
configured in " + definition);
+        }
+        Expression expr = createExpression(exp);
         ScriptProcessor answer = new ScriptProcessor(expr);
         answer.setDisabled(isDisabled(camelContext, definition));
         return answer;

Reply via email to