Releases: snowplow/snowplow-java-tracker
Version 2.1.0
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
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
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
Version 1.0.0
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
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
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
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 Event
s. 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
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
Version 0.10.0
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)