Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Introducing Siren 4 Java EE 1.0

DZone's Guide to

Introducing Siren 4 Java EE 1.0

When implementing a Hypermedia-driven REST API you may need to choose a content type upfront. Check out how to use the Siren content type together with Java EE.

· Integration Zone ·
Free Resource

SnapLogic is the leading self-service enterprise-grade integration platform. Download the 2018 GartnerMagic Quadrant for Enterprise iPaaS or play around on the platform, risk free, for 30 days.

When implementing a Hypermedia-driven REST API you may need to choose a content type upfront. If you use the Siren content type together with Java EE there are several approaches to create Siren entity responses.

As your links and actions in your responses may dynamically change depending on your business logic (e.g. some links or actions are only valid in certain situations), it makes sense to use a programmatic rather than declarative approach. Siren4J offers a simple way to both programmatically and declaratively create Siren responses. However this library contains a few third-party dependencies, for instance Jackson.

If you want a leaner approach using plain Java EE 7 you can either use JSON output created by JSONP or a lean library called Siren 4 Java EE. The idea of the latter is to only depend on the Java EE 7 API and therefore use JSONP internally.

Siren 4 Java EE is used as follows:

<dependency>
 <groupId>com.sebastian-daschner</groupId>
 <artifactId>siren4javaee</artifactId>
 <version>1.0</version>
</dependency>
JsonObject bookEntity = Siren.createEntityBuilder()
 .addClass("book")
 .addProperty("isbn", book.getIsbn())
 .addProperty("name", book.getName())
 .addProperty("author", book.getAuthor())
 .addProperty("availability", book.getAvailability().toString())
 .addProperty("price", book.getPrice())
 .addLink(bookUri, "self")
 .addAction(Siren.createActionBuilder()
 .setName("add-to-cart")
 .setTitle("Add book to cart")
 .setMethod(HttpMethod.POST)
 .setHref(shoppingCartUri)
 .setType(MediaType.APPLICATION_JSON)
 .addField("isbn", FieldType.TEXT)
 .addField("quantity", FieldType.NUMBER)).build();

For a more comprehensive example see the siren4javaee approach in Hypermedia with JAX-RS.

With SnapLogic’s integration platform you can save millions of dollars, increase integrator productivity by 5X, and reduce integration time to value by 90%. Sign up for our risk-free 30-day trial!

Topics:
java ee ,java ,entity ,introduction ,code

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}