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

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


The following commit(s) were added to refs/heads/main by this push:
     new 5bb6326e804e camel-graphql: queryFile should be able to load from file 
system also
5bb6326e804e is described below

commit 5bb6326e804e5b194f9f4607a8c5fd4fab2dd087
Author: Claus Ibsen <[email protected]>
AuthorDate: Thu Oct 16 13:00:00 2025 +0200

    camel-graphql: queryFile should be able to load from file system also
---
 .../org/apache/camel/catalog/components/graphql.json          |  2 +-
 .../META-INF/org/apache/camel/component/graphql/graphql.json  |  2 +-
 .../org/apache/camel/component/graphql/GraphqlEndpoint.java   | 11 ++++++++---
 .../builder/endpoint/dsl/GraphqlEndpointBuilderFactory.java   |  3 ++-
 4 files changed, 12 insertions(+), 6 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/graphql.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/graphql.json
index 61fec1150b29..bf28673012e1 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/graphql.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/graphql.json
@@ -33,7 +33,7 @@
     "operationName": { "index": 1, "kind": "parameter", "displayName": 
"Operation Name", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The query or mutation name." },
     "proxyHost": { "index": 2, "kind": "parameter", "displayName": "Proxy 
Host", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The proxy host in the format hostname:port." },
     "query": { "index": 3, "kind": "parameter", "displayName": "Query", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query text." },
-    "queryFile": { "index": 4, "kind": "parameter", "displayName": "Query 
File", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query file name located in the classpath." 
},
+    "queryFile": { "index": 4, "kind": "parameter", "displayName": "Query 
File", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query file name located in the classpath 
(or use file: to load from file system)." },
     "queryHeader": { "index": 5, "kind": "parameter", "displayName": "Query 
Header", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The name of a header containing the GraphQL 
query." },
     "variables": { "index": 6, "kind": "parameter", "displayName": 
"Variables", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.apache.camel.util.json.JsonObject", "deprecated": 
false, "autowired": false, "secret": false, "description": "The JsonObject 
instance containing the operation variables." },
     "variablesHeader": { "index": 7, "kind": "parameter", "displayName": 
"Variables Header", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The name of a header 
containing a JsonObject instance containing the operation variables." },
diff --git 
a/components/camel-graphql/src/generated/resources/META-INF/org/apache/camel/component/graphql/graphql.json
 
b/components/camel-graphql/src/generated/resources/META-INF/org/apache/camel/component/graphql/graphql.json
index 61fec1150b29..bf28673012e1 100644
--- 
a/components/camel-graphql/src/generated/resources/META-INF/org/apache/camel/component/graphql/graphql.json
+++ 
b/components/camel-graphql/src/generated/resources/META-INF/org/apache/camel/component/graphql/graphql.json
@@ -33,7 +33,7 @@
     "operationName": { "index": 1, "kind": "parameter", "displayName": 
"Operation Name", "group": "producer", "label": "", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The query or mutation name." },
     "proxyHost": { "index": 2, "kind": "parameter", "displayName": "Proxy 
Host", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The proxy host in the format hostname:port." },
     "query": { "index": 3, "kind": "parameter", "displayName": "Query", 
"group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query text." },
-    "queryFile": { "index": 4, "kind": "parameter", "displayName": "Query 
File", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query file name located in the classpath." 
},
+    "queryFile": { "index": 4, "kind": "parameter", "displayName": "Query 
File", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The query file name located in the classpath 
(or use file: to load from file system)." },
     "queryHeader": { "index": 5, "kind": "parameter", "displayName": "Query 
Header", "group": "producer", "label": "", "required": false, "type": "string", 
"javaType": "java.lang.String", "deprecated": false, "autowired": false, 
"secret": false, "description": "The name of a header containing the GraphQL 
query." },
     "variables": { "index": 6, "kind": "parameter", "displayName": 
"Variables", "group": "producer", "label": "", "required": false, "type": 
"object", "javaType": "org.apache.camel.util.json.JsonObject", "deprecated": 
false, "autowired": false, "secret": false, "description": "The JsonObject 
instance containing the operation variables." },
     "variablesHeader": { "index": 7, "kind": "parameter", "displayName": 
"Variables Header", "group": "producer", "label": "", "required": false, 
"type": "string", "javaType": "java.lang.String", "deprecated": false, 
"autowired": false, "secret": false, "description": "The name of a header 
containing a JsonObject instance containing the operation variables." },
diff --git 
a/components/camel-graphql/src/main/java/org/apache/camel/component/graphql/GraphqlEndpoint.java
 
b/components/camel-graphql/src/main/java/org/apache/camel/component/graphql/GraphqlEndpoint.java
index f7f5672e3c36..51f7ae915233 100644
--- 
a/components/camel-graphql/src/main/java/org/apache/camel/component/graphql/GraphqlEndpoint.java
+++ 
b/components/camel-graphql/src/main/java/org/apache/camel/component/graphql/GraphqlEndpoint.java
@@ -17,6 +17,7 @@
 package org.apache.camel.component.graphql;
 
 import java.io.IOException;
+import java.io.InputStream;
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Map;
@@ -33,8 +34,8 @@ import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
 import org.apache.camel.support.DefaultEndpoint;
+import org.apache.camel.support.ResourceHelper;
 import org.apache.camel.util.IOHelper;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.json.JsonObject;
 import org.apache.hc.client5.http.auth.AuthScope;
 import org.apache.hc.client5.http.auth.CredentialsStore;
@@ -203,10 +204,14 @@ public class GraphqlEndpoint extends DefaultEndpoint 
implements EndpointServiceL
 
     public String getQuery() {
         if (query == null && queryFile != null) {
+            InputStream is = null;
             try {
-                query = 
IOHelper.loadText(ObjectHelper.loadResourceAsStream(queryFile, 
getClass().getClassLoader()));
+                is = 
ResourceHelper.resolveResourceAsInputStream(getCamelContext(), queryFile);
+                query = IOHelper.loadText(is);
             } catch (IOException e) {
                 throw new RuntimeCamelException("Failed to read query file: " 
+ queryFile, e);
+            } finally {
+                IOHelper.close(is);
             }
         }
         return query;
@@ -235,7 +240,7 @@ public class GraphqlEndpoint extends DefaultEndpoint 
implements EndpointServiceL
     }
 
     /**
-     * The query file name located in the classpath.
+     * The query file name located in the classpath (or use file: to load from 
file system).
      */
     public void setQueryFile(String queryFile) {
         this.queryFile = queryFile;
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GraphqlEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GraphqlEndpointBuilderFactory.java
index e28df13f7a03..85147f4ee54f 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GraphqlEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GraphqlEndpointBuilderFactory.java
@@ -87,7 +87,8 @@ public interface GraphqlEndpointBuilderFactory {
             return this;
         }
         /**
-         * The query file name located in the classpath.
+         * The query file name located in the classpath (or use file: to load
+         * from file system).
          * 
          * The option is a: <code>java.lang.String</code> type.
          * 

Reply via email to