Skip to content

Releases: sepatel/tekniq

Introduce SseClient and WebSocket Support

30 Nov 17:48
Compare
Choose a tag to compare

Enables a simple client side way to engage handling SSE events with all
the capabilities that go with it. Also fixed an issue with WebSocket not
working for every JDK 11+ implementation due to default interface
implementations not always being properly defined out.

Created a friendly native support for using the JDK 11 HttpClient to
open up a proper websocket connection for use as a client in the
traditional kotlin friendly style of doing things.

Also added the ability to make PATCH rest calls via the client.

Modernize RestClient Implementation

30 Nov 17:47
Compare
Choose a tag to compare

Utilizing Java 11's HttpClient infrastructure instead for improved
performance and reliability. Also added timeout support for connections
as well with a default of 30 seconds.

✨ Add support for streaming response data and optimizing for arrays
🔥 Remove RestLog support as it wasn't used in the wild much and
hindered the ability to stream json array responses efficiently.

Overall not holding everything into memory first before transforming the
data improves the speed and lowers the memory requirements for existing
use cases by a tiny amount. But for cases where the response was an
array list, it creates a massive improvement in performance and reduces
the memory requirements when receiving large payloads.

Introduce Cryptography and Extensions

30 Nov 17:44
Compare
Choose a tag to compare

Upgraded multiple dependencies include the jackson dependency which
resolves a critical security threat.

In addition, API simplification of the TqConfig to eliminate the
parameterized definition of the default value used when missing as it is
almost always better to use the kotlin style for default value. Also,
pulling back null as a configuration value is extremely error prone and
unreliable depending on the backing source of that value so best to
eliminate it from contention as well.

Various cleanups and optimizations to the jdbc library. For example,
being able to do the insertReturnKey on the datasource level. Also
enabled anyone to use the apply params capability of the prepared
statement to better facilitate any compatible need with consistent rules
so timestamps and localdates and such are handled with minimal
frustration.

Improve documentation a bit to reflect some of the nice features that
have not been communicated in the past. Also to demonstrate some of the
new functionality that has been added.

Date math extensions added along with timezone safe time stripping.

Introduced a delegate for an initialization with default value. This is
to allow the setting of a value just once preventing its change. Thus
working much like the val declaration but without not with the hard
requirement of needing to be declared unless it is needed.

Improve JDBC Library Usability

30 Nov 17:43
Compare
Choose a tag to compare

When originally written .also and .let did not exist so there wasn't a
way to get a handle cleanly to the reference being acted upon. Thus
everything was centered around the .apply philosophy. Since then it has
become quite apparent that .apply is confusing and buggy especially with
nested complex subquery interactions.

This is a breaking compatibility modernization of the design approach to
enable future improvements.

New Validation Framework

14 May 01:13
Compare
Choose a tag to compare

Created a TqCheck system which is similar but backwards incompatible to the TqValidation framework. The new implementation

  • is more supportive of the Kotlin idioms
  • allows for type-safety referencing of data model fields
  • supports message templating and the ability to custom define rendering rules (defaults to {{bean.dot.notation}} syntax)
  • enables checking only if defined for all checks
  • supports uuid and objectid checks in addition to the original validation checks
  • augmented email validation to support a larger variety of TLD
  • ability to retrieve a raw field value during the checks
  • and many more improvements

Also including in this are

  • deprecation of the TqCache and the promotion of TqLoadingCache (aka TqCaffeine) which is far suprior in all ways
  • removal of the deprecated "spark" module. Javalin is the preferred implementation choice
  • upgradies to various dependencies including kotlin to version 1.5.0

Of important notice, this will likely be the last feature release on the JVM 8 platform. The intention is for future version to be baselined against the JVM 11 platform.

JDBC Extension Improvement

11 May 11:44
Compare
Choose a tag to compare

Now there is an ability to select for a CachedRowSet instead of always having to do an immediate lamda handling of the ResultSet.

Also ResultSet now have a .forEach extension to make utilizing them more kotlinized as well.

Deprecated the entire tekniq-spark project and recommend using Javalin instead for this aspect of the system.

Validation Framework Enhancements

11 May 11:53
Compare
Choose a tag to compare
  • Allow defaulting the validation src to null rather then explicitly forcing the user to do so. This makes it a bit easier and prettier to work with when tossing fixed validation errors.
  • Fixed merging of validations to include the internal tested and passed counters in order to provide accurate metrics.
  • Added a new "with" support to allow for strongly typed checks to take place using the also new "check" validation that allows freeform use of anything returning a Boolean to be used as the determination of a validation.
  • Loosened up some validation internals to allow for subclassing of validation and customizations to take place to better tune it for specific project needs (like Javalin integration).

Also other changes include

  • Upgraded to Kotlin 1.3.61 (from 1.3.50)
  • Upgraded to Jackson 2.9.10 (from 2.9.8)
  • Deprecated TqCache promoting use of the superior TqCaffeine instead. Will probably merge tekniq-cache into the -core project at some point and make the TqCache a wrapper around the TqCaffeine on the next feature version bump.
  • Added another classpath detection routine for the TqPropertiesConfig. This is to help better support some of the changes that occur with classpath support during Java 11+.

TqRestClient can ignore hostname on certificates

11 May 11:51
Compare
Choose a tag to compare

Often times internal organizations are using self-signed certificates but have multiple DNS names mapped to the system. The request is that it is not any less risky to allow mismatched hostnames because they are only used for internal communication channels anyway.

LocalDate/Time/DateTime JDBC Support

11 May 11:50
Compare
Choose a tag to compare

Fixed but that caused the year to be 1900 years into the future.

Self-signed certificate support on TqRestClient

11 May 11:48
Compare
Choose a tag to compare

It's a common thing especially in enterprise code to communicate with servers that are self-signed. You do still trust the server in question but you don't wish to completely ignore all certificate checking across all of the url connections. Thus this feature was added to allow for improved usability of restful connections without exposing security concerns across an application.

Also properly handles Sparklin outputting of Iterables.

Validation framework improvements for "arrayOf" types.