JSonApi
Since Camel 3.0
The JSonApi dataformat supports the following options which are listed below.
Message Body
The message body at each side of the JSonApi 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 |
| One resource object of a class dataFormatTypes names, annotated with @Type and @Id of JSONAPI-Converter, or a Collection or an array of them, written as a collection document whose data is an array. A Map fails. |
Marshal output |
| The JSON:API document in the stream cache, or a byte array when stream caching is off. |
Unmarshal input |
| |
Unmarshal output |
| The primary data as an object of the class mainFormatType names, or no body when the data is null. A collection document, whose data is an array, gives a List of them. With |
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, the sides and the tools that use them are described in Message Body Types.
Usage
The dataFormatTypes are the resource classes, separated by commas. They are annotated with @Type and @Id of the JSONAPI-Converter library. On unmarshal, mainFormatType is the class of the primary data of the document:
- route:
from:
uri: direct:marshal
steps:
- marshal:
jsonApi:
dataFormatTypes: com.example.Book,com.example.Author
- to:
uri: mock:marshal
- route:
from:
uri: direct:unmarshal
steps:
- unmarshal:
jsonApi:
dataFormatTypes: com.example.Book,com.example.Author
mainFormatType: com.example.Book
- to:
uri: mock:unmarshal Collection documents
A JSON:API document whose primary data is an array, such as the answer to GET /books, is a collection document.
-
On unmarshal, a document whose
datais an array gives ajava.util.ListofmainFormatTypeobjects (an empty list for"data": []). A document whosedatais one resource object gives that object, as before. -
On marshal, a
java.util.Collectionor an array of resource objects is written as a collection document, whosedatais an array. Any other body is written as one resource object.
Dependencies
To use JsonAPI in your Camel routes, you need to add the dependency on camel-jsonapi which implements this data format.
If you use Maven, you could add the following to your pom.xml, substituting the version number for the latest & greatest release.
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-jsonapi</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>