Skip to content

Releases: snowplow/snowplow-java-tracker

Version 2.1.0

19 Feb 07:57
Compare
Choose a tag to compare

This release adds support for using Java 8 DateTime objects in self-describing events and entities. It also adds equality functions to the SelfDescribing and SelfDescribingJson classes, making them easier to compare in unit tests.

Both changes in this release were contributed by @stephen-murby, big thanks for the contributions!

Enhancements
Add support for serializing DateTime in self-describing data (#378)
Add equality functions for SelfDescribing and SelfDescribingJson so that they can be compared in unit tests (#380)

Version 2.0.0

26 Jan 14:32
Compare
Choose a tag to compare

This release adds method chaining to Subject, enables using the tracker without an okhttp dependency, and updates the tracker dependencies.

Enhancements
Add builder methods Subject to allow method chaining (#303)
Add okhttp adapter with cookie jar and remove cookie jar from network configuration (#361)

Under the hood
Remove deprecated APIs (#373)
Update to Apache Http Client to v5 (#364)
Upgrade okhttp dependency to version 4.12 (#365)
Bump slf4j-simple and slf4j-api to 2.0.11
Bump junit-jupiter-api to 5.10.1
Bump jackson-databind to 2.16.1
Bump commons-net to 3.10
Bump commons-codec to 1.16
Update copyright headers in source files (#375)

Version 1.0.1

06 Nov 06:18
Compare
Choose a tag to compare

This patch release fixes a bug in the OkHttpClient which returned -1 as the status code for all non-successful HTTP response codes. Thanks to @eusorov who reported and contributed the fix for this problem!

Changelog

  • Fix issue with OkHttpClientAdapter (#366) (thanks to @eusorov for the contribution!)

Version 1.0.0

07 Sep 15:40
Compare
Choose a tag to compare

This release brings the Snowplow Java tracker out of "Early Release" and into "Maintained" status.

We've added a new API for creating and managing trackers, using the new Snowplow and Configuration classes. The Unstructured event type has been renamed to the more accurate SelfDescribing.

Creating a tracker can now be this simple:

Snowplow.createTracker("trackerNamespace", "appId", "http://collectorEndpoint");

Other improvements include better default configurations, configurable event sending retry, optional cookie persistence, and one less dependency (no more Guava).

Read the full migration guide here.

CHANGELOG

New features:
Rename Unstructured events to SelfDescribing (#296) breaking change
Set default HTTP status codes not to retry on (#337) breaking change
Restore Emitter callbacks for success and failure (#339) breaking change
Add close() to Emitter interface and Tracker (#357) breaking change
Remove SimpleEmitter (#341) breaking change
Add a Snowplow interface with the ability to initialize and manage multiple trackers (#340)
Add support for storing cookies in OkHttpClientAdapter (#336)
Add a maximum wait time and jitter to event sending retry (#338)
Reduce the default maximum event buffer capacity (#352)
Deprecate Builder classes (#355)
Standardise API for Tracker and Subject Builders (#302)
Remove Guava dependency (#320) - thanks @LeoNiedermeier for the suggestion!

Under the hood:
Add admin workflow for automatic issue labelling (#346)

Version 0.12.2

17 Jun 14:01
Compare
Choose a tag to compare

Updating the jackson-databind dependency to version 2.13.3.

Under the hood:

  • Bump jackson-databind to 2.13.3 (#333)

Version 0.12.1

11 May 13:18
Compare
Choose a tag to compare

This patch release updates the dependencies to their latest versions.

Under the hood:

  • Bump junit to 4.13.2 (#330)
  • Bump mockwebserver to 4.9.3 (#329)
  • Bump junit-jupiter-api to 5.8.2 (#328)
  • Bump guava to 31.1-jre (#327)
  • Bump jackson-databind to 2.13.2.2 (#326)
  • Bump slf4j-simple to 1.7.36 (#325)
  • Bump slf4j-api to 1.7.36 (#324)
  • Bump okhttp to 4.9.3 (#323)
  • Bump httpasyncclient to 4.1.5 (#322)
  • Bump commons-codec to 1.15 (#321)

Version 0.12.0

25 Mar 10:06
Compare
Choose a tag to compare

We are pleased to announce the release of our Java tracker version 0.12.0.

The headline new feature is the addition of retry (with exponential backoff) to event sending. Events that fail to send (HTTP request codes other than 2xx) are returned to the buffer for subsequent retry. To provide greater control over event buffering, we've provided a new EventStore interface, and InMemoryEventStore class. Users can set the capacity of the InMemoryEventStore buffer. Because retry is now handled by the tracker, we've removed the event-sending callbacks and the TrackerEvent class.

We've also removed a couple of methods from Events. It shouldn't have been possible for users to set custom eventId or deviceCreatedTimestamp values (for custom timestamps, use trueTimestamp). The eventId and deviceCreatedTimestamp are no longer Event properties, but generated at TrackerPayload initialisation inside the Tracker, during Tracker.track(). We've added a return type to Tracker.track(): the eventId UUID string of the tracked event payload.

The Java tracker provides an Emitter interface, and two Emitter classes: BatchEmitter and SimpleEmitter. We couldn't think of any occasion when BatchEmitter wouldn't be a better choice, so SimpleEmitter has been deprecated. Some old, unused methods have been removed, such as Utils.getTransactionId().

The final breaking change is an improvement to the API. The bufferSize Emitter property - how many events to send in one request - is now more accurately called batchSize.

We've added API docs, hosted here. The Snowplow Docs have been completely rewritten. There's a migration guide for this version. Also, check out our blog post which goes into the thinking behind the changes.

We hope you enjoy this release. Please feel free to raise issues on Github if you have any comments or suggestions. We'd love to hear how you're using the Java tracker.

New features:
Add retry to in-memory storage system (#156) - breaking change
Return eventId from Tracker.track() (#304) - breaking change
Choose HTTP response codes not to retry (#316)
Extract event storage from Emitter (#290)
Refactor TrackerEvents for event payload creation (#291) - breaking change
Deprecate SimpleEmitter (#309)
Add Javadoc generation (#137)
Rename bufferSize to batchSize (#306) - breaking change

Under the hood:
Attribute community contributions in changelog (#289)
Update simple-console example (#295)
Add benchmarking tests (#300)
Update JUnit and Jackson-databind dependencies (#294)
Update copyright notices to 2022 (#312)

Version 0.11.0

16 Dec 14:16
Compare
Choose a tag to compare

New features:
Set Emitter's threads name for easier debugging (#280) (Thanks @AcidFlow!)
Allow Emitter to use a custom ExecutorService (#278) (Thanks @AcidFlow!)
Manually set the session_id (#265)
Specify the key for 'null or empty value detected' payload log (#277) (Thanks @b-ryan!)

Bug fixes:
Remove logging of user supplied values (#286)

Under the hood:
Update Deploy action to remove Bintray (#283)
Update all copyright notices (#279)
Remove Mockito and Wiremock dependencies (#275)
Update dependencies guava, wiremock, and httpclient (#269)
Update gradle GH Action to include Java 17 (#273)
Remove HttpHeaders dependency in OkHttpClientAdapter (#266)
Replace Vagrant with Docker (#267)

Version 0.10.1

11 Jun 14:03
Compare
Choose a tag to compare

Bug Fixes

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

Version 0.10.0

10 Jun 20:14
Compare
Choose a tag to compare

New Features

Add default HttpClientAdapter so users do not have to create one (#165)
Support for creating TrackerPayload asynchronously (#222)

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 docs.snowplowanalytics.com (#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 https://repo.spring.io/plugins-release (#223)