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

janbednar pushed a commit to branch CAMEL-13920
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 0f7f98731f262ffbc0803e4626998afa435658be
Author: Jan Bednář <m...@janbednar.eu>
AuthorDate: Mon Sep 2 02:42:10 2019 +0200

    CAMEL-13920: Allow using markup in option description
---
 .../camel-file/src/main/docs/file-component.adoc   |  21 +++-
 .../camel/component/file/GenericFileEndpoint.java  |  51 ++++-----
 .../camel-ftp/src/main/docs/ftp-component.adoc     |   4 +-
 .../camel-ftp/src/main/docs/ftps-component.adoc    |   4 +-
 .../camel-ftp/src/main/docs/sftp-component.adoc    |   4 +-
 .../endpoint/dsl/FileEndpointBuilderFactory.java   | 126 +++++++++++----------
 .../endpoint/dsl/FtpEndpointBuilderFactory.java    |  50 ++++----
 .../endpoint/dsl/FtpsEndpointBuilderFactory.java   |  50 ++++----
 .../endpoint/dsl/SftpEndpointBuilderFactory.java   |  50 ++++----
 .../modules/ROOT/pages/file-component.adoc         |  21 +++-
 .../modules/ROOT/pages/ftp-component.adoc          |   4 +-
 .../modules/ROOT/pages/ftps-component.adoc         |   4 +-
 .../modules/ROOT/pages/sftp-component.adoc         |   4 +-
 .../src/main/resources/component-options.mvel      |   2 +-
 .../src/main/resources/dataformat-options.mvel     |   2 +-
 .../src/main/resources/eip-options.mvel            |   2 +-
 .../src/main/resources/endpoint-options.mvel       |   4 +-
 .../src/main/resources/language-options.mvel       |   2 +-
 18 files changed, 223 insertions(+), 182 deletions(-)

diff --git a/components/camel-file/src/main/docs/file-component.adoc 
b/components/camel-file/src/main/docs/file-component.adoc
index fc16ba0..85d131d 100644
--- a/components/camel-file/src/main/docs/file-component.adoc
+++ b/components/camel-file/src/main/docs/file-component.adoc
@@ -114,7 +114,13 @@ with the following path and query parameters:
 | *startingDirectoryMustExist* (consumer) | Whether the starting directory 
must exist. Mind that the autoCreate option is default enabled, which means the 
starting directory is normally auto created if it doesn't exist. You can 
disable autoCreate and enable this to ensure the starting directory must exist. 
Will thrown an exception if the directory doesn't exist. | false | boolean
 | *startingDirectoryMustHave Access* (consumer) | Whether the starting 
directory has access permissions. Mind that the startingDirectoryMustExist 
parameter must be set to true in order to verify that the directory exists. 
Will thrown an exception if the directory doesn't have read and write 
permissions. | false | boolean
 | *appendChars* (producer) | Used to append characters (text) after writing 
