1
0
Fork 0
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Hannes Ebner 1da8cc3c7c
Adding README.md
3 years ago
standalone Initial commit 3 years ago
webapp Initial commit 3 years ago
.gitignore Initial commit 3 years ago
README.md Adding README.md 3 years ago
build.sh Initial commit 3 years ago
pom.xml Initial commit 3 years ago

README.md

Java exercise for the backend recruiting process

Prerequisites

  1. Make sure you have a working Java development environment. The Maven configuration of the boilerplate requires at least Java 11.
  2. Compile by executing ./build.sh.
  3. After successful compilation execute ./standalone/jetty/target/dist/bin/rest. It launches a REST API and listens on port 8282.
  4. Test the API by fetching data from the status resource by executing curl http://localhost:8282/status.
  5. If any of the above fails you need to revisit your development environment or talk to hannes@metasolutions.se (it may be a bug).

Boilerplate

As you could see as the result of 4. above, the boilerplate is a very basic, but fully functional implementation of a REST API.

There are only two REST resources: a status resource that attaches to /status and a default resource that responds at /.

Implementing a new resource involves creating a new class (see StatusResource.java as example) and adding it to the router in RestApplication.java.

Exercise

  1. Implement a new resource /echo that responds with the request body when posting (HTTP POST) to it; it should simply mirror the request back as response.
  2. Add content negotation to the echo resource and convert the payload: if the request is made with MIME type text/csv (i.e., Content-Type: text/csv), and the response is expected to be delivered in text/html (i.e., Accept: text/html), then convert from CSV to a simple HTML table. Very basic handling of the CSV payload (use the snippet from the next section) is sufficient, you don't need to use third party libraries to handle advanced CSVs with apostrophes, line breaks, etc..

Bonus for the Linked Data experienced:

  1. Add support for the output format text/turtle (the RDF Turtle serialization format) to the echo resource. Use appropriate properties from the Dublin Core Terms metadata specification.

CSV snippet

title,description,created
Important document,This is an important document,2022-03-31
Less important document,,2022-03-31
Last document,,

Result

Send your result as a tar.gz archive or a Git URL to hannes@metasolutions.se.