Snowplow Java Tracker 0.10.1 (and 0.10.0) released

We’re pleased to annouce the newest release of our Java Tracker. Versions 0.10.1 and 0.10.0 are now available.

This release includes significant performance improvements, based on a fork provided to us by bbplanon over at GitHub. We have moved the payload creation so that it now happens asynchronously and the tracker will no longer block the thread that calls the track() methods.

We’ve also made it easier to configure and set up the Java Tracker, by creating a default HttpClientAdapter and adding support for Gradle Feature Variants to pull in optional dependencies.

Lastly, there have been a number of version bumps to existing dependencies bringing the Java Tracker up to date as well as adding a integration to keep on top of security vulnerabilities in the future.

Bug Fixes
Publish Gradle module file with bintrayUpload (#255)
Update snyk integration to include project name in GitHub action (#256)

New Features
Support for creating TrackerPayload asynchronously (#222)
Add default HttpClientAdapter so users do not have to create one (#165)
Under the Hood
Remove use of deprecated OkHttp methods (#230 )
Switch to GitHub Actions for build and release (#231)
Add snyk monitor to Github Actions (#253)
Switch junit to native Gradle support (#240)
Update copyright years (#227)
Update README to point to (#251)
Upgrade to Gradle 6 (#236)
Bump org.apache.httpcomponents:httpasyncclient to 4.1.4 (#249)
Bump org.apache.httpcomponents:httpclient to 4.5.12 (#248)
Bump mockito-core to 3.3.3 (#247)
Bump slf4j-api to 1.7.30 (#246)
Bump commons-net to 3.6 (#245)
Bump commons-codec to 1.14 (#241)
Bump mockwebserver to 4.7.2 (#239)
Bump guava to 29.0 (#238)
Bump wiremock to 2.26.3 (#237)
Bump jackson-databind to 2.11.0 (#235)
Add POM information to Maven Publishing section in build.gradle (#234)
Switch build.gradle to use (#223)

Repository Links


Breaking Changes
There are a couple of breaking changes in this release:

  1. The signature on the callback for requestCallback on the Emitter has changed, so events which have failed to send return the Event object rather than the internal TrackerPayload. This allows you to easily resend them using the usual Tracker.track(Event) method.
  2. Given the above, we’ve removed Tracker.track(TrackerPayload) as you should never need to send in a raw payload, and if you do then you should extend AbstractEvent.
  3. Tracker parameters are now immutable after the Tracker has been constructed. This means functions such as Tracker.setNamespace() no longer exist. To set these parameters, you should do so with the TrackerBuilder. This change has been made as Payloads are now constructed asynchronously so changing the Tracker parameters after initial construction may lead to unexpected results.