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

fmariani 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 25ea9e3393f5 camel-git - bugfix consumer with null type and depth < 0
25ea9e3393f5 is described below

commit 25ea9e3393f59a5f6738ffc46dd2e86e3d2fd036
Author: Croway <[email protected]>
AuthorDate: Tue Feb 24 12:15:42 2026 +0100

    camel-git - bugfix consumer with null type and depth < 0
---
 .../resources/org/apache/camel/catalog/components/git.json     |  2 +-
 .../resources/META-INF/org/apache/camel/component/git/git.json |  2 +-
 components/camel-git/src/main/docs/git-component.adoc          |  2 +-
 .../main/java/org/apache/camel/component/git/GitEndpoint.java  |  7 ++++++-
 .../org/apache/camel/component/git/producer/GitProducer.java   |  3 +++
 .../camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java  | 10 ++++++----
 6 files changed, 18 insertions(+), 8 deletions(-)

diff --git 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
index fc475b1d1f74..27ad24eca006 100644
--- 
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
+++ 
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/git.json
@@ -55,7 +55,7 @@
     "exchangePattern": { "index": 6, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
     "pollStrategy": { "index": 7, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the pol 
[...]
     "allowEmpty": { "index": 8, "kind": "parameter", "displayName": "Allow 
Empty", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": true, "description": "The 
flag to manage empty git commits" },
-    "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"description": "Clone depth for shallow clones. A value of 1 fetches only the 
latest commit. When set to 0 or not specified, a full clone is performed." },
+    "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"description": "Clone depth for shallow clones. Must be a positive integer. A 
value of 1 fetches only the latest commit. When set to 0 or not specified, a 
full clone is performed." },
     "operation": { "index": 10, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "add", "cherryPick", 
"clean", "clone", "commit", "commitAll", "createBranch", "createTag", 
"deleteBranch", "deleteTag", "gc", "init", "log", "pull", "push", "remoteAdd", 
"remoteList", "remove", "showBranches", "showTags", "status" ], "deprecated": 
false, "autowired": false, "secret": false,  [...]
     "remoteName": { "index": 11, "kind": "parameter", "displayName": "Remote 
Name", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The remote repository name to use in 
particular operation like pull" },
     "remotePath": { "index": 12, "kind": "parameter", "displayName": "Remote 
Path", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The remote repository path" },
diff --git 
a/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
 
b/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
index fc475b1d1f74..27ad24eca006 100644
--- 
a/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
+++ 
b/components/camel-git/src/generated/resources/META-INF/org/apache/camel/component/git/git.json
@@ -55,7 +55,7 @@
     "exchangePattern": { "index": 6, "kind": "parameter", "displayName": 
"Exchange Pattern", "group": "consumer (advanced)", "label": 
"consumer,advanced", "required": false, "type": "enum", "javaType": 
"org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut" ], 
"deprecated": false, "autowired": false, "secret": false, "description": "Sets 
the exchange pattern when the consumer creates an exchange." },
     "pollStrategy": { "index": 7, "kind": "parameter", "displayName": "Poll 
Strategy", "group": "consumer (advanced)", "label": "consumer,advanced", 
"required": false, "type": "object", "javaType": 
"org.apache.camel.spi.PollingConsumerPollStrategy", "deprecated": false, 
"autowired": false, "secret": false, "description": "A pluggable 
org.apache.camel.PollingConsumerPollingStrategy allowing you to provide your 
custom implementation to control error handling usually occurred during the pol 
[...]
     "allowEmpty": { "index": 8, "kind": "parameter", "displayName": "Allow 
Empty", "group": "producer", "label": "producer", "required": false, "type": 
"boolean", "javaType": "boolean", "deprecated": false, "deprecationNote": "", 
"autowired": false, "secret": false, "defaultValue": true, "description": "The 
flag to manage empty git commits" },
-    "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"description": "Clone depth for shallow clones. A value of 1 fetches only the 
latest commit. When set to 0 or not specified, a full clone is performed." },
+    "depth": { "index": 9, "kind": "parameter", "displayName": "Depth", 
"group": "producer", "label": "producer", "required": false, "type": "integer", 
"javaType": "int", "deprecated": false, "autowired": false, "secret": false, 
"description": "Clone depth for shallow clones. Must be a positive integer. A 
value of 1 fetches only the latest commit. When set to 0 or not specified, a 
full clone is performed." },
     "operation": { "index": 10, "kind": "parameter", "displayName": 
"Operation", "group": "producer", "label": "producer", "required": false, 
"type": "enum", "javaType": "java.lang.String", "enum": [ "add", "cherryPick", 
"clean", "clone", "commit", "commitAll", "createBranch", "createTag", 
"deleteBranch", "deleteTag", "gc", "init", "log", "pull", "push", "remoteAdd", 
"remoteList", "remove", "showBranches", "showTags", "status" ], "deprecated": 
false, "autowired": false, "secret": false,  [...]
     "remoteName": { "index": 11, "kind": "parameter", "displayName": "Remote 
Name", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The remote repository name to use in 
particular operation like pull" },
     "remotePath": { "index": 12, "kind": "parameter", "displayName": "Remote 
Path", "group": "producer", "label": "producer", "required": false, "type": 
"string", "javaType": "java.lang.String", "deprecated": false, "autowired": 
false, "secret": false, "description": "The remote repository path" },
diff --git a/components/camel-git/src/main/docs/git-component.adoc 
b/components/camel-git/src/main/docs/git-component.adoc
index b5818d89d9c8..8899d8643860 100644
--- a/components/camel-git/src/main/docs/git-component.adoc
+++ b/components/camel-git/src/main/docs/git-component.adoc
@@ -85,7 +85,7 @@ from("direct:clone")
     
.to("git:///tmp/myRepo?operation=clone&remotePath=https://github.com/example/repo.git&depth=1";);
 ---------------------------------------
 
-A `depth` of 1 fetches only the latest commit. When set to 0 or omitted, a 
full clone is performed.
+A `depth` of 1 fetches only the latest commit. The value must be a positive 
integer. When set to 0 or omitted, a full clone is performed.
 
 === Custom config file
 
diff --git 
a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
 
b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
index 2c8a4aa2b734..c899c87a4c1d 100644
--- 
a/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
+++ 
b/components/camel-git/src/main/java/org/apache/camel/component/git/GitEndpoint.java
@@ -74,7 +74,8 @@ public class GitEndpoint extends ScheduledPollEndpoint {
     private boolean allowEmpty = true;
 
     @UriParam(label = "producer",
-              description = "Clone depth for shallow clones. A value of 1 
fetches only the latest commit. "
+              description = "Clone depth for shallow clones. Must be a 
positive integer. "
+                            + "A value of 1 fetches only the latest commit. "
                             + "When set to 0 or not specified, a full clone is 
performed.")
     private int depth;
 
@@ -96,6 +97,10 @@ public class GitEndpoint extends ScheduledPollEndpoint {
 
     @Override
     public Consumer createConsumer(Processor processor) throws Exception {
+        if (type == null) {
+            throw new IllegalArgumentException("type must be specified for git 
consumer");
+        }
+
         return switch (type) {
             case COMMIT -> new GitCommitConsumer(this, processor);
             case TAG -> new GitTagConsumer(this, processor);
diff --git 
a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
 
b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
index fc87b50f408d..0856005c094c 100644
--- 
a/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
+++ 
b/components/camel-git/src/main/java/org/apache/camel/component/git/producer/GitProducer.java
@@ -219,6 +219,9 @@ public class GitProducer extends DefaultProducer {
                             new UsernamePasswordCredentialsProvider(
                                     endpoint.getUsername(), 
endpoint.getPassword()));
                 }
+                if (endpoint.getDepth() < 0) {
+                    throw new IllegalArgumentException("depth must be a 
positive integer for shallow clone");
+                }
                 if (endpoint.getDepth() > 0) {
                     cloneCommand.setDepth(endpoint.getDepth());
                 }
diff --git 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
index 02f2ce2c8306..a448a53b66bd 100644
--- 
a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
+++ 
b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/GitEndpointBuilderFactory.java
@@ -811,8 +811,9 @@ public interface GitEndpointBuilderFactory {
             return this;
         }
         /**
-         * Clone depth for shallow clones. A value of 1 fetches only the latest
-         * commit. When set to 0 or not specified, a full clone is performed.
+         * Clone depth for shallow clones. Must be a positive integer. A value
+         * of 1 fetches only the latest commit. When set to 0 or not specified,
+         * a full clone is performed.
          * 
          * The option is a: <code>int</code> type.
          * 
@@ -826,8 +827,9 @@ public interface GitEndpointBuilderFactory {
             return this;
         }
         /**
-         * Clone depth for shallow clones. A value of 1 fetches only the latest
-         * commit. When set to 0 or not specified, a full clone is performed.
+         * Clone depth for shallow clones. Must be a positive integer. A value
+         * of 1 fetches only the latest commit. When set to 0 or not specified,
+         * a full clone is performed.
          * 
          * The option will be converted to a <code>int</code> type.
          * 

Reply via email to