File Language has been edited by Claus Ibsen (Aug 21, 2008).

Change summary:

CAMEL-621

(View changes)

Content:

File _expression_ Language

The File _expression_ Language is an extension to the Simple language, adding file related capabilities. These capabilities is related to common use cases working with file path and names. The goal is to allow _expression_ to be used with the File component for setting dynamic file patterns for both the file consumer and file producer.

Syntax

This language is an extension the the Simple language so the Simple syntax applies also.
All the file tokens uses the same as the method on the java.io.File object, for instance file:absolute refers to the java.io.File.getAbsolute() method.

All options returns a String object.

_expression_ Description
file:name refers to the file name
file:name.noext refers to the file name with no extension
file:parent refers to the file parent
file:path refers to the file path
file:absolute refers to the absolute file
file:canonical.path refers to the canonical path
data:command:pattern for date formatting using the java.text.SimepleDataFormat patterns. Supported commands are: now for current timestamp, file for the last modified timestamp of the file.
bean:bean _expression_ invoking a bean _expression_ using the Bean language.
simple:simple _expression_ to invoke the simple _expression_, however simple: can be omitted as this language extends the simple language

Samples

Lets assume we use the file consumer to read files and want to move the read files to backup folder with the current date as a subfolder. This can be archived using an _expression_ like:

_expression_="backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"

relative folder names is also supported so suppose the backup folder should be a sibling folder then you can append .. as:

_expression_="../backup/${date:now:yyyyMMdd}/${file:name.noext}.bak"

As this is an extension to the Simple language we have access to all the goodies from this language also, so in this use case we want to use the in.header.type as a parameter in the dynamic _expression_:

_expression_="../backup/${date:now:yyyyMMdd}/type-${in.header.type}/backup-of-${file:name.noext}.bak"

And finally we can also use a bean _expression_ to invoke a POJO class that generates some String output (or convertible to String) to be used:

_expression_="uniquefile-${bean:myguidgenerator.generateid}.txt"

And of course all this can be combined in one _expression_ where you can use the File Language, Simple and the Bean language in one combined _expression_. This is pretty powerful for those common file path patterns.

Reply via email to