Siren4J alternatives and similar libraries
Based on the "Hypermedia Types" category.
Alternatively, view Siren4J alternatives based on common mentions on social networks and blogs.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Siren4J or a related project?
Popular Comparisons
README
This is a java library to help with the creation and use of
Hypermedia entities as specified by the Siren hypermedia specification. See https://github.com/kevinswiber/siren for more detail on the specification.
It contains classes to that represent the Siren components (Entity, Link, Action, Field). See: https://github.com/eserating/siren4j/wiki/Siren4J-Components
These can be easily built with a fluent builder API.
EXAMPLE BUILDER:
// Create a new self Link
Link selfLink = LinkBuilder.newInstance()
.setRelationship(Link.RELATIONSHIP_SELF)
.setHref("/self/link")
.build();
// Create a new Entity
Entity result = EntityBuilder.newInstance()
.setEntityClass("test")
.addProperty("foo", "hello")
.addProperty("number", 1)
.addLink(selfLink)
.build();
See: https://github.com/eserating/siren4j/wiki/Fluent-Builder-API
There is also a resource API that simplifies entity creation and management using reflection and annotations.
EXAMPLE RESOURCE:
@Siren4JEntity(name = "video", uri = "/videos/{id}")
public class Video extends BaseResource {
private String id;
private String name;
private String description;
private String genre;
private Rating rating;
@Siren4JSubEntity(uri = "/video/{parent.id}/reviews", embeddedLink = true)
private CollectionResource<Review> reviews;
public String getId() {return id;}
public void setId(String id) {this.id = id;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public String getDescription() {return description;}
public void setDescription(String description) {this.description = description;}
public String getGenre() {return genre;}
public void setGenre(String genre) {this.genre = genre;}
public Rating getRating() {return rating;}
public void setRating(Rating rating) {this.rating = rating;}
public CollectionResource<Review> getReviews() {return reviews;}
public void setReviews(CollectionResource<Review> reviews) {this.reviews = reviews;}
public enum Rating {G, PG, PG13, R, NR, X}
}
AN INSTANCE OF A RESOURCE CLASS CAN BE CONVERTED LIKE THIS:
ResourceConverter converter = ReflectingConverter.newInstance();
Entity videoEntity = converter.toEntity(videoResource);
AND WILL RESULT IN SIREN JSON THAT LOOKS LIKE THIS:
{
"class":[
"video"
],
"properties":{
"name":"Star Wars",
"id":"z1977",
"description":"An epic science fiction space opera",
"genre":"scifi",
"rating":"PG"
},
"entities":[
{
"class":[
"siren4J.collectionResource",
"collection"
],
"rel":[
"reviews"
],
"href":"/video/z1977/reviews"
}
],
"links":[
{
"rel":[
"self"
],
"href":"/videos/z1977"
}
]
}
See: https://github.com/eserating/siren4j/wiki/Siren4J-Resource-API
[http://wiki.siren4j.googlecode.com/hg/javadoc/index.html JavaDoc]
Note: This projects documentation is a work in progress.