files. This can for example be used to add new lines or other separators when 
writing and appending to existing files. To specify new-line (slash-n or 
slash-r) or tab (slash-t) characters then escape with an extra slash, eg 
slash-slash-n |  | String
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) a| What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. 
+
+ - Append - adds content to the existing file.
+ - Fail - throws a GenericFileOperationException, indicating that there is 
already an existing file.
+ - Ignore - silently ignores the problem and does not override the existing 
file, but assumes everything is okay.
+ - Move - option requires to use the moveExisting option to be configured as 
well. The option eagerDeleteTargetFile can be used to control what to do if an 
moving the file, and there exists already an existing file, otherwise causing 
the move operation to fail. The Move option will move any existing files, 
before writing the target file.
+ - TryRename is only applicable if tempFileName option is in use. This allows 
to try renaming the file from the temporary name to the actual name, without 
doing any exists check. This check may be faster on some file systems and 
especially FTP servers. | Override | GenericFileExist
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -151,7 +157,18 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) a| Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies:
+
+ - none - No read lock is in use
+ - markerFile - Camel creates a marker file (fileName.camelLock) and then 
holds a lock on it. This option is not available for the FTP component
+ - changed - Changed is using file length/modification timestamp to detect 
whether the file is currently being copied or not. Will at least use 1 sec to 
determine this, so this option cannot consume files as fast as the others, but 
can be more reliable as the JDK IO API cannot always determine whether a file 
is currently being used by another process. The option readLockCheckInterval 
can be used to set the check frequency.
+ - fileLock - is for using java.nio.channels.FileLock. This option is not 
avail for Windows OS and the FTP component. This approach should be avoided 
when accessing a remote file system via a mount/share unless that file system 
supports distributed file locks.
+ - rename - rename is for using a try to rename the file as a test if we can 
get exclusive read-lock.
+ - idempotent - (only for file component) idempotent is for using a 
idempotentRepository as the read-lock. This allows to use read locks that 
supports clustering if the idempotent repository implementation supports that.
+ - idempotent-changed - (only for file component) idempotent-changed is for 
using a idempotentRepository and changed as the combined read-lock. This allows 
to use read locks that supports clustering if the idempotent repository 
implementation supports that.
+ - idempotent-rename - (only for file component) idempotent-rename is for 
using a idempotentRepository and rename as the combined read-lock. This allows 
to use read locks that supports clustering if the idempotent repository 
implementation supports that.
+ 
+Notice: The various read locks is not all suited to work in clustered mode, 
where concurrent consumers on different nodes is competing for the same files 
on a shared file system. The markerFile using a close to atomic operation to 
create the empty marker file, but its not guaranteed to work in a cluster. The 
fileLock may work better but then the file system need to support distributed 
file locks, and so on. Using the idempotent read lock can support clustering if 
the idempotent repositor [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockIdempotentRelease Async* (lock) | Whether the delayed release task 
should be synchronous or asynchronous. See more details at the 
readLockIdempotentReleaseDelay option. | false | boolean
diff --git 
a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
 
b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
index 09ef430..4b33bee 100644
--- 
a/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
+++ 
b/components/camel-file/src/main/java/org/apache/camel/component/file/GenericFileEndpoint.java
@@ -837,25 +837,23 @@ public abstract class GenericFileEndpoint<T> extends 
ScheduledPollEndpoint imple
     /**
      * Used by consumer, to only poll the files if it has exclusive read-lock 
on the file (i.e. the file is not in-progress or being written).
      * Camel will wait until the file lock is granted.
-     * <p/>
-     * This option provides the build in strategies:
-     * <ul>
-     *     <li>none - No read lock is in use
-     *     <li>markerFile - Camel creates a marker file (fileName.camelLock) 
and then holds a lock on it. This option is not available for the FTP component
-     *     <li>changed - Changed is using file length/modification timestamp 
to detect whether the file is currently being copied or not. Will at least use 
1 sec
+     *
+     * This option provides the build in strategies:\n\n
+     *     - none - No read lock is in use\n
+     *     - markerFile - Camel creates a marker file (fileName.camelLock) and 
then holds a lock on it. This option is not available for the FTP component\n
+     *     - changed - Changed is using file length/modification timestamp to 
detect whether the file is currently being copied or not. Will at least use 1 
sec
      *     to determine this, so this option cannot consume files as fast as 
the others, but can be more reliable as the JDK IO API cannot
-     *     always determine whether a file is currently being used by another 
process. The option readLockCheckInterval can be used to set the check 
frequency.</li>
-     *     <li>fileLock - is for using java.nio.channels.FileLock. This option 
is not avail for Windows OS and the FTP component. This approach should be 
avoided when accessing
-     *     a remote file system via a mount/share unless that file system 
supports distributed file locks.</li>
-     *     <li>rename - rename is for using a try to rename the file as a test 
if we can get exclusive read-lock.</li>
-     *     <li>idempotent - (only for file component) idempotent is for using 
a idempotentRepository as the read-lock.
-     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.</li>
-     *     <li>idempotent-changed - (only for file component) 
idempotent-changed is for using a idempotentRepository and changed as the 
combined read-lock.
-     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.</li>
-     *     <li>idempotent-rename - (only for file component) idempotent-rename 
is for using a idempotentRepository and rename as the combined read-lock.
-     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.</li>
-     * </ul>
-     * Notice: The various read locks is not all suited to work in clustered 
mode, where concurrent consumers on different nodes is competing
+     *     always determine whether a file is currently being used by another 
process. The option readLockCheckInterval can be used to set the check 
frequency.\n
+     *     - fileLock - is for using java.nio.channels.FileLock. This option 
is not avail for Windows OS and the FTP component. This approach should be 
avoided when accessing
+     *     a remote file system via a mount/share unless that file system 
supports distributed file locks.\n
+     *     - rename - rename is for using a try to rename the file as a test 
if we can get exclusive read-lock.\n
+     *     - idempotent - (only for file component) idempotent is for using a 
idempotentRepository as the read-lock.
+     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.\n
+     *     - idempotent-changed - (only for file component) idempotent-changed 
is for using a idempotentRepository and changed as the combined read-lock.
+     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.\n
+     *     - idempotent-rename - (only for file component) idempotent-rename 
is for using a idempotentRepository and rename as the combined read-lock.
+     *     This allows to use read locks that supports clustering if the 
idempotent repository implementation supports that.\n
+     * \nNotice: The various read locks is not all suited to work in clustered 
mode, where concurrent consumers on different nodes is competing
      * for the same files on a shared file system. The markerFile using a 
close to atomic operation to create the empty marker file,
      * but its not guaranteed to work in a cluster. The fileLock may work 
better but then the file system need to support distributed file locks, and so 
on.
      * Using the idempotent read lock can support clustering if the idempotent 
repository supports clustering, such as Hazelcast Component or Infinispan.
@@ -1087,17 +1085,16 @@ public abstract class GenericFileEndpoint<T> extends 
ScheduledPollEndpoint imple
      * What to do if a file already exists with the same name.
      *
      * Override, which is the default, replaces the existing file.
-     * <ul>
-     *   <li>Append - adds content to the existing file.</li>
-     *   <li>Fail - throws a GenericFileOperationException, indicating that 
there is already an existing file.</li>
-     *   <li>Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay.</li>
-     *   <li>Move - option requires to use the moveExisting option to be 
configured as well.
+     * \n\n
+     *   - Append - adds content to the existing file.\n
+     *   - Fail - throws a GenericFileOperationException, indicating that 
there is already an existing file.\n
+     *   - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay.\n
+     *   - Move - option requires to use the moveExisting option to be 
configured as well.
      *   The option eagerDeleteTargetFile can be used to control what to do if 
an moving the file, and there exists already an existing file,
      *   otherwise causing the move operation to fail.
-     *   The Move option will move any existing files, before writing the 
target file.</li>
-     *   <li>TryRename is only applicable if tempFileName option is in use. 
This allows to try renaming the file from the temporary name to the actual name,
-     *   without doing any exists check. This check may be faster on some file 
systems and especially FTP servers.</li>
-     * </ul>
+     *   The Move option will move any existing files, before writing the 
target file.\n
+     *   - TryRename is only applicable if tempFileName option is in use. This 
allows to try renaming the file from the temporary name to the actual name,
+     *   without doing any exists check. This check may be faster on some file 
systems and especially FTP servers.
      */
     public void setFileExist(GenericFileExist fileExist) {
         this.fileExist = fileExist;
diff --git a/components/camel-ftp/src/main/docs/ftp-component.adoc 
b/components/camel-ftp/src/main/docs/ftp-component.adoc
index 6bde732..107bb0c 100644
--- a/components/camel-ftp/src/main/docs/ftp-component.adoc
+++ b/components/camel-ftp/src/main/docs/ftp-component.adoc
@@ -140,7 +140,7 @@ with the following path and query parameters:
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *receiveBufferSize* (consumer) | The receive (download) buffer size Used 
only by FTPClient | 32768 | int
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -188,7 +188,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockLoggingLevel* (lock) | Logging level used when a read lock could 
not be acquired. By default a DEBUG is logged. You can change this level, for 
example to OFF to not have any logging. This option is only applicable for 
readLock of types: changed, fileLock, idempotent, idempotent-changed, 
idempotent-rename, rename. | DEBUG | LoggingLevel
diff --git a/components/camel-ftp/src/main/docs/ftps-component.adoc 
b/components/camel-ftp/src/main/docs/ftps-component.adoc
index d1ab94b..787d3be 100644
--- a/components/camel-ftp/src/main/docs/ftps-component.adoc
+++ b/components/camel-ftp/src/main/docs/ftps-component.adoc
@@ -99,7 +99,7 @@ with the following path and query parameters:
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *receiveBufferSize* (consumer) | The receive (download) buffer size Used 
only by FTPClient | 32768 | int
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -147,7 +147,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockLoggingLevel* (lock) | Logging level used when a read lock could 
not be acquired. By default a DEBUG is logged. You can change this level, for 
example to OFF to not have any logging. This option is only applicable for 
readLock of types: changed, fileLock, idempotent, idempotent-changed, 
idempotent-rename, rename. | DEBUG | LoggingLevel
diff --git a/components/camel-ftp/src/main/docs/sftp-component.adoc 
b/components/camel-ftp/src/main/docs/sftp-component.adoc
index 4594b34..f948e88 100644
--- a/components/camel-ftp/src/main/docs/sftp-component.adoc
+++ b/components/camel-ftp/src/main/docs/sftp-component.adoc
@@ -91,7 +91,7 @@ with the following path and query parameters:
 | *pollStrategy* (consumer) | 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. 
|  | PollingConsumerPoll Strategy
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -139,7 +139,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockIdempotentRelease Async* (lock) | Whether the delayed release task 
should be synchronous or asynchronous. See more details at the 
readLockIdempotentReleaseDelay option. | false | boolean
diff --git 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FileEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FileEndpointBuilderFactory.java
index 0348ef0..78ec612 100644
--- 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FileEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FileEndpointBuilderFactory.java
@@ -803,41 +803,47 @@ public interface FileEndpointBuilderFactory {
          * Used by consumer, to only poll the files if it has exclusive
          * read-lock on the file (i.e. the file is not in-progress or being
          * written). Camel will wait until the file lock is granted. This 
option
-         * provides the build in strategies: none - No read lock is in use
-         * markerFile - Camel creates a marker file (fileName.camelLock) and
+         * provides the build in strategies:
+         * 
+         * - none - No read lock is in use
+         * - markerFile - Camel creates a marker file (fileName.camelLock) and
          * then holds a lock on it. This option is not available for the FTP
-         * component changed - Changed is using file length/modification
-         * timestamp to detect whether the file is currently being copied or
-         * not. Will at least use 1 sec to determine this, so this option 
cannot
-         * consume files as fast as the others, but can be more reliable as the
-         * JDK IO API cannot always determine whether a file is currently being
-         * used by another process. The option readLockCheckInterval can be 
used
-         * to set the check frequency. fileLock - is for using
-         * java.nio.channels.FileLock. This option is not avail for Windows OS
-         * and the FTP component. This approach should be avoided when 
accessing
-         * a remote file system via a mount/share unless that file system
-         * supports distributed file locks. rename - rename is for using a try
-         * to rename the file as a test if we can get exclusive read-lock.
-         * idempotent - (only for file component) idempotent is for using a
+         * component
+         * - changed - Changed is using file length/modification timestamp to
+         * detect whether the file is currently being copied or not. Will at
+         * least use 1 sec to determine this, so this option cannot consume
+         * files as fast as the others, but can be more reliable as the JDK IO
+         * API cannot always determine whether a file is currently being used 
by
+         * another process. The option readLockCheckInterval can be used to set
+         * the check frequency.
+         * - fileLock - is for using java.nio.channels.FileLock. This option is
+         * not avail for Windows OS and the FTP component. This approach should
+         * be avoided when accessing a remote file system via a mount/share
+         * unless that file system supports distributed file locks.
+         * - rename - rename is for using a try to rename the file as a test if
+         * we can get exclusive read-lock.
+         * - idempotent - (only for file component) idempotent is for using a
          * idempotentRepository as the read-lock. This allows to use read locks
          * that supports clustering if the idempotent repository implementation
-         * supports that. idempotent-changed - (only for file component)
-         * idempotent-changed is for using a idempotentRepository and changed 
as
-         * the combined read-lock. This allows to use read locks that supports
-         * clustering if the idempotent repository implementation supports 
that.
-         * idempotent-rename - (only for file component) idempotent-rename is
+         * supports that.
+         * - idempotent-changed - (only for file component) idempotent-changed
+         * is for using a idempotentRepository and changed as the combined
+         * read-lock. This allows to use read locks that supports clustering if
+         * the idempotent repository implementation supports that.
+         * - idempotent-rename - (only for file component) idempotent-rename is
          * for using a idempotentRepository and rename as the combined
          * read-lock. This allows to use read locks that supports clustering if
-         * the idempotent repository implementation supports that. Notice: The
-         * various read locks is not all suited to work in clustered mode, 
where
-         * concurrent consumers on different nodes is competing for the same
-         * files on a shared file system. The markerFile using a close to 
atomic
-         * operation to create the empty marker file, but its not guaranteed to
-         * work in a cluster. The fileLock may work better but then the file
-         * system need to support distributed file locks, and so on. Using the
-         * idempotent read lock can support clustering if the idempotent
-         * repository supports clustering, such as Hazelcast Component or
-         * Infinispan.
+         * the idempotent repository implementation supports that.
+         * 
+         * Notice: The various read locks is not all suited to work in 
clustered
+         * mode, where concurrent consumers on different nodes is competing for
+         * the same files on a shared file system. The markerFile using a close
+         * to atomic operation to create the empty marker file, but its not
+         * guaranteed to work in a cluster. The fileLock may work better but
+         * then the file system need to support distributed file locks, and so
+         * on. Using the idempotent read lock can support clustering if the
+         * idempotent repository supports clustering, such as Hazelcast
+         * Component or Infinispan.
          * 
          * The option is a: <code>java.lang.String</code> type.
          * 
@@ -2344,20 +2350,22 @@ public interface FileEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
-         * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
-         * option requires to use the moveExisting option to be configured as
-         * well. The option eagerDeleteTargetFile can be used to control what 
to
-         * do if an moving the file, and there exists already an existing file,
-         * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * which is the default, replaces the existing file.
+         * 
+         * - Append - adds content to the existing file.
+         * - Fail - throws a GenericFileOperationException, indicating that
+         * there is already an existing file.
+         * - Ignore - silently ignores the problem and does not override the
+         * existing file, but assumes everything is okay.
+         * - Move - option requires to use the moveExisting option to be
+         * configured as well. The option eagerDeleteTargetFile can be used to
+         * control what to do if an moving the file, and there exists already 
an
+         * existing file, otherwise causing the move operation to fail. The 
Move
+         * option will move any existing files, before writing the target file.
+         * - TryRename is only applicable if tempFileName option is in use. 
This
+         * allows to try renaming the file from the temporary name to the 
actual
+         * name, without doing any exists check. This check may be faster on
+         * some file systems and especially FTP servers.
          * 
          * The option is a:
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
@@ -2370,20 +2378,22 @@ public interface FileEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
-         * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
-         * option requires to use the moveExisting option to be configured as
-         * well. The option eagerDeleteTargetFile can be used to control what 
to
-         * do if an moving the file, and there exists already an existing file,
-         * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * which is the default, replaces the existing file.
+         * 
+         * - Append - adds content to the existing file.
+         * - Fail - throws a GenericFileOperationException, indicating that
+         * there is already an existing file.
+         * - Ignore - silently ignores the problem and does not override the
+         * existing file, but assumes everything is okay.
+         * - Move - option requires to use the moveExisting option to be
+         * configured as well. The option eagerDeleteTargetFile can be used to
+         * control what to do if an moving the file, and there exists already 
an
+         * existing file, otherwise causing the move operation to fail. The 
Move
+         * option will move any existing files, before writing the target file.
+         * - TryRename is only applicable if tempFileName option is in use. 
This
+         * allows to try renaming the file from the temporary name to the 
actual
+         * name, without doing any exists check. This check may be faster on
+         * some file systems and especially FTP servers.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
diff --git 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpEndpointBuilderFactory.java
index 636f226..6e8a39f 100644
--- 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpEndpointBuilderFactory.java
@@ -1045,29 +1045,29 @@ public interface FtpEndpointBuilderFactory {
          * Used by consumer, to only poll the files if it has exclusive
          * read-lock on the file (i.e. the file is not in-progress or being
          * written). Camel will wait until the file lock is granted. This 
option
-         * provides the build in strategies: none - No read lock is in use
+         * provides the build in strategies: - none - No read lock is in use -
          * markerFile - Camel creates a marker file (fileName.camelLock) and
          * then holds a lock on it. This option is not available for the FTP
-         * component changed - Changed is using file length/modification
+         * component - changed - Changed is using file length/modification
          * timestamp to detect whether the file is currently being copied or
          * not. Will at least use 1 sec to determine this, so this option 
cannot
          * consume files as fast as the others, but can be more reliable as the
          * JDK IO API cannot always determine whether a file is currently being
          * used by another process. The option readLockCheckInterval can be 
used
-         * to set the check frequency. fileLock - is for using
+         * to set the check frequency. - fileLock - is for using
          * java.nio.channels.FileLock. This option is not avail for Windows OS
          * and the FTP component. This approach should be avoided when 
accessing
          * a remote file system via a mount/share unless that file system
-         * supports distributed file locks. rename - rename is for using a try
-         * to rename the file as a test if we can get exclusive read-lock.
+         * supports distributed file locks. - rename - rename is for using a 
try
+         * to rename the file as a test if we can get exclusive read-lock. -
          * idempotent - (only for file component) idempotent is for using a
          * idempotentRepository as the read-lock. This allows to use read locks
          * that supports clustering if the idempotent repository implementation
-         * supports that. idempotent-changed - (only for file component)
+         * supports that. - idempotent-changed - (only for file component)
          * idempotent-changed is for using a idempotentRepository and changed 
as
          * the combined read-lock. This allows to use read locks that supports
          * clustering if the idempotent repository implementation supports 
that.
-         * idempotent-rename - (only for file component) idempotent-rename is
+         * - idempotent-rename - (only for file component) idempotent-rename is
          * for using a idempotentRepository and rename as the combined
          * read-lock. This allows to use read locks that supports clustering if
          * the idempotent repository implementation supports that. Notice: The
@@ -2978,20 +2978,20 @@ public interface FtpEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option is a:
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
@@ -3004,20 +3004,20 @@ public interface FtpEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
diff --git 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpsEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpsEndpointBuilderFactory.java
index 8bdd34d..2d84d90 100644
--- 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpsEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/FtpsEndpointBuilderFactory.java
@@ -1047,29 +1047,29 @@ public interface FtpsEndpointBuilderFactory {
          * Used by consumer, to only poll the files if it has exclusive
          * read-lock on the file (i.e. the file is not in-progress or being
          * written). Camel will wait until the file lock is granted. This 
option
-         * provides the build in strategies: none - No read lock is in use
+         * provides the build in strategies: - none - No read lock is in use -
          * markerFile - Camel creates a marker file (fileName.camelLock) and
          * then holds a lock on it. This option is not available for the FTP
-         * component changed - Changed is using file length/modification
+         * component - changed - Changed is using file length/modification
          * timestamp to detect whether the file is currently being copied or
          * not. Will at least use 1 sec to determine this, so this option 
cannot
          * consume files as fast as the others, but can be more reliable as the
          * JDK IO API cannot always determine whether a file is currently being
          * used by another process. The option readLockCheckInterval can be 
used
-         * to set the check frequency. fileLock - is for using
+         * to set the check frequency. - fileLock - is for using
          * java.nio.channels.FileLock. This option is not avail for Windows OS
          * and the FTP component. This approach should be avoided when 
accessing
          * a remote file system via a mount/share unless that file system
-         * supports distributed file locks. rename - rename is for using a try
-         * to rename the file as a test if we can get exclusive read-lock.
+         * supports distributed file locks. - rename - rename is for using a 
try
+         * to rename the file as a test if we can get exclusive read-lock. -
          * idempotent - (only for file component) idempotent is for using a
          * idempotentRepository as the read-lock. This allows to use read locks
          * that supports clustering if the idempotent repository implementation
-         * supports that. idempotent-changed - (only for file component)
+         * supports that. - idempotent-changed - (only for file component)
          * idempotent-changed is for using a idempotentRepository and changed 
as
          * the combined read-lock. This allows to use read locks that supports
          * clustering if the idempotent repository implementation supports 
that.
-         * idempotent-rename - (only for file component) idempotent-rename is
+         * - idempotent-rename - (only for file component) idempotent-rename is
          * for using a idempotentRepository and rename as the combined
          * read-lock. This allows to use read locks that supports clustering if
          * the idempotent repository implementation supports that. Notice: The
@@ -3168,20 +3168,20 @@ public interface FtpsEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option is a:
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
@@ -3194,20 +3194,20 @@ public interface FtpsEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
diff --git 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/SftpEndpointBuilderFactory.java
 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/SftpEndpointBuilderFactory.java
index acdc196..409356d 100644
--- 
a/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/SftpEndpointBuilderFactory.java
+++ 
b/core/camel-endpointdsl/src/main/java/org/apache/camel/builder/endpoint/dsl/SftpEndpointBuilderFactory.java
@@ -917,29 +917,29 @@ public interface SftpEndpointBuilderFactory {
          * Used by consumer, to only poll the files if it has exclusive
          * read-lock on the file (i.e. the file is not in-progress or being
          * written). Camel will wait until the file lock is granted. This 
option
-         * provides the build in strategies: none - No read lock is in use
+         * provides the build in strategies: - none - No read lock is in use -
          * markerFile - Camel creates a marker file (fileName.camelLock) and
          * then holds a lock on it. This option is not available for the FTP
-         * component changed - Changed is using file length/modification
+         * component - changed - Changed is using file length/modification
          * timestamp to detect whether the file is currently being copied or
          * not. Will at least use 1 sec to determine this, so this option 
cannot
          * consume files as fast as the others, but can be more reliable as the
          * JDK IO API cannot always determine whether a file is currently being
          * used by another process. The option readLockCheckInterval can be 
used
-         * to set the check frequency. fileLock - is for using
+         * to set the check frequency. - fileLock - is for using
          * java.nio.channels.FileLock. This option is not avail for Windows OS
          * and the FTP component. This approach should be avoided when 
accessing
          * a remote file system via a mount/share unless that file system
-         * supports distributed file locks. rename - rename is for using a try
-         * to rename the file as a test if we can get exclusive read-lock.
+         * supports distributed file locks. - rename - rename is for using a 
try
+         * to rename the file as a test if we can get exclusive read-lock. -
          * idempotent - (only for file component) idempotent is for using a
          * idempotentRepository as the read-lock. This allows to use read locks
          * that supports clustering if the idempotent repository implementation
-         * supports that. idempotent-changed - (only for file component)
+         * supports that. - idempotent-changed - (only for file component)
          * idempotent-changed is for using a idempotentRepository and changed 
as
          * the combined read-lock. This allows to use read locks that supports
          * clustering if the idempotent repository implementation supports 
that.
-         * idempotent-rename - (only for file component) idempotent-rename is
+         * - idempotent-rename - (only for file component) idempotent-rename is
          * for using a idempotentRepository and rename as the combined
          * read-lock. This allows to use read locks that supports clustering if
          * the idempotent repository implementation supports that. Notice: The
@@ -3022,20 +3022,20 @@ public interface SftpEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option is a:
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
@@ -3048,20 +3048,20 @@ public interface SftpEndpointBuilderFactory {
         }
         /**
          * What to do if a file already exists with the same name. Override,
-         * which is the default, replaces the existing file. Append - adds
-         * content to the existing file. Fail - throws a
+         * which is the default, replaces the existing file. - Append - adds
+         * content to the existing file. - Fail - throws a
          * GenericFileOperationException, indicating that there is already an
-         * existing file. Ignore - silently ignores the problem and does not
-         * override the existing file, but assumes everything is okay. Move -
+         * existing file. - Ignore - silently ignores the problem and does not
+         * override the existing file, but assumes everything is okay. - Move -
          * option requires to use the moveExisting option to be configured as
          * well. The option eagerDeleteTargetFile can be used to control what 
to
          * do if an moving the file, and there exists already an existing file,
          * otherwise causing the move operation to fail. The Move option will
-         * move any existing files, before writing the target file. TryRename 
is
-         * only applicable if tempFileName option is in use. This allows to try
-         * renaming the file from the temporary name to the actual name, 
without
-         * doing any exists check. This check may be faster on some file 
systems
-         * and especially FTP servers.
+         * move any existing files, before writing the target file. - TryRename
+         * is only applicable if tempFileName option is in use. This allows to
+         * try renaming the file from the temporary name to the actual name,
+         * without doing any exists check. This check may be faster on some 
file
+         * systems and especially FTP servers.
          * 
          * The option will be converted to a
          * <code>org.apache.camel.component.file.GenericFileExist</code> type.
diff --git a/docs/components/modules/ROOT/pages/file-component.adoc 
b/docs/components/modules/ROOT/pages/file-component.adoc
index fc16ba0..85d131d 100644
--- a/docs/components/modules/ROOT/pages/file-component.adoc
+++ b/docs/components/modules/ROOT/pages/file-component.adoc
@@ -114,7 +114,13 @@ with the following path and query parameters:
 | *startingDirectoryMustExist* (consumer) | Whether the starting directory 
must exist. Mind that the autoCreate option is default enabled, which means the 
starting directory is normally auto created if it doesn't exist. You can 
disable autoCreate and enable this to ensure the starting directory must exist. 
Will thrown an exception if the directory doesn't exist. | false | boolean
 | *startingDirectoryMustHave Access* (consumer) | Whether the starting 
directory has access permissions. Mind that the startingDirectoryMustExist 
parameter must be set to true in order to verify that the directory exists. 
Will thrown an exception if the directory doesn't have read and write 
permissions. | false | boolean
 | *appendChars* (producer) | Used to append characters (text) after writing 
files. This can for example be used to add new lines or other separators when 
writing and appending to existing files. To specify new-line (slash-n or 
slash-r) or tab (slash-t) characters then escape with an extra slash, eg 
slash-slash-n |  | String
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) a| What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. 
+
+ - Append - adds content to the existing file.
+ - Fail - throws a GenericFileOperationException, indicating that there is 
already an existing file.
+ - Ignore - silently ignores the problem and does not override the existing 
file, but assumes everything is okay.
+ - Move - option requires to use the moveExisting option to be configured as 
well. The option eagerDeleteTargetFile can be used to control what to do if an 
moving the file, and there exists already an existing file, otherwise causing 
the move operation to fail. The Move option will move any existing files, 
before writing the target file.
+ - TryRename is only applicable if tempFileName option is in use. This allows 
to try renaming the file from the temporary name to the actual name, without 
doing any exists check. This check may be faster on some file systems and 
especially FTP servers. | Override | GenericFileExist
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -151,7 +157,18 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) a| Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies:
+
+ - none - No read lock is in use
+ - markerFile - Camel creates a marker file (fileName.camelLock) and then 
holds a lock on it. This option is not available for the FTP component
+ - changed - Changed is using file length/modification timestamp to detect 
whether the file is currently being copied or not. Will at least use 1 sec to 
determine this, so this option cannot consume files as fast as the others, but 
can be more reliable as the JDK IO API cannot always determine whether a file 
is currently being used by another process. The option readLockCheckInterval 
can be used to set the check frequency.
+ - fileLock - is for using java.nio.channels.FileLock. This option is not 
avail for Windows OS and the FTP component. This approach should be avoided 
when accessing a remote file system via a mount/share unless that file system 
supports distributed file locks.
+ - rename - rename is for using a try to rename the file as a test if we can 
get exclusive read-lock.
+ - idempotent - (only for file component) idempotent is for using a 
idempotentRepository as the read-lock. This allows to use read locks that 
supports clustering if the idempotent repository implementation supports that.
+ - idempotent-changed - (only for file component) idempotent-changed is for 
using a idempotentRepository and changed as the combined read-lock. This allows 
to use read locks that supports clustering if the idempotent repository 
implementation supports that.
+ - idempotent-rename - (only for file component) idempotent-rename is for 
using a idempotentRepository and rename as the combined read-lock. This allows 
to use read locks that supports clustering if the idempotent repository 
implementation supports that.
+ 
+Notice: The various read locks is not all suited to work in clustered mode, 
where concurrent consumers on different nodes is competing for the same files 
on a shared file system. The markerFile using a close to atomic operation to 
create the empty marker file, but its not guaranteed to work in a cluster. The 
fileLock may work better but then the file system need to support distributed 
file locks, and so on. Using the idempotent read lock can support clustering if 
the idempotent repositor [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockIdempotentRelease Async* (lock) | Whether the delayed release task 
should be synchronous or asynchronous. See more details at the 
readLockIdempotentReleaseDelay option. | false | boolean
diff --git a/docs/components/modules/ROOT/pages/ftp-component.adoc 
b/docs/components/modules/ROOT/pages/ftp-component.adoc
index 6bde732..107bb0c 100644
--- a/docs/components/modules/ROOT/pages/ftp-component.adoc
+++ b/docs/components/modules/ROOT/pages/ftp-component.adoc
@@ -140,7 +140,7 @@ with the following path and query parameters:
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *receiveBufferSize* (consumer) | The receive (download) buffer size Used 
only by FTPClient | 32768 | int
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -188,7 +188,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockLoggingLevel* (lock) | Logging level used when a read lock could 
not be acquired. By default a DEBUG is logged. You can change this level, for 
example to OFF to not have any logging. This option is only applicable for 
readLock of types: changed, fileLock, idempotent, idempotent-changed, 
idempotent-rename, rename. | DEBUG | LoggingLevel
diff --git a/docs/components/modules/ROOT/pages/ftps-component.adoc 
b/docs/components/modules/ROOT/pages/ftps-component.adoc
index d1ab94b..787d3be 100644
--- a/docs/components/modules/ROOT/pages/ftps-component.adoc
+++ b/docs/components/modules/ROOT/pages/ftps-component.adoc
@@ -99,7 +99,7 @@ with the following path and query parameters:
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *receiveBufferSize* (consumer) | The receive (download) buffer size Used 
only by FTPClient | 32768 | int
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -147,7 +147,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockLoggingLevel* (lock) | Logging level used when a read lock could 
not be acquired. By default a DEBUG is logged. You can change this level, for 
example to OFF to not have any logging. This option is only applicable for 
readLock of types: changed, fileLock, idempotent, idempotent-changed, 
idempotent-rename, rename. | DEBUG | LoggingLevel
diff --git a/docs/components/modules/ROOT/pages/sftp-component.adoc 
b/docs/components/modules/ROOT/pages/sftp-component.adoc
index 4594b34..f948e88 100644
--- a/docs/components/modules/ROOT/pages/sftp-component.adoc
+++ b/docs/components/modules/ROOT/pages/sftp-component.adoc
@@ -91,7 +91,7 @@ with the following path and query parameters:
 | *pollStrategy* (consumer) | 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. 
|  | PollingConsumerPoll Strategy
 | *processStrategy* (consumer) | A pluggable 
org.apache.camel.component.file.GenericFileProcessStrategy allowing you to 
implement your own readLock option or similar. Can also be used when special 
conditions must be met before a file can be consumed, such as a special ready 
file exists. If this option is set then the readLock option does not apply. |  
| GenericFileProcess Strategy
 | *useList* (consumer) | Whether to allow using LIST command when downloading 
a file. Default is true. In some use cases you may want to download a specific 
file and are not allowed to use the LIST command, and therefore you can set 
this option to false. Notice when using this option, then the specific file to 
download does not include meta-data information such as file size, timestamp, 
permissions etc, because those information is only possible to retrieve when 
LIST command is in use. | [...]
-| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. Append - adds 
content to the existing file. Fail - throws a GenericFileOperationException, 
indicating that there is already an existing file. Ignore - silently ignores 
the problem and does not override the existing file, but assumes everything is 
okay. Move - option requires to use the moveExisting option to be configured as 
well. The option eager [...]
+| *fileExist* (producer) | What to do if a file already exists with the same 
name. Override, which is the default, replaces the existing file. - Append - 
adds content to the existing file. - Fail - throws a 
GenericFileOperationException, indicating that there is already an existing 
file. - Ignore - silently ignores the problem and does not override the 
existing file, but assumes everything is okay. - Move - option requires to use 
the moveExisting option to be configured as well. The opti [...]
 | *flatten* (producer) | Flatten is used to flatten the file name path to 
strip any leading paths, so it's just the file name. This allows you to consume 
recursively into sub-directories, but when you eg write the files to another 
directory they will be written in a single directory. Setting this to true on 
the producer enforces that any file name in CamelFileName header will be 
stripped for any leading paths. | false | boolean
 | *jailStartingDirectory* (producer) | Used for jailing (restricting) writing 
files to the starting directory (and sub) only. This is enabled by default to 
not allow Camel to write files to outside directories (to be more secured out 
of the box). You can turn this off to allow writing files to directories 
outside the starting directory, such as parent or root folders. | true | boolean
 | *lazyStartProducer* (producer) | 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 during 
starting and cause the route to fail being started. By deferring this startup 
to be lazy then the startup failure can be handled during routing messages via 
Camel's routing error handlers. Beware that when the first message is processed 
then creating and [...]
@@ -139,7 +139,7 @@ with the following path and query parameters:
 | *minDepth* (filter) | The minimum depth to start processing when recursively 
processing a directory. Using minDepth=1 means the base directory. Using 
minDepth=2 means the first sub directory. |  | int
 | *move* (filter) | Expression (such as Simple Language) used to dynamically 
set the filename when moving it after processing. To move files into a .done 
subdirectory just enter .done. |  | String
 | *exclusiveReadLockStrategy* (lock) | Pluggable read-lock as a 
org.apache.camel.component.file.GenericFileExclusiveReadLockStrategy 
implementation. |  | GenericFileExclusive ReadLockStrategy
-| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: none - No read lock is in use markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component changed - Changed is using file 
length/modification timestamp to det [...]
+| *readLock* (lock) | Used by consumer, to only poll the files if it has 
exclusive read-lock on the file (i.e. the file is not in-progress or being 
written). Camel will wait until the file lock is granted. This option provides 
the build in strategies: - none - No read lock is in use - markerFile - Camel 
creates a marker file (fileName.camelLock) and then holds a lock on it. This 
option is not available for the FTP component - changed - Changed is using file 
length/modification timestamp  [...]
 | *readLockCheckInterval* (lock) | Interval in millis for the read-lock, if 
supported by the read lock. This interval is used for sleeping between attempts 
to acquire the read lock. For example when using the changed read lock, you can 
set a higher interval period to cater for slow writes. The default of 1 sec. 
may be too fast if the producer is very slow writing the file. Notice: For FTP 
the default readLockCheckInterval is 5000. The readLockTimeout value must be 
higher than readLockChe [...]
 | *readLockDeleteOrphanLock Files* (lock) | Whether or not read lock with 
marker files should upon startup delete any orphan read lock files, which may 
have been left on the file system, if Camel was not properly shutdown (such as 
a JVM crash). If turning this option to false then any orphaned lock file will 
cause Camel to not attempt to pickup that file, this could also be due another 
node is concurrently reading files from the same shared directory. | true | 
boolean
 | *readLockIdempotentRelease Async* (lock) | Whether the delayed release task 
should be synchronous or asynchronous. See more details at the 
readLockIdempotentReleaseDelay option. | false | boolean
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
index ac16976..717727d 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/component-options.mvel
@@ -8,6 +8,6 @@ The @{title} component supports @{componentOptions.size()} 
options, which are li
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-@foreach{row : componentOptions}| *@{row.getShortName(25)}* 
(@{row.shortGroup}) | @{util.escape(row.description)} | 
@{row.getShortDefaultValue(20)} | @{row.getShortJavaType(25)}
+@foreach{row : componentOptions}| *@{row.getShortName(25)}* 
(@{row.shortGroup}) @{row.description.?contains("\n") ? "a" : ""}| 
@{util.escape(row.description)} | @{row.getShortDefaultValue(20)} | 
@{row.getShortJavaType(25)}
 @end{}|===
 @end{}
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/dataformat-options.mvel
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/dataformat-options.mvel
index 5942392..e9368da 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/dataformat-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/dataformat-options.mvel
@@ -8,6 +8,6 @@ The @{title} dataformat supports @{dataFormatOptions.size()} 
options, which are
 [width="100%",cols="2s,1m,1m,6",options="header"]
 |===
 | Name | Default | Java Type | Description
-@foreach{row : dataFormatOptions}| @{row.name} | @{row.defaultValue} | 
@{row.shortJavaType} | @{util.escape(row.description)}
+@foreach{row : dataFormatOptions}| @{row.name} | @{row.defaultValue} | 
@{row.shortJavaType} @{row.description.?contains("\n") ? "a" : ""}| 
@{util.escape(row.description)}
 @end{}|===
 @end{}
\ No newline at end of file
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/eip-options.mvel 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/eip-options.mvel
index a11511a..27dcf4c 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/eip-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/eip-options.mvel
@@ -6,6 +6,6 @@ The @{title} EIP supports @{eipOptions.size()} options which 
are listed below:
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-@foreach{row : eipOptions}| *@{row.getShortName(30)}* | 
@{util.escape(row.description)} | @{row.getShortDefaultValue(20)} | 
@{row.getShortJavaType(25)}
+@foreach{row : eipOptions}| *@{row.getShortName(30)}* 
@{row.description.?contains("\n") ? "a" : ""}| @{util.escape(row.description)} 
| @{row.getShortDefaultValue(20)} | @{row.getShortJavaType(25)}
 @end{}|===
 @end{}
\ No newline at end of file
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
index 52be028..174ce16 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/endpoint-options.mvel
@@ -14,7 +14,7 @@ The @{title} endpoint has no path parameters.
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-@foreach{row : endpointPathOptions}| *@{row.getShortName(30)}* | 
@{util.escape(row.description)} | @{row.getShortDefaultValue(20)} | 
@{row.getShortJavaType(25)}
+@foreach{row : endpointPathOptions}| *@{row.getShortName(30)}* 
@{row.description.?contains("\n") ? "a" : ""}| @{util.escape(row.description)} 
| @{row.getShortDefaultValue(20)} | @{row.getShortJavaType(25)}
 @end{}|===
 @end{}
 
@@ -26,6 +26,6 @@ The @{title} endpoint has no query parameters.
 [width="100%",cols="2,5,^1,2",options="header"]
 |===
 | Name | Description | Default | Type
-@foreach{row : endpointOptions}| *@{row.getShortName(30)}* (@{row.shortGroup}) 
| @{util.escape(row.description)} | @{row.getShortDefaultValue(20)} | 
@{row.getShortJavaType(25)}
+@foreach{row : endpointOptions}| *@{row.getShortName(30)}* (@{row.shortGroup}) 
@{row.description.?contains("\n") ? "a" : ""}| @{util.escape(row.description)} 
| @{row.getShortDefaultValue(20)} | @{row.getShortJavaType(25)}
 @end{}|===
 @end{}
diff --git 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/language-options.mvel
 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/language-options.mvel
index 498d338..351afa8 100644
--- 
a/tooling/maven/camel-package-maven-plugin/src/main/resources/language-options.mvel
+++ 
b/tooling/maven/camel-package-maven-plugin/src/main/resources/language-options.mvel
@@ -8,6 +8,6 @@ The @{title} language supports @{languageOptions.size()} 
options, which are list
 [width="100%",cols="2,1m,1m,6",options="header"]
 |===
 | Name | Default | Java Type | Description
-@foreach{row : languageOptions}| @{row.name} | @{row.defaultValue} | 
@{row.shortJavaType} | @{util.escape(row.description)}
+@foreach{row : languageOptions}| @{row.name} | @{row.defaultValue} | 
@{row.shortJavaType} @{row.description.?contains("\n") ? "a" : ""}| 
@{util.escape(row.description)}
 @end{}|===
 @end{}
\ No newline at end of file

Reply via email to