This is an automated email from the ASF dual-hosted git repository. nfilotto pushed a commit to branch backport-camel-smb in repository https://gitbox.apache.org/repos/asf/camel.git
commit 7e51f72d3edd2edbfb8cc85eaee7e5513cbb0443 Author: Claus Ibsen <[email protected]> AuthorDate: Mon Nov 13 06:55:57 2023 +0100 camel-smb - Should be scheduled endpoint and polished code. --- camel-dependencies/pom.xml | 1 + .../org/apache/camel/catalog/components/smb.json | 56 +- components/camel-smb/pom.xml | 14 +- .../component/smb/SmbComponentConfigurer.java | 6 - .../camel/component/smb/SmbEndpointConfigurer.java | 102 ++- .../camel/component/smb/SmbEndpointUriFactory.java | 31 +- .../services/org/apache/camel/component.properties | 2 +- .../org/apache/camel/component/smb/smb.json | 56 +- .../camel-smb/src/main/docs/smb-component.adoc | 5 +- .../camel/component/smb/SmbConfiguration.java | 15 +- .../apache/camel/component/smb/SmbConsumer.java | 13 +- .../apache/camel/component/smb/SmbEndpoint.java | 33 +- .../components/modules/ROOT/examples/json/smb.json | 1 + docs/components/modules/ROOT/nav.adoc | 1 + .../modules/ROOT/pages/smb-component.adoc | 1 + .../component/ComponentsBuilderFactory.java | 13 + .../component/dsl/SmbComponentBuilderFactory.java | 116 +++ .../src/generated/resources/metadata.json | 22 + .../builder/endpoint/EndpointBuilderFactory.java | 1 + .../camel/builder/endpoint/EndpointBuilders.java | 1 + .../builder/endpoint/StaticEndpointBuilders.java | 57 ++ .../endpoint/dsl/SmbEndpointBuilderFactory.java | 919 +++++++++++++++++++++ test-infra/camel-test-infra-smb/pom.xml | 2 +- .../camel/test/infra/smb/services/SmbService.java | 16 +- .../test/infra/smb/services/SmbServiceFactory.java | 2 +- 25 files changed, 1368 insertions(+), 118 deletions(-) diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml index 565f973f79b..c253a6c97d2 100644 --- a/camel-dependencies/pom.xml +++ b/camel-dependencies/pom.xml @@ -507,6 +507,7 @@ <smallrye-fault-tolerance-version>5.6.0</smallrye-fault-tolerance-version> <smallrye-health-version>3.3.0</smallrye-health-version> <smallrye-metrics-version>3.0.5</smallrye-metrics-version> + <smbj-version>0.12.0</smbj-version> <snakeyaml-engine-version>2.3</snakeyaml-engine-version> <snakeyaml-version>1.33</snakeyaml-version> <snappy-java-version>1.1.10.3</snappy-java-version> diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json index 82a5f452475..7dc9f8a7973 100644 --- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json +++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/smb.json @@ -3,7 +3,7 @@ "kind": "component", "name": "smb", "title": "SMB", - "description": "SMB component which consumes natively from file shares using the Server Message Block (SMB, also known as Common Internet File System - CIFS) protocol", + "description": "Receive files from SMB (Server Message Block) shares.", "deprecated": false, "firstVersion": "4.2.0-SNAPSHOT", "label": "file", @@ -11,35 +11,49 @@ "supportLevel": "Preview", "groupId": "org.apache.camel", "artifactId": "camel-smb", - "version": "4.2.0-SNAPSHOT", + "version": "3.22.0-SNAPSHOT", "scheme": "smb", "extendsScheme": "", - "syntax": "smb:hostname:port", + "syntax": "smb:hostname:port\/shareName", "async": false, "api": false, - "consumerOnly": false, + "consumerOnly": true, "producerOnly": false, "lenientProperties": false }, "componentProperties": { - "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the like [...] - "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...] + "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...] + "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...] }, "properties": { - "hostname": { "index": 0, "kind": "path", "displayName": "Hostname", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The share name or IP address" }, - "port": { "index": 1, "kind": "path", "displayName": "Port", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 445, "description": "The share port" }, - "shareName": { "index": 2, "kind": "path", "displayName": "Share Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The share path" }, - "domain": { "index": 3, "kind": "parameter", "displayName": "Domain", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The user domain" }, - "password": { "index": 4, "kind": "parameter", "displayName": "Password", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The password to access the share" }, - "path": { "index": 5, "kind": "parameter", "displayName": "Path", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The path, within the share, to consume the files from" }, - "searchPattern": { "index": 6, "kind": "parameter", "displayName": "Search Pattern", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "*.txt", "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The search pattern used to list the files" }, - "smbIoBean": { "index": 7, "kind": "parameter", "displayName": "Smb Io Bean", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.smb.SmbIOBean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "An optional SMB I\/O bean to use to setup the file access attributes when reading\/writing a file" }, - "username": { "index": 8, "kind": "parameter", "displayName": "Username", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The username required to access the share" }, - "idempotentRepository": { "index": 9, "kind": "parameter", "displayName": "Idempotent Repository", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.spi.IdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "A pluggable repository org.apache.camel.spi.IdempotentRepository wh [...] - "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming [...] - "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] - "exchangePattern": { "index": 12, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "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." }, - "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] + "hostname": { "kind": "path", "displayName": "Hostname", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The share hostname or IP address" }, + "port": { "kind": "path", "displayName": "Port", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 445, "description": "The share port number" }, + "shareName": { "kind": "path", "displayName": "Share Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "description": "The name of the share to connect to." }, + "idempotentRepository": { "kind": "parameter", "displayName": "Idempotent Repository", "group": "consumer", "label": "advanced,consumer", "required": false, "type": "object", "javaType": "org.apache.camel.spi.IdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "A pluggable repository org.apache.camel.spi.IdempotentRepository which [...] + "path": { "kind": "parameter", "displayName": "Path", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The path, within the share, to consume the files from" }, + "searchPattern": { "kind": "parameter", "displayName": "Search Pattern", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "*.txt", "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The search pattern used to list the files" }, + "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." }, + "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...] + "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...] + "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, + "pollStrategy": { "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 [...] + "smbIoBean": { "kind": "parameter", "displayName": "Smb Io Bean", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.smb.SmbIOBean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "An optional SMB I\/O bean to use to setup the file access attributes when reading\/writing a file" }, + "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, + "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, + "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...] + "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, + "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, + "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, + "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, + "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level [...] + "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, + "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, + "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." }, + "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, + "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, + "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, + "domain": { "kind": "parameter", "displayName": "Domain", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The user domain" }, + "password": { "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The password to access the share" }, + "username": { "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The username required to access the share" } } } diff --git a/components/camel-smb/pom.xml b/components/camel-smb/pom.xml index 2932045d297..8d6a1f91829 100644 --- a/components/camel-smb/pom.xml +++ b/components/camel-smb/pom.xml @@ -24,7 +24,7 @@ <parent> <groupId>org.apache.camel</groupId> <artifactId>components</artifactId> - <version>4.2.0-SNAPSHOT</version> + <version>3.22.0-SNAPSHOT</version> </parent> <artifactId>camel-smb</artifactId> @@ -50,16 +50,10 @@ <!-- logging --> <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-slf4j2-impl</artifactId> - <scope>test</scope> + <groupId>org.apache.logging.log4j</groupId> + <artifactId>log4j-slf4j-impl</artifactId> + <scope>test</scope> </dependency> - <dependency> - <groupId>org.apache.logging.log4j</groupId> - <artifactId>log4j-core</artifactId> - <scope>test</scope> - </dependency> - <!-- testing --> <dependency> <groupId>org.apache.camel</groupId> diff --git a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbComponentConfigurer.java b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbComponentConfigurer.java index 503eb294177..29ce7626b58 100644 --- a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbComponentConfigurer.java +++ b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbComponentConfigurer.java @@ -25,8 +25,6 @@ public class SmbComponentConfigurer extends PropertyConfigurerSupport implements case "autowiredEnabled": target.setAutowiredEnabled(property(camelContext, boolean.class, value)); return true; case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; - case "lazystartproducer": - case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; default: return false; } } @@ -38,8 +36,6 @@ public class SmbComponentConfigurer extends PropertyConfigurerSupport implements case "autowiredEnabled": return boolean.class; case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; - case "lazystartproducer": - case "lazyStartProducer": return boolean.class; default: return null; } } @@ -52,8 +48,6 @@ public class SmbComponentConfigurer extends PropertyConfigurerSupport implements case "autowiredEnabled": return target.isAutowiredEnabled(); case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); - case "lazystartproducer": - case "lazyStartProducer": return target.isLazyStartProducer(); default: return null; } } diff --git a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointConfigurer.java b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointConfigurer.java index dcddda2fe2d..5dee425eea5 100644 --- a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointConfigurer.java +++ b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointConfigurer.java @@ -21,23 +21,50 @@ public class SmbEndpointConfigurer extends PropertyConfigurerSupport implements public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) { SmbEndpoint target = (SmbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "backofferrorthreshold": + case "backoffErrorThreshold": target.setBackoffErrorThreshold(property(camelContext, int.class, value)); return true; + case "backoffidlethreshold": + case "backoffIdleThreshold": target.setBackoffIdleThreshold(property(camelContext, int.class, value)); return true; + case "backoffmultiplier": + case "backoffMultiplier": target.setBackoffMultiplier(property(camelContext, int.class, value)); return true; case "bridgeerrorhandler": case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true; + case "delay": target.setDelay(property(camelContext, long.class, value)); return true; case "domain": target.getConfiguration().setDomain(property(camelContext, java.lang.String.class, value)); return true; case "exceptionhandler": case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true; case "exchangepattern": case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true; + case "greedy": target.setGreedy(property(camelContext, boolean.class, value)); return true; case "idempotentrepository": case "idempotentRepository": target.getConfiguration().setIdempotentRepository(property(camelContext, org.apache.camel.spi.IdempotentRepository.class, value)); return true; - case "lazystartproducer": - case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true; + case "initialdelay": + case "initialDelay": target.setInitialDelay(property(camelContext, long.class, value)); return true; case "password": target.getConfiguration().setPassword(property(camelContext, java.lang.String.class, value)); return true; case "path": target.getConfiguration().setPath(property(camelContext, java.lang.String.class, value)); return true; + case "pollstrategy": + case "pollStrategy": target.setPollStrategy(property(camelContext, org.apache.camel.spi.PollingConsumerPollStrategy.class, value)); return true; + case "repeatcount": + case "repeatCount": target.setRepeatCount(property(camelContext, long.class, value)); return true; + case "runlogginglevel": + case "runLoggingLevel": target.setRunLoggingLevel(property(camelContext, org.apache.camel.LoggingLevel.class, value)); return true; + case "scheduledexecutorservice": + case "scheduledExecutorService": target.setScheduledExecutorService(property(camelContext, java.util.concurrent.ScheduledExecutorService.class, value)); return true; + case "scheduler": target.setScheduler(property(camelContext, java.lang.Object.class, value)); return true; + case "schedulerproperties": + case "schedulerProperties": target.setSchedulerProperties(property(camelContext, java.util.Map.class, value)); return true; case "searchpattern": case "searchPattern": target.getConfiguration().setSearchPattern(property(camelContext, java.lang.String.class, value)); return true; + case "sendemptymessagewhenidle": + case "sendEmptyMessageWhenIdle": target.setSendEmptyMessageWhenIdle(property(camelContext, boolean.class, value)); return true; case "smbiobean": case "smbIoBean": target.getConfiguration().setSmbIoBean(property(camelContext, org.apache.camel.component.smb.SmbIOBean.class, value)); return true; + case "startscheduler": + case "startScheduler": target.setStartScheduler(property(camelContext, boolean.class, value)); return true; + case "timeunit": + case "timeUnit": target.setTimeUnit(property(camelContext, java.util.concurrent.TimeUnit.class, value)); return true; + case "usefixeddelay": + case "useFixedDelay": target.setUseFixedDelay(property(camelContext, boolean.class, value)); return true; case "username": target.getConfiguration().setUsername(property(camelContext, java.lang.String.class, value)); return true; default: return false; } @@ -46,23 +73,50 @@ public class SmbEndpointConfigurer extends PropertyConfigurerSupport implements @Override public Class<?> getOptionType(String name, boolean ignoreCase) { switch (ignoreCase ? name.toLowerCase() : name) { + case "backofferrorthreshold": + case "backoffErrorThreshold": return int.class; + case "backoffidlethreshold": + case "backoffIdleThreshold": return int.class; + case "backoffmultiplier": + case "backoffMultiplier": return int.class; case "bridgeerrorhandler": case "bridgeErrorHandler": return boolean.class; + case "delay": return long.class; case "domain": return java.lang.String.class; case "exceptionhandler": case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class; case "exchangepattern": case "exchangePattern": return org.apache.camel.ExchangePattern.class; + case "greedy": return boolean.class; case "idempotentrepository": case "idempotentRepository": return org.apache.camel.spi.IdempotentRepository.class; - case "lazystartproducer": - case "lazyStartProducer": return boolean.class; + case "initialdelay": + case "initialDelay": return long.class; case "password": return java.lang.String.class; case "path": return java.lang.String.class; + case "pollstrategy": + case "pollStrategy": return org.apache.camel.spi.PollingConsumerPollStrategy.class; + case "repeatcount": + case "repeatCount": return long.class; + case "runlogginglevel": + case "runLoggingLevel": return org.apache.camel.LoggingLevel.class; + case "scheduledexecutorservice": + case "scheduledExecutorService": return java.util.concurrent.ScheduledExecutorService.class; + case "scheduler": return java.lang.Object.class; + case "schedulerproperties": + case "schedulerProperties": return java.util.Map.class; case "searchpattern": case "searchPattern": return java.lang.String.class; + case "sendemptymessagewhenidle": + case "sendEmptyMessageWhenIdle": return boolean.class; case "smbiobean": case "smbIoBean": return org.apache.camel.component.smb.SmbIOBean.class; + case "startscheduler": + case "startScheduler": return boolean.class; + case "timeunit": + case "timeUnit": return java.util.concurrent.TimeUnit.class; + case "usefixeddelay": + case "useFixedDelay": return boolean.class; case "username": return java.lang.String.class; default: return null; } @@ -72,26 +126,62 @@ public class SmbEndpointConfigurer extends PropertyConfigurerSupport implements public Object getOptionValue(Object obj, String name, boolean ignoreCase) { SmbEndpoint target = (SmbEndpoint) obj; switch (ignoreCase ? name.toLowerCase() : name) { + case "backofferrorthreshold": + case "backoffErrorThreshold": return target.getBackoffErrorThreshold(); + case "backoffidlethreshold": + case "backoffIdleThreshold": return target.getBackoffIdleThreshold(); + case "backoffmultiplier": + case "backoffMultiplier": return target.getBackoffMultiplier(); case "bridgeerrorhandler": case "bridgeErrorHandler": return target.isBridgeErrorHandler(); + case "delay": return target.getDelay(); case "domain": return target.getConfiguration().getDomain(); case "exceptionhandler": case "exceptionHandler": return target.getExceptionHandler(); case "exchangepattern": case "exchangePattern": return target.getExchangePattern(); + case "greedy": return target.isGreedy(); case "idempotentrepository": case "idempotentRepository": return target.getConfiguration().getIdempotentRepository(); - case "lazystartproducer": - case "lazyStartProducer": return target.isLazyStartProducer(); + case "initialdelay": + case "initialDelay": return target.getInitialDelay(); case "password": return target.getConfiguration().getPassword(); case "path": return target.getConfiguration().getPath(); + case "pollstrategy": + case "pollStrategy": return target.getPollStrategy(); + case "repeatcount": + case "repeatCount": return target.getRepeatCount(); + case "runlogginglevel": + case "runLoggingLevel": return target.getRunLoggingLevel(); + case "scheduledexecutorservice": + case "scheduledExecutorService": return target.getScheduledExecutorService(); + case "scheduler": return target.getScheduler(); + case "schedulerproperties": + case "schedulerProperties": return target.getSchedulerProperties(); case "searchpattern": case "searchPattern": return target.getConfiguration().getSearchPattern(); + case "sendemptymessagewhenidle": + case "sendEmptyMessageWhenIdle": return target.isSendEmptyMessageWhenIdle(); case "smbiobean": case "smbIoBean": return target.getConfiguration().getSmbIoBean(); + case "startscheduler": + case "startScheduler": return target.isStartScheduler(); + case "timeunit": + case "timeUnit": return target.getTimeUnit(); + case "usefixeddelay": + case "useFixedDelay": return target.isUseFixedDelay(); case "username": return target.getConfiguration().getUsername(); default: return null; } } + + @Override + public Object getCollectionValueType(Object target, String name, boolean ignoreCase) { + switch (ignoreCase ? name.toLowerCase() : name) { + case "schedulerproperties": + case "schedulerProperties": return java.lang.Object.class; + default: return null; + } + } } diff --git a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointUriFactory.java b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointUriFactory.java index 57dbf693919..09413729f60 100644 --- a/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointUriFactory.java +++ b/components/camel-smb/src/generated/java/org/apache/camel/component/smb/SmbEndpointUriFactory.java @@ -15,30 +15,51 @@ import org.apache.camel.spi.EndpointUriFactory; */ public class SmbEndpointUriFactory extends org.apache.camel.support.component.EndpointUriFactorySupport implements EndpointUriFactory { - private static final String BASE = ":hostname:port"; + private static final String BASE = ":hostname:port/shareName"; private static final Set<String> PROPERTY_NAMES; private static final Set<String> SECRET_PROPERTY_NAMES; private static final Set<String> MULTI_VALUE_PREFIXES; static { - Set<String> props = new HashSet<>(14); + Set<String> props = new HashSet<>(29); + props.add("backoffErrorThreshold"); + props.add("backoffIdleThreshold"); + props.add("backoffMultiplier"); props.add("bridgeErrorHandler"); + props.add("delay"); props.add("domain"); props.add("exceptionHandler"); props.add("exchangePattern"); + props.add("greedy"); props.add("hostname"); props.add("idempotentRepository"); - props.add("lazyStartProducer"); + props.add("initialDelay"); props.add("password"); props.add("path"); + props.add("pollStrategy"); props.add("port"); + props.add("repeatCount"); + props.add("runLoggingLevel"); + props.add("scheduledExecutorService"); + props.add("scheduler"); + props.add("schedulerProperties"); props.add("searchPattern"); + props.add("sendEmptyMessageWhenIdle"); props.add("shareName"); props.add("smbIoBean"); + props.add("startScheduler"); + props.add("timeUnit"); + props.add("useFixedDelay"); props.add("username"); PROPERTY_NAMES = Collections.unmodifiableSet(props); - SECRET_PROPERTY_NAMES = Collections.emptySet(); - MULTI_VALUE_PREFIXES = Collections.emptySet(); + Set<String> secretProps = new HashSet<>(3); + secretProps.add("password"); + secretProps.add("shareName"); + secretProps.add("username"); + SECRET_PROPERTY_NAMES = Collections.unmodifiableSet(secretProps); + Set<String> prefixes = new HashSet<>(1); + prefixes.add("scheduler."); + MULTI_VALUE_PREFIXES = Collections.unmodifiableSet(prefixes); } @Override diff --git a/components/camel-smb/src/generated/resources/META-INF/services/org/apache/camel/component.properties b/components/camel-smb/src/generated/resources/META-INF/services/org/apache/camel/component.properties index 1f59881f4a3..c1626b2631a 100644 --- a/components/camel-smb/src/generated/resources/META-INF/services/org/apache/camel/component.properties +++ b/components/camel-smb/src/generated/resources/META-INF/services/org/apache/camel/component.properties @@ -2,6 +2,6 @@ components=smb groupId=org.apache.camel artifactId=camel-smb -version=4.2.0-SNAPSHOT +version=3.22.0-SNAPSHOT projectName=Camel :: SMB projectDescription=Server Message Block (SMB) file shares diff --git a/components/camel-smb/src/generated/resources/org/apache/camel/component/smb/smb.json b/components/camel-smb/src/generated/resources/org/apache/camel/component/smb/smb.json index 82a5f452475..7dc9f8a7973 100644 --- a/components/camel-smb/src/generated/resources/org/apache/camel/component/smb/smb.json +++ b/components/camel-smb/src/generated/resources/org/apache/camel/component/smb/smb.json @@ -3,7 +3,7 @@ "kind": "component", "name": "smb", "title": "SMB", - "description": "SMB component which consumes natively from file shares using the Server Message Block (SMB, also known as Common Internet File System - CIFS) protocol", + "description": "Receive files from SMB (Server Message Block) shares.", "deprecated": false, "firstVersion": "4.2.0-SNAPSHOT", "label": "file", @@ -11,35 +11,49 @@ "supportLevel": "Preview", "groupId": "org.apache.camel", "artifactId": "camel-smb", - "version": "4.2.0-SNAPSHOT", + "version": "3.22.0-SNAPSHOT", "scheme": "smb", "extendsScheme": "", - "syntax": "smb:hostname:port", + "syntax": "smb:hostname:port\/shareName", "async": false, "api": false, - "consumerOnly": false, + "consumerOnly": true, "producerOnly": false, "lenientProperties": false }, "componentProperties": { - "bridgeErrorHandler": { "index": 0, "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming messages, or the like [...] - "lazyStartProducer": { "index": 1, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...] - "autowiredEnabled": { "index": 2, "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching t [...] + "bridgeErrorHandler": { "kind": "property", "displayName": "Bridge Error Handler", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a me [...] + "autowiredEnabled": { "kind": "property", "displayName": "Autowired Enabled", "group": "advanced", "label": "advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which t [...] }, "properties": { - "hostname": { "index": 0, "kind": "path", "displayName": "Hostname", "group": "common", "label": "common", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The share name or IP address" }, - "port": { "index": 1, "kind": "path", "displayName": "Port", "group": "common", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 445, "description": "The share port" }, - "shareName": { "index": 2, "kind": "path", "displayName": "Share Name", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The share path" }, - "domain": { "index": 3, "kind": "parameter", "displayName": "Domain", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The user domain" }, - "password": { "index": 4, "kind": "parameter", "displayName": "Password", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The password to access the share" }, - "path": { "index": 5, "kind": "parameter", "displayName": "Path", "group": "common", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The path, within the share, to consume the files from" }, - "searchPattern": { "index": 6, "kind": "parameter", "displayName": "Search Pattern", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "*.txt", "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The search pattern used to list the files" }, - "smbIoBean": { "index": 7, "kind": "parameter", "displayName": "Smb Io Bean", "group": "common", "label": "", "required": false, "type": "object", "javaType": "org.apache.camel.component.smb.SmbIOBean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "An optional SMB I\/O bean to use to setup the file access attributes when reading\/writing a file" }, - "username": { "index": 8, "kind": "parameter", "displayName": "Username", "group": "common", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The username required to access the share" }, - "idempotentRepository": { "index": 9, "kind": "parameter", "displayName": "Idempotent Repository", "group": "consumer", "label": "consumer", "required": false, "type": "object", "javaType": "org.apache.camel.spi.IdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "A pluggable repository org.apache.camel.spi.IdempotentRepository wh [...] - "bridgeErrorHandler": { "index": 10, "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions (if possible) occurred while the Camel consumer is trying to pickup incoming [...] - "exceptionHandler": { "index": 11, "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By de [...] - "exchangePattern": { "index": 12, "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "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." }, - "lazyStartProducer": { "index": 13, "kind": "parameter", "displayName": "Lazy Start Producer", "group": "producer (advanced)", "label": "producer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a produ [...] + "hostname": { "kind": "path", "displayName": "Hostname", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "description": "The share hostname or IP address" }, + "port": { "kind": "path", "displayName": "Port", "group": "consumer", "label": "", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 445, "description": "The share port number" }, + "shareName": { "kind": "path", "displayName": "Share Name", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "description": "The name of the share to connect to." }, + "idempotentRepository": { "kind": "parameter", "displayName": "Idempotent Repository", "group": "consumer", "label": "advanced,consumer", "required": false, "type": "object", "javaType": "org.apache.camel.spi.IdempotentRepository", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "A pluggable repository org.apache.camel.spi.IdempotentRepository which [...] + "path": { "kind": "parameter", "displayName": "Path", "group": "consumer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The path, within the share, to consume the files from" }, + "searchPattern": { "kind": "parameter", "displayName": "Search Pattern", "group": "consumer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "*.txt", "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The search pattern used to list the files" }, + "sendEmptyMessageWhenIdle": { "kind": "parameter", "displayName": "Send Empty Message When Idle", "group": "consumer", "label": "consumer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If the polling consumer did not poll any files, you can enable this option to send an empty message (no body) instead." }, + "bridgeErrorHandler": { "kind": "parameter", "displayName": "Bridge Error Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now [...] + "exceptionHandler": { "kind": "parameter", "displayName": "Exception Handler", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.spi.ExceptionHandler", "optionalPrefix": "consumer.", "deprecated": false, "autowired": false, "secret": false, "description": "To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this option is not in use. By default the con [...] + "exchangePattern": { "kind": "parameter", "displayName": "Exchange Pattern", "group": "consumer (advanced)", "label": "consumer,advanced", "required": false, "type": "object", "javaType": "org.apache.camel.ExchangePattern", "enum": [ "InOnly", "InOut", "InOptionalOut" ], "deprecated": false, "autowired": false, "secret": false, "description": "Sets the exchange pattern when the consumer creates an exchange." }, + "pollStrategy": { "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 [...] + "smbIoBean": { "kind": "parameter", "displayName": "Smb Io Bean", "group": "advanced", "label": "advanced", "required": false, "type": "object", "javaType": "org.apache.camel.component.smb.SmbIOBean", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "An optional SMB I\/O bean to use to setup the file access attributes when reading\/writing a file" }, + "backoffErrorThreshold": { "kind": "parameter", "displayName": "Backoff Error Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent error polls (failed due some error) that should happen before the backoffMultipler should kick-in." }, + "backoffIdleThreshold": { "kind": "parameter", "displayName": "Backoff Idle Threshold", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "The number of subsequent idle polls that should happen before the backoffMultipler should kick-in." }, + "backoffMultiplier": { "kind": "parameter", "displayName": "Backoff Multiplier", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "int", "deprecated": false, "autowired": false, "secret": false, "description": "To let the scheduled polling consumer backoff if there has been a number of subsequent idles\/errors in a row. The multiplier is then the number of polls that will be skipped before the next actual attempt is happening agai [...] + "delay": { "kind": "parameter", "displayName": "Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 500, "description": "Milliseconds before the next poll." }, + "greedy": { "kind": "parameter", "displayName": "Greedy", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If greedy is enabled, then the ScheduledPollConsumer will run immediately again, if the previous run polled 1 or more messages." }, + "initialDelay": { "kind": "parameter", "displayName": "Initial Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 1000, "description": "Milliseconds before the first poll starts." }, + "repeatCount": { "kind": "parameter", "displayName": "Repeat Count", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "integer", "javaType": "long", "deprecated": false, "autowired": false, "secret": false, "defaultValue": 0, "description": "Specifies a maximum limit of number of fires. So if you set it to 1, the scheduler will only fire once. If you set it to 5, it will only fire five times. A value of zero or negative means fire forever." }, + "runLoggingLevel": { "kind": "parameter", "displayName": "Run Logging Level", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "org.apache.camel.LoggingLevel", "enum": [ "TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "TRACE", "description": "The consumer logs a start\/complete log line when it polls. This option allows you to configure the logging level [...] + "scheduledExecutorService": { "kind": "parameter", "displayName": "Scheduled Executor Service", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.ScheduledExecutorService", "deprecated": false, "autowired": false, "secret": false, "description": "Allows for configuring a custom\/shared thread pool to use for the consumer. By default each consumer has its own single threaded thread pool." }, + "scheduler": { "kind": "parameter", "displayName": "Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.lang.Object", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "none", "description": "To use a cron scheduler from either camel-spring or camel-quartz component. Use value spring or quartz for built in scheduler" }, + "schedulerProperties": { "kind": "parameter", "displayName": "Scheduler Properties", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.Map<java.lang.String, java.lang.Object>", "prefix": "scheduler.", "multiValue": true, "deprecated": false, "autowired": false, "secret": false, "description": "To configure additional properties when using a custom scheduler or any of the Quartz, Spring based scheduler." }, + "startScheduler": { "kind": "parameter", "displayName": "Start Scheduler", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether the scheduler should be auto started." }, + "timeUnit": { "kind": "parameter", "displayName": "Time Unit", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "object", "javaType": "java.util.concurrent.TimeUnit", "enum": [ "NANOSECONDS", "MICROSECONDS", "MILLISECONDS", "SECONDS", "MINUTES", "HOURS", "DAYS" ], "deprecated": false, "autowired": false, "secret": false, "defaultValue": "MILLISECONDS", "description": "Time unit for initialDelay and delay options." }, + "useFixedDelay": { "kind": "parameter", "displayName": "Use Fixed Delay", "group": "scheduler", "label": "consumer,scheduler", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Controls if fixed delay or fixed rate is used. See ScheduledExecutorService in JDK for details." }, + "domain": { "kind": "parameter", "displayName": "Domain", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The user domain" }, + "password": { "kind": "parameter", "displayName": "Password", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The password to access the share" }, + "username": { "kind": "parameter", "displayName": "Username", "group": "security", "label": "security", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": true, "configurationClass": "org.apache.camel.component.smb.SmbConfiguration", "configurationField": "configuration", "description": "The username required to access the share" } } } diff --git a/components/camel-smb/src/main/docs/smb-component.adoc b/components/camel-smb/src/main/docs/smb-component.adoc index e1b96e01156..0ee07a486bb 100644 --- a/components/camel-smb/src/main/docs/smb-component.adoc +++ b/components/camel-smb/src/main/docs/smb-component.adoc @@ -2,11 +2,10 @@ :doctitle: SMB :shortname: smb :artifactid: camel-smb -:description: SMB component which consumes natively from file shares using the Server Message Block (SMB, also known as Common Internet File System - CIFS) protocol +:description: Receive files from SMB (Server Message Block) shares. :since: 4.2.0-SNAPSHOT :supportlevel: Preview -:tabs-sync-option: -:component-header: Both producer and consumer are supported +:component-header: Only consumer is supported *Since Camel {since}* diff --git a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConfiguration.java b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConfiguration.java index 30f2acdb5a1..5bfc72ca138 100644 --- a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConfiguration.java +++ b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConfiguration.java @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.apache.camel.component.smb; import org.apache.camel.spi.IdempotentRepository; @@ -24,17 +23,17 @@ import org.apache.camel.spi.UriParams; import org.apache.camel.support.processor.idempotent.MemoryIdempotentRepository; @UriParams -public class SmbConfiguration implements Cloneable { +public class SmbConfiguration { protected static final int DEFAULT_IDEMPOTENT_CACHE_SIZE = 1000; - @UriParam(description = "The username required to access the share") + @UriParam(label = "security", description = "The username required to access the share", secret = true) private String username; - @UriParam(description = "The password to access the share") + @UriParam(label = "security", description = "The password to access the share", secret = true) private String password; - @UriParam(description = "The user domain") + @UriParam(label = "security", description = "The user domain") private String domain; @Metadata(required = true) @@ -44,11 +43,11 @@ public class SmbConfiguration implements Cloneable { @UriParam(defaultValue = "*.txt", description = "The search pattern used to list the files") private String searchPattern; - @UriParam(description = "An optional SMB I/O bean to use to setup the file access attributes when reading/writing a file") + @UriParam(label = "advanced", description = "An optional SMB I/O bean to use to setup the file access attributes when reading/writing a file") private SmbIOBean smbIoBean = new SmbReadBean(); - @UriParam(label = "consumer", description = "A pluggable repository org.apache.camel.spi.IdempotentRepository " - + "which by default use MemoryIdempotentRepository if none is specified and idempotent is true.") + @UriParam(label = "advanced,consumer", description = "A pluggable repository org.apache.camel.spi.IdempotentRepository " + + "which by default use MemoryIdempotentRepository if none is specified.") protected IdempotentRepository idempotentRepository = MemoryIdempotentRepository.memoryIdempotentRepository(DEFAULT_IDEMPOTENT_CACHE_SIZE); diff --git a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConsumer.java b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConsumer.java index 0bc118fb257..d9bb35aba00 100644 --- a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConsumer.java +++ b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbConsumer.java @@ -64,7 +64,7 @@ public class SmbConsumer extends ScheduledPollConsumer { if (!repository.contains(f.getFileName())) { polledCount++; - final Exchange exchange = createExchange(false); + final Exchange exchange = createExchange(true); final File file = share.openFile(f.getFileName(), smbIOBean.accessMask(), @@ -75,7 +75,16 @@ public class SmbConsumer extends ScheduledPollConsumer { repository.add(f.getFileName()); exchange.getMessage().setBody(file); - getProcessor().process(exchange); + try { + getProcessor().process(exchange); + } catch (Exception e) { + exchange.setException(e); + } + if (exchange.getException() != null) { + Exception e = exchange.getException(); + String msg = "Error processing file " + f.getFileName() + " due to " + e.getMessage(); + handleException(msg, exchange, e); + } } } } diff --git a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbEndpoint.java b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbEndpoint.java index ff51df443be..cd1dc3a1035 100644 --- a/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbEndpoint.java +++ b/components/camel-smb/src/main/java/org/apache/camel/component/smb/SmbEndpoint.java @@ -24,28 +24,27 @@ import org.apache.camel.spi.Metadata; 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.ScheduledPollEndpoint; /** - * SMB component which consumes natively from file shares using the Server Message Block (SMB, also known as Common - * Internet File System - CIFS) protocol + * Receive files from SMB (Server Message Block) shares. */ -@UriEndpoint(firstVersion = "4.2.0-SNAPSHOT", scheme = "smb", title = "SMB", syntax = "smb:hostname:port", +@UriEndpoint(firstVersion = "4.2.0-SNAPSHOT", scheme = "smb", title = "SMB", syntax = "smb:hostname:port/shareName", + consumerOnly = true, category = { Category.FILE }) -public class SmbEndpoint extends DefaultEndpoint { - @UriParam - private SmbConfiguration configuration = new SmbConfiguration(); +public class SmbEndpoint extends ScheduledPollEndpoint { - @UriPath(label = "common") + @UriPath @Metadata(required = true) private String hostname; - @UriPath(defaultValue = "445") private int port; - - @UriPath + @UriPath(secret = true) private String shareName; + @UriParam + private SmbConfiguration configuration = new SmbConfiguration(); + public SmbEndpoint() { } @@ -78,9 +77,7 @@ public class SmbEndpoint extends DefaultEndpoint { } /** - * The share name or IP address - * - * @param hostname + * The share hostname or IP address */ public void setHostname(String hostname) { this.hostname = hostname; @@ -91,9 +88,7 @@ public class SmbEndpoint extends DefaultEndpoint { } /** - * The share port - * - * @param port + * The share port number */ public void setPort(int port) { this.port = port; @@ -104,9 +99,7 @@ public class SmbEndpoint extends DefaultEndpoint { } /** - * The share path - * - * @param shareName + * The name of the share to connect to. */ public void setShareName(String shareName) { this.shareName = shareName; diff --git a/docs/components/modules/ROOT/examples/json/smb.json b/docs/components/modules/ROOT/examples/json/smb.json new file mode 120000 index 00000000000..0cc6d767369 --- /dev/null +++ b/docs/components/modules/ROOT/examples/json/smb.json @@ -0,0 +1 @@ +../../../../../../components/camel-smb/src/generated/resources/org/apache/camel/component/smb/smb.json \ No newline at end of file diff --git a/docs/components/modules/ROOT/nav.adoc b/docs/components/modules/ROOT/nav.adoc index f3848a276e2..ee2a5cd7c77 100644 --- a/docs/components/modules/ROOT/nav.adoc +++ b/docs/components/modules/ROOT/nav.adoc @@ -294,6 +294,7 @@ ** xref:sjms-component.adoc[Simple JMS] ** xref:sjms2-component.adoc[Simple JMS2] ** xref:slack-component.adoc[Slack] +** xref:smb-component.adoc[SMB] ** xref:smpp-component.adoc[SMPP] ** xref:snmp-component.adoc[SNMP] ** xref:solr-component.adoc[Solr] diff --git a/docs/components/modules/ROOT/pages/smb-component.adoc b/docs/components/modules/ROOT/pages/smb-component.adoc new file mode 120000 index 00000000000..869cb96d1c1 --- /dev/null +++ b/docs/components/modules/ROOT/pages/smb-component.adoc @@ -0,0 +1 @@ +../../../../../components/camel-smb/src/main/docs/smb-component.adoc \ No newline at end of file diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java index 66c54603e16..dce6badf2e0 100644 --- a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/ComponentsBuilderFactory.java @@ -3871,6 +3871,19 @@ public interface ComponentsBuilderFactory { static org.apache.camel.builder.component.dsl.SlackComponentBuilderFactory.SlackComponentBuilder slack() { return org.apache.camel.builder.component.dsl.SlackComponentBuilderFactory.slack(); } + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * @return the dsl builder + */ + static org.apache.camel.builder.component.dsl.SmbComponentBuilderFactory.SmbComponentBuilder smb() { + return org.apache.camel.builder.component.dsl.SmbComponentBuilderFactory.smb(); + } /** * SMPP (camel-smpp) * Send and receive SMS messages using a SMSC (Short Message Service diff --git a/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmbComponentBuilderFactory.java b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmbComponentBuilderFactory.java new file mode 100644 index 00000000000..a3db56c3466 --- /dev/null +++ b/dsl/camel-componentdsl/src/generated/java/org/apache/camel/builder/component/dsl/SmbComponentBuilderFactory.java @@ -0,0 +1,116 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.builder.component.dsl; + +import javax.annotation.Generated; +import org.apache.camel.Component; +import org.apache.camel.builder.component.AbstractComponentBuilder; +import org.apache.camel.builder.component.ComponentBuilder; +import org.apache.camel.component.smb.SmbComponent; + +/** + * Receive files from SMB (Server Message Block) shares. + * + * Generated by camel-package-maven-plugin - do not edit this file! + */ +@Generated("org.apache.camel.maven.packaging.ComponentDslMojo") +public interface SmbComponentBuilderFactory { + + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * @return the dsl builder + */ + static SmbComponentBuilder smb() { + return new SmbComponentBuilderImpl(); + } + + /** + * Builder for the SMB component. + */ + interface SmbComponentBuilder extends ComponentBuilder<SmbComponent> { + /** + * Allows for bridging the consumer to the Camel routing Error Handler, + * which mean any exceptions occurred while the consumer is trying to + * pickup incoming messages, or the likes, will now be processed as a + * message and handled by the routing Error Handler. By default the + * consumer will use the org.apache.camel.spi.ExceptionHandler to deal + * with exceptions, that will be logged at WARN or ERROR level and + * ignored. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: consumer + * + * @param bridgeErrorHandler the value to set + * @return the dsl builder + */ + default SmbComponentBuilder bridgeErrorHandler( + boolean bridgeErrorHandler) { + doSetProperty("bridgeErrorHandler", bridgeErrorHandler); + return this; + } + /** + * Whether autowiring is enabled. This is used for automatic autowiring + * options (the option must be marked as autowired) by looking up in the + * registry to find if there is a single instance of matching type, + * which then gets configured on the component. This can be used for + * automatic configuring JDBC data sources, JMS connection factories, + * AWS Clients, etc. + * + * The option is a: <code>boolean</code> type. + * + * Default: true + * Group: advanced + * + * @param autowiredEnabled the value to set + * @return the dsl builder + */ + default SmbComponentBuilder autowiredEnabled(boolean autowiredEnabled) { + doSetProperty("autowiredEnabled", autowiredEnabled); + return this; + } + } + + class SmbComponentBuilderImpl + extends + AbstractComponentBuilder<SmbComponent> + implements + SmbComponentBuilder { + @Override + protected SmbComponent buildConcreteComponent() { + return new SmbComponent(); + } + @Override + protected boolean setPropertyOnComponent( + Component component, + String name, + Object value) { + switch (name) { + case "bridgeErrorHandler": ((SmbComponent) component).setBridgeErrorHandler((boolean) value); return true; + case "autowiredEnabled": ((SmbComponent) component).setAutowiredEnabled((boolean) value); return true; + default: return false; + } + } + } +} \ No newline at end of file diff --git a/dsl/camel-componentdsl/src/generated/resources/metadata.json b/dsl/camel-componentdsl/src/generated/resources/metadata.json index 1013120ce38..f596bda0e11 100644 --- a/dsl/camel-componentdsl/src/generated/resources/metadata.json +++ b/dsl/camel-componentdsl/src/generated/resources/metadata.json @@ -6361,6 +6361,28 @@ "producerOnly": false, "lenientProperties": false }, + "SmbComponentBuilderFactory": { + "kind": "component", + "name": "smb", + "title": "SMB", + "description": "Receive files from SMB (Server Message Block) shares.", + "deprecated": false, + "firstVersion": "4.2.0-SNAPSHOT", + "label": "file", + "javaType": "org.apache.camel.component.smb.SmbComponent", + "supportLevel": "Preview", + "groupId": "org.apache.camel", + "artifactId": "camel-smb", + "version": "3.22.0-SNAPSHOT", + "scheme": "smb", + "extendsScheme": "", + "syntax": "smb:hostname:port\/shareName", + "async": false, + "api": false, + "consumerOnly": true, + "producerOnly": false, + "lenientProperties": false + }, "SmppComponentBuilderFactory": { "kind": "component", "name": "smpp", diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java index f1d3d4be6c3..6d23c75ca9e 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilderFactory.java @@ -306,6 +306,7 @@ public interface EndpointBuilderFactory org.apache.camel.builder.endpoint.dsl.Sjms2EndpointBuilderFactory.Sjms2Builders, org.apache.camel.builder.endpoint.dsl.SjmsEndpointBuilderFactory.SjmsBuilders, org.apache.camel.builder.endpoint.dsl.SlackEndpointBuilderFactory.SlackBuilders, + org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory.SmbBuilders, org.apache.camel.builder.endpoint.dsl.SmppEndpointBuilderFactory.SmppBuilders, org.apache.camel.builder.endpoint.dsl.SnmpEndpointBuilderFactory.SnmpBuilders, org.apache.camel.builder.endpoint.dsl.Sns2EndpointBuilderFactory.Sns2Builders, diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java index f26311119a1..41a958b8d86 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/EndpointBuilders.java @@ -303,6 +303,7 @@ public interface EndpointBuilders org.apache.camel.builder.endpoint.dsl.Sjms2EndpointBuilderFactory, org.apache.camel.builder.endpoint.dsl.SjmsEndpointBuilderFactory, org.apache.camel.builder.endpoint.dsl.SlackEndpointBuilderFactory, + org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory, org.apache.camel.builder.endpoint.dsl.SmppEndpointBuilderFactory, org.apache.camel.builder.endpoint.dsl.SnmpEndpointBuilderFactory, org.apache.camel.builder.endpoint.dsl.Sns2EndpointBuilderFactory, diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java index 9ac6e30b95a..280c2bdc33f 100644 --- a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/StaticEndpointBuilders.java @@ -13510,6 +13510,63 @@ public class StaticEndpointBuilders { String path) { return org.apache.camel.builder.endpoint.dsl.SlackEndpointBuilderFactory.endpointBuilder(componentName, path); } + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * Syntax: <code>smb:hostname:port/shareName</code> + * + * Path parameter: hostname (required) + * The share hostname or IP address + * + * Path parameter: port + * The share port number + * Default value: 445 + * + * Path parameter: shareName + * The name of the share to connect to. + * + * @param path hostname:port/shareName + * @return the dsl builder + */ + public static org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory.SmbEndpointBuilder smb( + String path) { + return org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory.endpointBuilder("smb", path); + } + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * Syntax: <code>smb:hostname:port/shareName</code> + * + * Path parameter: hostname (required) + * The share hostname or IP address + * + * Path parameter: port + * The share port number + * Default value: 445 + * + * Path parameter: shareName + * The name of the share to connect to. + * + * @param componentName to use a custom component name for the endpoint + * instead of the default name + * @param path hostname:port/shareName + * @return the dsl builder + */ + public static org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory.SmbEndpointBuilder smb( + String componentName, + String path) { + return org.apache.camel.builder.endpoint.dsl.SmbEndpointBuilderFactory.endpointBuilder(componentName, path); + } /** * SMPP (camel-smpp) * Send and receive SMS messages using a SMSC (Short Message Service diff --git a/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java new file mode 100644 index 00000000000..a374d67da75 --- /dev/null +++ b/dsl/camel-endpointdsl/src/generated/java/org/apache/camel/builder/endpoint/dsl/SmbEndpointBuilderFactory.java @@ -0,0 +1,919 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.builder.endpoint.dsl; + +import java.util.*; +import java.util.Map; +import java.util.concurrent.*; +import java.util.function.*; +import java.util.stream.*; +import javax.annotation.Generated; +import org.apache.camel.builder.EndpointConsumerBuilder; +import org.apache.camel.builder.EndpointProducerBuilder; +import org.apache.camel.builder.endpoint.AbstractEndpointBuilder; + +/** + * Receive files from SMB (Server Message Block) shares. + * + * Generated by camel build tools - do NOT edit this file! + */ +@Generated("org.apache.camel.maven.packaging.EndpointDslMojo") +public interface SmbEndpointBuilderFactory { + + + /** + * Builder for endpoint for the SMB component. + */ + public interface SmbEndpointBuilder extends EndpointConsumerBuilder { + default AdvancedSmbEndpointBuilder advanced() { + return (AdvancedSmbEndpointBuilder) this; + } + /** + * The path, within the share, to consume the files from. + * + * The option is a: <code>java.lang.String</code> type. + * + * Required: true + * Group: consumer + * + * @param path the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder path(String path) { + doSetProperty("path", path); + return this; + } + /** + * The search pattern used to list the files. + * + * The option is a: <code>java.lang.String</code> type. + * + * Default: *.txt + * Group: consumer + * + * @param searchPattern the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder searchPattern(String searchPattern) { + doSetProperty("searchPattern", searchPattern); + return this; + } + /** + * If the polling consumer did not poll any files, you can enable this + * option to send an empty message (no body) instead. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: consumer + * + * @param sendEmptyMessageWhenIdle the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder sendEmptyMessageWhenIdle( + boolean sendEmptyMessageWhenIdle) { + doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle); + return this; + } + /** + * If the polling consumer did not poll any files, you can enable this + * option to send an empty message (no body) instead. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: false + * Group: consumer + * + * @param sendEmptyMessageWhenIdle the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder sendEmptyMessageWhenIdle( + String sendEmptyMessageWhenIdle) { + doSetProperty("sendEmptyMessageWhenIdle", sendEmptyMessageWhenIdle); + return this; + } + /** + * The number of subsequent error polls (failed due some error) that + * should happen before the backoffMultipler should kick-in. + * + * The option is a: <code>int</code> type. + * + * Group: scheduler + * + * @param backoffErrorThreshold the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffErrorThreshold( + int backoffErrorThreshold) { + doSetProperty("backoffErrorThreshold", backoffErrorThreshold); + return this; + } + /** + * The number of subsequent error polls (failed due some error) that + * should happen before the backoffMultipler should kick-in. + * + * The option will be converted to a <code>int</code> type. + * + * Group: scheduler + * + * @param backoffErrorThreshold the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffErrorThreshold( + String backoffErrorThreshold) { + doSetProperty("backoffErrorThreshold", backoffErrorThreshold); + return this; + } + /** + * The number of subsequent idle polls that should happen before the + * backoffMultipler should kick-in. + * + * The option is a: <code>int</code> type. + * + * Group: scheduler + * + * @param backoffIdleThreshold the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffIdleThreshold(int backoffIdleThreshold) { + doSetProperty("backoffIdleThreshold", backoffIdleThreshold); + return this; + } + /** + * The number of subsequent idle polls that should happen before the + * backoffMultipler should kick-in. + * + * The option will be converted to a <code>int</code> type. + * + * Group: scheduler + * + * @param backoffIdleThreshold the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffIdleThreshold( + String backoffIdleThreshold) { + doSetProperty("backoffIdleThreshold", backoffIdleThreshold); + return this; + } + /** + * To let the scheduled polling consumer backoff if there has been a + * number of subsequent idles/errors in a row. The multiplier is then + * the number of polls that will be skipped before the next actual + * attempt is happening again. When this option is in use then + * backoffIdleThreshold and/or backoffErrorThreshold must also be + * configured. + * + * The option is a: <code>int</code> type. + * + * Group: scheduler + * + * @param backoffMultiplier the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffMultiplier(int backoffMultiplier) { + doSetProperty("backoffMultiplier", backoffMultiplier); + return this; + } + /** + * To let the scheduled polling consumer backoff if there has been a + * number of subsequent idles/errors in a row. The multiplier is then + * the number of polls that will be skipped before the next actual + * attempt is happening again. When this option is in use then + * backoffIdleThreshold and/or backoffErrorThreshold must also be + * configured. + * + * The option will be converted to a <code>int</code> type. + * + * Group: scheduler + * + * @param backoffMultiplier the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder backoffMultiplier(String backoffMultiplier) { + doSetProperty("backoffMultiplier", backoffMultiplier); + return this; + } + /** + * Milliseconds before the next poll. + * + * The option is a: <code>long</code> type. + * + * Default: 500 + * Group: scheduler + * + * @param delay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder delay(long delay) { + doSetProperty("delay", delay); + return this; + } + /** + * Milliseconds before the next poll. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 500 + * Group: scheduler + * + * @param delay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder delay(String delay) { + doSetProperty("delay", delay); + return this; + } + /** + * If greedy is enabled, then the ScheduledPollConsumer will run + * immediately again, if the previous run polled 1 or more messages. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: scheduler + * + * @param greedy the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder greedy(boolean greedy) { + doSetProperty("greedy", greedy); + return this; + } + /** + * If greedy is enabled, then the ScheduledPollConsumer will run + * immediately again, if the previous run polled 1 or more messages. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: false + * Group: scheduler + * + * @param greedy the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder greedy(String greedy) { + doSetProperty("greedy", greedy); + return this; + } + /** + * Milliseconds before the first poll starts. + * + * The option is a: <code>long</code> type. + * + * Default: 1000 + * Group: scheduler + * + * @param initialDelay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder initialDelay(long initialDelay) { + doSetProperty("initialDelay", initialDelay); + return this; + } + /** + * Milliseconds before the first poll starts. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 1000 + * Group: scheduler + * + * @param initialDelay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder initialDelay(String initialDelay) { + doSetProperty("initialDelay", initialDelay); + return this; + } + /** + * Specifies a maximum limit of number of fires. So if you set it to 1, + * the scheduler will only fire once. If you set it to 5, it will only + * fire five times. A value of zero or negative means fire forever. + * + * The option is a: <code>long</code> type. + * + * Default: 0 + * Group: scheduler + * + * @param repeatCount the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder repeatCount(long repeatCount) { + doSetProperty("repeatCount", repeatCount); + return this; + } + /** + * Specifies a maximum limit of number of fires. So if you set it to 1, + * the scheduler will only fire once. If you set it to 5, it will only + * fire five times. A value of zero or negative means fire forever. + * + * The option will be converted to a <code>long</code> type. + * + * Default: 0 + * Group: scheduler + * + * @param repeatCount the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder repeatCount(String repeatCount) { + doSetProperty("repeatCount", repeatCount); + return this; + } + /** + * The consumer logs a start/complete log line when it polls. This + * option allows you to configure the logging level for that. + * + * The option is a: + * <code>org.apache.camel.LoggingLevel</code> type. + * + * Default: TRACE + * Group: scheduler + * + * @param runLoggingLevel the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder runLoggingLevel( + org.apache.camel.LoggingLevel runLoggingLevel) { + doSetProperty("runLoggingLevel", runLoggingLevel); + return this; + } + /** + * The consumer logs a start/complete log line when it polls. This + * option allows you to configure the logging level for that. + * + * The option will be converted to a + * <code>org.apache.camel.LoggingLevel</code> type. + * + * Default: TRACE + * Group: scheduler + * + * @param runLoggingLevel the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder runLoggingLevel(String runLoggingLevel) { + doSetProperty("runLoggingLevel", runLoggingLevel); + return this; + } + /** + * Allows for configuring a custom/shared thread pool to use for the + * consumer. By default each consumer has its own single threaded thread + * pool. + * + * The option is a: + * <code>java.util.concurrent.ScheduledExecutorService</code> type. + * + * Group: scheduler + * + * @param scheduledExecutorService the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder scheduledExecutorService( + ScheduledExecutorService scheduledExecutorService) { + doSetProperty("scheduledExecutorService", scheduledExecutorService); + return this; + } + /** + * Allows for configuring a custom/shared thread pool to use for the + * consumer. By default each consumer has its own single threaded thread + * pool. + * + * The option will be converted to a + * <code>java.util.concurrent.ScheduledExecutorService</code> type. + * + * Group: scheduler + * + * @param scheduledExecutorService the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder scheduledExecutorService( + String scheduledExecutorService) { + doSetProperty("scheduledExecutorService", scheduledExecutorService); + return this; + } + /** + * To use a cron scheduler from either camel-spring or camel-quartz + * component. Use value spring or quartz for built in scheduler. + * + * The option is a: <code>java.lang.Object</code> type. + * + * Default: none + * Group: scheduler + * + * @param scheduler the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder scheduler(Object scheduler) { + doSetProperty("scheduler", scheduler); + return this; + } + /** + * To use a cron scheduler from either camel-spring or camel-quartz + * component. Use value spring or quartz for built in scheduler. + * + * The option will be converted to a + * <code>java.lang.Object</code> type. + * + * Default: none + * Group: scheduler + * + * @param scheduler the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder scheduler(String scheduler) { + doSetProperty("scheduler", scheduler); + return this; + } + /** + * To configure additional properties when using a custom scheduler or + * any of the Quartz, Spring based scheduler. + * + * The option is a: <code>java.util.Map&lt;java.lang.String, + * java.lang.Object&gt;</code> type. + * The option is multivalued, and you can use the + * schedulerProperties(String, Object) method to add a value (call the + * method multiple times to set more values). + * + * Group: scheduler + * + * @param key the option key + * @param value the option value + * @return the dsl builder + */ + default SmbEndpointBuilder schedulerProperties(String key, Object value) { + doSetMultiValueProperty("schedulerProperties", "scheduler." + key, value); + return this; + } + /** + * To configure additional properties when using a custom scheduler or + * any of the Quartz, Spring based scheduler. + * + * The option is a: <code>java.util.Map&lt;java.lang.String, + * java.lang.Object&gt;</code> type. + * The option is multivalued, and you can use the + * schedulerProperties(String, Object) method to add a value (call the + * method multiple times to set more values). + * + * Group: scheduler + * + * @param values the values + * @return the dsl builder + */ + default SmbEndpointBuilder schedulerProperties(Map values) { + doSetMultiValueProperties("schedulerProperties", "scheduler.", values); + return this; + } + /** + * Whether the scheduler should be auto started. + * + * The option is a: <code>boolean</code> type. + * + * Default: true + * Group: scheduler + * + * @param startScheduler the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder startScheduler(boolean startScheduler) { + doSetProperty("startScheduler", startScheduler); + return this; + } + /** + * Whether the scheduler should be auto started. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: true + * Group: scheduler + * + * @param startScheduler the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder startScheduler(String startScheduler) { + doSetProperty("startScheduler", startScheduler); + return this; + } + /** + * Time unit for initialDelay and delay options. + * + * The option is a: + * <code>java.util.concurrent.TimeUnit</code> type. + * + * Default: MILLISECONDS + * Group: scheduler + * + * @param timeUnit the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder timeUnit(TimeUnit timeUnit) { + doSetProperty("timeUnit", timeUnit); + return this; + } + /** + * Time unit for initialDelay and delay options. + * + * The option will be converted to a + * <code>java.util.concurrent.TimeUnit</code> type. + * + * Default: MILLISECONDS + * Group: scheduler + * + * @param timeUnit the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder timeUnit(String timeUnit) { + doSetProperty("timeUnit", timeUnit); + return this; + } + /** + * Controls if fixed delay or fixed rate is used. See + * ScheduledExecutorService in JDK for details. + * + * The option is a: <code>boolean</code> type. + * + * Default: true + * Group: scheduler + * + * @param useFixedDelay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder useFixedDelay(boolean useFixedDelay) { + doSetProperty("useFixedDelay", useFixedDelay); + return this; + } + /** + * Controls if fixed delay or fixed rate is used. See + * ScheduledExecutorService in JDK for details. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: true + * Group: scheduler + * + * @param useFixedDelay the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder useFixedDelay(String useFixedDelay) { + doSetProperty("useFixedDelay", useFixedDelay); + return this; + } + /** + * The user domain. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param domain the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder domain(String domain) { + doSetProperty("domain", domain); + return this; + } + /** + * The password to access the share. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param password the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder password(String password) { + doSetProperty("password", password); + return this; + } + /** + * The username required to access the share. + * + * The option is a: <code>java.lang.String</code> type. + * + * Group: security + * + * @param username the value to set + * @return the dsl builder + */ + default SmbEndpointBuilder username(String username) { + doSetProperty("username", username); + return this; + } + } + + /** + * Advanced builder for endpoint for the SMB component. + */ + public interface AdvancedSmbEndpointBuilder + extends + EndpointConsumerBuilder { + default SmbEndpointBuilder basic() { + return (SmbEndpointBuilder) this; + } + /** + * A pluggable repository org.apache.camel.spi.IdempotentRepository + * which by default use MemoryIdempotentRepository if none is specified. + * + * The option is a: + * <code>org.apache.camel.spi.IdempotentRepository</code> + * type. + * + * Group: consumer + * + * @param idempotentRepository the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder idempotentRepository( + org.apache.camel.spi.IdempotentRepository idempotentRepository) { + doSetProperty("idempotentRepository", idempotentRepository); + return this; + } + /** + * A pluggable repository org.apache.camel.spi.IdempotentRepository + * which by default use MemoryIdempotentRepository if none is specified. + * + * The option will be converted to a + * <code>org.apache.camel.spi.IdempotentRepository</code> + * type. + * + * Group: consumer + * + * @param idempotentRepository the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder idempotentRepository( + String idempotentRepository) { + doSetProperty("idempotentRepository", idempotentRepository); + return this; + } + /** + * Allows for bridging the consumer to the Camel routing Error Handler, + * which mean any exceptions occurred while the consumer is trying to + * pickup incoming messages, or the likes, will now be processed as a + * message and handled by the routing Error Handler. By default the + * consumer will use the org.apache.camel.spi.ExceptionHandler to deal + * with exceptions, that will be logged at WARN or ERROR level and + * ignored. + * + * The option is a: <code>boolean</code> type. + * + * Default: false + * Group: consumer (advanced) + * + * @param bridgeErrorHandler the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder bridgeErrorHandler( + boolean bridgeErrorHandler) { + doSetProperty("bridgeErrorHandler", bridgeErrorHandler); + return this; + } + /** + * Allows for bridging the consumer to the Camel routing Error Handler, + * which mean any exceptions occurred while the consumer is trying to + * pickup incoming messages, or the likes, will now be processed as a + * message and handled by the routing Error Handler. By default the + * consumer will use the org.apache.camel.spi.ExceptionHandler to deal + * with exceptions, that will be logged at WARN or ERROR level and + * ignored. + * + * The option will be converted to a <code>boolean</code> + * type. + * + * Default: false + * Group: consumer (advanced) + * + * @param bridgeErrorHandler the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder bridgeErrorHandler( + String bridgeErrorHandler) { + doSetProperty("bridgeErrorHandler", bridgeErrorHandler); + return this; + } + /** + * To let the consumer use a custom ExceptionHandler. Notice if the + * option bridgeErrorHandler is enabled then this option is not in use. + * By default the consumer will deal with exceptions, that will be + * logged at WARN or ERROR level and ignored. + * + * The option is a: + * <code>org.apache.camel.spi.ExceptionHandler</code> type. + * + * Group: consumer (advanced) + * + * @param exceptionHandler the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder exceptionHandler( + org.apache.camel.spi.ExceptionHandler exceptionHandler) { + doSetProperty("exceptionHandler", exceptionHandler); + return this; + } + /** + * To let the consumer use a custom ExceptionHandler. Notice if the + * option bridgeErrorHandler is enabled then this option is not in use. + * By default the consumer will deal with exceptions, that will be + * logged at WARN or ERROR level and ignored. + * + * The option will be converted to a + * <code>org.apache.camel.spi.ExceptionHandler</code> type. + * + * Group: consumer (advanced) + * + * @param exceptionHandler the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder exceptionHandler( + String exceptionHandler) { + doSetProperty("exceptionHandler", exceptionHandler); + return this; + } + /** + * Sets the exchange pattern when the consumer creates an exchange. + * + * The option is a: + * <code>org.apache.camel.ExchangePattern</code> type. + * + * Group: consumer (advanced) + * + * @param exchangePattern the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder exchangePattern( + org.apache.camel.ExchangePattern exchangePattern) { + doSetProperty("exchangePattern", exchangePattern); + return this; + } + /** + * Sets the exchange pattern when the consumer creates an exchange. + * + * The option will be converted to a + * <code>org.apache.camel.ExchangePattern</code> type. + * + * Group: consumer (advanced) + * + * @param exchangePattern the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder exchangePattern( + String exchangePattern) { + doSetProperty("exchangePattern", exchangePattern); + return this; + } + /** + * 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. + * + * The option is a: + * <code>org.apache.camel.spi.PollingConsumerPollStrategy</code> type. + * + * Group: consumer (advanced) + * + * @param pollStrategy the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder pollStrategy( + org.apache.camel.spi.PollingConsumerPollStrategy pollStrategy) { + doSetProperty("pollStrategy", pollStrategy); + return this; + } + /** + * 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. + * + * The option will be converted to a + * <code>org.apache.camel.spi.PollingConsumerPollStrategy</code> type. + * + * Group: consumer (advanced) + * + * @param pollStrategy the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder pollStrategy(String pollStrategy) { + doSetProperty("pollStrategy", pollStrategy); + return this; + } + /** + * An optional SMB I/O bean to use to setup the file access attributes + * when reading/writing a file. + * + * The option is a: + * <code>org.apache.camel.component.smb.SmbIOBean</code> + * type. + * + * Group: advanced + * + * @param smbIoBean the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder smbIoBean( + org.apache.camel.component.smb.SmbIOBean smbIoBean) { + doSetProperty("smbIoBean", smbIoBean); + return this; + } + /** + * An optional SMB I/O bean to use to setup the file access attributes + * when reading/writing a file. + * + * The option will be converted to a + * <code>org.apache.camel.component.smb.SmbIOBean</code> + * type. + * + * Group: advanced + * + * @param smbIoBean the value to set + * @return the dsl builder + */ + default AdvancedSmbEndpointBuilder smbIoBean(String smbIoBean) { + doSetProperty("smbIoBean", smbIoBean); + return this; + } + } + + public interface SmbBuilders { + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * Syntax: <code>smb:hostname:port/shareName</code> + * + * Path parameter: hostname (required) + * The share hostname or IP address + * + * Path parameter: port + * The share port number + * Default value: 445 + * + * Path parameter: shareName + * The name of the share to connect to. + * + * @param path hostname:port/shareName + * @return the dsl builder + */ + default SmbEndpointBuilder smb(String path) { + return SmbEndpointBuilderFactory.endpointBuilder("smb", path); + } + /** + * SMB (camel-smb) + * Receive files from SMB (Server Message Block) shares. + * + * Category: file + * Since: 4.2.0-SNAPSHOT + * Maven coordinates: org.apache.camel:camel-smb + * + * Syntax: <code>smb:hostname:port/shareName</code> + * + * Path parameter: hostname (required) + * The share hostname or IP address + * + * Path parameter: port + * The share port number + * Default value: 445 + * + * Path parameter: shareName + * The name of the share to connect to. + * + * @param componentName to use a custom component name for the endpoint + * instead of the default name + * @param path hostname:port/shareName + * @return the dsl builder + */ + default SmbEndpointBuilder smb(String componentName, String path) { + return SmbEndpointBuilderFactory.endpointBuilder(componentName, path); + } + } + static SmbEndpointBuilder endpointBuilder(String componentName, String path) { + class SmbEndpointBuilderImpl extends AbstractEndpointBuilder implements SmbEndpointBuilder, AdvancedSmbEndpointBuilder { + public SmbEndpointBuilderImpl(String path) { + super(componentName, path); + } + } + return new SmbEndpointBuilderImpl(path); + } +} \ No newline at end of file diff --git a/test-infra/camel-test-infra-smb/pom.xml b/test-infra/camel-test-infra-smb/pom.xml index 997ba25a8b1..9e79b108c6d 100644 --- a/test-infra/camel-test-infra-smb/pom.xml +++ b/test-infra/camel-test-infra-smb/pom.xml @@ -24,7 +24,7 @@ <artifactId>camel-test-infra-parent</artifactId> <groupId>org.apache.camel</groupId> <relativePath>../camel-test-infra-parent/pom.xml</relativePath> - <version>4.2.0-SNAPSHOT</version> + <version>3.22.0-SNAPSHOT</version> </parent> <artifactId>camel-test-infra-smb</artifactId> diff --git a/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbService.java b/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbService.java index 526e56a5f66..f5c237c322a 100644 --- a/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbService.java +++ b/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbService.java @@ -18,13 +18,13 @@ package org.apache.camel.test.infra.smb.services; import org.apache.camel.test.infra.common.services.TestService; -import org.junit.jupiter.api.extension.AfterTestExecutionCallback; -import org.junit.jupiter.api.extension.BeforeTestExecutionCallback; +import org.junit.jupiter.api.extension.AfterAllCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public interface SmbService extends TestService, BeforeTestExecutionCallback, AfterTestExecutionCallback { +public interface SmbService extends BeforeAllCallback, AfterAllCallback, TestService { String address(); String shareName(); String userName(); @@ -45,18 +45,8 @@ public interface SmbService extends TestService, BeforeTestExecutionCallback, Af } } - @Override - default void beforeTestExecution(ExtensionContext extensionContext) { - //no op - } - @Override default void afterAll(ExtensionContext extensionContext) { shutdown(); } - - @Override - default void afterTestExecution(ExtensionContext context) { - //no op - } } diff --git a/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbServiceFactory.java b/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbServiceFactory.java index 48935c8c525..2e988de8692 100644 --- a/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbServiceFactory.java +++ b/test-infra/camel-test-infra-smb/src/test/java/org/apache/camel/test/infra/smb/services/SmbServiceFactory.java @@ -22,7 +22,7 @@ import org.apache.camel.test.infra.common.services.SimpleTestServiceBuilder; public class SmbServiceFactory { public static SmbService createService() { - SimpleTestServiceBuilder<SmbService> builder = new SimpleTestServiceBuilder<>("kafka"); + SimpleTestServiceBuilder<SmbService> builder = new SimpleTestServiceBuilder<>("smb"); return builder.addLocalMapping(SmbLocalContainerService::new) .addRemoteMapping(SmbRemoteService::new)
