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.
*