# version 0.61.5
17/12/2018
   - Added a search timeout test (margaretha)
18/12/2018
   - Updated tests using BeanConfigTest to use SpringJerseyTest (margaretha)

# version 0.61.4
14/11/2018
   - Integrated lite and full services and controllers in core (margaretha)
21/11/2018
   - Updated OAuth2 refresh token request to create a new refresh token and 
     revoke the old one per request (margaretha)
28/11/2018
   - Updated NamedVCLoader to delete existing VC in DB (margaretha)
   - Handled storing cached VC with VC reference (margaretha)
29/11/2018
   - Added a controller for listing user clients having active refresh tokens 
     (margaretha)
6/12/2018
   - Added debug flags to mitigate log4j debugging performance (margaretha)
   - Fixed KoralNode at() method (margaretha)
11/12/2018
   - Implemented revoking all tokens of a user client via a super client
   (margaretha)   
   - Removed document controllers and KustvaktResource (margaretha)
   - Fixed rewrite bugs (updated rewriteQuery & KoralNode) (margaretha)

   
# version 0.61.3
17/10/2018
    - Updated NamedVCLoader to be optional (margaretha)
    - Updated annotation tables & implemented key-value structure (margaretha)
    - Added annotation parser for annotation data from kalamar (margaretha)
    - Implemented parsing free resource info from json (margaretha)
22/10/2018
    - Updated jetty, spring and hibernate versions (margaretha)
    - Fixed the order of annotation keys and values, and added tests (margaretha)
    - Fixed resource DAO & added tests (margaretha)
24/10/2018    
    - Fixed query serialization service (margaretha)
    - Added "highlights" parameter to matchInfo controller (margaretha)
    - Added "fields" parameter to search controllers (margaretha)
    - Integrated lite controllers, services and tests in full version (margaretha)
29/10/2018
    - Moved javax.servlet-api to core (margaretha)
