RESTX 0.31
Today we are very happy to announce release 0.31 of RESTX, the lightweight, modular, feature rich, blazing fast and open source Java REST framework.
This release is a major release with close to 200 commits!
New and Noteworthy
core improvements
- better error reporting when problems occur during server startup
- replaced jamon with codahale metrics
- introduced AutoStartable components, to have better control over components lifecycle
- add support for Optional return type in settings methods
- add support for new path param definitions (support regex and angular notation)
- add client affinity support, allowing easier testing with easy overriding of components
- add new context params, including access to browser preferred Locale
- support for @Consumes and @Produces annotations (inspired by JAX-RS)
- allow to set Jackson view used to marshall response
- review UUIDGenerator management, you can now get one injected without having to defining it
- give access to underlying native request and response objects
- review how time is handled to make it compliant with parallel tests
- better support for running a restx app behind a reverse proxy
- add 2 new lifecycle events, called with entity routes only
- components can now be used as jackson objects (serializer, deser, …)
security
- allow to easily test authenticated requests with HttpTestClient
- principals can now have a
*
role which allow to access endpoints whatever role is required - provide a FileUserRepository to easily implement basic but functional user repository
- ease jongo based user repository implementation
- add support for http basic auth
- add RestxSessionBareFilter which allow to implement RestxSession based security with no cookies
- allow using servlet principal as restx principal
- fix and improvements to CORS support
web console
- improved monitoring web console, with jvm metrics and option to report to graphite
- log admin console to view logs and configure loggers
- add session stats view to monitoring console
- new sources web console allow to view and edit application sources
infinirest
- improve UI: better results display + play button to run a test manually
- parallellize tests execution
shell improvements
- review default logback configuration in generated app
- auto deps install on app run if md.restx.json has changed
- better documentation with a man for all commands
- add
deps add
command, allowing to easily declare new dependencies in restx apps - add ‘app grab’ to easily install a packaged restx app
- add
hash
command allowing to easily calculate some hashes - use new FileUserRepository in generated app
- allow to change the location where app is generated
api-docs improvements
- add json schema view and link to it for body param and response data
- add link to endpoint sources
- do not display related operations and use button when no related operation is found
- ‘save’ selected groups in query string, so that selected groups are bookmarkable
factory improvements
- improved error reporting, with better dependencies report on failure and other improvements
- derecursify components building process, making call stacks much more readable, amd improving performance
- provide an easy to deactivate any component
others
- new samplest module, used both as sample and automatic test of many restx features
- several performance related improvements
- get rid of all java compilation warnings
- upgrade to jongo 1.0 + jackson 2.3.0 + bson4jackson 2.3.0
- move from spullara.mustache to jmustache
- many bug fixes
Contributions
Thanks a lot to the community who made this possible, especially the contributors to this release:
- Xavier Hanin (committer),
- Frédéric Camblor (committer)
- Elian Oriou
- Damien Riccio
- Christophe Labouisse
Getting started / Upgrading
Want to get started now? Check out the related doc.
Upgrading from an earlier version?
- you just need to run
restx shell upgrade
to upgrade your shell and plugins. - in your projects you just need to update
restx.version
to 0.31 in your dependency descriptor - in your code you may have to adapt to some breaking changes
You can check commits introducing breaking changes:
- c1c33857b083ab265e27503f8edbe60e2f04b35c spec: review recorder design [BREAKING]
- 4a853f176acfba4517041d2267b5390a53888a52 core: review UUIDGenerator management [BREAKING]
- 74aef8b65e2e8abfac3d9484477f86a818cfcf67 errors: review API: use a provided UUIDGenerator instead of “current” one [BREAKING]
- 8ed182dda009bfd9a408cd4c51922610ea80ee87 core: review programmatic API to build a router [BREAKING]
- bc4c000f70c81ec30c3e9fd9c9dc89cb94b542b3 mongo: review jongo / mongo responsibilties [BREAKING]