<commit_before>Restolino
----------


### What is it?

A brutally opinionated, super-simple REST framework for Java.

It's not comprehensive, won't give you the flexibility you want and doesn't reall care about your special needs.

What it does want to do is get you started and get out of your way, because configuring frameworks is a distraction from building your idea.

And that's it.


### Opinions

Restolino has unreasonable opinions, but if you want to do simple stuff fast you'll find them useful:

 * You can only GET /. Why would you PUT, POST or DELETE the root? You wouldn't. If you think you would your design sucks. Implement the `Home` interface, which provides a single method: `get(req, res)`.
 * You only need one 404 handler. Implement the `NotFound` interface, which provides a single method: `handle(req, res)`.
 * You only need one error handler, but you do need to know where the error occurred. Implement the `Boom` interface, which provides a single method `handle(req, res, RequestHandler, Throwable)`. A 500 status will be pre-set for you. You can update it if you want.
 * Annotate your endpoint classes as `@Endpoint`.
 * Endpoint names are lowercased class names. More complex, more of your time. Get over it.
 * Annotate your methods with JAX-RS `@GET`, `@PUT`, `@POST` and `@DELETE`.
 * Method parameters must be `req, res[, request message]`. 
 * The return type of your method can be void, or a response message.
 * All request and response messages are JSON and processed by Gson. You can access the Gson configuration.
 * Content Type is pre-set to `application/json` so you don't have to do that.
 * No clever (aka fiddly and time consuming) path/parameter parsing. Simple helper classes are provided instead.

What's not done:
 * Streaming
 * HEAD
 * ContextInitialised, ContextDestroyed,
 * application context
 * helper classes

How it works
 * Any request that has a file extension is delegated to the servlet container
 * Any request that does not have a file extension is mapped to an endpoint
 * Unmapped requests will go to your `NotFound` implementation, or generate a 404 by default.
 * Errored requests will go to your `Boom` implementation, or generate a 500 by default.

### Web.xml<commit_msg>Tweaked README<commit_after>Restolino
----------


### What is it?

A brutally opinionated, super-simple REST framework for Java.

It's not comprehensive, won't give you the flexibility you want and doesn't reall care about your special needs.

What it does want to do is get you started and get out of your way, because configuring frameworks is a distraction from building your idea.

And that's it.


### Opinions

Restolino has unreasonable opinions, but if you want to do simple stuff fast you'll find them useful:

 * You can only GET /. Why would you PUT, POST or DELETE the root? You wouldn't. If you think you would your design sucks. Implement the `Home` interface, which provides a single method: `get(req, res)`.
 * You only need one 404 handler. Implement the `NotFound` interface, which provides a single method: `handle(req, res)`.
 * You only need one error handler, but you do need to know where the error occurred. Implement the `Boom` interface, which provides a single method `handle(req, res, RequestHandler, Throwable)`. A 500 status will be pre-set for you. You can update it if you want.
 * Annotate your endpoint classes as `@Endpoint`.
 * Endpoint names are lowercased class names. More complex, more of your time. Get over it.
 * Annotate your methods with JAX-RS `@GET`, `@PUT`, `@POST` and `@DELETE`.
 * Method parameters must be `req, res[, request message]`. 
 * The return type of your method can be void, or a response message.
 * All request and response messages are JSON and processed by Gson. You can access the Gson configuration.
 * Content Type is pre-set to `application/json` so you don't have to do that.
 * No clever (aka fiddly and time consuming) path/parameter parsing. Simple helper classes are provided instead.
 * Java 1.7. If you're using anything older, try using Bing to look up SOAP. I know, that's not fair. If you can Google, fork and build from source.

What's not done:
 * Streaming
 * HEAD
 * ContextInitialised, ContextDestroyed,
 * application context
 * helper classes
 * full implementation of biting sarcasm above

How it works
 * Any request that has a file extension is delegated to the servlet container
 * Any request that does not have a file extension is mapped to an endpoint
 * Unmapped requests will go to your `NotFound` implementation, or generate a 404 by default.
 * Errored requests will go to your `Boom` implementation, or generate a 500 by default.
 * If you're a purist, this is not for you - there are non-private fields in the classes. I consider it visual clutter for little benefit. Like semi-colons in Javascript.

### Web.xml
{'fraction_non_alphanumeric': 0.07060518731988473, 'fraction_numerical': 0.005351996706463565, 'mean_word_length': 4.019628099173554, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '32731', 'n_tokens_mistral': 1318, 'n_tokens_neox': 1244, 'n_words': 740}