CBOR
Since Camel 3.0
CBOR is a Data Format that uses the Jackson library with the CBOR extension to unmarshal a CBOR payload into Java objects or to marshal Java objects into a CBOR payload.
-
Java
-
XML
-
YAML
from("activemq:My.Queue")
.unmarshal().cbor()
.to("mqseries:Another.Queue"); <route>
<from uri="activemq:My.Queue"/>
<unmarshal><cbor/></unmarshal>
<to uri="mqseries:Another.Queue"/>
</route> - route:
from:
uri: activemq:My.Queue
steps:
- unmarshal:
cbor: {}
- to:
uri: mqseries:Another.Queue Usage
CBOR Options
The CBOR dataformat supports the following options which are listed below.
| Name | Default | Java Type | Description |
|---|---|---|---|
| Lookup and use the existing CBOR ObjectMapper with the given id when using Jackson. | ||
|
| Whether to lookup and use default Jackson CBOR ObjectMapper from the registry. | |
| Class name of the java type to use when unmarshalling. | ||
| Refers to a custom collection type to lookup in the registry to use. | ||
|
| To unmarshal to a List of Map or a List of Pojo. | |
|
| If enabled then Jackson CBOR is allowed to attempt to use the CamelCBORUnmarshalType header during the unmarshalling. | |
|
| To enable pretty printing output nicely formatted. Is by default false. | |
|
| Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to. | |
| Set of features to enable on the Jackson ObjectMapper. Multiple features can be separated by comma. | ||
| Set of features to disable on the Jackson ObjectMapper. Multiple features can be separated by comma. |
Message Body
The message body at each side of the CBOR data format: Marshal input and Unmarshal input are the bodies marshal and unmarshal can take, and Marshal output and Unmarshal output the body after them.
| Side | Body | Description |
|---|---|---|
Marshal input |
| A Map, a List or a POJO to write as CBOR. A String or bytes are written as one CBOR text or byte string, not as they are. |
Marshal output |
| The CBOR data in the stream cache, or a byte array when stream caching is off. |
Unmarshal input |
| CBOR data. A String fails. |
Unmarshal output |
| A Map (LinkedHashMap) for a CBOR map, a List (ArrayList) for an array; an object of the class unmarshalType names.
Not known when |
The bodies are the ones with the default options. A side that is not listed is not known, and tooling does not guess it. The carriers are described in the Camel Catalog.
Using CBOR in Spring DSL
When using Data Format in Spring DSL, you need to declare the data formats first. This is done in the DataFormats XML tag.
<dataFormats>
<!-- here we define a CBOR data format with the id test, and that it should use the TestPojo as the class type when
doing unmarshal. -->
<cbor id="test" unmarshalType="org.apache.camel.component.cbor.TestPojo"/>
</dataFormats> And then you can refer to this id in the route:
-
Java
-
XML
-
YAML
from("direct:back")
.unmarshal("test")
.to("mock:reverse"); <route>
<from uri="direct:back"/>
<unmarshal><custom ref="test"/></unmarshal>
<to uri="mock:reverse"/>
</route> - route:
from:
uri: direct:back
steps:
- unmarshal:
custom:
ref: test
- to:
uri: mock:reverse