07/11/2018
    - OpenJDK8u181-workaround (see Debian Bug report #911925; diewald)
13/11/2018
    - Added Shutdown handler to Jetty server (margaretha)
    - Fixed storing VC order in NamedVCLoader (margaretha)  

# version 0.61.2
12/09/2018
    - Added various log4j2 configurations (margaretha)
13/09/2018
    - Implemented VirtualCorpusRewrite (margaretha)
14/09/2018
    - Fixed SpringJerseyTest ApplicationContext (margaretha)
    - Handled VCRef with username in VirtualCorpusRewrite (margaretha)
    - Enabled VCReferenceTest in maven test suite (margaretha)
18/09/2018
    - Handled unique constraints / inserting duplicate items to DB (margaretha)
    - Added a controller for editing user group member roles (margaretha)
19/09/2018
    - Fixed cached-VC ref with username (margaretha)   

# version 0.61.1
28/08/2018
    - Added API URL versioning (margaretha)
    - Deactivated IdRewrite (margaretha)
    - Fixed kustvakt controller (margaretha)
30/08/2018
    - Fixed root packages & added api version properties in kustvakt.conf 
      (margaretha)
    - Fixed versioning in SearchController (margaretha)
    - Added API versioning tests (margaretha)

# version 0.61.0

02/08/2018
	- Added VC reference tests (margaretha)	
	- Implemented loading and caching named VCs (margaretha)
03/08/2018	
    - Implemented OAuth2 revoke token (margaretha)
	- Updated OAuth2 refresh token implementation (margaretha)
14/08/2018	
	- Implemented revoke all OAuth2 access tokens and authorization codes of   
	  client users when deregistering/deleting a client (margaretha)
	- Fixed update OAuth2 access token (margaretha)
	- Implemented reset client secret (margaretha)
	- Fixed revoking latest access token when refreshing OAuth2 access token 
	  (margaretha)
15/08/2018
    - Implemented OAuth2 client info controller (margaretha)
    - Implemented update OAuth2 client privilege controller for admins 
      (margaretha)
    - Implemented unlimited authorization scope for super clients with OAuth2 
      password grant (margaretha)
    - Marked native clients implementation to deprecated in favour of super 
      clients (margaretha)
    - Enabled using Bearer tokens as user authentication tokens (Authorization 
      header value) for many controllers including OAuth2 controllers (margaretha)
16/08/2018
    - Implemented degrading super clients (margaretha)
    - Improved and added OAuth2 tests (margaretha)
21/08/2018
    - Added VC name pattern check (margaretha)
22/08/2018
    - Implemented loading VC from gz files (margaretha)
    - Updated OAuth2 authorization codes' & access tokens' expiry check 
      (margaretha)
23/08/2018    
    - Updated RefreshToken implementations with separate DB tables (margaretha)
    - Allows multiple access tokens per refresh token (margaretha)
27/08/2018
    - Added statistic with VC reference tests (margaretha)
    - Fixed OAuth2 SQL files (margaretha) 
28/08/2018
    - Added c3p0 datasource configuration to Spring default-config-xml 
      (margaretha)
    - Added running Kustvakt server with custom spring config in the readme 
      (margaretha)
    - Removed old OAuth2 codes (margaretha)    
    - Moved non-config test codes to misc (margaretha)
    

# version 0.60.5

09/07/2018
	- Added service layer to the search controller (margaretha)
	- Added OAuth2 scope checking in search and VC controllers (margaretha)
	- Added handling OAuth2 bearer token for VC access and User group 
	  controllers (margaretha)
	- Added default scope to password grant (margaretha)
10/07/2018
	- Made createBasicAuthorizationHeaderValue static (margaretha)
	- Added store access token in openID token service (margaretha)
	- Fixed empty scope in openID authorization and token service (margaretha)
	- Implemented storing authorization code in cache (margaretha)
11/07/2018	
	- Fixed authentication time in authentication controller (margaretha)
	- Added OAuth2 access token tests (margaretha)
12/07/2018	
	- Updated maven surefire setting for faster test suite runtime (margaretha)
	- Implemented refreshing OAuth2 access token (margaretha)
26/07/2018	
	- Fixed issue #27 (margaretha)
02/08/2018	
	- Fixed clientId encoding in OAuth2ClientControllerTest (margaretha)

	
# version 0.60.4

05/07/2018
    - implemented OAuth2 authorization code request with OpenID Authentication 
      (margaretha)
    - enabled OAuth2 authorization without OpenID authentication using Nimbus 
      library (margaretha)
    - implemented response handler for OpenID authentication errors in authorization 
      requests (margaretha)
    - added tests regarding OpenID authentication in authorization requests 
      (margaretha)
    - implemented OAuth2 authorization error response via redirect URI instead of 
      JSON (margaretha)
    - added state to OAuth2 authorization error response (margaretha)
    - implemented OpenID token service for authorization code flow (margaretha)
    - implemented signed OpenID token with default algorithm RSA256 (margaretha)
    - implemented JSON Web Key (JWK) set web-controller listing kustvakt public 
      keys (margaretha)
    - implemented OpenId configuration (margaretha) 
    - added authentication time and support for auth_time in id_token (margaretha)
    - implemented support for nonce and max_age parameters in OpenID authentication 
      (margaretha)
    - implemented OAuth2 token request with password grant using Nimbus library 
      (margaretha)
    - updated redirect URI validator (margaretha)
    - updated client registration requirement to allow desktop applications 
      (margaretha)
    - fixed RSA key configuration (margaretha)
    - merged OAuth2 client deregistration controllers (margaretha)
    - fixed OAuth2 client unique URL-hashcode (margaretha)
    - migrated logging to log4j 2 and adapted java.util.logging to log4j(margaretha)
    - Added support for unrestricted corpus statistics (ndiewald)
    - updated paths of user-group deletion-controllers (margaretha)
    - Do not pass broken queries to Krill (diewald)
    - added OAuth2 token request with client authentication via Authorization 
      header (margaretha)
    - added port checking in test suite (margaretha)
    
# version 0.60.3

06/06/2018
    - improved user authentication by using authentication filter for authorization 
      code request (margaretha)
    - limited client authentication to client id checking in authorization code 
      request (margaretha)
    - added user_id in the oauth2_access_token database table (margaretha)
    - implemented OAuth2Authentication provider for token context management 
      (margaretha)
    - added parameter checking for authorization DAO (margaretha)
    - added controller tests using OAuth2 access token (margaretha)
    - added database tables for MySQL (margaretha)
    - updated JWT library and related codes (margaretha)    
    
# version 0.60.2

03/05/2018
    - implemented OAuth2 client registration (margaretha)
    - implemented OAuth2 client authentication (margaretha)
    - changed virtual corpus search to retrieval (margaretha)
    - implemented public client deregistration task (margaretha)
    - added client registration and deregistration tests (margaretha)
    - implemented confidential client deregistration task (margaretha)
    - fixed storing client secret (margaretha)
    - implemented OAuth2 response handler (margaretha)
    - implemented OAuth2 request access token with client credentials grant 
      (margaretha)
    - implemented OAuth2 request access token with resource owner password grant 
      (margaretha)
    - implemented OAuth2 authorization code request (margaretha)
    - added OAuth2 error codes (margaretha)
    - added OAuth2 authorization, scope and access token tables for SQLite 
      (margaretha)
    - implemented OAuth2 authorization, scope and access token DAO (margaretha)
    - implemented OAuth2 request access token with authorization code grant 
      (margaretha)
    - added setting default scopes in the config file (margaretha)
    - fixed loading spring config multiple times in the test suite (margaretha)
    - added SQLite created_date trigger for access token (margaretha)  
    - added a join table for access token scopes (margaretha)
    - added access scopes handling (margaretha)
    - added tests about request token with authorization code (margaretha)
    
# version 0.60.1

28/03/2018
    - added admin-related SQL codes (margaretha)
    - updated AdminDao (margaretha)
    - added optional username query parameter to group list controller (margaretha) 
    - fixed non hierarchical URI of kustvakt conf files (margaretha)
    - added delete group member triggers (margaretha)
    - added list user-group by username and status for system admin (margaretha)
    - added user-group status in user-group DTO (margaretha)
    - added check for hidden groups in user-group tests (margaretha)
    - added database trigger test on deleting members when deleting group 
      (margaretha)
    - renamed VC type PREDEFINED to SYSTEM (margaretha)
    - added VC list controller for system admin (margaretha)
    - added VC controller tests with for system admin (margaretha) 
    - added hidden access removal when deleting published VC (margaretha)
    - added check for hidden groups in VC controller tests (margaretha)
    - added search user-group controller (margaretha)
    - removed createdBy from VirtualCorpusJson (margaretha)
    - moved member role setting from the invitation phase to the after-subscription 
      phase (margaretha)
    - added member role removal after deleting members (margaretha)
    - added add and delete member role controllers (margaretha)
    
# version 0.60

14/03/2018
    - set up mail settings using localhost port 25 (margaretha)
    - added mail template in kustvakt configuration (margaretha)
    - added mail settings to readme (margaretha)
    - disabled email notification for auto group (margaretha)
    - added metadata retrieval (diewald)
    - enabled custom implementation for email address retrieval (margaretha)
    - removed old policy and deprecated code (margaretha)
    - moved authentication related code to /full (margaretha)
    - added userRoles attribute to UserGroupDto. (margaretha)
    - fixed sqlite trigger (margaretha)
    - fixed member exist error message (margaretha)
    - fixed member invitation to join deleted group (margaretha)
    - added checking deleted group (margaretha)

# version 0.59.10
    
20/02/2018 
    - added sort VC by id (margaretha)
    - added test cases regarding VC sharing (margaretha)
    - implemented withdraw VC from publication (margaretha)
    - added Changes file (margaretha)
    - implemented add/invite users to group (margaretha)
    - implemented delete user-group and member tasks (margaretha)
    - added userMemberStatus in group lists (margaretha)
    - updated and added SQL test data (margaretha)
    - added user group related tests (margaretha)
    - implemented custom configuration for deleting user groups and members (margaretha)
    - updated library versions and java environment (margaretha)
    - added expiration time check for member invitation (margaretha)
    - moved .properties files (margaretha) 
    - merged changelog file to Changes (margaretha)
    - updated status codes and error messages to be more detailed (margaretha)
    - testing mail implementation using embedded jetty jndi (margaretha)
    - fixed collection rewrite regarding OR operation with other fields 
      (margaretha)
    - implemented sending mail using spring injection and removed jetty jndi 
      (margaretha)
    - fixed unrecognized application/json (margaretha)
    - fixed and updated velocity template (margaretha)
    
# version 0.59.9 

19/01/2018
    - restructured basic authentication (margaretha)
    - fixed AuthenticationException to include authentication scheme (margaretha)
    - fixed rewrite redundancy in collection rewrite (margaretha)
    - fixed foundry rewrite for constituents (margaretha)
    - introduced authentication methods, schemes and tokens (margaretha)
    - implemented collection rewrite with multiple licenses (margaretha)
    - fixed foundry rewrite for korap span without wrap node (margaretha)
    - implemented list user group (margaretha)
    - implemented delete VC task (margaretha)
    - implemented create user-group, subscribe to user-groups, unsubscribe to 
      user-groups tasks(margaretha)
    - fixed handling JSON mapping exception for missing enums (margaretha)
    - implemented list VC task (margaretha)
    - added KoralQuery in VC lists (margaretha)
    - implemented edit VC task (margaretha)
    - implemented publish VC task (margaretha)
    - implemented share VC task (margaretha)
    - implemented list only owned VC task (margaretha) 
    - implemented list VC access task (margaretha)
    - implemented search VC by id task (margaretha)
    - implemented delete VC access (margaretha)
    - implemented search for project VC (margaretha)
    - added search VC related tests (margaretha)
    - removed PredefinedUserGroup.ALL and related codes (margaretha)
    - implemented search for published VC (margaretha)
    
# version 0.59.8
 
21/09/2017
    - restructured statistics service (margaretha)
    - removed deprecated loader codes and tests (margaretha)
    - removed old Spring java configurations (margaretha)
    - implemented entity classes for the new database (margaretha)
    - added MySQL codes regarding VC and for testing (margaretha)
    - added dao methods regarding VC (margaretha)
    - added similar SQL codes (to MySQL) for sqlite (margaretha)
    - added dao methods regarding user groups (margaretha)
    - restructured web-service codes into controller and logic/business-service
      (margaretha)
    - implemented user role and privilege, and added tests (margaretha)
    - prepared test suite using new database (margaretha)
    - implemented UserGroupDao and tests (margaretha)
    - fixed missing exceptions in JsonUtils (margaretha)
    - restructured web filters and authentication codes (margaretha)
    - implemented create/store VC (margaretha)
    - fixed collection rewrite bug regarding availability with operation or 
      (margaretha)    

# version 0.59.7

13/10/2016
    - MOD: updated search to use new siglen (diewald)
    - MOD: fixed matchinfo retrieval in light service (diewald)

05/05/2015
    - ADD: rest test suite for user service (hanl)
    - MOD: setup parameter modification (hanl)
    - ADD: oauth2 client unique constraint (hanl)
