The JoSQL (SQL for Java objects) language enables you to evaluate predicates and expressions in Apache Camel. JoSQL employs a SQL-like query syntax to perform selection and ordering operations on data from in-memory Java objects—however, JoSQL is not a database. In the JoSQL syntax, each Java object instance is treated like a table row and each object method is treated like a column name. Using this syntax, it is possible to construct powerful statements for extracting and compiling data from collections of Java objects. For details, see http://josql.sourceforge.net/.
To use JoSQL in your routes you need to add a dependency on camel-josql to
your project as shown in Example 7.
Example 7. Adding the camel-josql dependency
<!-- Maven POM File -->
...
<dependencies>
...
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-josql</artifactId>
<version>${camel-version}</version>
</dependency>
...
</dependencies>To use the sql() static method in your application code, include the
following import statement in your Java source files:
import static org.apache.camel.builder.sql.SqlBuilder.sql;
Table 6 lists the variables that are accessible when using JoSQL.
Table 6. SQL variables
| Name | Type | Description |
|---|---|---|
exchange | org.apache.camel.Exchange | The current Exchange |
in | org.apache.camel.Message | The IN message |
out | org.apache.camel.Message | The OUT message |
property | Object | the Exchange property whose key is property |
header | Object | the IN message header whose key is header |
variable | Object | the variable whose key is variable |
Example 8 shows a route that uses JoSQL.
Example 8. Route using JoSQL
<camelContext>
<route>
<from uri="direct:start"/>
<setBody>
<language language="sql">select * from MyType</language>
</setBody>
<to uri="seda:regularQueue"/>
</route>
</camelContext>






