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 fc475b1d1f747..27ad24eca006f 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 poll operation before an Exchange have been created and being routed in Camel." }, "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, "description": "The operation to do on the repository" }, "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 fc475b1d1f747..27ad24eca006f 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 poll operation before an Exchange have been created and being routed in Camel." }, "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, "description": "The operation to do on the repository" }, "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 b5818d89d9c83..8899d86438605 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 2c8a4aa2b7341..c899c87a4c1df 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 Producer createProducer() throws Exception { @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 fc87b50f408de..0856005c094cf 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 @@ protected void doClone(String operation) throws GitAPIException { 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 02f2ce2c83067..a448a53b66bde 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 @@ default GitEndpointProducerBuilder allowEmpty(String allowEmpty) { 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: int type. * @@ -826,8 +827,9 @@ default GitEndpointProducerBuilder depth(int depth) { 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 int type. *