Moved all the existing service code into the `service` submodule.
Stubbed out project and GUI frame for the uploader. Idea is to have a GUI that
infers all the correct meta-data from media tag values and creates service,
songs, and performance records appropriately based on the tagged mp3/ogg files
of the performances.
Moved all the existing service code into the `service` submodule.
Stubbed out project and GUI frame for the uploader. Idea is to have a GUI that
infers all the correct meta-data from media tag values and creates service,
songs, and performance records appropriately based on the tagged mp3/ogg files
of the performances.
* Add the song order in a service using `performances.rank` to indicate the
relative position of each song within the service. The service page now
respects this ranking.
* Update the tests to use DB Migrate to manage the database transitions.
* Added a new version implementation to the build. The build task now triggers
an increment to the build version.
* Reconfigured the war plugin to filter source files and replace the @version@
token with the project version and to rename css and js files to include the
version number in the filename.
Replaced the ApiKey concept with ephemeral tokens. Users and apps obtain a
token by authenticating the user credentials (to be implemented). The service
then generates a temporary token that is stored by the client and sent with
every request using the `Authorization-Token` header. The server verifies this
token to recognize and authenticate the request. With an authenticated user,
the server can use the user's role to authorize requests.
This implementation uses JSR 250 SecurityContext and security annotations.