Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Option

Default

Description

lineLength

76

To specific a maximum line length for the encoded data.

lineSeparator

\r\n

The line separators to use.

urlSafe

false

Instead of emitting '+' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode operations. Decoding seamlessly handles both modes.

You configure the data format using this tag:

Code Block
languagexml
<camelContext>
    <dataFormats>
        <!-- for a newline character (\n), use the HTML entity notation coupled with the ASCII code. -->
        <base64 lineSeparator="&#10;" id="base64withNewLine" />
        <base64 lineLength="64" id="base64withLineLength64" />
    </dataFormats>
    ...
</camelContext>

Then you can use it later by its reference:

Code Block
languagexml
<route>
     <from uri="direct:startEncode" />
     <marshal ref="base64withLineLength64" />
     <to uri="mock:result" />
</route>

Marshal

In this example we marshal the file content to base64 object.

Code Block
from("file://data.bin").marshal().base64().to("jms://myqueue");
Code Block
languagexml
 <from uri="file://data.bin">
 <marshal>
     <base64/>
 </marshal>
 <to uri="jms://myqueue"/> 

Unmarshal

In this example we unmarshal the payload from the JMS queue to a byte[] object, before its processed by the newOrder processor.

Code Block
from("jms://queue/order").unmarshal().base64().processRef("newOrder");
Code Block
languagexml
 <from uri="jms://queue/order">
 <marshal>
     <base64/>
 </marshal>
 <to uri="bean:newOrder"/> 

Dependencies

To use Base64 in your Camel routes you need to add a dependency on camel-base64 which implements this data format.

...