Code generator that can be used to generate java interfaces from a Hydra-based JSON-LD document.
-
$ easy_install PyLD rdflib rdflib-jsonld rdfextras
-
$ chmod +x hydra2java-rdf.py
-
To test:
$ curl http://www.markus-lanthaler.com/hydra/api-demo/vocab | ./hydra2java-rdf.py
-
To test with Jersey:
$ cd <scr-path>
$ mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 \
-DarchetypeGroupId=org.glassfish.jersey.archetypes -DinteractiveMode=false \
-DgroupId=com.example -DartifactId=simple-service -Dpackage=com.example \
-DarchetypeVersion=2.17
$ cd <hydra2java-path>
$ curl http://www.markus-lanthaler.com/hydra/api-demo/vocab | \
./hydra2java-rdf.py -t class -p com.example \
-d <src-path>/simple-service/src/main/java/com/example
$ cd serializer
$ mvn clean install
(it may need to clone the hydra-java github repository and install it manually)
Add the following to the generated pom.xml, and also enable json support:
<dependency>
<groupId>de.escalon.hypermedia</groupId>
<artifactId>hydra-jsonld</artifactId>
<version>[0.2.0-beta3-SNAPSHOT,)</version>
</dependency>
<dependency>
<groupId>io.hydra2java</groupId>
<artifactId>serializer</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
In Main.java, startServer method, add the following after instantiation of ResourceConfig:
rc.register(io.hydra2java.JsonLdProvider.class);
Add code to some generated classes, and proceed:
$ cd <scr-path>/simple-service
$ mvn clean test
$ mvn exec:java
(send some requests)
Short | Full | Options | Default | Description |
---|---|---|---|---|
-f | --format | json-ld | json-ld | |
-t | --type | class, interface | interface | |
-p | --package | <package> | ||
-d | --destination | <path> | ||
-a | --no_annotations | False | ||
-m | --members | methods, properties, all | all | |
-l | --delegate | False | ||
-s | --supplemental_annotations | <ann1>,<ann2>,... |