Other Camel DSL extensions

There are also some other DSL extensions, mostly for convenience.

Error Handler

A convenience DSL extension provided by IPF is the unhandled DSL element. It replaces the verbose errorHandler(noErrorHandler()) statement in route definitions i.e. it drops the error handler from a route.

    from('direct:input')
        .unhandled()
        // further processing here ...
        .to('mock:output')

Exception message and object

The class org.apache.camel.builder.ExpressionClause has been extended with expressions to access the exception object or the exception message of an exchange. The corresponding DSL extensions are exceptionMessage and exceptionObject.

    from('direct:input1')
        .onException(ValidationException)
            .transform().exceptionMessage()
            .handled(true)
            .to('mock:error')
            .end()
        // ... ValidationException thrown here ...
        .to('mock:output')

    from('direct:input2')
        .onException(ValidationException)
            .setHeader('foo').exceptionObject()
            .to('mock:error')
            .end()
        // ... ValidationException thrown here ...
        .to('mock:output')

Direct and Mock

These extensions are just to minimize code for commonly used Camel endpoints. The routes in the example above can also be written like this:

```groovy direct(‘input1’) .onException(ValidationException) .transform().exceptionMessage() .handled(true) .mock(‘error’) .end() // … ValidationException thrown here … .to(‘mock:output’) ``