The 2.7 release focuses on various usability improvements. Some further updates will be released in the coming weeks.
Patch Release 14. June
WARN log message in case of security misconfigurations
A WARN message is written to the log if the security module or any other kind of resource filter hides all
repositories from a user upon a request. Most likely the security module is not properly configured in
such cases. If a user should not have access to any repositories, the authentication layer should entirely block him.
WARN log message when using wrong content type
A WARN message is written to the log if a PATCH or POST request is attempted to a JSON API repository with a content type
other than application/vnd.api+json. Crnk does not serve such requests and will return a 404. The log message
will let developer know what is wrong.
Minimal Spring Boot example application
spring-boot-minimal-example
is a new example application that shows a very minimal setup just based on auto configuration and a single repository.
Spring Boot 2 upgrade
The example applications have been upgraded to Spring Boot 2. Spring Boot 1.x continues to be supported.
PATCH method can return 204 status code
If a repository returns a null upon a PATCH request, it will result in a HTTP 204 status code without contents. But keep
in mind that POST requests must always return a resource.
Default paging fix for crnk-data-jpa
The customizable paging behavior introduced in the previous release led to an issue with JPA repositories ignoring the default
paging limit.
Initial Release 8. June
use of Jackson to parse filter parameters
The TypeParser now also makes use of Jackson to deserialize parameters (next to already built-in and custom parsers).
The behavior can also be disabled by setting:
TypeParser.setUseJackson(false).
INFO log message on startup
that summarizes the setup of Crnk.
09:24:37 INFO [ost-startStop-1] [ io.crnk.core.boot.CrnkBoot] crnk initialized: numResources=26, usedModules=[jackson, servlet, home, jpa, meta, operations, spring.mvc, ui, validation], securityProviders=[ServletSecurityProvider], pagingBehaviors=[OffsetLimitPagingBehavior], urlMapper=UrlMapperAdapter, serviceDiscovery=SpringServiceDiscovery
CDIServiceDiscovery backs-off in non-CDI environments
The CDIServiceDiscovery of crnk-cdi no longer fails if no CDI context is available. Instead an ERROR is added to the LOG.
QuerySpec mapping support JPA/DTO mapping
The JpaMapper interface has a new (default) method to map DTO-based QuerySpec to Entity-based QuerySpec instances:
default QuerySpec unmapQuerySpec(QuerySpec querySpec) {
return querySpec;
}
It can be used to map filter, inclusion and sort parameters in the same fashion as the DTO/entitiy objects themselves.
Multiple SecurityProviders
Modules can now register multiple SecurityProvider providing roles to users.
Simplified Typescript Generation
The configuration of the Typescript generation has been stream-lined:
typescriptGen{
runtime {
...
}
npm {
// map given Java package to a subdirectory of genDir
directoryMapping['io.myapp.types'] = '/types'
// map a given package to a third-party library
packageMapping['io.other.app'] = '@other/app'
}
...
}
- Package generation is disabled by default. It is no longer necessary to specify a package name.
-
Objects of unknown type get generated into the root directory. Directory mappings (see above) can be used to control the
placement of objects
into directories.
-
Package mappings can be used to reference resources from third-party packages.
-
Meta-related resources from crnk-meta are not generated by default. They can be obtained from the @crnk/angular-ngrx library.
Along the way support to generate complete NPM packages has been deprecated since it has been rarely used and
typically application may want to setup a custom NPM package anyway.
For more information see
here.
Hardened URL computation for crnk-servlet
The CrnkServlet can be integrated into many different environments, but not all of them behave exactly the same. Sometimes this could lead
to a broken URL computation that needed to be fixed/overridden manually. The revised implementation is more robust
against missing slashes and allow to override a broken servlet path with the crnk.config.web.path.prefix property
or CrnkBoot.setWebPathPrefix(...).
Lazy Initialization of CrnkClient
CrnkClient performs more of its initialization in a lazy fashion (in CrnkClient.init). This allows to reconfigure more aspects of CrnkClient, such as
paging behavior and service discovery.