All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Fixed compilation error in
OpenTelemetryMiddlewarewhere lambda returned a value from void method - Fixed silent exception swallowing in
OJSWorkerheartbeat loop — errors are now logged - Fixed DRY violation in
HttpTransportby extracting shared request logic intodoRequest() - Fixed
OJSTestingthread-safety: replacedvolatilesingleton withThreadLocalfor safe parallel test execution - Fixed silent exception swallowing in
OJSWorker.nackJob()— errors are now logged at DEBUG level
- Extracted
HttpTransport.Jsonnested class to top-levelorg.openjobspec.ojs.transport.Jsonfor better modularity - Decoupled
OJSTestingfromOJSClient—OJSClientno longer imports or referencesOJSTesting OJSTesting.client()andOJSTesting.transport()provide aFakeTransport-backed client for tests
OJSClientimplementsAutoCloseable— enables try-with-resources for proper async executor shutdownmodule-info.javafor JPMS support — exportsorg.openjobspec.ojs,org.openjobspec.ojs.transport,org.openjobspec.ojs.testing- Input validation using
OJSError.ValidationErrorfor blank job types inJobRequestandOJSWorker.register() - JaCoCo coverage badge in README and CI workflow
- JSON parser safety limits: max depth (128) and max input length (10 MB) to prevent stack overflow and OOM
- Unit tests for
OpenTelemetryMiddleware(0% → 100% coverage) - Unit tests for
OJSTestingassertions and utilities (53% → 100% coverage) - Unit tests for
OJSClient.Builderretry and transport options (52% → 100% coverage) OJSTestingfake mode integration withOJSClient—OJSTesting.fake()now intercepts enqueue calls- Platform logging (
System.Logger) throughoutOJSWorkerfor start/stop, job processing, and errors CONTRIBUTING.mdwith build instructions and contribution guidelinesCODE_OF_CONDUCT.md(Contributor Covenant v2.1)SECURITY.mdwith vulnerability reporting policyCHANGELOG.md(this file)- GitHub issue templates (bug report, feature request)
- GitHub pull request template
- Dependabot configuration for Maven dependency updates
0.1.0 - 2026-02-13
- Initial release of the OJS Java SDK
OJSClientfor enqueuing jobs, managing workflows, and querying job statusOJSWorkerwith virtual thread (Project Loom) concurrent job processingJobrecord with full OJS Core Specification v1.0.0-rc.1 attributesRetryPolicyandUniquePolicyconfiguration records with builder patternWorkflowprimitives: chain (sequential), group (parallel), batch (parallel with callbacks)JobHandlerandMiddlewarefunctional interfacesOJSErrorsealed interface hierarchy (ApiError,ValidationError,TransportError)HttpTransportwith zero-dependency JSON encoder/decoderTransportinterface for custom/test transportsOpenTelemetryMiddlewarefor instrumentation viaTelemetryHooksOJSTestingfake mode for unit testing- Dead letter queue management (list, retry, discard)
- Cron job management (list, register, unregister)
- Queue management (list, stats, pause, resume)
- Server health check and conformance manifest
- Optional Jackson annotations support
- Usage examples (BasicEnqueue, WorkerProcessing, WorkflowChain)
- JUnit 5 + Mockito test suite (250 tests, 83% instruction coverage)
- Integration test suite for Redis backend
- GitHub Actions CI with JaCoCo coverage reporting
- Dual Maven and Gradle build support