Releases: codeborne/klite
Releases · codeborne/klite
1.6.14
- jdbc: add helpful details to Postgres exception "no hstore extension installed"
- core: TSID.deterministic introduced for using in test data generation
- json: TSGenerator updates
- wraps records with enum keys into Partial to avoid TS wanting all the keys to be present
- outputs provided custom types as separate types and references them
- accepts -o and -p arguments for simpler usage
- optionally can generate test data from Kotlin objects using -t
1.6.13
- core: added PATCH method to TypedHttpClient
- jdbc: can use Config ENV vars in migration scripts
- jdbc-test: JUnitAssertionImprover removed, as Atrium 1.3+ improved error messages itself
- server: disallow direct assignments to
HttpExchange.responseType
to avoid confusion,HttpExchange.send()
orstartResponse()
must be used to bypass renderers
1.6.12
- smtp: new module introduced for sending emails over SMTP
- server: expose Server.listen and bound Server.address as separate properties #93
- server: Server.use() can register extensions that implement multiple supported interfaces at the same time
- server: useOnly() will now add parser/renderer if it wasn't yet registered, to avoid confusion
- server: HttpExchange.rawBody can now be accessed more than once (is a lazy property now)
- jdbc:
distinct
andnotDistinct
operators introduced for where expressions - jdbc: PooledDataSource: DB connections closed by server now correctly decrease connection pool size
- json: fixed some very specific regressions in TSGenerator
1.6.10
- server:
Server(InetSocketAddress(0))
can now be used to bind to any available port. - server: make idle restarts quick #96
- server: initialize
HttpExchange.pathParams
even no route is matched (404), for decorators #82 - server: put list into queryParams if user specifies multiple parameters with the same name, introduce
e.queryList
#63 - jdbc: between operator introduced with open and closed ranges, also in and notIn
- jdbc: @NoTransaction can now be used on jobs
- jdbc: fixed usage of multiple different DataSources when there is an active transaction
- jdbc: allow calling of
PooledConnection.close()
multiple times #80 - jdbc: support for automatic persisting/mapping of arrays of @JvmInline classes (e.g. TSID)
- json: fix TSGenerator on Windows
- json: TSGenerator will now use more type-safe string template types for java.time classes, e.g.
${number}-${number}-${number}
instead ofstring
- slf4j: allow providing of
LOGGER_CLASS
via.env
file ifConfig.useEnvFile()
is called before any logging calls #92 - jackson: serialize enums using their toString() method by default, this fixes
openapi
module usage withjackson
#88 - liquibase: do not close jdbc connection if it was passed by user #81
1.6.9
- core: logger(name) is now accessible without a class instance context
- core: Any.logger() will now take the closest non-anonymous superclass
- server: errors.on(StatusCode) convenience reified function added
- server: AssetsHandler will now allow serving of SPA index.html even if requested directory in assets exists
- jdbc: BaseCrudRepository.list() and by() now both have the suffix parameter
- jdbc: handle Postgres "cached plan must not change result type" exception by enabling autosave=conservative by default
1.6.8
- server: ErrorHandler now supports finding of handlers using exception super classes
- jobs: fix deprecated schedule() method implementation
1.6.7
- core: Converter can now force initialize type arguments' companion objects
- core: Decimal.absoluteValue and Decimal.sign introduced, like other numeric types in Kotlin
- core: Registry and TypedHttpClient moved from server module, so that JsonHttpClient can be used without the server
- server: HttpExchange.path<>(), query<>(), and session<>() now allow for automatic String conversion into value types
- server: Browser class better detects various iOS browsers that run on Apple WebKit
- jobs: deprecated non-Duration schedule() methods
- oauth: support for missing first or last names or locale
- jdbc: initial support for Postgres listen/notify
- slf4j: fix length optimization of stack traces in StackTraceOptimizingLogger
1.6.6
- core: Converter will force initialize companion objects to better support
init { Converter.use {...} }
- core: Converter now supports inline classes with multiple constructors automatically
- core: Converter now supports any static(String) method automatically, not only parse()
- core: Cache keepAlive function introduced to prolong external cache entries
- server: KeyCipher now uses base64UrlEncode() internally instead of plain base64
- jdbc: db.upsert() now uses
excluded
special table name for update part instead of setting values twice
1.6.5
- core: simple Cache with expiration timer implemented
- oauth: AppleOAuthClient updated and tested
- oauth: JWT helper class introduced
- jdbc: introduced db.upsertBatch()
- jobs: runOnce() introduced for convenience
- json: throw more descriptive errors from JsonNode.get() in case of missing keys
1.6.4
- core: added common value types for Email, Phone, and Password, also StringValue base class
- jdbc: introduced db.insertBatch()
- jdbc: deprecated Entity interface (UUID-based), which can be replaced with BaseEntity
- jdbc: support SqlComputed with other operators, e.g.
where = "date" lte SqlComputed("currrent_date")
- server: added path to annotated(), to make paths more visible in one place
- server: make a few more Server properties public (sessionStore, notFoundHandler, etc)
- server: bugfix after 1.6.0: wrap notFoundHandler correctly to produce correct 404 response
- server: NotFoundRoute introduced to be easily distinguishable from normal routes
- oauth: new experimental OAuth 2.0 login module