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

davsclaus pushed a commit to branch camel-4.4.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-4.4.x by this push:
     new e6c684cd492 CAMEL-20724: camel-saxon - Fix xquery namespaces usage 
(#13996)
e6c684cd492 is described below

commit e6c684cd49266db6573cdbb7b782768d5214b9af
Author: Denis Istomin <istomin....@gmail.com>
AuthorDate: Wed May 1 09:11:31 2024 +0500

    CAMEL-20724: camel-saxon - Fix xquery namespaces usage (#13996)
---
 .../main/java/org/apache/camel/language/xquery/XQueryLanguage.java  | 6 ++++++
 .../builder/saxon/XQueryHeaderNameResultTypeAndNamespaceTest.java   | 5 ++++-
 .../org/apache/camel/reifier/language/XQueryExpressionReifier.java  | 3 ++-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git 
a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
 
b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
index cf1554b837c..dfa1ec77594 100644
--- 
a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
+++ 
b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.language.xquery;
 
+import java.util.Map;
+
 import net.sf.saxon.Configuration;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
@@ -57,6 +59,10 @@ public class XQueryLanguage extends 
SingleInputTypedLanguageSupport implements P
         if (clazz != null) {
             builder.setResultType(clazz);
         }
+        Map<String, String> ns = property(Map.class, properties, 2, null);
+        if (ns != null && !ns.isEmpty()) {
+            builder.setNamespaces(ns);
+        }
         if (configuration != null) {
             builder.setConfiguration(configuration);
         }
diff --git 
a/components/camel-saxon/src/test/java/org/apache/camel/builder/saxon/XQueryHeaderNameResultTypeAndNamespaceTest.java
 
b/components/camel-saxon/src/test/java/org/apache/camel/builder/saxon/XQueryHeaderNameResultTypeAndNamespaceTest.java
index f77262723fc..83bc485738e 100644
--- 
a/components/camel-saxon/src/test/java/org/apache/camel/builder/saxon/XQueryHeaderNameResultTypeAndNamespaceTest.java
+++ 
b/components/camel-saxon/src/test/java/org/apache/camel/builder/saxon/XQueryHeaderNameResultTypeAndNamespaceTest.java
@@ -32,6 +32,7 @@ public class XQueryHeaderNameResultTypeAndNamespaceTest 
extends CamelTestSupport
         MockEndpoint mock = getMockEndpoint("mock:55");
         mock.expectedBodiesReceived("body");
         mock.expectedHeaderReceived("cheeseDetails", "<number 
xmlns=\"http://acme.com/cheese\";>55</number>");
+        mock.expectedHeaderReceived("numberExists", "true");
 
         template.sendBodyAndHeader("direct:in", "body", "cheeseDetails",
                 "<number xmlns=\"http://acme.com/cheese\";>55</number>");
@@ -46,9 +47,11 @@ public class XQueryHeaderNameResultTypeAndNamespaceTest 
extends CamelTestSupport
                 Namespaces ns = new Namespaces("c", "http://acme.com/cheese";);
                 var xq = expression().xquery().expression("/c:number = 
55").namespaces(ns).resultType(Integer.class)
                         .source("header:cheeseDetails").end();
-
+                var xqExist = 
expression().xquery().expression("exists(/c:number)").namespaces(ns).resultType(String.class)
+                        .source("header:cheeseDetails").end();
                 from("direct:in").choice()
                         .when(xq)
+                            .setHeader("numberExists", xqExist)
                             .to("mock:55")
                         .otherwise()
                             .to("mock:other")
diff --git 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/XQueryExpressionReifier.java
 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/XQueryExpressionReifier.java
index cc13d1248ed..60a7bef8f0a 100644
--- 
a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/XQueryExpressionReifier.java
+++ 
b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/XQueryExpressionReifier.java
@@ -48,9 +48,10 @@ public class XQueryExpressionReifier extends 
SingleInputTypedExpressionReifier<X
     }
 
     protected Object[] createProperties() {
-        Object[] properties = new Object[2];
+        Object[] properties = new Object[3];
         properties[0] = asResultType();
         properties[1] = parseString(definition.getSource());
+        properties[2] = definition.getNamespaces();
         return properties;
     }
 

Reply via email to